From 4503cd44edd02b7f2f7ca94f3188ad354e106491 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 24 Jun 2020 21:48:33 +0200 Subject: [PATCH] Change IRremoteESP8266 library updated to v2.7.8 --- lib/IRremoteESP8266-2.7.7/docs/README.md | 1 - .../examples/IRGCTCPServer/platformio.ini | 17 - .../examples/IRServer/platformio.ini | 17 - .../examples/IRrecvDemo/platformio.ini | 17 - .../examples/IRrecvDump/platformio.ini | 17 - .../examples/IRsendDemo/platformio.ini | 17 - .../examples/IRsendProntoDemo/platformio.ini | 17 - .../JVCPanasonicSendDemo/platformio.ini | 17 - .../examples/LGACSend/platformio.ini | 17 - .../examples/SmartIRRepeater/platformio.ini | 17 - .../examples/TurnOnArgoAC/platformio.ini | 17 - .../examples/TurnOnDaikinAC/platformio.ini | 17 - .../examples/TurnOnFujitsuAC/platformio.ini | 17 - .../examples/TurnOnGreeAC/platformio.ini | 17 - .../TurnOnKelvinatorAC/platformio.ini | 17 - .../TurnOnMitsubishiAC/platformio.ini | 17 - .../TurnOnMitsubishiHeavyAc/platformio.ini | 17 - .../examples/TurnOnPanasonicAC/platformio.ini | 17 - .../examples/TurnOnToshibaAC/platformio.ini | 17 - .../examples/TurnOnTrotecAC/platformio.ini | 17 - lib/IRremoteESP8266-2.7.7/src/IRtext.cpp | 261 - lib/IRremoteESP8266-2.7.7/src/ir_Carrier.cpp | 217 - lib/IRremoteESP8266-2.7.7/src/ir_Sherwood.cpp | 28 - .../CPPLINT.cfg | 0 lib/IRremoteESP8266-2.7.8/Doxyfile | 15 + .../LICENSE.txt | 0 .../README.md | 10 +- .../README_fr.md | 13 +- .../ReleaseNotes.md | 44 + .../SupportedProtocols.md | 84 +- lib/IRremoteESP8266-2.7.8/docs/README.md | 61 + lib/IRremoteESP8266-2.7.8/docs/README_fr.md | 64 + .../docs/_config.yml | 0 .../docs/doxygen/html/IRac_8cpp.html | 98 + .../docs/doxygen/html/IRac_8h.html | 127 + .../docs/doxygen/html/IRac_8h_source.html | 652 ++ .../docs/doxygen/html/IRrecv_8cpp.html | 135 + .../docs/doxygen/html/IRrecv_8h.html | 425 + .../docs/doxygen/html/IRrecv_8h_source.html | 972 ++ .../docs/doxygen/html/IRremoteESP8266_8h.html | 3515 ++++++++ .../html/IRremoteESP8266_8h_source.html | 1463 +++ .../docs/doxygen/html/IRsend_8cpp.html | 80 + .../docs/doxygen/html/IRsend_8h.html | 419 + .../docs/doxygen/html/IRsend_8h_source.html | 1078 +++ .../docs/doxygen/html/IRtext_8cpp.html | 2807 ++++++ .../docs/doxygen/html/IRtext_8h.html | 2807 ++++++ .../docs/doxygen/html/IRtext_8h_source.html | 383 + .../docs/doxygen/html/IRtimer_8cpp.html | 119 + .../docs/doxygen/html/IRtimer_8h.html | 94 + .../docs/doxygen/html/IRtimer_8h_source.html | 128 + .../docs/doxygen/html/IRutils_8cpp.html | 871 ++ .../docs/doxygen/html/IRutils_8h.html | 942 ++ .../docs/doxygen/html/IRutils_8h_source.html | 235 + .../docs/doxygen/html/README_8md.html | 76 + .../docs/doxygen/html/annotated.html | 134 + .../docs/doxygen/html/bc_s.png | Bin 0 -> 676 bytes .../docs/doxygen/html/bdwn.png | Bin 0 -> 147 bytes .../doxygen/html/classIRAmcorAc-members.html | 109 + .../docs/doxygen/html/classIRAmcorAc.html | 997 +++ .../html/classIRAmcorAc__coll__graph.map | 4 + .../html/classIRAmcorAc__coll__graph.md5 | 1 + .../html/classIRAmcorAc__coll__graph.png | Bin 0 -> 3009 bytes .../doxygen/html/classIRArgoAC-members.html | 122 + .../docs/doxygen/html/classIRArgoAC.html | 1381 +++ .../html/classIRArgoAC__coll__graph.map | 4 + .../html/classIRArgoAC__coll__graph.md5 | 1 + .../html/classIRArgoAC__coll__graph.png | Bin 0 -> 3164 bytes .../html/classIRCarrierAc64-members.html | 117 + .../docs/doxygen/html/classIRCarrierAc64.html | 1206 +++ .../html/classIRCarrierAc64__coll__graph.map | 4 + .../html/classIRCarrierAc64__coll__graph.md5 | 1 + .../html/classIRCarrierAc64__coll__graph.png | Bin 0 -> 3653 bytes .../doxygen/html/classIRCoolixAC-members.html | 137 + .../docs/doxygen/html/classIRCoolixAC.html | 1710 ++++ .../html/classIRCoolixAC__coll__graph.map | 4 + .../html/classIRCoolixAC__coll__graph.md5 | 1 + .../html/classIRCoolixAC__coll__graph.png | Bin 0 -> 3102 bytes .../doxygen/html/classIRCoronaAc-members.html | 120 + .../docs/doxygen/html/classIRCoronaAc.html | 1360 +++ .../html/classIRCoronaAc__coll__graph.map | 4 + .../html/classIRCoronaAc__coll__graph.md5 | 1 + .../html/classIRCoronaAc__coll__graph.png | Bin 0 -> 3290 bytes .../html/classIRDaikin128-members.html | 132 + .../docs/doxygen/html/classIRDaikin128.html | 1669 ++++ .../html/classIRDaikin128__coll__graph.map | 4 + .../html/classIRDaikin128__coll__graph.md5 | 1 + .../html/classIRDaikin128__coll__graph.png | Bin 0 -> 3291 bytes .../html/classIRDaikin152-members.html | 116 + .../docs/doxygen/html/classIRDaikin152.html | 1172 +++ .../html/classIRDaikin152__coll__graph.map | 4 + .../html/classIRDaikin152__coll__graph.md5 | 1 + .../html/classIRDaikin152__coll__graph.png | Bin 0 -> 3202 bytes .../html/classIRDaikin160-members.html | 108 + .../docs/doxygen/html/classIRDaikin160.html | 983 +++ .../html/classIRDaikin160__coll__graph.map | 4 + .../html/classIRDaikin160__coll__graph.md5 | 1 + .../html/classIRDaikin160__coll__graph.png | Bin 0 -> 3302 bytes .../html/classIRDaikin176-members.html | 111 + .../docs/doxygen/html/classIRDaikin176.html | 1083 +++ .../html/classIRDaikin176__coll__graph.map | 4 + .../html/classIRDaikin176__coll__graph.md5 | 1 + .../html/classIRDaikin176__coll__graph.png | Bin 0 -> 3228 bytes .../doxygen/html/classIRDaikin2-members.html | 152 + .../docs/doxygen/html/classIRDaikin2.html | 2133 +++++ .../html/classIRDaikin216-members.html | 112 + .../docs/doxygen/html/classIRDaikin216.html | 1068 +++ .../html/classIRDaikin216__coll__graph.map | 4 + .../html/classIRDaikin216__coll__graph.md5 | 1 + .../html/classIRDaikin216__coll__graph.png | Bin 0 -> 3277 bytes .../html/classIRDaikin2__coll__graph.map | 4 + .../html/classIRDaikin2__coll__graph.md5 | 1 + .../html/classIRDaikin2__coll__graph.png | Bin 0 -> 3012 bytes .../doxygen/html/classIRDaikin64-members.html | 123 + .../docs/doxygen/html/classIRDaikin64.html | 1393 +++ .../html/classIRDaikin64__coll__graph.map | 4 + .../html/classIRDaikin64__coll__graph.md5 | 1 + .../html/classIRDaikin64__coll__graph.png | Bin 0 -> 3190 bytes .../html/classIRDaikinESP-members.html | 136 + .../docs/doxygen/html/classIRDaikinESP.html | 1729 ++++ .../html/classIRDaikinESP__coll__graph.map | 4 + .../html/classIRDaikinESP__coll__graph.md5 | 1 + .../html/classIRDaikinESP__coll__graph.png | Bin 0 -> 3212 bytes .../html/classIRDelonghiAc-members.html | 123 + .../docs/doxygen/html/classIRDelonghiAc.html | 1370 +++ .../html/classIRDelonghiAc__coll__graph.map | 4 + .../html/classIRDelonghiAc__coll__graph.md5 | 1 + .../html/classIRDelonghiAc__coll__graph.png | Bin 0 -> 3457 bytes .../html/classIRElectraAc-members.html | 117 + .../docs/doxygen/html/classIRElectraAc.html | 1242 +++ .../html/classIRElectraAc__coll__graph.map | 4 + .../html/classIRElectraAc__coll__graph.md5 | 1 + .../html/classIRElectraAc__coll__graph.png | Bin 0 -> 3217 bytes .../html/classIRFujitsuAC-members.html | 135 + .../docs/doxygen/html/classIRFujitsuAC.html | 1707 ++++ .../html/classIRFujitsuAC__coll__graph.map | 4 + .../html/classIRFujitsuAC__coll__graph.md5 | 1 + .../html/classIRFujitsuAC__coll__graph.png | Bin 0 -> 3164 bytes .../html/classIRGoodweatherAc-members.html | 115 + .../doxygen/html/classIRGoodweatherAc.html | 1119 +++ .../classIRGoodweatherAc__coll__graph.map | 4 + .../classIRGoodweatherAc__coll__graph.md5 | 1 + .../classIRGoodweatherAc__coll__graph.png | Bin 0 -> 4102 bytes .../doxygen/html/classIRGreeAC-members.html | 135 + .../docs/doxygen/html/classIRGreeAC.html | 1751 ++++ .../html/classIRGreeAC__coll__graph.map | 4 + .../html/classIRGreeAC__coll__graph.md5 | 1 + .../html/classIRGreeAC__coll__graph.png | Bin 0 -> 3146 bytes .../doxygen/html/classIRHaierAC-members.html | 121 + .../docs/doxygen/html/classIRHaierAC.html | 1370 +++ .../html/classIRHaierACYRW02-members.html | 118 + .../doxygen/html/classIRHaierACYRW02.html | 1252 +++ .../html/classIRHaierACYRW02__coll__graph.map | 4 + .../html/classIRHaierACYRW02__coll__graph.md5 | 1 + .../html/classIRHaierACYRW02__coll__graph.png | Bin 0 -> 4003 bytes .../html/classIRHaierAC__coll__graph.map | 4 + .../html/classIRHaierAC__coll__graph.md5 | 1 + .../html/classIRHaierAC__coll__graph.png | Bin 0 -> 3157 bytes .../html/classIRHitachiAc-members.html | 112 + .../docs/doxygen/html/classIRHitachiAc.html | 1107 +++ .../html/classIRHitachiAc1-members.html | 123 + .../docs/doxygen/html/classIRHitachiAc1.html | 1414 +++ .../html/classIRHitachiAc1__coll__graph.map | 4 + .../html/classIRHitachiAc1__coll__graph.md5 | 1 + .../html/classIRHitachiAc1__coll__graph.png | Bin 0 -> 3046 bytes .../html/classIRHitachiAc3-members.html | 91 + .../docs/doxygen/html/classIRHitachiAc3.html | 498 ++ .../html/classIRHitachiAc344-members.html | 118 + .../doxygen/html/classIRHitachiAc344.html | 607 ++ .../html/classIRHitachiAc344__coll__graph.map | 5 + .../html/classIRHitachiAc344__coll__graph.md5 | 1 + .../html/classIRHitachiAc344__coll__graph.png | Bin 0 -> 5244 bytes .../classIRHitachiAc344__inherit__graph.map | 4 + .../classIRHitachiAc344__inherit__graph.md5 | 1 + .../classIRHitachiAc344__inherit__graph.png | Bin 0 -> 3189 bytes .../html/classIRHitachiAc3__coll__graph.map | 4 + .../html/classIRHitachiAc3__coll__graph.md5 | 1 + .../html/classIRHitachiAc3__coll__graph.png | Bin 0 -> 3209 bytes .../html/classIRHitachiAc424-members.html | 112 + .../doxygen/html/classIRHitachiAc424.html | 1125 +++ .../html/classIRHitachiAc424__coll__graph.map | 4 + .../html/classIRHitachiAc424__coll__graph.md5 | 1 + .../html/classIRHitachiAc424__coll__graph.png | Bin 0 -> 3350 bytes .../classIRHitachiAc424__inherit__graph.map | 4 + .../classIRHitachiAc424__inherit__graph.md5 | 1 + .../classIRHitachiAc424__inherit__graph.png | Bin 0 -> 3162 bytes .../html/classIRHitachiAc__coll__graph.map | 4 + .../html/classIRHitachiAc__coll__graph.md5 | 1 + .../html/classIRHitachiAc__coll__graph.png | Bin 0 -> 3005 bytes .../html/classIRKelvinatorAC-members.html | 121 + .../doxygen/html/classIRKelvinatorAC.html | 1340 +++ .../html/classIRKelvinatorAC__coll__graph.map | 4 + .../html/classIRKelvinatorAC__coll__graph.md5 | 1 + .../html/classIRKelvinatorAC__coll__graph.png | Bin 0 -> 3684 bytes .../doxygen/html/classIRLgAc-members.html | 113 + .../docs/doxygen/html/classIRLgAc.html | 1108 +++ .../doxygen/html/classIRLgAc__coll__graph.map | 4 + .../doxygen/html/classIRLgAc__coll__graph.md5 | 1 + .../doxygen/html/classIRLgAc__coll__graph.png | Bin 0 -> 2873 bytes .../doxygen/html/classIRMideaAC-members.html | 115 + .../docs/doxygen/html/classIRMideaAC.html | 1169 +++ .../html/classIRMideaAC__coll__graph.map | 4 + .../html/classIRMideaAC__coll__graph.md5 | 1 + .../html/classIRMideaAC__coll__graph.png | Bin 0 -> 3328 bytes .../html/classIRMitsubishi112-members.html | 115 + .../doxygen/html/classIRMitsubishi112.html | 1185 +++ .../classIRMitsubishi112__coll__graph.map | 4 + .../classIRMitsubishi112__coll__graph.md5 | 1 + .../classIRMitsubishi112__coll__graph.png | Bin 0 -> 3407 bytes .../html/classIRMitsubishi136-members.html | 112 + .../doxygen/html/classIRMitsubishi136.html | 1108 +++ .../classIRMitsubishi136__coll__graph.map | 4 + .../classIRMitsubishi136__coll__graph.md5 | 1 + .../classIRMitsubishi136__coll__graph.png | Bin 0 -> 3648 bytes .../html/classIRMitsubishiAC-members.html | 123 + .../doxygen/html/classIRMitsubishiAC.html | 1437 +++ .../html/classIRMitsubishiAC__coll__graph.map | 4 + .../html/classIRMitsubishiAC__coll__graph.md5 | 1 + .../html/classIRMitsubishiAC__coll__graph.png | Bin 0 -> 3489 bytes .../classIRMitsubishiHeavy152Ac-members.html | 129 + .../html/classIRMitsubishiHeavy152Ac.html | 1593 ++++ ...assIRMitsubishiHeavy152Ac__coll__graph.map | 4 + ...assIRMitsubishiHeavy152Ac__coll__graph.md5 | 1 + ...assIRMitsubishiHeavy152Ac__coll__graph.png | Bin 0 -> 4959 bytes .../classIRMitsubishiHeavy88Ac-members.html | 122 + .../html/classIRMitsubishiHeavy88Ac.html | 1396 +++ ...lassIRMitsubishiHeavy88Ac__coll__graph.map | 4 + ...lassIRMitsubishiHeavy88Ac__coll__graph.md5 | 1 + ...lassIRMitsubishiHeavy88Ac__coll__graph.png | Bin 0 -> 4835 bytes .../html/classIRNeoclimaAc-members.html | 130 + .../docs/doxygen/html/classIRNeoclimaAc.html | 1584 ++++ .../html/classIRNeoclimaAc__coll__graph.map | 4 + .../html/classIRNeoclimaAc__coll__graph.md5 | 1 + .../html/classIRNeoclimaAc__coll__graph.png | Bin 0 -> 3405 bytes .../html/classIRPanasonicAc-members.html | 138 + .../docs/doxygen/html/classIRPanasonicAc.html | 1936 ++++ .../html/classIRPanasonicAc__coll__graph.map | 4 + .../html/classIRPanasonicAc__coll__graph.md5 | 1 + .../html/classIRPanasonicAc__coll__graph.png | Bin 0 -> 3434 bytes .../html/classIRSamsungAc-members.html | 128 + .../docs/doxygen/html/classIRSamsungAc.html | 1585 ++++ .../html/classIRSamsungAc__coll__graph.map | 4 + .../html/classIRSamsungAc__coll__graph.md5 | 1 + .../html/classIRSamsungAc__coll__graph.png | Bin 0 -> 3730 bytes .../doxygen/html/classIRSharpAc-members.html | 130 + .../docs/doxygen/html/classIRSharpAc.html | 1688 ++++ .../html/classIRSharpAc__coll__graph.map | 4 + .../html/classIRSharpAc__coll__graph.md5 | 1 + .../html/classIRSharpAc__coll__graph.png | Bin 0 -> 3360 bytes .../doxygen/html/classIRTcl112Ac-members.html | 119 + .../docs/doxygen/html/classIRTcl112Ac.html | 1298 +++ .../html/classIRTcl112Ac__coll__graph.map | 4 + .../html/classIRTcl112Ac__coll__graph.md5 | 1 + .../html/classIRTcl112Ac__coll__graph.png | Bin 0 -> 2945 bytes .../doxygen/html/classIRTecoAc-members.html | 117 + .../docs/doxygen/html/classIRTecoAc.html | 1182 +++ .../html/classIRTecoAc__coll__graph.map | 4 + .../html/classIRTecoAc__coll__graph.md5 | 1 + .../html/classIRTecoAc__coll__graph.png | Bin 0 -> 3054 bytes .../html/classIRToshibaAC-members.html | 108 + .../docs/doxygen/html/classIRToshibaAC.html | 1001 +++ .../html/classIRToshibaAC__coll__graph.map | 4 + .../html/classIRToshibaAC__coll__graph.md5 | 1 + .../html/classIRToshibaAC__coll__graph.png | Bin 0 -> 3399 bytes .../html/classIRTrotecESP-members.html | 111 + .../docs/doxygen/html/classIRTrotecESP.html | 1069 +++ .../html/classIRTrotecESP__coll__graph.map | 4 + .../html/classIRTrotecESP__coll__graph.md5 | 1 + .../html/classIRTrotecESP__coll__graph.png | Bin 0 -> 3270 bytes .../doxygen/html/classIRVestelAc-members.html | 136 + .../docs/doxygen/html/classIRVestelAc.html | 1758 ++++ .../html/classIRVestelAc__coll__graph.map | 4 + .../html/classIRVestelAc__coll__graph.md5 | 1 + .../html/classIRVestelAc__coll__graph.png | Bin 0 -> 3288 bytes .../html/classIRWhirlpoolAc-members.html | 134 + .../docs/doxygen/html/classIRWhirlpoolAc.html | 1799 ++++ .../html/classIRWhirlpoolAc__coll__graph.map | 4 + .../html/classIRWhirlpoolAc__coll__graph.md5 | 1 + .../html/classIRWhirlpoolAc__coll__graph.png | Bin 0 -> 3386 bytes .../docs/doxygen/html/classIRac-members.html | 151 + .../docs/doxygen/html/classIRac.html | 5644 ++++++++++++ .../doxygen/html/classIRac__coll__graph.map | 4 + .../doxygen/html/classIRac__coll__graph.md5 | 1 + .../doxygen/html/classIRac__coll__graph.png | Bin 0 -> 3252 bytes .../doxygen/html/classIRrecv-members.html | 189 + .../docs/doxygen/html/classIRrecv.html | 7184 +++++++++++++++ .../doxygen/html/classIRrecv__coll__graph.map | 4 + .../doxygen/html/classIRrecv__coll__graph.md5 | 1 + .../doxygen/html/classIRrecv__coll__graph.png | Bin 0 -> 3293 bytes .../doxygen/html/classIRsend-members.html | 213 + .../docs/doxygen/html/classIRsend.html | 6599 ++++++++++++++ .../doxygen/html/classIRtimer-members.html | 84 + .../docs/doxygen/html/classIRtimer.html | 235 + .../doxygen/html/classTimerMs-members.html | 84 + .../docs/doxygen/html/classTimerMs.html | 235 + .../html/classdecode__results-members.html | 89 + .../doxygen/html/classdecode__results.html | 274 + .../docs/doxygen/html/classes.html | 157 + .../docs/doxygen/html/closed.png | Bin 0 -> 132 bytes .../docs/doxygen/html/de-CH_8h.html | 82 + .../docs/doxygen/html/de-CH_8h_source.html | 239 + .../docs/doxygen/html/de-DE_8h.html | 82 + .../docs/doxygen/html/de-DE_8h_source.html | 206 + .../docs/doxygen/html/defaults_8h.html | 82 + .../docs/doxygen/html/defaults_8h_source.html | 838 ++ .../docs/doxygen/html/deprecated.html | 85 + .../dir_49e56c817e5e54854c35e136979f97ca.html | 80 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 373 + .../dir_84fe998d1eb06414cc389ad334e77e63.html | 106 + .../docs/doxygen/html/doc.png | Bin 0 -> 746 bytes .../docs/doxygen/html/doxygen.css | 1771 ++++ .../docs/doxygen/html/doxygen.png | Bin 0 -> 3779 bytes .../docs/doxygen/html/doxygen__index_8md.html | 76 + .../docs/doxygen/html/dynsections.js | 120 + .../docs/doxygen/html/en-AU_8h.html | 82 + .../docs/doxygen/html/en-AU_8h_source.html | 88 + .../docs/doxygen/html/en-IE_8h.html | 82 + .../docs/doxygen/html/en-IE_8h_source.html | 88 + .../docs/doxygen/html/en-UK_8h.html | 82 + .../docs/doxygen/html/en-UK_8h_source.html | 88 + .../docs/doxygen/html/en-US_8h.html | 82 + .../docs/doxygen/html/en-US_8h_source.html | 93 + .../docs/doxygen/html/es-ES_8h.html | 82 + .../docs/doxygen/html/es-ES_8h_source.html | 216 + .../docs/doxygen/html/files.html | 194 + .../docs/doxygen/html/folderclosed.png | Bin 0 -> 616 bytes .../docs/doxygen/html/folderopen.png | Bin 0 -> 597 bytes .../docs/doxygen/html/fr-FR_8h.html | 82 + .../docs/doxygen/html/fr-FR_8h_source.html | 197 + .../docs/doxygen/html/functions.html | 262 + .../docs/doxygen/html/functions_a.html | 90 + .../docs/doxygen/html/functions_b.html | 142 + .../docs/doxygen/html/functions_c.html | 377 + .../docs/doxygen/html/functions_d.html | 360 + .../docs/doxygen/html/functions_e.html | 153 + .../docs/doxygen/html/functions_f.html | 98 + .../docs/doxygen/html/functions_func.html | 121 + .../docs/doxygen/html/functions_func_a.html | 86 + .../docs/doxygen/html/functions_func_b.html | 130 + .../docs/doxygen/html/functions_func_c.html | 356 + .../docs/doxygen/html/functions_func_d.html | 351 + .../docs/doxygen/html/functions_func_e.html | 150 + .../docs/doxygen/html/functions_func_f.html | 89 + .../docs/doxygen/html/functions_func_g.html | 777 ++ .../docs/doxygen/html/functions_func_h.html | 106 + .../docs/doxygen/html/functions_func_i.html | 258 + .../docs/doxygen/html/functions_func_k.html | 79 + .../docs/doxygen/html/functions_func_l.html | 85 + .../docs/doxygen/html/functions_func_m.html | 133 + .../docs/doxygen/html/functions_func_n.html | 79 + .../docs/doxygen/html/functions_func_o.html | 157 + .../docs/doxygen/html/functions_func_p.html | 79 + .../docs/doxygen/html/functions_func_r.html | 86 + .../docs/doxygen/html/functions_func_s.html | 1156 +++ .../docs/doxygen/html/functions_func_t.html | 297 + .../docs/doxygen/html/functions_func_u.html | 79 + .../docs/doxygen/html/functions_func_v.html | 119 + .../docs/doxygen/html/functions_func_w.html | 79 + .../docs/doxygen/html/functions_func_~.html | 79 + .../docs/doxygen/html/functions_g.html | 777 ++ .../docs/doxygen/html/functions_h.html | 109 + .../docs/doxygen/html/functions_i.html | 265 + .../docs/doxygen/html/functions_k.html | 79 + .../docs/doxygen/html/functions_l.html | 97 + .../docs/doxygen/html/functions_m.html | 148 + .../docs/doxygen/html/functions_n.html | 82 + .../docs/doxygen/html/functions_o.html | 173 + .../docs/doxygen/html/functions_p.html | 94 + .../docs/doxygen/html/functions_q.html | 79 + .../docs/doxygen/html/functions_r.html | 151 + .../docs/doxygen/html/functions_rela.html | 77 + .../docs/doxygen/html/functions_s.html | 1193 +++ .../docs/doxygen/html/functions_t.html | 309 + .../docs/doxygen/html/functions_u.html | 85 + .../docs/doxygen/html/functions_v.html | 122 + .../docs/doxygen/html/functions_vars.html | 563 ++ .../docs/doxygen/html/functions_vars_a.html | 82 + .../docs/doxygen/html/functions_vars_b.html | 88 + .../docs/doxygen/html/functions_vars_c.html | 97 + .../docs/doxygen/html/functions_vars_d.html | 85 + .../docs/doxygen/html/functions_vars_e.html | 79 + .../docs/doxygen/html/functions_vars_f.html | 85 + .../docs/doxygen/html/functions_vars_h.html | 79 + .../docs/doxygen/html/functions_vars_i.html | 82 + .../docs/doxygen/html/functions_vars_l.html | 88 + .../docs/doxygen/html/functions_vars_m.html | 91 + .../docs/doxygen/html/functions_vars_n.html | 79 + .../docs/doxygen/html/functions_vars_o.html | 92 + .../docs/doxygen/html/functions_vars_p.html | 91 + .../docs/doxygen/html/functions_vars_q.html | 79 + .../docs/doxygen/html/functions_vars_r.html | 140 + .../docs/doxygen/html/functions_vars_s.html | 113 + .../docs/doxygen/html/functions_vars_t.html | 88 + .../docs/doxygen/html/functions_vars_u.html | 82 + .../docs/doxygen/html/functions_vars_v.html | 79 + .../docs/doxygen/html/functions_vars_w.html | 79 + .../docs/doxygen/html/functions_vars_z.html | 79 + .../docs/doxygen/html/functions_w.html | 82 + .../docs/doxygen/html/functions_z.html | 79 + .../docs/doxygen/html/functions_~.html | 79 + .../docs/doxygen/html/globals.html | 82 + .../docs/doxygen/html/globals_a.html | 106 + .../docs/doxygen/html/globals_c.html | 100 + .../docs/doxygen/html/globals_d.html | 121 + .../docs/doxygen/html/globals_e.html | 82 + .../docs/doxygen/html/globals_enum.html | 95 + .../docs/doxygen/html/globals_eval.html | 493 ++ .../docs/doxygen/html/globals_f.html | 86 + .../docs/doxygen/html/globals_func.html | 184 + .../docs/doxygen/html/globals_g.html | 98 + .../docs/doxygen/html/globals_h.html | 107 + .../docs/doxygen/html/globals_i.html | 92 + .../docs/doxygen/html/globals_j.html | 79 + .../docs/doxygen/html/globals_k.html | 7825 +++++++++++++++++ .../docs/doxygen/html/globals_l.html | 94 + .../docs/doxygen/html/globals_m.html | 112 + .../docs/doxygen/html/globals_n.html | 88 + .../docs/doxygen/html/globals_p.html | 91 + .../docs/doxygen/html/globals_r.html | 121 + .../docs/doxygen/html/globals_s.html | 124 + .../docs/doxygen/html/globals_t.html | 92 + .../docs/doxygen/html/globals_type.html | 77 + .../docs/doxygen/html/globals_u.html | 86 + .../docs/doxygen/html/globals_v.html | 79 + .../docs/doxygen/html/globals_vars.html | 82 + .../docs/doxygen/html/globals_vars_i.html | 85 + .../docs/doxygen/html/globals_vars_k.html | 7798 ++++++++++++++++ .../docs/doxygen/html/globals_w.html | 85 + .../docs/doxygen/html/globals_x.html | 80 + .../docs/doxygen/html/globals_y.html | 82 + .../docs/doxygen/html/globals_z.html | 79 + .../docs/doxygen/html/graph_legend.html | 136 + .../docs/doxygen/html/graph_legend.md5 | 1 + .../docs/doxygen/html/graph_legend.png | Bin 0 -> 20615 bytes .../docs/doxygen/html/hierarchy.html | 135 + .../docs/doxygen/html/i18n_8h.html | 82 + .../docs/doxygen/html/i18n_8h_source.html | 107 + .../docs/doxygen/html/index.html | 104 + .../docs/doxygen/html/inherit_graph_0.map | 3 + .../docs/doxygen/html/inherit_graph_0.md5 | 1 + .../docs/doxygen/html/inherit_graph_0.png | Bin 0 -> 1406 bytes .../docs/doxygen/html/inherit_graph_1.map | 3 + .../docs/doxygen/html/inherit_graph_1.md5 | 1 + .../docs/doxygen/html/inherit_graph_1.png | Bin 0 -> 674 bytes .../docs/doxygen/html/inherit_graph_10.map | 3 + .../docs/doxygen/html/inherit_graph_10.md5 | 1 + .../docs/doxygen/html/inherit_graph_10.png | Bin 0 -> 1281 bytes .../docs/doxygen/html/inherit_graph_11.map | 3 + .../docs/doxygen/html/inherit_graph_11.md5 | 1 + .../docs/doxygen/html/inherit_graph_11.png | Bin 0 -> 1088 bytes .../docs/doxygen/html/inherit_graph_12.map | 3 + .../docs/doxygen/html/inherit_graph_12.md5 | 1 + .../docs/doxygen/html/inherit_graph_12.png | Bin 0 -> 1317 bytes .../docs/doxygen/html/inherit_graph_13.map | 3 + .../docs/doxygen/html/inherit_graph_13.md5 | 1 + .../docs/doxygen/html/inherit_graph_13.png | Bin 0 -> 1237 bytes .../docs/doxygen/html/inherit_graph_14.map | 3 + .../docs/doxygen/html/inherit_graph_14.md5 | 1 + .../docs/doxygen/html/inherit_graph_14.png | Bin 0 -> 1264 bytes .../docs/doxygen/html/inherit_graph_15.map | 3 + .../docs/doxygen/html/inherit_graph_15.md5 | 1 + .../docs/doxygen/html/inherit_graph_15.png | Bin 0 -> 1482 bytes .../docs/doxygen/html/inherit_graph_16.map | 3 + .../docs/doxygen/html/inherit_graph_16.md5 | 1 + .../docs/doxygen/html/inherit_graph_16.png | Bin 0 -> 1334 bytes .../docs/doxygen/html/inherit_graph_17.map | 3 + .../docs/doxygen/html/inherit_graph_17.md5 | 1 + .../docs/doxygen/html/inherit_graph_17.png | Bin 0 -> 1280 bytes .../docs/doxygen/html/inherit_graph_18.map | 3 + .../docs/doxygen/html/inherit_graph_18.md5 | 1 + .../docs/doxygen/html/inherit_graph_18.png | Bin 0 -> 1904 bytes .../docs/doxygen/html/inherit_graph_19.map | 3 + .../docs/doxygen/html/inherit_graph_19.md5 | 1 + .../docs/doxygen/html/inherit_graph_19.png | Bin 0 -> 1214 bytes .../docs/doxygen/html/inherit_graph_2.map | 3 + .../docs/doxygen/html/inherit_graph_2.md5 | 1 + .../docs/doxygen/html/inherit_graph_2.png | Bin 0 -> 1068 bytes .../docs/doxygen/html/inherit_graph_20.map | 3 + .../docs/doxygen/html/inherit_graph_20.md5 | 1 + .../docs/doxygen/html/inherit_graph_20.png | Bin 0 -> 1300 bytes .../docs/doxygen/html/inherit_graph_21.map | 3 + .../docs/doxygen/html/inherit_graph_21.md5 | 1 + .../docs/doxygen/html/inherit_graph_21.png | Bin 0 -> 1924 bytes .../docs/doxygen/html/inherit_graph_22.map | 3 + .../docs/doxygen/html/inherit_graph_22.md5 | 1 + .../docs/doxygen/html/inherit_graph_22.png | Bin 0 -> 1089 bytes .../docs/doxygen/html/inherit_graph_23.map | 3 + .../docs/doxygen/html/inherit_graph_23.md5 | 1 + .../docs/doxygen/html/inherit_graph_23.png | Bin 0 -> 1144 bytes .../docs/doxygen/html/inherit_graph_24.map | 3 + .../docs/doxygen/html/inherit_graph_24.md5 | 1 + .../docs/doxygen/html/inherit_graph_24.png | Bin 0 -> 1273 bytes .../docs/doxygen/html/inherit_graph_25.map | 4 + .../docs/doxygen/html/inherit_graph_25.md5 | 1 + .../docs/doxygen/html/inherit_graph_25.png | Bin 0 -> 2195 bytes .../docs/doxygen/html/inherit_graph_26.map | 3 + .../docs/doxygen/html/inherit_graph_26.md5 | 1 + .../docs/doxygen/html/inherit_graph_26.png | Bin 0 -> 1725 bytes .../docs/doxygen/html/inherit_graph_27.map | 3 + .../docs/doxygen/html/inherit_graph_27.md5 | 1 + .../docs/doxygen/html/inherit_graph_27.png | Bin 0 -> 911 bytes .../docs/doxygen/html/inherit_graph_28.map | 3 + .../docs/doxygen/html/inherit_graph_28.md5 | 1 + .../docs/doxygen/html/inherit_graph_28.png | Bin 0 -> 1369 bytes .../docs/doxygen/html/inherit_graph_29.map | 3 + .../docs/doxygen/html/inherit_graph_29.md5 | 1 + .../docs/doxygen/html/inherit_graph_29.png | Bin 0 -> 1340 bytes .../docs/doxygen/html/inherit_graph_3.map | 3 + .../docs/doxygen/html/inherit_graph_3.md5 | 1 + .../docs/doxygen/html/inherit_graph_3.png | Bin 0 -> 1161 bytes .../docs/doxygen/html/inherit_graph_30.map | 3 + .../docs/doxygen/html/inherit_graph_30.md5 | 1 + .../docs/doxygen/html/inherit_graph_30.png | Bin 0 -> 1573 bytes .../docs/doxygen/html/inherit_graph_31.map | 3 + .../docs/doxygen/html/inherit_graph_31.md5 | 1 + .../docs/doxygen/html/inherit_graph_31.png | Bin 0 -> 1583 bytes .../docs/doxygen/html/inherit_graph_32.map | 3 + .../docs/doxygen/html/inherit_graph_32.md5 | 1 + .../docs/doxygen/html/inherit_graph_32.png | Bin 0 -> 2616 bytes .../docs/doxygen/html/inherit_graph_33.map | 3 + .../docs/doxygen/html/inherit_graph_33.md5 | 1 + .../docs/doxygen/html/inherit_graph_33.png | Bin 0 -> 2503 bytes .../docs/doxygen/html/inherit_graph_34.map | 3 + .../docs/doxygen/html/inherit_graph_34.md5 | 1 + .../docs/doxygen/html/inherit_graph_34.png | Bin 0 -> 1440 bytes .../docs/doxygen/html/inherit_graph_35.map | 3 + .../docs/doxygen/html/inherit_graph_35.md5 | 1 + .../docs/doxygen/html/inherit_graph_35.png | Bin 0 -> 1494 bytes .../docs/doxygen/html/inherit_graph_36.map | 3 + .../docs/doxygen/html/inherit_graph_36.md5 | 1 + .../docs/doxygen/html/inherit_graph_36.png | Bin 0 -> 1122 bytes .../docs/doxygen/html/inherit_graph_37.map | 3 + .../docs/doxygen/html/inherit_graph_37.md5 | 1 + .../docs/doxygen/html/inherit_graph_37.png | Bin 0 -> 878 bytes .../docs/doxygen/html/inherit_graph_38.map | 3 + .../docs/doxygen/html/inherit_graph_38.md5 | 1 + .../docs/doxygen/html/inherit_graph_38.png | Bin 0 -> 1648 bytes .../docs/doxygen/html/inherit_graph_39.map | 3 + .../docs/doxygen/html/inherit_graph_39.md5 | 1 + .../docs/doxygen/html/inherit_graph_39.png | Bin 0 -> 925 bytes .../docs/doxygen/html/inherit_graph_4.map | 3 + .../docs/doxygen/html/inherit_graph_4.md5 | 1 + .../docs/doxygen/html/inherit_graph_4.png | Bin 0 -> 1579 bytes .../docs/doxygen/html/inherit_graph_40.map | 3 + .../docs/doxygen/html/inherit_graph_40.md5 | 1 + .../docs/doxygen/html/inherit_graph_40.png | Bin 0 -> 1459 bytes .../docs/doxygen/html/inherit_graph_41.map | 3 + .../docs/doxygen/html/inherit_graph_41.md5 | 1 + .../docs/doxygen/html/inherit_graph_41.png | Bin 0 -> 1014 bytes .../docs/doxygen/html/inherit_graph_42.map | 3 + .../docs/doxygen/html/inherit_graph_42.md5 | 1 + .../docs/doxygen/html/inherit_graph_42.png | Bin 0 -> 1059 bytes .../docs/doxygen/html/inherit_graph_43.map | 3 + .../docs/doxygen/html/inherit_graph_43.md5 | 1 + .../docs/doxygen/html/inherit_graph_43.png | Bin 0 -> 869 bytes .../docs/doxygen/html/inherit_graph_44.map | 3 + .../docs/doxygen/html/inherit_graph_44.md5 | 1 + .../docs/doxygen/html/inherit_graph_44.png | Bin 0 -> 1428 bytes .../docs/doxygen/html/inherit_graph_45.map | 3 + .../docs/doxygen/html/inherit_graph_45.md5 | 1 + .../docs/doxygen/html/inherit_graph_45.png | Bin 0 -> 1328 bytes .../docs/doxygen/html/inherit_graph_46.map | 3 + .../docs/doxygen/html/inherit_graph_46.md5 | 1 + .../docs/doxygen/html/inherit_graph_46.png | Bin 0 -> 1310 bytes .../docs/doxygen/html/inherit_graph_47.map | 3 + .../docs/doxygen/html/inherit_graph_47.md5 | 1 + .../docs/doxygen/html/inherit_graph_47.png | Bin 0 -> 1480 bytes .../docs/doxygen/html/inherit_graph_48.map | 3 + .../docs/doxygen/html/inherit_graph_48.md5 | 1 + .../docs/doxygen/html/inherit_graph_48.png | Bin 0 -> 1310 bytes .../docs/doxygen/html/inherit_graph_49.map | 3 + .../docs/doxygen/html/inherit_graph_49.md5 | 1 + .../docs/doxygen/html/inherit_graph_49.png | Bin 0 -> 1308 bytes .../docs/doxygen/html/inherit_graph_5.map | 3 + .../docs/doxygen/html/inherit_graph_5.md5 | 1 + .../docs/doxygen/html/inherit_graph_5.png | Bin 0 -> 1141 bytes .../docs/doxygen/html/inherit_graph_50.map | 3 + .../docs/doxygen/html/inherit_graph_50.md5 | 1 + .../docs/doxygen/html/inherit_graph_50.png | Bin 0 -> 1307 bytes .../docs/doxygen/html/inherit_graph_51.map | 3 + .../docs/doxygen/html/inherit_graph_51.md5 | 1 + .../docs/doxygen/html/inherit_graph_51.png | Bin 0 -> 985 bytes .../docs/doxygen/html/inherit_graph_6.map | 3 + .../docs/doxygen/html/inherit_graph_6.md5 | 1 + .../docs/doxygen/html/inherit_graph_6.png | Bin 0 -> 1277 bytes .../docs/doxygen/html/inherit_graph_7.map | 3 + .../docs/doxygen/html/inherit_graph_7.md5 | 1 + .../docs/doxygen/html/inherit_graph_7.png | Bin 0 -> 1330 bytes .../docs/doxygen/html/inherit_graph_8.map | 3 + .../docs/doxygen/html/inherit_graph_8.md5 | 1 + .../docs/doxygen/html/inherit_graph_8.png | Bin 0 -> 1257 bytes .../docs/doxygen/html/inherit_graph_9.map | 3 + .../docs/doxygen/html/inherit_graph_9.md5 | 1 + .../docs/doxygen/html/inherit_graph_9.png | Bin 0 -> 1371 bytes .../docs/doxygen/html/inherits.html | 341 + .../docs/doxygen/html/ir__Airwell_8cpp.html | 172 + .../docs/doxygen/html/ir__Aiwa_8cpp.html | 157 + .../docs/doxygen/html/ir__Amcor_8cpp.html | 239 + .../docs/doxygen/html/ir__Amcor_8h.html | 615 ++ .../doxygen/html/ir__Amcor_8h_source.html | 274 + .../docs/doxygen/html/ir__Argo_8cpp.html | 188 + .../docs/doxygen/html/ir__Argo_8h.html | 747 ++ .../docs/doxygen/html/ir__Argo_8h_source.html | 373 + .../docs/doxygen/html/ir__Carrier_8cpp.html | 400 + .../docs/doxygen/html/ir__Carrier_8h.html | 568 ++ .../doxygen/html/ir__Carrier_8h_source.html | 275 + .../docs/doxygen/html/ir__Coolix_8cpp.html | 301 + .../docs/doxygen/html/ir__Coolix_8h.html | 768 ++ .../doxygen/html/ir__Coolix_8h_source.html | 365 + .../docs/doxygen/html/ir__Corona_8cpp.html | 256 + .../docs/doxygen/html/ir__Corona_8h.html | 730 ++ .../doxygen/html/ir__Corona_8h_source.html | 319 + .../docs/doxygen/html/ir__Daikin_8cpp.html | 114 + .../docs/doxygen/html/ir__Daikin_8h.html | 5674 ++++++++++++ .../doxygen/html/ir__Daikin_8h_source.html | 1801 ++++ .../docs/doxygen/html/ir__Delonghi_8cpp.html | 220 + .../docs/doxygen/html/ir__Delonghi_8h.html | 695 ++ .../doxygen/html/ir__Delonghi_8h_source.html | 323 + .../docs/doxygen/html/ir__Denon_8cpp.html | 346 + .../docs/doxygen/html/ir__Dish_8cpp.html | 305 + .../docs/doxygen/html/ir__Doshisha_8cpp.html | 429 + .../docs/doxygen/html/ir__Electra_8cpp.html | 195 + .../docs/doxygen/html/ir__Electra_8h.html | 550 ++ .../doxygen/html/ir__Electra_8h_source.html | 286 + .../docs/doxygen/html/ir__Epson_8cpp.html | 86 + .../docs/doxygen/html/ir__Fujitsu_8cpp.html | 188 + .../docs/doxygen/html/ir__Fujitsu_8h.html | 581 ++ .../doxygen/html/ir__Fujitsu_8h_source.html | 350 + .../docs/doxygen/html/ir__GICable_8cpp.html | 233 + .../doxygen/html/ir__GlobalCache_8cpp.html | 189 + .../doxygen/html/ir__Goodweather_8cpp.html | 86 + .../docs/doxygen/html/ir__Goodweather_8h.html | 886 ++ .../html/ir__Goodweather_8h_source.html | 310 + .../docs/doxygen/html/ir__Gree_8cpp.html | 224 + .../docs/doxygen/html/ir__Gree_8h.html | 934 ++ .../docs/doxygen/html/ir__Gree_8h_source.html | 387 + .../docs/doxygen/html/ir__Haier_8cpp.html | 199 + .../docs/doxygen/html/ir__Haier_8h.html | 1363 +++ .../doxygen/html/ir__Haier_8h_source.html | 587 ++ .../docs/doxygen/html/ir__Hitachi_8cpp.html | 423 + .../docs/doxygen/html/ir__Hitachi_8h.html | 2028 +++++ .../doxygen/html/ir__Hitachi_8h_source.html | 734 ++ .../docs/doxygen/html/ir__Inax_8cpp.html | 207 + .../docs/doxygen/html/ir__JVC_8cpp.html | 343 + .../doxygen/html/ir__Kelvinator_8cpp.html | 569 ++ .../docs/doxygen/html/ir__Kelvinator_8h.html | 293 + .../html/ir__Kelvinator_8h_source.html | 336 + .../docs/doxygen/html/ir__LG_8cpp.html | 557 ++ .../docs/doxygen/html/ir__LG_8h.html | 550 ++ .../docs/doxygen/html/ir__LG_8h_source.html | 262 + .../docs/doxygen/html/ir__Lasertag_8cpp.html | 221 + .../docs/doxygen/html/ir__Lego_8cpp.html | 176 + .../docs/doxygen/html/ir__Lutron_8cpp.html | 144 + .../docs/doxygen/html/ir__MWM_8cpp.html | 237 + .../docs/doxygen/html/ir__Magiquest_8cpp.html | 88 + .../docs/doxygen/html/ir__Magiquest_8h.html | 232 + .../doxygen/html/ir__Magiquest_8h_source.html | 137 + .../docs/doxygen/html/ir__Midea_8cpp.html | 341 + .../docs/doxygen/html/ir__Midea_8h.html | 454 + .../doxygen/html/ir__Midea_8h_source.html | 264 + .../html/ir__MitsubishiHeavy_8cpp.html | 194 + .../doxygen/html/ir__MitsubishiHeavy_8h.html | 1314 +++ .../html/ir__MitsubishiHeavy_8h_source.html | 536 ++ .../doxygen/html/ir__Mitsubishi_8cpp.html | 722 ++ .../docs/doxygen/html/ir__Mitsubishi_8h.html | 1609 ++++ .../html/ir__Mitsubishi_8h_source.html | 612 ++ .../doxygen/html/ir__Multibrackets_8cpp.html | 175 + .../docs/doxygen/html/ir__NEC_8cpp.html | 86 + .../docs/doxygen/html/ir__NEC_8h.html | 642 ++ .../docs/doxygen/html/ir__NEC_8h_source.html | 189 + .../docs/doxygen/html/ir__Neoclima_8cpp.html | 191 + .../docs/doxygen/html/ir__Neoclima_8h.html | 888 ++ .../doxygen/html/ir__Neoclima_8h_source.html | 340 + .../docs/doxygen/html/ir__Nikai_8cpp.html | 301 + .../docs/doxygen/html/ir__Panasonic_8cpp.html | 416 + .../docs/doxygen/html/ir__Panasonic_8h.html | 826 ++ .../doxygen/html/ir__Panasonic_8h_source.html | 368 + .../docs/doxygen/html/ir__Pioneer_8cpp.html | 341 + .../docs/doxygen/html/ir__Pronto_8cpp.html | 195 + .../docs/doxygen/html/ir__RC5__RC6_8cpp.html | 361 + .../docs/doxygen/html/ir__RCMM_8cpp.html | 429 + .../docs/doxygen/html/ir__Samsung_8cpp.html | 529 ++ .../docs/doxygen/html/ir__Samsung_8h.html | 748 ++ .../doxygen/html/ir__Samsung_8h_source.html | 335 + .../docs/doxygen/html/ir__Sanyo_8cpp.html | 352 + .../docs/doxygen/html/ir__Sharp_8cpp.html | 301 + .../docs/doxygen/html/ir__Sharp_8h.html | 1074 +++ .../doxygen/html/ir__Sharp_8h_source.html | 373 + .../docs/doxygen/html/ir__Sherwood_8cpp.html | 85 + .../docs/doxygen/html/ir__Sony_8cpp.html | 335 + .../docs/doxygen/html/ir__Symphony_8cpp.html | 181 + .../docs/doxygen/html/ir__Tcl_8cpp.html | 86 + .../docs/doxygen/html/ir__Tcl_8h.html | 613 ++ .../docs/doxygen/html/ir__Tcl_8h_source.html | 281 + .../docs/doxygen/html/ir__Teco_8cpp.html | 188 + .../docs/doxygen/html/ir__Teco_8h.html | 565 ++ .../docs/doxygen/html/ir__Teco_8h_source.html | 324 + .../docs/doxygen/html/ir__Toshiba_8cpp.html | 191 + .../docs/doxygen/html/ir__Toshiba_8h.html | 376 + .../doxygen/html/ir__Toshiba_8h_source.html | 238 + .../docs/doxygen/html/ir__Trotec_8cpp.html | 207 + .../docs/doxygen/html/ir__Trotec_8h.html | 456 + .../doxygen/html/ir__Trotec_8h_source.html | 270 + .../docs/doxygen/html/ir__Vestel_8cpp.html | 85 + .../docs/doxygen/html/ir__Vestel_8h.html | 905 ++ .../doxygen/html/ir__Vestel_8h_source.html | 378 + .../docs/doxygen/html/ir__Whirlpool_8cpp.html | 224 + .../docs/doxygen/html/ir__Whirlpool_8h.html | 937 ++ .../doxygen/html/ir__Whirlpool_8h_source.html | 353 + .../docs/doxygen/html/ir__Whynter_8cpp.html | 344 + .../docs/doxygen/html/ir__Zepeal_8cpp.html | 333 + .../docs/doxygen/html/it-IT_8h.html | 82 + .../docs/doxygen/html/it-IT_8h_source.html | 239 + .../docs/doxygen/html/jquery.js | 35 + .../doxygen/html/md_src_locale_README.html | 135 + .../docs/doxygen/html/menu.js | 50 + .../docs/doxygen/html/menudata.js | 189 + .../docs/doxygen/html/namespaceIRAcUtils.html | 161 + .../docs/doxygen/html/namespaceirutils.html | 1303 +++ .../docs/doxygen/html/namespacemembers.html | 188 + .../doxygen/html/namespacemembers_enum.html | 86 + .../doxygen/html/namespacemembers_func.html | 134 + .../docs/doxygen/html/namespaces.html | 83 + .../docs/doxygen/html/namespacestdAc.html | 286 + .../docs/doxygen/html/nav_f.png | Bin 0 -> 153 bytes .../docs/doxygen/html/nav_g.png | Bin 0 -> 95 bytes .../docs/doxygen/html/nav_h.png | Bin 0 -> 98 bytes .../docs/doxygen/html/open.png | Bin 0 -> 123 bytes .../docs/doxygen/html/pages.html | 83 + .../docs/doxygen/html/search/all_0.html | 30 + .../docs/doxygen/html/search/all_0.js | 50 + .../docs/doxygen/html/search/all_1.html | 30 + .../docs/doxygen/html/search/all_1.js | 23 + .../docs/doxygen/html/search/all_10.html | 30 + .../docs/doxygen/html/search/all_10.js | 13 + .../docs/doxygen/html/search/all_11.html | 30 + .../docs/doxygen/html/search/all_11.js | 4 + .../docs/doxygen/html/search/all_12.html | 30 + .../docs/doxygen/html/search/all_12.js | 29 + .../docs/doxygen/html/search/all_13.html | 30 + .../docs/doxygen/html/search/all_13.js | 244 + .../docs/doxygen/html/search/all_14.html | 30 + .../docs/doxygen/html/search/all_14.js | 28 + .../docs/doxygen/html/search/all_15.html | 30 + .../docs/doxygen/html/search/all_15.js | 10 + .../docs/doxygen/html/search/all_16.html | 30 + .../docs/doxygen/html/search/all_16.js | 8 + .../docs/doxygen/html/search/all_17.html | 30 + .../docs/doxygen/html/search/all_17.js | 8 + .../docs/doxygen/html/search/all_18.html | 30 + .../docs/doxygen/html/search/all_18.js | 4 + .../docs/doxygen/html/search/all_19.html | 30 + .../docs/doxygen/html/search/all_19.js | 5 + .../docs/doxygen/html/search/all_1a.html | 30 + .../docs/doxygen/html/search/all_1a.js | 6 + .../docs/doxygen/html/search/all_1b.html | 30 + .../docs/doxygen/html/search/all_1b.js | 4 + .../docs/doxygen/html/search/all_2.html | 30 + .../docs/doxygen/html/search/all_2.js | 12 + .../docs/doxygen/html/search/all_3.html | 30 + .../docs/doxygen/html/search/all_3.js | 45 + .../docs/doxygen/html/search/all_4.html | 30 + .../docs/doxygen/html/search/all_4.js | 111 + .../docs/doxygen/html/search/all_5.html | 30 + .../docs/doxygen/html/search/all_5.js | 34 + .../docs/doxygen/html/search/all_6.html | 30 + .../docs/doxygen/html/search/all_6.js | 15 + .../docs/doxygen/html/search/all_7.html | 30 + .../docs/doxygen/html/search/all_7.js | 118 + .../docs/doxygen/html/search/all_8.html | 30 + .../docs/doxygen/html/search/all_8.js | 25 + .../docs/doxygen/html/search/all_9.html | 30 + .../docs/doxygen/html/search/all_9.js | 175 + .../docs/doxygen/html/search/all_a.html | 30 + .../docs/doxygen/html/search/all_a.js | 4 + .../docs/doxygen/html/search/all_b.html | 30 + .../docs/doxygen/html/search/all_b.js | 2560 ++++++ .../docs/doxygen/html/search/all_c.html | 30 + .../docs/doxygen/html/search/all_c.js | 15 + .../docs/doxygen/html/search/all_d.html | 30 + .../docs/doxygen/html/search/all_d.js | 39 + .../docs/doxygen/html/search/all_e.html | 30 + .../docs/doxygen/html/search/all_e.js | 8 + .../docs/doxygen/html/search/all_f.html | 30 + .../docs/doxygen/html/search/all_f.js | 12 + .../docs/doxygen/html/search/classes_0.html | 30 + .../docs/doxygen/html/search/classes_0.js | 4 + .../docs/doxygen/html/search/classes_1.html | 30 + .../docs/doxygen/html/search/classes_1.js | 51 + .../docs/doxygen/html/search/classes_2.html | 30 + .../docs/doxygen/html/search/classes_2.js | 5 + .../docs/doxygen/html/search/classes_3.html | 30 + .../docs/doxygen/html/search/classes_3.js | 4 + .../docs/doxygen/html/search/classes_4.html | 30 + .../docs/doxygen/html/search/classes_4.js | 4 + .../docs/doxygen/html/search/close.png | Bin 0 -> 273 bytes .../docs/doxygen/html/search/enums_0.html | 30 + .../docs/doxygen/html/search/enums_0.js | 4 + .../docs/doxygen/html/search/enums_1.html | 30 + .../docs/doxygen/html/search/enums_1.js | 5 + .../docs/doxygen/html/search/enums_2.html | 30 + .../docs/doxygen/html/search/enums_2.js | 4 + .../docs/doxygen/html/search/enums_3.html | 30 + .../docs/doxygen/html/search/enums_3.js | 4 + .../docs/doxygen/html/search/enums_4.html | 30 + .../docs/doxygen/html/search/enums_4.js | 4 + .../docs/doxygen/html/search/enums_5.html | 30 + .../docs/doxygen/html/search/enums_5.js | 4 + .../docs/doxygen/html/search/enums_6.html | 30 + .../docs/doxygen/html/search/enums_6.js | 4 + .../docs/doxygen/html/search/enums_7.html | 30 + .../docs/doxygen/html/search/enums_7.js | 5 + .../docs/doxygen/html/search/enums_8.html | 30 + .../docs/doxygen/html/search/enums_8.js | 4 + .../doxygen/html/search/enumvalues_0.html | 30 + .../docs/doxygen/html/search/enumvalues_0.js | 13 + .../doxygen/html/search/enumvalues_1.html | 30 + .../docs/doxygen/html/search/enumvalues_1.js | 8 + .../doxygen/html/search/enumvalues_10.html | 30 + .../docs/doxygen/html/search/enumvalues_10.js | 7 + .../doxygen/html/search/enumvalues_11.html | 30 + .../docs/doxygen/html/search/enumvalues_11.js | 5 + .../doxygen/html/search/enumvalues_12.html | 30 + .../docs/doxygen/html/search/enumvalues_12.js | 4 + .../doxygen/html/search/enumvalues_13.html | 30 + .../docs/doxygen/html/search/enumvalues_13.js | 5 + .../doxygen/html/search/enumvalues_14.html | 30 + .../docs/doxygen/html/search/enumvalues_14.js | 5 + .../doxygen/html/search/enumvalues_15.html | 30 + .../docs/doxygen/html/search/enumvalues_15.js | 4 + .../doxygen/html/search/enumvalues_2.html | 30 + .../docs/doxygen/html/search/enumvalues_2.js | 17 + .../doxygen/html/search/enumvalues_3.html | 30 + .../docs/doxygen/html/search/enumvalues_3.js | 5 + .../doxygen/html/search/enumvalues_4.html | 30 + .../docs/doxygen/html/search/enumvalues_4.js | 4 + .../doxygen/html/search/enumvalues_5.html | 30 + .../docs/doxygen/html/search/enumvalues_5.js | 8 + .../doxygen/html/search/enumvalues_6.html | 30 + .../docs/doxygen/html/search/enumvalues_6.js | 11 + .../doxygen/html/search/enumvalues_7.html | 30 + .../docs/doxygen/html/search/enumvalues_7.js | 4 + .../doxygen/html/search/enumvalues_8.html | 30 + .../docs/doxygen/html/search/enumvalues_8.js | 4 + .../doxygen/html/search/enumvalues_9.html | 30 + .../docs/doxygen/html/search/enumvalues_9.js | 35 + .../doxygen/html/search/enumvalues_a.html | 30 + .../docs/doxygen/html/search/enumvalues_a.js | 8 + .../doxygen/html/search/enumvalues_b.html | 30 + .../docs/doxygen/html/search/enumvalues_b.js | 15 + .../doxygen/html/search/enumvalues_c.html | 30 + .../docs/doxygen/html/search/enumvalues_c.js | 7 + .../doxygen/html/search/enumvalues_d.html | 30 + .../docs/doxygen/html/search/enumvalues_d.js | 7 + .../doxygen/html/search/enumvalues_e.html | 30 + .../docs/doxygen/html/search/enumvalues_e.js | 10 + .../doxygen/html/search/enumvalues_f.html | 30 + .../docs/doxygen/html/search/enumvalues_f.js | 14 + .../docs/doxygen/html/search/files_0.html | 30 + .../docs/doxygen/html/search/files_0.js | 7 + .../docs/doxygen/html/search/files_1.html | 30 + .../docs/doxygen/html/search/files_1.js | 8 + .../docs/doxygen/html/search/files_2.html | 30 + .../docs/doxygen/html/search/files_2.js | 4 + .../docs/doxygen/html/search/files_3.html | 30 + .../docs/doxygen/html/search/files_3.js | 104 + .../docs/doxygen/html/search/files_4.html | 30 + .../docs/doxygen/html/search/files_4.js | 4 + .../docs/doxygen/html/search/files_5.html | 30 + .../docs/doxygen/html/search/files_5.js | 4 + .../docs/doxygen/html/search/functions_0.html | 30 + .../docs/doxygen/html/search/functions_0.js | 17 + .../docs/doxygen/html/search/functions_1.html | 30 + .../docs/doxygen/html/search/functions_1.js | 14 + .../doxygen/html/search/functions_10.html | 30 + .../docs/doxygen/html/search/functions_10.js | 13 + .../doxygen/html/search/functions_11.html | 30 + .../docs/doxygen/html/search/functions_11.js | 218 + .../doxygen/html/search/functions_12.html | 30 + .../docs/doxygen/html/search/functions_12.js | 21 + .../doxygen/html/search/functions_13.html | 30 + .../docs/doxygen/html/search/functions_13.js | 6 + .../doxygen/html/search/functions_14.html | 30 + .../docs/doxygen/html/search/functions_14.js | 6 + .../doxygen/html/search/functions_15.html | 30 + .../docs/doxygen/html/search/functions_15.js | 4 + .../doxygen/html/search/functions_16.html | 30 + .../docs/doxygen/html/search/functions_16.js | 4 + .../doxygen/html/search/functions_17.html | 30 + .../docs/doxygen/html/search/functions_17.js | 4 + .../docs/doxygen/html/search/functions_2.html | 30 + .../docs/doxygen/html/search/functions_2.js | 8 + .../docs/doxygen/html/search/functions_3.html | 30 + .../docs/doxygen/html/search/functions_3.js | 34 + .../docs/doxygen/html/search/functions_4.html | 30 + .../docs/doxygen/html/search/functions_4.js | 95 + .../docs/doxygen/html/search/functions_5.html | 30 + .../docs/doxygen/html/search/functions_5.js | 26 + .../docs/doxygen/html/search/functions_6.html | 30 + .../docs/doxygen/html/search/functions_6.js | 8 + .../docs/doxygen/html/search/functions_7.html | 30 + .../docs/doxygen/html/search/functions_7.js | 114 + .../docs/doxygen/html/search/functions_8.html | 30 + .../docs/doxygen/html/search/functions_8.js | 15 + .../docs/doxygen/html/search/functions_9.html | 30 + .../docs/doxygen/html/search/functions_9.js | 64 + .../docs/doxygen/html/search/functions_a.html | 30 + .../docs/doxygen/html/search/functions_a.js | 4 + .../docs/doxygen/html/search/functions_b.html | 30 + .../docs/doxygen/html/search/functions_b.js | 6 + .../docs/doxygen/html/search/functions_c.html | 30 + .../docs/doxygen/html/search/functions_c.js | 25 + .../docs/doxygen/html/search/functions_d.html | 30 + .../docs/doxygen/html/search/functions_d.js | 4 + .../docs/doxygen/html/search/functions_e.html | 30 + .../docs/doxygen/html/search/functions_e.js | 6 + .../docs/doxygen/html/search/functions_f.html | 30 + .../docs/doxygen/html/search/functions_f.js | 4 + .../docs/doxygen/html/search/mag_sel.png | Bin 0 -> 465 bytes .../doxygen/html/search/namespaces_0.html | 30 + .../docs/doxygen/html/search/namespaces_0.js | 5 + .../doxygen/html/search/namespaces_1.html | 30 + .../docs/doxygen/html/search/namespaces_1.js | 4 + .../docs/doxygen/html/search/nomatches.html | 12 + .../docs/doxygen/html/search/pages_0.html | 30 + .../docs/doxygen/html/search/pages_0.js | 4 + .../docs/doxygen/html/search/pages_1.html | 30 + .../docs/doxygen/html/search/pages_1.js | 5 + .../docs/doxygen/html/search/pages_2.html | 30 + .../docs/doxygen/html/search/pages_2.js | 4 + .../docs/doxygen/html/search/related_0.html | 30 + .../docs/doxygen/html/search/related_0.js | 4 + .../docs/doxygen/html/search/search.css | 271 + .../docs/doxygen/html/search/search.js | 814 ++ .../docs/doxygen/html/search/search_l.png | Bin 0 -> 567 bytes .../docs/doxygen/html/search/search_m.png | Bin 0 -> 158 bytes .../docs/doxygen/html/search/search_r.png | Bin 0 -> 553 bytes .../docs/doxygen/html/search/searchdata.js | 45 + .../docs/doxygen/html/search/typedefs_0.html | 30 + .../docs/doxygen/html/search/typedefs_0.js | 4 + .../docs/doxygen/html/search/variables_0.html | 30 + .../docs/doxygen/html/search/variables_0.js | 36 + .../docs/doxygen/html/search/variables_1.html | 30 + .../docs/doxygen/html/search/variables_1.js | 5 + .../doxygen/html/search/variables_10.html | 30 + .../docs/doxygen/html/search/variables_10.js | 11 + .../doxygen/html/search/variables_11.html | 30 + .../docs/doxygen/html/search/variables_11.js | 15 + .../doxygen/html/search/variables_12.html | 30 + .../docs/doxygen/html/search/variables_12.js | 7 + .../doxygen/html/search/variables_13.html | 30 + .../docs/doxygen/html/search/variables_13.js | 5 + .../doxygen/html/search/variables_14.html | 30 + .../docs/doxygen/html/search/variables_14.js | 4 + .../doxygen/html/search/variables_15.html | 30 + .../docs/doxygen/html/search/variables_15.js | 4 + .../doxygen/html/search/variables_16.html | 30 + .../docs/doxygen/html/search/variables_16.js | 4 + .../docs/doxygen/html/search/variables_2.html | 30 + .../docs/doxygen/html/search/variables_2.js | 7 + .../docs/doxygen/html/search/variables_3.html | 30 + .../docs/doxygen/html/search/variables_3.js | 10 + .../docs/doxygen/html/search/variables_4.html | 30 + .../docs/doxygen/html/search/variables_4.js | 6 + .../docs/doxygen/html/search/variables_5.html | 30 + .../docs/doxygen/html/search/variables_5.js | 4 + .../docs/doxygen/html/search/variables_6.html | 30 + .../docs/doxygen/html/search/variables_6.js | 6 + .../docs/doxygen/html/search/variables_7.html | 30 + .../docs/doxygen/html/search/variables_7.js | 4 + .../docs/doxygen/html/search/variables_8.html | 30 + .../docs/doxygen/html/search/variables_8.js | 7 + .../docs/doxygen/html/search/variables_9.html | 30 + .../docs/doxygen/html/search/variables_9.js | 2528 ++++++ .../docs/doxygen/html/search/variables_a.html | 30 + .../docs/doxygen/html/search/variables_a.js | 7 + .../docs/doxygen/html/search/variables_b.html | 30 + .../docs/doxygen/html/search/variables_b.js | 8 + .../docs/doxygen/html/search/variables_c.html | 30 + .../docs/doxygen/html/search/variables_c.js | 4 + .../docs/doxygen/html/search/variables_d.html | 30 + .../docs/doxygen/html/search/variables_d.js | 8 + .../docs/doxygen/html/search/variables_e.html | 30 + .../docs/doxygen/html/search/variables_e.js | 8 + .../docs/doxygen/html/search/variables_f.html | 30 + .../docs/doxygen/html/search/variables_f.js | 4 + .../docs/doxygen/html/splitbar.png | Bin 0 -> 314 bytes .../html/structirparams__t-members.html | 87 + .../docs/doxygen/html/structirparams__t.html | 222 + .../html/structmatch__result__t-members.html | 82 + .../doxygen/html/structmatch__result__t.html | 142 + .../html/structstdAc_1_1state__t-members.html | 101 + .../doxygen/html/structstdAc_1_1state__t.html | 386 + .../docs/doxygen/html/sync_off.png | Bin 0 -> 853 bytes .../docs/doxygen/html/sync_on.png | Bin 0 -> 845 bytes .../docs/doxygen/html/tab_a.png | Bin 0 -> 142 bytes .../docs/doxygen/html/tab_b.png | Bin 0 -> 169 bytes .../docs/doxygen/html/tab_h.png | Bin 0 -> 177 bytes .../docs/doxygen/html/tab_s.png | Bin 0 -> 184 bytes .../docs/doxygen/html/tabs.css | 1 + .../docs/doxygen/html/todo.html | 99 + .../doxygen/html/unionmagiquest-members.html | 87 + .../docs/doxygen/html/unionmagiquest.html | 223 + .../docs/doxygen/html/zh-CN_8h.html | 82 + .../docs/doxygen/html/zh-CN_8h_source.html | 545 ++ .../docs/doxygen_index.md | 60 + .../examples/BlynkIrRemote/BlynkIrRemote.ino | 0 .../examples/BlynkIrRemote/platformio.ini | 1 + .../CommonAcControl/CommonAcControl.ino | 0 .../examples/CommonAcControl/platformio.ini | 26 + .../ControlSamsungAC/ControlSamsungAC.ino | 0 .../examples/ControlSamsungAC}/platformio.ini | 1 + .../DumbIRRepeater/DumbIRRepeater.ino | 0 .../examples/DumbIRRepeater}/platformio.ini | 1 + .../examples/IRGCSendDemo/IRGCSendDemo.ino | 0 .../examples/IRGCSendDemo}/platformio.ini | 1 + .../examples/IRGCTCPServer/IRGCTCPServer.ino | 0 .../examples/IRGCTCPServer}/platformio.ini | 1 + .../examples/IRMQTTServer/IRMQTTServer.h | 0 .../examples/IRMQTTServer/IRMQTTServer.ino | 0 .../examples/IRMQTTServer/platformio.ini | 1 + .../examples/IRServer/IRServer.ino | 0 .../examples/IRServer/platformio.ini | 18 + .../examples/IRrecvDemo/IRrecvDemo.ino | 2 +- .../examples/IRrecvDemo/platformio.ini | 18 + .../examples/IRrecvDump/IRrecvDump.ino | 0 .../examples/IRrecvDump/platformio.ini | 18 + .../examples/IRrecvDumpV2/IRrecvDumpV2.ino | 0 .../examples/IRrecvDumpV2}/platformio.ini | 6 + .../examples/IRrecvDumpV3/BaseOTA.h | 0 .../examples/IRrecvDumpV3/IRrecvDumpV3.ino | 0 .../examples/IRrecvDumpV3}/platformio.ini | 1 + .../examples/IRsendDemo/IRsendDemo.ino | 0 .../examples/IRsendDemo/platformio.ini | 18 + .../IRsendProntoDemo/IRsendProntoDemo.ino | 0 .../examples/IRsendProntoDemo/platformio.ini | 18 + .../JVCPanasonicSendDemo.ino | 0 .../JVCPanasonicSendDemo/platformio.ini | 18 + .../examples/LGACSend/LGACSend.ino | 0 .../examples/LGACSend/platformio.ini | 18 + .../SmartIRRepeater/SmartIRRepeater.ino | 2 + .../examples/SmartIRRepeater/platformio.ini | 36 + .../examples/TurnOnArgoAC/TurnOnArgoAC.ino | 0 .../examples/TurnOnArgoAC/platformio.ini | 18 + .../TurnOnDaikinAC/TurnOnDaikinAC.ino | 0 .../examples/TurnOnDaikinAC/platformio.ini | 18 + .../TurnOnFujitsuAC/TurnOnFujitsuAC.ino | 0 .../examples/TurnOnFujitsuAC/platformio.ini | 18 + .../examples/TurnOnGreeAC/TurnOnGreeAC.ino | 0 .../examples/TurnOnGreeAC/platformio.ini | 18 + .../TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino | 0 .../TurnOnKelvinatorAC/platformio.ini | 18 + .../TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino | 0 .../TurnOnMitsubishiAC/platformio.ini | 18 + .../TurnOnMitsubishiHeavyAc.ino | 0 .../TurnOnMitsubishiHeavyAc/platformio.ini | 18 + .../TurnOnPanasonicAC/TurnOnPanasonicAC.ino | 0 .../examples/TurnOnPanasonicAC/platformio.ini | 18 + .../TurnOnToshibaAC/TurnOnToshibaAC.ino | 0 .../examples/TurnOnToshibaAC/platformio.ini | 18 + .../TurnOnTrotecAC/TurnOnTrotecAC.ino | 0 .../examples/TurnOnTrotecAC/platformio.ini | 18 + .../examples/Web-AC-control/README.md | 0 .../Web-AC-control/Web-AC-control.ino | 0 .../examples/Web-AC-control/platformio.ini | 1 + .../examples/Web-AC-control/printscreen.png | Bin .../Web-AC-control/upload/favicon.ico | Bin .../Web-AC-control/upload/level_1_off.svg | 0 .../Web-AC-control/upload/level_1_on.svg | 0 .../Web-AC-control/upload/level_2_off.svg | 0 .../Web-AC-control/upload/level_2_on.svg | 0 .../Web-AC-control/upload/level_3_off.svg | 0 .../Web-AC-control/upload/level_3_on.svg | 0 .../Web-AC-control/upload/level_4_off.svg | 0 .../Web-AC-control/upload/level_4_on.svg | 0 .../examples/Web-AC-control/upload/ui.html | 0 .../examples/Web-AC-control/upload/ui.js | 0 .../keywords.txt | 177 +- .../library.json | 2 +- .../library.properties | 2 +- .../platformio.ini | 1 + .../pylintrc | 0 .../src/CPPLINT.cfg | 0 .../src/IRac.cpp | 828 +- .../src/IRac.h | 23 +- .../src/IRrecv.cpp | 902 +- .../src/IRrecv.h | 48 +- .../src/IRremoteESP8266.h | 63 +- .../src/IRsend.cpp | 517 +- .../src/IRsend.h | 105 +- lib/IRremoteESP8266-2.7.8/src/IRtext.cpp | 268 + .../src/IRtext.h | 1 + .../src/IRtimer.cpp | 20 +- .../src/IRtimer.h | 5 + .../src/IRutils.cpp | 426 +- .../src/IRutils.h | 4 + .../src/i18n.h | 0 .../src/ir_Airwell.cpp | 59 +- .../src/ir_Aiwa.cpp | 71 +- .../src/ir_Amcor.cpp | 116 +- .../src/ir_Amcor.h | 28 +- .../src/ir_Argo.cpp | 144 +- .../src/ir_Argo.h | 14 +- lib/IRremoteESP8266-2.7.8/src/ir_Carrier.cpp | 545 ++ lib/IRremoteESP8266-2.7.8/src/ir_Carrier.h | 131 + .../src/ir_Coolix.cpp | 166 +- .../src/ir_Coolix.h | 35 +- lib/IRremoteESP8266-2.7.8/src/ir_Corona.cpp | 598 ++ lib/IRremoteESP8266-2.7.8/src/ir_Corona.h | 155 + .../src/ir_Daikin.cpp | 1290 ++- .../src/ir_Daikin.h | 174 +- .../src/ir_Delonghi.cpp | 152 +- .../src/ir_Delonghi.h | 38 +- .../src/ir_Denon.cpp | 60 +- .../src/ir_Dish.cpp | 88 +- .../src/ir_Doshisha.cpp | 80 +- .../src/ir_Electra.cpp | 147 +- .../src/ir_Electra.h | 35 +- .../src/ir_Epson.cpp | 56 +- .../src/ir_Fujitsu.cpp | 193 +- .../src/ir_Fujitsu.h | 26 +- .../src/ir_GICable.cpp | 50 +- .../src/ir_GlobalCache.cpp | 37 +- .../src/ir_Goodweather.cpp | 130 +- .../src/ir_Goodweather.h | 27 +- .../src/ir_Gree.cpp | 219 +- .../src/ir_Gree.h | 22 +- .../src/ir_Haier.cpp | 278 +- .../src/ir_Haier.h | 61 +- .../src/ir_Hitachi.cpp | 687 +- .../src/ir_Hitachi.h | 168 +- .../src/ir_Inax.cpp | 61 +- .../src/ir_JVC.cpp | 80 +- .../src/ir_Kelvinator.cpp | 170 +- .../src/ir_Kelvinator.h | 23 +- .../src/ir_LG.cpp | 222 +- .../src/ir_LG.h | 30 +- .../src/ir_Lasertag.cpp | 56 +- .../src/ir_Lego.cpp | 53 +- .../src/ir_Lutron.cpp | 73 +- .../src/ir_MWM.cpp | 51 +- .../src/ir_Magiquest.cpp | 87 +- .../src/ir_Magiquest.h | 10 +- .../src/ir_Midea.cpp | 283 +- .../src/ir_Midea.h | 39 +- .../src/ir_Mitsubishi.cpp | 637 +- .../src/ir_Mitsubishi.h | 85 +- .../src/ir_MitsubishiHeavy.cpp | 296 +- .../src/ir_MitsubishiHeavy.h | 58 +- .../src/ir_Multibrackets.cpp | 55 +- .../src/ir_NEC.cpp | 90 +- .../src/ir_NEC.h | 22 +- .../src/ir_Neoclima.cpp | 181 +- .../src/ir_Neoclima.h | 39 +- .../src/ir_Nikai.cpp | 49 +- .../src/ir_Panasonic.cpp | 361 +- .../src/ir_Panasonic.h | 68 +- .../src/ir_Pioneer.cpp | 78 +- .../src/ir_Pronto.cpp | 79 +- .../src/ir_RC5_RC6.cpp | 316 +- .../src/ir_RCMM.cpp | 49 +- .../src/ir_Samsung.cpp | 322 +- .../src/ir_Samsung.h | 59 +- .../src/ir_Sanyo.cpp | 156 +- .../src/ir_Sharp.cpp | 359 +- .../src/ir_Sharp.h | 38 +- lib/IRremoteESP8266-2.7.8/src/ir_Sherwood.cpp | 24 + .../src/ir_Sony.cpp | 143 +- .../src/ir_Symphony.cpp | 51 +- .../src/ir_Tcl.cpp | 145 +- .../src/ir_Tcl.h | 25 +- .../src/ir_Teco.cpp | 126 +- .../src/ir_Teco.h | 31 +- .../src/ir_Toshiba.cpp | 164 +- .../src/ir_Toshiba.h | 24 +- .../src/ir_Trotec.cpp | 112 +- .../src/ir_Trotec.h | 32 +- .../src/ir_Vestel.cpp | 222 +- .../src/ir_Vestel.h | 28 +- .../src/ir_Whirlpool.cpp | 199 +- .../src/ir_Whirlpool.h | 38 +- .../src/ir_Whynter.cpp | 55 +- lib/IRremoteESP8266-2.7.8/src/ir_Zepeal.cpp | 94 + .../src/locale/README.md | 36 +- .../src/locale/de-CH.h | 4 +- .../src/locale/de-DE.h | 4 +- .../src/locale/defaults.h | 19 +- .../src/locale/en-AU.h | 0 .../src/locale/en-IE.h | 0 .../src/locale/en-UK.h | 0 .../src/locale/en-US.h | 0 .../src/locale/es-ES.h | 4 +- .../src/locale/fr-FR.h | 4 +- .../src/locale/it-IT.h | 4 +- .../src/locale/zh-CN.h | 6 +- .../test/IRac_test.cpp | 134 +- .../test/IRrecv_test.cpp | 235 +- .../test/IRrecv_test.h | 0 .../test/IRsend_test.cpp | 26 +- .../test/IRsend_test.h | 0 .../test/IRutils_test.cpp | 25 + .../test/Makefile | 2 +- .../test/ir_Airwell_test.cpp | 105 +- .../test/ir_Aiwa_test.cpp | 0 .../test/ir_Amcor_test.cpp | 0 .../test/ir_Argo_test.cpp | 0 .../test/ir_Carrier_test.cpp | 217 +- .../test/ir_Coolix_test.cpp | 0 .../test/ir_Corona_test.cpp | 1690 ++++ .../test/ir_Daikin_test.cpp | 0 .../test/ir_Delonghi_test.cpp | 0 .../test/ir_Denon_test.cpp | 0 .../test/ir_Dish_test.cpp | 0 .../test/ir_Doshisha_test.cpp | 0 .../test/ir_Electra_test.cpp | 0 .../test/ir_Epson_test.cpp | 0 .../test/ir_Fujitsu_test.cpp | 0 .../test/ir_GICable_test.cpp | 0 .../test/ir_GlobalCache_test.cpp | 0 .../test/ir_Goodweather_test.cpp | 0 .../test/ir_Gree_test.cpp | 0 .../test/ir_Haier_test.cpp | 0 .../test/ir_Hitachi_test.cpp | 195 +- .../test/ir_Inax_test.cpp | 0 .../test/ir_JVC_test.cpp | 0 .../test/ir_Kelvinator_test.cpp | 0 .../test/ir_LG_test.cpp | 23 +- .../test/ir_Lasertag_test.cpp | 0 .../test/ir_Lego_test.cpp | 0 .../test/ir_Lutron_test.cpp | 0 .../test/ir_MWM_test.cpp | 0 .../test/ir_Magiquest_test.cpp | 0 .../test/ir_Midea_test.cpp | 162 + .../test/ir_MitsubishiHeavy_test.cpp | 0 .../test/ir_Mitsubishi_test.cpp | 0 .../test/ir_Multibrackets_test.cpp | 0 .../test/ir_NEC_test.cpp | 0 .../test/ir_Neoclima_test.cpp | 0 .../test/ir_Nikai_test.cpp | 0 .../test/ir_Panasonic_test.cpp | 0 .../test/ir_Pioneer_test.cpp | 0 .../test/ir_Pronto_test.cpp | 0 .../test/ir_RC5_RC6_test.cpp | 0 .../test/ir_RCMM_test.cpp | 0 .../test/ir_Samsung_test.cpp | 0 .../test/ir_Sanyo_test.cpp | 0 .../test/ir_Sharp_test.cpp | 0 .../test/ir_Sherwood_test.cpp | 0 .../test/ir_Sony_test.cpp | 0 .../test/ir_Symphony_test.cpp | 0 .../test/ir_Tcl_test.cpp | 0 .../test/ir_Teco_test.cpp | 0 .../test/ir_Toshiba_test.cpp | 0 .../test/ir_Trotec_test.cpp | 0 .../test/ir_Vestel_test.cpp | 0 .../test/ir_Whirlpool_test.cpp | 0 .../test/ir_Whynter_test.cpp | 0 .../test/ir_Zepeal_test.cpp | 312 + .../tools/Makefile | 0 .../tools/RawToGlobalCache.sh | 0 .../tools/auto_analyse_raw_data.py | 130 +- .../tools/auto_analyse_raw_data_test.py | 89 +- .../tools/gc_decode.cpp | 0 .../tools/generate_irtext_h.sh | 0 .../tools/mkkeywords | 0 .../tools/mode2_decode.cpp | 0 .../tools/raw_to_pronto_code.py | 0 .../tools/raw_to_pronto_code_test.py | 0 .../tools/scrape_supported_devices.py | 207 +- tasmota/CHANGELOG.md | 1 + 1269 files changed, 227450 insertions(+), 6389 deletions(-) delete mode 100644 lib/IRremoteESP8266-2.7.7/docs/README.md delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/IRGCTCPServer/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/IRServer/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/IRrecvDemo/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/IRrecvDump/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/IRsendDemo/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/IRsendProntoDemo/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/JVCPanasonicSendDemo/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/LGACSend/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/SmartIRRepeater/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnArgoAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnDaikinAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnFujitsuAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnGreeAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnKelvinatorAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiHeavyAc/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnPanasonicAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnToshibaAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/examples/TurnOnTrotecAC/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.7/src/IRtext.cpp delete mode 100644 lib/IRremoteESP8266-2.7.7/src/ir_Carrier.cpp delete mode 100644 lib/IRremoteESP8266-2.7.7/src/ir_Sherwood.cpp rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/CPPLINT.cfg (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/Doxyfile rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/LICENSE.txt (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/README.md (90%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/README_fr.md (84%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/ReleaseNotes.md (93%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/SupportedProtocols.md (67%) create mode 100644 lib/IRremoteESP8266-2.7.8/docs/README.md create mode 100644 lib/IRremoteESP8266-2.7.8/docs/README_fr.md rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/docs/_config.yml (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/README_8md.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/annotated.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/bc_s.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/bdwn.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classes.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/closed.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/deprecated.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doc.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen.css create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen__index_8md.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dynsections.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-AU_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-AU_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/files.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/folderclosed.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/folderopen.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_g.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_i.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_k.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_l.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_m.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_n.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_o.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_p.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_r.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_s.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_t.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_u.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_v.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_w.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_~.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_g.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_i.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_k.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_l.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_m.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_n.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_o.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_p.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_q.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_r.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_rela.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_s.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_t.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_u.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_v.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_i.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_l.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_m.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_n.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_o.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_p.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_q.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_r.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_s.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_t.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_u.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_v.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_w.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_z.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_w.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_z.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_~.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_enum.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_eval.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_func.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_g.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_i.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_j.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_k.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_l.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_m.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_n.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_p.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_r.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_s.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_t.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_type.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_u.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_v.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_i.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_k.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_w.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_x.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_y.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_z.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/hierarchy.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/index.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.map create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.md5 create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherits.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Airwell_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Aiwa_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Denon_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Dish_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Doshisha_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Epson_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GICable_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GlobalCache_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Inax_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__JVC_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lasertag_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lego_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lutron_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MWM_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Multibrackets_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Nikai_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pioneer_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pronto_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RC5__RC6_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RCMM_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sanyo_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sherwood_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sony_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Symphony_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whynter_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Zepeal_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/jquery.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/md_src_locale_README.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menu.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menudata.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceIRAcUtils.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceirutils.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_enum.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_func.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaces.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacestdAc.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/nav_f.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/nav_g.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/nav_h.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/open.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/pages.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/close.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/mag_sel.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/nomatches.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.css create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search_l.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search_m.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search_r.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/searchdata.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.js create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/splitbar.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/sync_off.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/sync_on.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_a.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_b.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_h.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_s.png create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tabs.css create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/todo.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest-members.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h_source.html create mode 100644 lib/IRremoteESP8266-2.7.8/docs/doxygen_index.md rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/BlynkIrRemote/BlynkIrRemote.ino (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/BlynkIrRemote/platformio.ini (96%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/CommonAcControl/CommonAcControl.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/CommonAcControl/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/ControlSamsungAC/ControlSamsungAC.ino (100%) rename lib/{IRremoteESP8266-2.7.7/examples/IRGCSendDemo => IRremoteESP8266-2.7.8/examples/ControlSamsungAC}/platformio.ini (92%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/DumbIRRepeater/DumbIRRepeater.ino (100%) rename lib/{IRremoteESP8266-2.7.7/examples/CommonAcControl => IRremoteESP8266-2.7.8/examples/DumbIRRepeater}/platformio.ini (92%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRGCSendDemo/IRGCSendDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.7/examples/ControlSamsungAC => IRremoteESP8266-2.7.8/examples/IRGCSendDemo}/platformio.ini (92%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRGCTCPServer/IRGCTCPServer.ino (100%) rename lib/{IRremoteESP8266-2.7.7/examples/DumbIRRepeater => IRremoteESP8266-2.7.8/examples/IRGCTCPServer}/platformio.ini (92%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRMQTTServer/IRMQTTServer.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRMQTTServer/IRMQTTServer.ino (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRMQTTServer/platformio.ini (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRServer/IRServer.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/IRServer/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRrecvDemo/IRrecvDemo.ino (95%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/IRrecvDemo/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRrecvDump/IRrecvDump.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/IRrecvDump/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRrecvDumpV2/IRrecvDumpV2.ino (100%) rename lib/{IRremoteESP8266-2.7.7/examples/IRrecvDumpV3 => IRremoteESP8266-2.7.8/examples/IRrecvDumpV2}/platformio.ini (81%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRrecvDumpV3/BaseOTA.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRrecvDumpV3/IRrecvDumpV3.ino (100%) rename lib/{IRremoteESP8266-2.7.7/examples/IRrecvDumpV2 => IRremoteESP8266-2.7.8/examples/IRrecvDumpV3}/platformio.ini (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRsendDemo/IRsendDemo.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/IRsendDemo/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/IRsendProntoDemo/IRsendProntoDemo.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/IRsendProntoDemo/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/JVCPanasonicSendDemo/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/LGACSend/LGACSend.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/LGACSend/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/SmartIRRepeater/SmartIRRepeater.ino (99%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/SmartIRRepeater/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnArgoAC/TurnOnArgoAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnArgoAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnDaikinAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnFujitsuAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnGreeAC/TurnOnGreeAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnGreeAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnKelvinatorAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiHeavyAc/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnPanasonicAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnToshibaAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/examples/TurnOnTrotecAC/platformio.ini rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/README.md (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/Web-AC-control.ino (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/platformio.ini (96%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/printscreen.png (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/favicon.ico (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_1_off.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_1_on.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_2_off.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_2_on.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_3_off.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_3_on.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_4_off.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/level_4_on.svg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/ui.html (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/examples/Web-AC-control/upload/ui.js (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/keywords.txt (95%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/library.json (98%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/library.properties (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/platformio.ini (94%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/pylintrc (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/CPPLINT.cfg (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRac.cpp (68%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRac.h (94%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRrecv.cpp (61%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRrecv.h (93%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRremoteESP8266.h (94%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRsend.cpp (65%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRsend.h (87%) create mode 100644 lib/IRremoteESP8266-2.7.8/src/IRtext.cpp rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRtext.h (99%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRtimer.cpp (69%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRtimer.h (65%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRutils.cpp (61%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/IRutils.h (95%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/i18n.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Airwell.cpp (55%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Aiwa.cpp (63%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Amcor.cpp (68%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Amcor.h (85%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Argo.cpp (69%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Argo.h (91%) create mode 100644 lib/IRremoteESP8266-2.7.8/src/ir_Carrier.cpp create mode 100644 lib/IRremoteESP8266-2.7.8/src/ir_Carrier.h rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Coolix.cpp (75%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Coolix.h (88%) create mode 100644 lib/IRremoteESP8266-2.7.8/src/ir_Corona.cpp create mode 100644 lib/IRremoteESP8266-2.7.8/src/ir_Corona.h rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Daikin.cpp (70%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Daikin.h (84%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Delonghi.cpp (69%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Delonghi.h (85%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Denon.cpp (71%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Dish.cpp (56%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Doshisha.cpp (66%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Electra.cpp (65%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Electra.h (85%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Epson.cpp (70%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Fujitsu.cpp (79%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Fujitsu.h (86%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_GICable.cpp (71%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_GlobalCache.cpp (65%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Goodweather.cpp (74%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Goodweather.h (85%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Gree.cpp (72%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Gree.h (89%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Haier.cpp (71%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Haier.h (83%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Hitachi.cpp (60%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Hitachi.h (62%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Inax.cpp (57%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_JVC.cpp (70%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Kelvinator.cpp (75%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Kelvinator.h (89%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_LG.cpp (70%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_LG.h (78%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Lasertag.cpp (67%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Lego.cpp (72%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Lutron.cpp (69%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_MWM.cpp (80%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Magiquest.cpp (63%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Magiquest.h (73%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Midea.cpp (58%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Midea.h (76%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Mitsubishi.cpp (71%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Mitsubishi.h (77%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_MitsubishiHeavy.cpp (73%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_MitsubishiHeavy.h (82%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Multibrackets.cpp (74%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_NEC.cpp (65%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_NEC.h (88%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Neoclima.cpp (68%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Neoclima.h (84%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Nikai.cpp (66%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Panasonic.cpp (69%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Panasonic.h (73%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Pioneer.cpp (70%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Pronto.cpp (54%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_RC5_RC6.cpp (59%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_RCMM.cpp (80%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Samsung.cpp (70%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Samsung.h (76%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Sanyo.cpp (55%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Sharp.cpp (64%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Sharp.h (82%) create mode 100644 lib/IRremoteESP8266-2.7.8/src/ir_Sherwood.cpp rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Sony.cpp (57%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Symphony.cpp (62%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Tcl.cpp (64%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Tcl.h (84%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Teco.cpp (65%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Teco.h (85%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Toshiba.cpp (68%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Toshiba.h (78%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Trotec.cpp (65%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Trotec.h (75%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Vestel.cpp (67%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Vestel.h (87%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Whirlpool.cpp (71%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Whirlpool.h (83%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/ir_Whynter.cpp (70%) create mode 100644 lib/IRremoteESP8266-2.7.8/src/ir_Zepeal.cpp rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/README.md (68%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/de-CH.h (98%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/de-DE.h (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/defaults.h (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/en-AU.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/en-IE.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/en-UK.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/en-US.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/es-ES.h (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/fr-FR.h (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/it-IT.h (98%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/src/locale/zh-CN.h (99%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/IRac_test.cpp (93%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/IRrecv_test.cpp (85%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/IRrecv_test.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/IRsend_test.cpp (96%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/IRsend_test.h (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/IRutils_test.cpp (95%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/Makefile (99%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Airwell_test.cpp (72%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Aiwa_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Amcor_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Argo_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Carrier_test.cpp (75%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Coolix_test.cpp (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/test/ir_Corona_test.cpp rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Daikin_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Delonghi_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Denon_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Dish_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Doshisha_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Electra_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Epson_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Fujitsu_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_GICable_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_GlobalCache_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Goodweather_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Gree_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Haier_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Hitachi_test.cpp (89%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Inax_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_JVC_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Kelvinator_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_LG_test.cpp (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Lasertag_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Lego_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Lutron_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_MWM_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Magiquest_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Midea_test.cpp (79%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_MitsubishiHeavy_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Mitsubishi_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Multibrackets_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_NEC_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Neoclima_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Nikai_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Panasonic_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Pioneer_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Pronto_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_RC5_RC6_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_RCMM_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Samsung_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Sanyo_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Sharp_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Sherwood_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Sony_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Symphony_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Tcl_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Teco_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Toshiba_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Trotec_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Vestel_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Whirlpool_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/test/ir_Whynter_test.cpp (100%) create mode 100644 lib/IRremoteESP8266-2.7.8/test/ir_Zepeal_test.cpp rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/Makefile (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/RawToGlobalCache.sh (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/auto_analyse_raw_data.py (92%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/auto_analyse_raw_data_test.py (97%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/gc_decode.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/generate_irtext_h.sh (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/mkkeywords (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/mode2_decode.cpp (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/raw_to_pronto_code.py (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/raw_to_pronto_code_test.py (100%) rename lib/{IRremoteESP8266-2.7.7 => IRremoteESP8266-2.7.8}/tools/scrape_supported_devices.py (57%) diff --git a/lib/IRremoteESP8266-2.7.7/docs/README.md b/lib/IRremoteESP8266-2.7.7/docs/README.md deleted file mode 100644 index fea1f636f..000000000 --- a/lib/IRremoteESP8266-2.7.7/docs/README.md +++ /dev/null @@ -1 +0,0 @@ -Documentation goes here. diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRGCTCPServer/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/IRGCTCPServer/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/IRGCTCPServer/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRServer/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/IRServer/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/IRServer/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDemo/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/IRrecvDemo/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDemo/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDump/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/IRrecvDump/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDump/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRsendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/IRsendDemo/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/IRsendDemo/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRsendProntoDemo/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/IRsendProntoDemo/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/IRsendProntoDemo/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/JVCPanasonicSendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/JVCPanasonicSendDemo/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/JVCPanasonicSendDemo/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/LGACSend/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/LGACSend/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/LGACSend/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/SmartIRRepeater/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/SmartIRRepeater/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/SmartIRRepeater/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnArgoAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnArgoAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnArgoAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnDaikinAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnDaikinAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnDaikinAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnFujitsuAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnFujitsuAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnFujitsuAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnGreeAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnGreeAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnGreeAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnKelvinatorAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnKelvinatorAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnKelvinatorAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiHeavyAc/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiHeavyAc/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiHeavyAc/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnPanasonicAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnPanasonicAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnPanasonicAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnToshibaAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnToshibaAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnToshibaAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnTrotecAC/platformio.ini b/lib/IRremoteESP8266-2.7.7/examples/TurnOnTrotecAC/platformio.ini deleted file mode 100644 index e6f6320da..000000000 --- a/lib/IRremoteESP8266-2.7.7/examples/TurnOnTrotecAC/platformio.ini +++ /dev/null @@ -1,17 +0,0 @@ -[platformio] -src_dir = . - -[env] -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/src/IRtext.cpp b/lib/IRremoteESP8266-2.7.7/src/IRtext.cpp deleted file mode 100644 index f612ed8d1..000000000 --- a/lib/IRremoteESP8266-2.7.7/src/IRtext.cpp +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright 2019-2020 - David Conran (@crankyoldgit) - -/// @warn If you add or remove an entry in this file, you should run: -/// '../tools/generate_irtext_h.sh' to rebuild the `IRtext.h` file. - -#ifndef UNIT_TEST -#include -#endif // UNIT_TEST -#include "IRremoteESP8266.h" -#include "i18n.h" - -#ifndef PROGMEM -#define PROGMEM // Pretend we have the PROGMEM macro even if we really don't. -#endif - -// Common - -const PROGMEM char* kUnknownStr = D_STR_UNKNOWN; -const PROGMEM char* kProtocolStr = D_STR_PROTOCOL; -const PROGMEM char* kPowerStr = D_STR_POWER; -const PROGMEM char* kOnStr = D_STR_ON; -const PROGMEM char* kOffStr = D_STR_OFF; -const PROGMEM char* kModeStr = D_STR_MODE; -const PROGMEM char* kToggleStr = D_STR_TOGGLE; -const PROGMEM char* kTurboStr = D_STR_TURBO; -const PROGMEM char* kSuperStr = D_STR_SUPER; -const PROGMEM char* kSleepStr = D_STR_SLEEP; -const PROGMEM char* kLightStr = D_STR_LIGHT; -const PROGMEM char* kPowerfulStr = D_STR_POWERFUL; -const PROGMEM char* kQuietStr = D_STR_QUIET; -const PROGMEM char* kEconoStr = D_STR_ECONO; -const PROGMEM char* kSwingStr = D_STR_SWING; -const PROGMEM char* kSwingHStr = D_STR_SWINGH; -const PROGMEM char* kSwingVStr = D_STR_SWINGV; -const PROGMEM char* kBeepStr = D_STR_BEEP; -const PROGMEM char* kZoneFollowStr = D_STR_ZONEFOLLOW; -const PROGMEM char* kFixedStr = D_STR_FIXED; -const PROGMEM char* kMouldStr = D_STR_MOULD; -const PROGMEM char* kCleanStr = D_STR_CLEAN; -const PROGMEM char* kPurifyStr = D_STR_PURIFY; -const PROGMEM char* kTimerStr = D_STR_TIMER; -const PROGMEM char* kOnTimerStr = D_STR_ONTIMER; -const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER; -const PROGMEM char* kClockStr = D_STR_CLOCK; -const PROGMEM char* kCommandStr = D_STR_COMMAND; -const PROGMEM char* kXFanStr = D_STR_XFAN; -const PROGMEM char* kHealthStr = D_STR_HEALTH; -const PROGMEM char* kModelStr = D_STR_MODEL; -const PROGMEM char* kTempStr = D_STR_TEMP; -const PROGMEM char* kIFeelStr = D_STR_IFEEL; -const PROGMEM char* kHumidStr = D_STR_HUMID; -const PROGMEM char* kSaveStr = D_STR_SAVE; -const PROGMEM char* kEyeStr = D_STR_EYE; -const PROGMEM char* kFollowStr = D_STR_FOLLOW; -const PROGMEM char* kIonStr = D_STR_ION; -const PROGMEM char* kFreshStr = D_STR_FRESH; -const PROGMEM char* kHoldStr = D_STR_HOLD; -const PROGMEM char* kButtonStr = D_STR_BUTTON; -const PROGMEM char* k8CHeatStr = D_STR_8C_HEAT; -const PROGMEM char* kNightStr = D_STR_NIGHT; -const PROGMEM char* kSilentStr = D_STR_SILENT; -const PROGMEM char* kFilterStr = D_STR_FILTER; -const PROGMEM char* k3DStr = D_STR_3D; -const PROGMEM char* kCelsiusStr = D_STR_CELSIUS; -const PROGMEM char* kTempUpStr = D_STR_TEMPUP; -const PROGMEM char* kTempDownStr = D_STR_TEMPDOWN; -const PROGMEM char* kStartStr = D_STR_START; -const PROGMEM char* kStopStr = D_STR_STOP; -const PROGMEM char* kMoveStr = D_STR_MOVE; -const PROGMEM char* kSetStr = D_STR_SET; -const PROGMEM char* kCancelStr = D_STR_CANCEL; -const PROGMEM char* kUpStr = D_STR_UP; -const PROGMEM char* kDownStr = D_STR_DOWN; -const PROGMEM char* kChangeStr = D_STR_CHANGE; -const PROGMEM char* kComfortStr = D_STR_COMFORT; -const PROGMEM char* kSensorStr = D_STR_SENSOR; -const PROGMEM char* kWeeklyTimerStr = D_STR_WEEKLYTIMER; -const PROGMEM char* kWifiStr = D_STR_WIFI; -const PROGMEM char* kLastStr = D_STR_LAST; -const PROGMEM char* kFastStr = D_STR_FAST; -const PROGMEM char* kSlowStr = D_STR_SLOW; -const PROGMEM char* kAirFlowStr = D_STR_AIRFLOW; -const PROGMEM char* kStepStr = D_STR_STEP; -const PROGMEM char* kNAStr = D_STR_NA; -const PROGMEM char* kInsideStr = D_STR_INSIDE; -const PROGMEM char* kOutsideStr = D_STR_OUTSIDE; -const PROGMEM char* kLoudStr = D_STR_LOUD; -const PROGMEM char* kLowerStr = D_STR_LOWER; -const PROGMEM char* kUpperStr = D_STR_UPPER; -const PROGMEM char* kBreezeStr = D_STR_BREEZE; -const PROGMEM char* kCirculateStr = D_STR_CIRCULATE; -const PROGMEM char* kCeilingStr = D_STR_CEILING; -const PROGMEM char* kWallStr = D_STR_WALL; -const PROGMEM char* kRoomStr = D_STR_ROOM; -const PROGMEM char* k6thSenseStr = D_STR_6THSENSE; - -const PROGMEM char* kAutoStr = D_STR_AUTO; -const PROGMEM char* kAutomaticStr = D_STR_AUTOMATIC; -const PROGMEM char* kManualStr = D_STR_MANUAL; -const PROGMEM char* kCoolStr = D_STR_COOL; -const PROGMEM char* kHeatStr = D_STR_HEAT; -const PROGMEM char* kFanStr = D_STR_FAN; -const PROGMEM char* kDryStr = D_STR_DRY; -const PROGMEM char* kFanOnlyStr = D_STR_FANONLY; - -const PROGMEM char* kMaxStr = D_STR_MAX; -const PROGMEM char* kMaximumStr = D_STR_MAXIMUM; -const PROGMEM char* kMinStr = D_STR_MIN; -const PROGMEM char* kMinimumStr = D_STR_MINIMUM; -const PROGMEM char* kMedStr = D_STR_MED; -const PROGMEM char* kMediumStr = D_STR_MEDIUM; - -const PROGMEM char* kHighestStr = D_STR_HIGHEST; -const PROGMEM char* kHighStr = D_STR_HIGH; -const PROGMEM char* kHiStr = D_STR_HI; -const PROGMEM char* kMidStr = D_STR_MID; -const PROGMEM char* kMiddleStr = D_STR_MIDDLE; -const PROGMEM char* kLowStr = D_STR_LOW; -const PROGMEM char* kLoStr = D_STR_LO; -const PROGMEM char* kLowestStr = D_STR_LOWEST; -const PROGMEM char* kMaxRightStr = D_STR_MAXRIGHT; -const PROGMEM char* kRightMaxStr = D_STR_RIGHTMAX_NOSPACE; -const PROGMEM char* kRightStr = D_STR_RIGHT; -const PROGMEM char* kLeftStr = D_STR_LEFT; -const PROGMEM char* kMaxLeftStr = D_STR_MAXLEFT; -const PROGMEM char* kLeftMaxStr = D_STR_LEFTMAX_NOSPACE; -const PROGMEM char* kWideStr = D_STR_WIDE; -const PROGMEM char* kCentreStr = D_STR_CENTRE; -const PROGMEM char* kTopStr = D_STR_TOP; -const PROGMEM char* kBottomStr = D_STR_BOTTOM; - -// Compound words/phrases/descriptions from pre-defined words. -const PROGMEM char* kEyeAutoStr = D_STR_EYEAUTO; -const PROGMEM char* kLightToggleStr = D_STR_LIGHTTOGGLE; -const PROGMEM char* kOutsideQuietStr = D_STR_OUTSIDEQUIET; -const PROGMEM char* kPowerToggleStr = D_STR_POWERTOGGLE; -const PROGMEM char* kPreviousPowerStr = D_STR_PREVIOUSPOWER; -const PROGMEM char* kDisplayTempStr = D_STR_DISPLAYTEMP; -const PROGMEM char* kSensorTempStr = D_STR_SENSORTEMP; -const PROGMEM char* kSleepTimerStr = D_STR_SLEEP_TIMER; -const PROGMEM char* kSwingVModeStr = D_STR_SWINGVMODE; -const PROGMEM char* kSwingVToggleStr = D_STR_SWINGVTOGGLE; - -// Separators -char kTimeSep = D_CHR_TIME_SEP; -const PROGMEM char* kSpaceLBraceStr = D_STR_SPACELBRACE; -const PROGMEM char* kCommaSpaceStr = D_STR_COMMASPACE; -const PROGMEM char* kColonSpaceStr = D_STR_COLONSPACE; - -// IRutils -// - Time -const PROGMEM char* kDayStr = D_STR_DAY; -const PROGMEM char* kDaysStr = D_STR_DAYS; -const PROGMEM char* kHourStr = D_STR_HOUR; -const PROGMEM char* kHoursStr = D_STR_HOURS; -const PROGMEM char* kMinuteStr = D_STR_MINUTE; -const PROGMEM char* kMinutesStr = D_STR_MINUTES; -const PROGMEM char* kSecondStr = D_STR_SECOND; -const PROGMEM char* kSecondsStr = D_STR_SECONDS; -const PROGMEM char* kNowStr = D_STR_NOW; -const PROGMEM char* kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS; - -const PROGMEM char* kYesStr = D_STR_YES; -const PROGMEM char* kNoStr = D_STR_NO; -const PROGMEM char* kTrueStr = D_STR_TRUE; -const PROGMEM char* kFalseStr = D_STR_FALSE; - -const PROGMEM char* kRepeatStr = D_STR_REPEAT; -const PROGMEM char* kCodeStr = D_STR_CODE; -const PROGMEM char* kBitsStr = D_STR_BITS; - -// Protocol Names -// Needs to be in decode_type_t order. -const PROGMEM char *kAllProtocolNamesStr = - D_STR_UNUSED "\x0" - D_STR_RC5 "\x0" - D_STR_RC6 "\x0" - D_STR_NEC "\x0" - D_STR_SONY "\x0" - D_STR_PANASONIC "\x0" - D_STR_JVC "\x0" - D_STR_SAMSUNG "\x0" - D_STR_WHYNTER "\x0" - D_STR_AIWA_RC_T501 "\x0" - D_STR_LG "\x0" - D_STR_SANYO "\x0" - D_STR_MITSUBISHI "\x0" - D_STR_DISH "\x0" - D_STR_SHARP "\x0" - D_STR_COOLIX "\x0" - D_STR_DAIKIN "\x0" - D_STR_DENON "\x0" - D_STR_KELVINATOR "\x0" - D_STR_SHERWOOD "\x0" - D_STR_MITSUBISHI_AC "\x0" - D_STR_RCMM "\x0" - D_STR_SANYO_LC7461 "\x0" - D_STR_RC5X "\x0" - D_STR_GREE "\x0" - D_STR_PRONTO "\x0" - D_STR_NEC_LIKE "\x0" - D_STR_ARGO "\x0" - D_STR_TROTEC "\x0" - D_STR_NIKAI "\x0" - D_STR_RAW "\x0" - D_STR_GLOBALCACHE "\x0" - D_STR_TOSHIBA_AC "\x0" - D_STR_FUJITSU_AC "\x0" - D_STR_MIDEA "\x0" - D_STR_MAGIQUEST "\x0" - D_STR_LASERTAG "\x0" - D_STR_CARRIER_AC "\x0" - D_STR_HAIER_AC "\x0" - D_STR_MITSUBISHI2 "\x0" - D_STR_HITACHI_AC "\x0" - D_STR_HITACHI_AC1 "\x0" - D_STR_HITACHI_AC2 "\x0" - D_STR_GICABLE "\x0" - D_STR_HAIER_AC_YRW02 "\x0" - D_STR_WHIRLPOOL_AC "\x0" - D_STR_SAMSUNG_AC "\x0" - D_STR_LUTRON "\x0" - D_STR_ELECTRA_AC "\x0" - D_STR_PANASONIC_AC "\x0" - D_STR_PIONEER "\x0" - D_STR_LG2 "\x0" - D_STR_MWM "\x0" - D_STR_DAIKIN2 "\x0" - D_STR_VESTEL_AC "\x0" - D_STR_TECO "\x0" - D_STR_SAMSUNG36 "\x0" - D_STR_TCL112AC "\x0" - D_STR_LEGOPF "\x0" - D_STR_MITSUBISHI_HEAVY_88 "\x0" - D_STR_MITSUBISHI_HEAVY_152 "\x0" - D_STR_DAIKIN216 "\x0" - D_STR_SHARP_AC "\x0" - D_STR_GOODWEATHER "\x0" - D_STR_INAX "\x0" - D_STR_DAIKIN160 "\x0" - D_STR_NEOCLIMA "\x0" - D_STR_DAIKIN176 "\x0" - D_STR_DAIKIN128 "\x0" - D_STR_AMCOR "\x0" - D_STR_DAIKIN152 "\x0" - D_STR_MITSUBISHI136 "\x0" - D_STR_MITSUBISHI112 "\x0" - D_STR_HITACHI_AC424 "\x0" - D_STR_SONY_38K "\x0" - D_STR_EPSON "\x0" - D_STR_SYMPHONY "\x0" - D_STR_HITACHI_AC3 "\x0" - D_STR_DAIKIN64 "\x0" - D_STR_AIRWELL "\x0" - D_STR_DELONGHI_AC "\x0" - D_STR_DOSHISHA "\x0" - D_STR_MULTIBRACKETS "\x0" - D_STR_CARRIER_AC40 "\x0" - D_STR_CARRIER_AC64 "\x0" - // New protocol strings should be added just above this line. - "\x0"; // This string requires double null termination. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Carrier.cpp b/lib/IRremoteESP8266-2.7.7/src/ir_Carrier.cpp deleted file mode 100644 index f0d7f4317..000000000 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Carrier.cpp +++ /dev/null @@ -1,217 +0,0 @@ -// Copyright 2018, 2020 David Conran - -// Supports: -// Brand: Carrier/Surrey, Model: 42QG5A55970 remote -// Brand: Carrier/Surrey, Model: 619EGX0090E0 A/C -// Brand: Carrier/Surrey, Model: 619EGX0120E0 A/C -// Brand: Carrier/Surrey, Model: 619EGX0180E0 A/C -// Brand: Carrier/Surrey, Model: 619EGX0220E0 A/C -// Brand: Carrier/Surrey, Model: 53NGK009/012 Inverter - -#include "IRrecv.h" -#include "IRsend.h" -#include "IRutils.h" - -// Constants -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/385 -const uint16_t kCarrierAcHdrMark = 8532; -const uint16_t kCarrierAcHdrSpace = 4228; -const uint16_t kCarrierAcBitMark = 628; -const uint16_t kCarrierAcOneSpace = 1320; -const uint16_t kCarrierAcZeroSpace = 532; -const uint16_t kCarrierAcGap = 20000; -const uint16_t kCarrierAcFreq = 38; // kHz. (An educated guess) - -const uint16_t kCarrierAc40HdrMark = 8402; -const uint16_t kCarrierAc40HdrSpace = 4166; -const uint16_t kCarrierAc40BitMark = 547; -const uint16_t kCarrierAc40OneSpace = 1540; -const uint16_t kCarrierAc40ZeroSpace = 497; - -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1127 -const uint16_t kCarrierAc64HdrMark = 8940; -const uint16_t kCarrierAc64HdrSpace = 4556; -const uint16_t kCarrierAc64BitMark = 503; -const uint16_t kCarrierAc64OneSpace = 1736; -const uint16_t kCarrierAc64ZeroSpace = 615; -const uint32_t kCarrierAc64Gap = kDefaultMessageGap; // A guess. - - -#if SEND_CARRIER_AC -// Send a Carrier HVAC formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The bit size of the message being sent. typically kCarrierAcBits. -// repeat: The number of times the message is to be repeated. -// -// Status: STABLE / Work on real devices. -// -void IRsend::sendCarrierAC(uint64_t data, uint16_t nbits, uint16_t repeat) { - for (uint16_t r = 0; r <= repeat; r++) { - uint64_t temp_data = data; - // Carrier sends the data block three times. normal + inverted + normal. - for (uint16_t i = 0; i < 3; i++) { - sendGeneric(kCarrierAcHdrMark, kCarrierAcHdrSpace, kCarrierAcBitMark, - kCarrierAcOneSpace, kCarrierAcBitMark, kCarrierAcZeroSpace, - kCarrierAcBitMark, kCarrierAcGap, temp_data, nbits, 38, true, - 0, kDutyDefault); - temp_data = invertBits(temp_data, nbits); - } - } -} -#endif - -#if DECODE_CARRIER_AC -// Decode the supplied Carrier HVAC message. -// Carrier HVAC messages contain only 32 bits, but it is sent three(3) times. -// i.e. normal + inverted + normal -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. -// Typically kCarrierAcBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Probably works. -// -bool IRrecv::decodeCarrierAC(decode_results *results, uint16_t offset, - const uint16_t nbits, const bool strict) { - if (results->rawlen < ((2 * nbits + kHeader + kFooter) * 3) - 1 + offset) - return false; // Can't possibly be a valid Carrier message. - if (strict && nbits != kCarrierAcBits) - return false; // We expect Carrier to be 32 bits of message. - - uint64_t data = 0; - uint64_t prev_data = 0; - - for (uint8_t i = 0; i < 3; i++) { - prev_data = data; - // Match Header + Data + Footer - uint16_t used; - used = matchGeneric(results->rawbuf + offset, &data, - results->rawlen - offset, nbits, - kCarrierAcHdrMark, kCarrierAcHdrSpace, - kCarrierAcBitMark, kCarrierAcOneSpace, - kCarrierAcBitMark, kCarrierAcZeroSpace, - kCarrierAcBitMark, kCarrierAcGap, true); - if (!used) return false; - offset += used; - // Compliance. - if (strict) { - // Check if the data is an inverted copy of the previous data. - if (i > 0 && prev_data != invertBits(data, nbits)) return false; - } - } - - // Success - results->bits = nbits; - results->value = data; - results->decode_type = CARRIER_AC; - results->address = data >> 16; - results->command = data & 0xFFFF; - return true; -} -#endif // DECODE_CARRIER_AC - -#if SEND_CARRIER_AC40 -/// Send a Carrier 40bit HVAC formatted message. -/// Status: Alpha / Yet to be tested against a real device. -/// @param[in] data The message to be sent. -/// @param[in] nbits The bit size of the message being sent. -/// @param[in] repeat The number of times the message is to be repeated. -void IRsend::sendCarrierAC40(const uint64_t data, const uint16_t nbits, - const uint16_t repeat) { - sendGeneric(kCarrierAc40HdrMark, kCarrierAc40HdrSpace, kCarrierAc40BitMark, - kCarrierAc40OneSpace, kCarrierAc40BitMark, kCarrierAc40ZeroSpace, - kCarrierAc40BitMark, kCarrierAcGap, - data, nbits, kCarrierAcFreq, true, repeat, kDutyDefault); -} -#endif // SEND_CARRIER_AC40 - -#if DECODE_CARRIER_AC40 -/// Decode the supplied Carrier 40-bit HVAC message. -/// Carrier HVAC messages contain only 40 bits, but it is sent three(3) times. -/// Status: BETA / Probably works. -/// @param[in,out] results Ptr to the data to decode & where to store the decode -/// result. -/// @param[in] offset The starting index to use when attempting to decode the -/// raw data. Typically/Defaults to kStartOffset. -/// @param[in] nbits The number of data bits to expect. -/// @param[in] strict Flag indicating if we should perform strict matching. -/// @return A boolean. True if it can decode it, false if it can't. -bool IRrecv::decodeCarrierAC40(decode_results *results, uint16_t offset, - const uint16_t nbits, const bool strict) { - if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset) - return false; // Can't possibly be a valid Carrier message. - if (strict && nbits != kCarrierAc40Bits) - return false; // We expect Carrier to be 40 bits of message. - - if (!matchGeneric(results->rawbuf + offset, &(results->value), - results->rawlen - offset, nbits, - kCarrierAc40HdrMark, kCarrierAc40HdrSpace, - kCarrierAc40BitMark, kCarrierAc40OneSpace, - kCarrierAc40BitMark, kCarrierAc40ZeroSpace, - kCarrierAc40BitMark, kCarrierAcGap, true)) return false; - - // Success - results->bits = nbits; - results->decode_type = CARRIER_AC40; - results->address = 0; - results->command = 0; - return true; -} -#endif // DECODE_CARRIER_AC40 - -#if SEND_CARRIER_AC64 -/// Send a Carrier 64bit HVAC formatted message. -/// Status: Alpha / Yet to be tested against a real device. -/// @param[in] data The message to be sent. -/// @param[in] nbits The bit size of the message being sent. -/// @param[in] repeat The number of times the message is to be repeated. -void IRsend::sendCarrierAC64(const uint64_t data, const uint16_t nbits, - const uint16_t repeat) { - sendGeneric(kCarrierAc64HdrMark, kCarrierAc64HdrSpace, kCarrierAc64BitMark, - kCarrierAc64OneSpace, kCarrierAc64BitMark, kCarrierAc64ZeroSpace, - kCarrierAc64BitMark, kCarrierAc64Gap, - data, nbits, kCarrierAcFreq, false, repeat, kDutyDefault); -} -#endif // SEND_CARRIER_AC64 - -#if DECODE_CARRIER_AC64 -/// Decode the supplied Carrier 64-bit HVAC message. -/// Status: BETA / Probably works. -/// @param[in,out] results Ptr to the data to decode & where to store the decode -/// result. -/// @param[in] offset The starting index to use when attempting to decode the -/// raw data. Typically/Defaults to kStartOffset. -/// @param[in] nbits The number of data bits to expect. -/// @param[in] strict Flag indicating if we should perform strict matching. -/// @return A boolean. True if it can decode it, false if it can't. -bool IRrecv::decodeCarrierAC64(decode_results *results, uint16_t offset, - const uint16_t nbits, const bool strict) { - if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset) - return false; // Can't possibly be a valid Carrier message. - if (strict && nbits != kCarrierAc64Bits) - return false; // We expect Carrier to be 64 bits of message. - - if (!matchGeneric(results->rawbuf + offset, &(results->value), - results->rawlen - offset, nbits, - kCarrierAc64HdrMark, kCarrierAc64HdrSpace, - kCarrierAc64BitMark, kCarrierAc64OneSpace, - kCarrierAc64BitMark, kCarrierAc64ZeroSpace, - kCarrierAc64BitMark, kCarrierAc64Gap, true, - kUseDefTol, kMarkExcess, false)) return false; - - // Success - results->bits = nbits; - results->decode_type = CARRIER_AC64; - results->address = 0; - results->command = 0; - return true; -} -#endif // DECODE_CARRIER_AC64 diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Sherwood.cpp b/lib/IRremoteESP8266-2.7.7/src/ir_Sherwood.cpp deleted file mode 100644 index 47c6790de..000000000 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Sherwood.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 David Conran - -// Sherwood IR remote emulation - -// Supports: -// Brand: Sherwood, Model: RC-138 remote -// Brand: Sherwood, Model: RD6505(B) Receiver - -#include -#include "IRsend.h" - -#if SEND_SHERWOOD -// Send an IR command to a Sherwood device. -// -// Args: -// data: The contents of the command you want to send. -// nbits: The bit size of the command being sent. (kSherwoodBits) -// repeat: The nr. of times you want the command to be repeated. (Default: 1) -// -// Status: STABLE / Known working. -// -// Note: -// Sherwood remote codes appear to be NEC codes with a manditory repeat code. -// i.e. repeat should be >= kSherwoodMinRepeat (1). -void IRsend::sendSherwood(uint64_t data, uint16_t nbits, uint16_t repeat) { - sendNEC(data, nbits, std::max((uint16_t)kSherwoodMinRepeat, repeat)); -} -#endif diff --git a/lib/IRremoteESP8266-2.7.7/CPPLINT.cfg b/lib/IRremoteESP8266-2.7.8/CPPLINT.cfg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/CPPLINT.cfg rename to lib/IRremoteESP8266-2.7.8/CPPLINT.cfg diff --git a/lib/IRremoteESP8266-2.7.8/Doxyfile b/lib/IRremoteESP8266-2.7.8/Doxyfile new file mode 100644 index 000000000..224c07315 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/Doxyfile @@ -0,0 +1,15 @@ +PROJECT_NAME = "IRremoteESP8266" +OUTPUT_DIRECTORY = docs/doxygen +INPUT = src +INPUT += docs/doxygen_index.md +RECURSIVE = YES +EXCLUDE = examples +MULTILINE_CPP_IS_BRIEF = YES +TAB_SIZE = 2 +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_LOCAL_CLASSES = NO +GENERATE_LATEX = NO +ENABLE_PREPROCESSING = NO +QUIET = YES +WARN_NO_PARAMDOC = YES diff --git a/lib/IRremoteESP8266-2.7.7/LICENSE.txt b/lib/IRremoteESP8266-2.7.8/LICENSE.txt similarity index 100% rename from lib/IRremoteESP8266-2.7.7/LICENSE.txt rename to lib/IRremoteESP8266-2.7.8/LICENSE.txt diff --git a/lib/IRremoteESP8266-2.7.7/README.md b/lib/IRremoteESP8266-2.7.8/README.md similarity index 90% rename from lib/IRremoteESP8266-2.7.7/README.md rename to lib/IRremoteESP8266-2.7.8/README.md index b3fa60ece..c8ad07ee3 100644 --- a/lib/IRremoteESP8266-2.7.7/README.md +++ b/lib/IRremoteESP8266-2.7.8/README.md @@ -1,4 +1,4 @@ -# IRremote ESP8266 Library +# IRremoteESP8266 Library [![Build Status](https://travis-ci.org/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.org/crankyoldgit/IRremoteESP8266) [![arduino-library-badge](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) @@ -9,8 +9,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.7.7 Now Available -Version 2.7.7 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.7.8 Now Available +Version 2.7.8 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. @@ -40,6 +40,10 @@ Before reporting an issue or asking for help, please try to follow our [Troubles ## Frequently Asked Questions Some common answers to common questions and problems are on our [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). +## Library API Documentation +This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). +You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). + ## Installation ##### Official releases via the Arduino IDE v1.8+ (Windows & Linux) 1. Click the _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. diff --git a/lib/IRremoteESP8266-2.7.7/README_fr.md b/lib/IRremoteESP8266-2.7.8/README_fr.md similarity index 84% rename from lib/IRremoteESP8266-2.7.7/README_fr.md rename to lib/IRremoteESP8266-2.7.8/README_fr.md index 9ff560fe8..1e983ba35 100644 --- a/lib/IRremoteESP8266-2.7.7/README_fr.md +++ b/lib/IRremoteESP8266-2.7.8/README_fr.md @@ -1,4 +1,4 @@ -# IRremote ESP8266 Library +# IRremoteESP8266 Library [![Build Status](https://travis-ci.org/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.org/crankyoldgit/IRremoteESP8266) [![arduino-library-badge](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) @@ -9,8 +9,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.7.7 disponible -Version 2.7.7 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.7.8 disponible +Version 2.7.8 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. @@ -39,6 +39,9 @@ Avant de reporter un probème ou de demander de l'aide, essayez de suivre notre ## Questions fréquentes Les questions les plus fréquentes sont ici, avec des réponses [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). +## Documentation API de la bibliothèque +Cette bibliothèque utilise [Doxygen](https://www.doxygen.nl/index.html) pour [documenter automatiquement](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [l'API](https://en.wikipedia.org/wiki/Application_programming_interface) de la [bibliothèque](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). Vous pouvez le trouver [ici](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). + ## Installation ##### Officiel releases avec l'Arduino IDE v1.8+ (Windows & Linux) 1. Cliquez sur _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. @@ -46,6 +49,10 @@ Les questions les plus fréquentes sont ici, avec des réponses [F.A.Q. wiki pag 1. Cliquez sur le IRremoteESP8266 pour avoir les résultats de la recherche. 1. Selectionnez la version que vous voulez installer et cliquez sur _"Install"_. +## Library API Documentation +This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). +You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). + ##### Installation manuelle pour Windows 1. cliquez le boutton sur _"Clone or Download"_ , et _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ on the page. 1. Extraire l'archive. diff --git a/lib/IRremoteESP8266-2.7.7/ReleaseNotes.md b/lib/IRremoteESP8266-2.7.8/ReleaseNotes.md similarity index 93% rename from lib/IRremoteESP8266-2.7.7/ReleaseNotes.md rename to lib/IRremoteESP8266-2.7.8/ReleaseNotes.md index 0e7bc7bc5..4b757f710 100644 --- a/lib/IRremoteESP8266-2.7.7/ReleaseNotes.md +++ b/lib/IRremoteESP8266-2.7.8/ReleaseNotes.md @@ -1,5 +1,49 @@ # Release Notes +## _v2.7.8 (20200622)_ + +**[BREAKING CHANGES]** +- Fix Manchester code handling; Increase Airwell to `34` bits. (#1200) + +**[Bug Fixes]** +- Carrier40: Use correct gap value. (#1193) + +**[Features]** +- CarrierAc64: Add detailed support. (#1133) +- Add experimental support for Hitachi A/C 344 bit protocol (#1139) +- Automatic & full library code/API documentation via Doxygen (#1150 #1154 #1155 #1156 #1158 #1165 #1167 #1169 #1180 #1184 #1189 #1191 #1194 #1195 #1197 #1198) +- Hitachi344: Add detailed support and change bit ordering. (#1147) +- Add Corona AC Protocol (#1152) +- Hitachi344: Add Swing(H) and improve Swing(V) (#1148) +- Update auto_analyse_raw_data.py with better code comment sections (#1164) +- Add support for Midea24 protocol. (#1171) +- Add basic Zepeal protocol support (#1178) + +**[Misc]** +- scrape_supported_devices.py: avoid changes to SupportedProtocols.md (#1140) +- auto_analyze nice exit on empty rawdata input (#1141) +- Comments update + cleanup (#1143) +- Update D_STR_IRRECVDUMP_STARTUP text and comments. (#1144) +- Minor code cleanups (#1149) +- Update `README.md`'s to point to new API docs. (#1151) +- Update "Supports" sections (#1160) +- Add a `doxygen` check to CI/Travis. (#1161) +- scrape_supported_devices: warn about misplaced or legacy supports sections (#1159) +- Add Supports sections to some files (#1163 #1166) +- Fix compile error when `DEBUG` is enabled. +- Add no-output option and return code on error to scrape_supported_devices +- Travis: Add scrape_supported_devices error check +- Update auto_analyse_raw_data.py to have a default Supports: section +- Treat compiler warnings as errors. (#1174) +- Remove `calcLGChecksum()` and use new generic `sumNibbles()` (#1175) +- Suppress more potential compiler warnings. (#1179) +- Load balance travis tasks to reduce wall clock time. (#1183) +- Set PlatformIO's default baudrate to 115200 (#1188) +- Some fixes to Doshisha protocol handler +- Minor cleanups of Corona and Zepeal +- Enable Doxygen warning when the parameters for a function/method/procedure are wrong/missing. (#1196) + + ## _v2.7.7 (20200519)_ **[BREAKING CHANGES]** diff --git a/lib/IRremoteESP8266-2.7.7/SupportedProtocols.md b/lib/IRremoteESP8266-2.7.8/SupportedProtocols.md similarity index 67% rename from lib/IRremoteESP8266-2.7.7/SupportedProtocols.md rename to lib/IRremoteESP8266-2.7.8/SupportedProtocols.md index 457da38bb..7dab7ccb7 100644 --- a/lib/IRremoteESP8266-2.7.7/SupportedProtocols.md +++ b/lib/IRremoteESP8266-2.7.8/SupportedProtocols.md @@ -1,70 +1,74 @@ + Last generated: Mon 22 Jun 2020 09:51:06 +0000 ---> # IR Protocols supported by this library | Protocol | Brand | Model | A/C Model | Detailed A/C Support | | --- | --- | --- | --- | --- | -| [Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Airwell.cpp) | **Airwell** | RC08W remote | | - | +| [Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Airwell.cpp) | **Airwell** | DLS 21 DCI R410 AW A/C
RC04 remote
RC08W remote | | - | | [Aiwa](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Aiwa.cpp) | **Aiwa** | RC-T501 RCU | | - | -| [Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.cpp) | **[Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.h)** | ADR-853H A/C
ADR-853H A/C
TAC-444 remote
TAC-444 remote
TAC-495 remote
TAC-495 remote | | Yes | +| [Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.cpp) | **[Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.h)** | ADR-853H A/C
TAC-444 remote
TAC-495 remote | | Yes | | [Argo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Argo.cpp) | **[Argo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Argo.h)** | Ulisse 13 DCI Mobile Split A/C | | Yes | -| [Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.cpp) | **Carrier/Surrey** | 42QG5A55970 remote
53NGK009/012 Inverter
619EGX0090E0 A/C
619EGX0120E0 A/C
619EGX0180E0 A/C
619EGX0220E0 A/C | | - | +| [Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.cpp) | **[Carrier/Surrey](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.h)** | 42QG5A55970 remote
53NGK009/012 Inverter
619EGX0090E0 A/C
619EGX0120E0 A/C
619EGX0180E0 A/C
619EGX0220E0 A/C | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | RC08B remote | | Yes | -| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Beko](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | BINR 070/071 split-type A/C
BINR 070/071 split-type A/C
RG57K7(B)/BGEF Remote
RG57K7(B)/BGEF Remote | | Yes | -| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | MS12FU-10HRDN1-QRD0GW(B) A/C
MS12FU-10HRDN1-QRD0GW(B) A/C
MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
RG52D/BGE Remote
RG52D/BGE Remote | | Yes | -| [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
AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote | | 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
ARC433** remote
ARC433B69 remote
ARC466A33 remote (DAIKIN)
ARC477A1 remote
ARC480A5 remote (DAIKIN152)
BRC4C153 remote
BRC52B63 remote (DAIKIN128)
DGS01 remote (DAIKIN64)
FFN-C/FCN-F Series A/C (DAIKIN64)
FTE12HV2S A/C
FTXB09AXVJU A/C (DAIKIN128)
FTXB12AXVJU A/C (DAIKIN128)
FTXM-M A/C (DAIKIN)
FTXZ25NV1B A/C
FTXZ35NV1B A/C
FTXZ50NV1B A/C
M Series A/C (DAIKIN) | | Yes | +| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Beko](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | BINR 070/071 split-type A/C
RG57K7(B)/BGEF Remote | | Yes | +| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | MS12FU-10HRDN1-QRD0GW(B) A/C
MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
RG52D/BGE Remote | | Yes | +| [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 | +| [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)
BRC4C153 remote (DAIKIN176)
BRC52B63 remote (DAIKIN128)
DGS01 remote (DAIKIN64)
FFN-C/FCN-F Series A/C (DAIKIN64)
FTE12HV2S A/C
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 | | [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) | **Unknown** | | | - | +| [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 | | - | | [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) | **[Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | Classic INV 17 / AXW12DCS A/C
YKR-M/003E remote | | Yes | -| [Epson](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Epson.cpp) | **Unknown** | | | - | -| [Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.cpp) | **[Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.h)** | AGTV14LAC A/C
AR-DB1 remote
AR-DL10 remote
AR-RAC1E remote
AR-RAE1E remote
AR-RAH2E remote
AR-REB1E remote
AR-RY4 remote
AST9RSGCW A/C
ASTB09LBC A/C
ASU30C1 A/C
ASYG30LFCA A/C
ASYG7LMCA A/C | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARRY4 | Yes | +| [Epson](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Epson.cpp) | **Epson** | EN-TW9100W Projector | | - | +| [Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.cpp) | **[Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.h)** | AGTV14LAC A/C
AR-DB1 remote
AR-DL10 remote
AR-RAC1E remote
AR-RAE1E remote
AR-RAH2E remote
AR-REB1E remote
AR-RY4 remote
AST9RSGCW A/C (ARDB1)
ASTB09LBC A/C
ASU30C1 A/C
ASYG30LFCA A/C (ARRAH2E)
ASYG7LMCA A/C (ARREB1E) | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARRY4 | Yes | | [Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.cpp) | **[Fujitsu General](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.h)** | AR-JW2 remote | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARRY4 | Yes | -| [GICable](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GICable.cpp) | **Unknown** | | | - | -| [GlobalCache](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GlobalCache.cpp) | **Unknown** | | | - | +| [GICable](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GICable.cpp) | **G.I. Cable** | XRC-200 remote | | - | +| [GlobalCache](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GlobalCache.cpp) | **Global Cache** | Control Tower IR DB | | - | | [Goodweather](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Goodweather.cpp) | **[Goodweather](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Goodweather.h)** | ZH/JT-03 remote | | Yes | | [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[EKOKAI](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | A/C | YAW1F
YBOFB | Yes | | [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | YAA1FBF remote
YB1F2F remote | YAW1F
YBOFB | Yes | | [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | YBOFB remote
YBOFB2 remote | YAW1F
YBOFB | Yes | | [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[RusClimate](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | EACS/I-09HAR_X/N3 A/C
YAW1F remote | YAW1F
YBOFB | Yes | | [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Ultimate](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | Heat Pump | YAW1F
YBOFB | 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
HSU07-HEA03 remote
YR-W02 remote | | 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
PC-LH3B (HITACHI_AC3)
R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)
RAR-8P2 remote
RAS-35THA6 remote
RAS-AJ25H A/C
Series VI A/C (Circa 2007) | | 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)
YR-W02 remote (HAIER_AC_YRW02) | | 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 | | [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) | **Unknown** | | | - | +| [JVC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_JVC.cpp) | **JVC** | PTU94023B remote | | - | | [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 | | [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
AG1BH09AW101 Split A/C | | 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
6711A20083V remote
AKB74395308 remote
AKB74395308 remote
AKB75215403 remote (LG2)
S4-W12JA3AA A/C (LG2) | | Yes | -| [Lasertag](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lasertag.cpp) | **Unknown** | | | - | +| [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)
AKB74395308 remote (LG2)
AKB75215403 remote (LG2)
S4-W12JA3AA A/C (LG2) | | 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) | **Unknown** | | | - | -| [MWM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MWM.cpp) | **Unknown** | | | - | -| [Magiquest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.cpp) | **[Unknown](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.h)** | | | - | -| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Comfee](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | MPD1-12CRN7 A/C | | 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 | | 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)** | RUBO18GMFILCAD A/C (18K BTU)
RYBO12GMFILCAD A/C (12K BTU) | | 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
KM14A 0179213 remote
MS-GK24VA A/C
TV | | 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
KPOA remote
MSH-A24WV / MUH-A24WV A/C
PEAD-RP71JAA Ducted A/C | | 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
RLA502A700B remote
SRKxxZJ-S A/C
SRKxxZM-S A/C
SRKxxZMXA-S A/C | | Yes | +| [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 | | - | +| [MWM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MWM.cpp) | **Disney** | Made With Magic (Glow With The Show) wand | | - | +| [Magiquest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.cpp) | **[MagiQuest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.h)** | Wand | | - | +| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Comfee](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | MPD1-12CRN7 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) | **[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) | **[Pioneer System](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
RYBO12GMFILCAD A/C (12K BTU) (MIDEA) | | 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)
MSH-A24WV A/C (MITSUBISHI112)
MUH-A24WV A/C (MITSUBISHI112)
PEAD-RP71JAA Ducted A/C (MITSUBISHI136) | | 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 | | - | +| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Duux](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | Blizzard Smart 10K / DXMA04 A/C
YJ-A081 TR Remote | | - | +| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Silan Microelectronics](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | SC6121-001 IC | | - | | [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | 42TL838 LCD TV | | - | | [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Yamaha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | RAV561 remote
RXV585B A/V Receiver | | - | -| [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | NS-09AHTI A/C
NS-09AHTI A/C
ZH/TY-01 remote
ZH/TY-01 remote | | Yes | -| [Nikai](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Nikai.cpp) | **Unknown** | | | - | -| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2311 remote (CKP)
A75C2616-1 remote (DKE)
A75C3704 remote
A75C3747 remote
CKP series A/C
CS-E7PKR A/C (DKE)
CS-ME10CKPG A/C
CS-ME12CKPG A/C
CS-ME14CKPG A/C
CS-YW9MKD A/C
CS-Z9RKR A/C
DKE series A/C
DKW series A/C (DKE)
JKE series A/C
NKE series A/C
PKR series A/C (DKE)
RKR series A/C
TV | CKP
DKE
JKE
LKE
NKE
RKR | Yes | -| [Pioneer](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pioneer.cpp) | **Unknown** | | | - | -| [Pronto](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pronto.cpp) | **Unknown** | | | - | -| [RC5_RC6](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RC5_RC6.cpp) | **Unknown** | | | - | +| [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | NS-09AHTI A/C
ZH/TY-01 remote | | Yes | +| [Nikai](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Nikai.cpp) | **Nikai** | Unknown LCD TV | | - | +| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2311 remote (PANASONIC_AC CKP/5)
A75C2616-1 remote (PANASONIC_AC DKE/3)
A75C3704 remote (PANASONIC_AC DKE/3)
A75C3747 remote (PANASONIC_AC JKE/4)
CKP series A/C (PANASONIC_AC CKP/5)
CS-E7PKR A/C (PANASONIC_AC DKE/2)
CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
CS-YW9MKD A/C (PANASONIC_AC JKE/4)
CS-Z9RKR A/C (PANASONIC_AC RKR/6)
DKE series A/C (PANASONIC_AC DKE/3)
DKW series A/C (PANASONIC_AC DKE/3)
JKE series A/C (PANASONIC_AC JKE/4)
NKE series A/C (PANASONIC_AC NKE/2)
PKR series A/C (PANASONIC_AC DKE/3)
RKR series A/C (PANASONIC_AC RKR/6)
TV (PANASONIC) | CKP
DKE
JKE
LKE
NKE
RKR | Yes | +| [Pioneer](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pioneer.cpp) | **Pioneer** | AV Receivers | | - | +| [Pronto](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pronto.cpp) | **Pronto** | Pronto Hex | | - | +| [RC5_RC6](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RC5_RC6.cpp) | **Philips** | RC-5X (RC5X)
Standard RC-5 (RC5)
Standard RC-6 (RC6) | | - | | [RCMM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RCMM.cpp) | **Microsoft** | XBOX 360 | | - | -| [Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.cpp) | **[Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.h)** | AR09FSSDAWKNFA A/C
AR12HSSDBWKNEU A/C
AR12KSFPEWQNET A/C
AR12NXCXAWKXEU A/C
DB63-03556X003 remote
DB93-16761C remote
IEC-R03 remote
UA55H6300 TV | | Yes | -| [Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.cpp) | **Unknown** | | | - | -| [Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.h)** | AH-AxSAY A/C
AH-XP10NRY A/C
AY-ZP40KR A/C
CRMC-820JBEZ remote
LC-52D62U TV | | Yes | +| [Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.cpp) | **[Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.h)** | AK59-00167A Bluray remote (SAMSUNG36)
AR09FSSDAWKNFA A/C (SAMSUNG_AC)
AR12HSSDBWKNEU A/C (SAMSUNG_AC)
AR12KSFPEWQNET A/C (SAMSUNG_AC)
AR12NXCXAWKXEU A/C (SAMSUNG_AC)
BN59-01178B TV remote (SAMSUNG)
DB63-03556X003 remote
DB93-16761C remote
IEC-R03 remote
UA55H6300 TV (SAMSUNG) | | Yes | +| [Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.cpp) | **Sanyo** | LC7461 transmitter IC (SANYO_LC7461)
SA 8650B - disabled | | - | +| [Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.h)** | AH-AxSAY A/C
AH-XP10NRY A/C
AY-ZP40KR A/C
CRMC-820JBEZ remote
CRMC-A907 JBEZ remote
LC-52D62U TV | | Yes | | [Sherwood](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sherwood.cpp) | **Sherwood** | RC-138 remote
RD6505(B) Receiver | | - | | [Sony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sony.cpp) | **Sony** | HT-CT380 Soundbar (Uses 38kHz & 3 repeats) | | - | | [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Blyss** | Owen-SW-5 3 Fan
WP-YK8 090218 remote | | - | @@ -75,10 +79,12 @@ | [Tcl](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.cpp) | **[Leberg](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.h)** | LBS-TOR07 A/C | | 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 | | [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-B13N3KV2
RAS-B13N3KVP-E
WC-L03SE
WH-TA04NE | | Yes | -| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Unknown](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | | | Yes | +| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Duux](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | Blizzard Smart 10K / DXMA04 A/C | | Yes | +| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | PAC 3200 A/C | | Yes | | [Vestel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Vestel.cpp) | **[Vestel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Vestel.h)** | BIOX CXP-9 A/C (9K BTU) | | Yes | | [Whirlpool](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Whirlpool.cpp) | **[Whirlpool](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Whirlpool.h)** | DG11J1-04 remote
DG11J1-3A remote
DG11J1-91 remote
SPIS409L A/C
SPIS412L A/C
SPIW409L A/C
SPIW412L A/C
SPIW418L A/C | DG11J13A
DG11J191 | Yes | | [Whynter](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Whynter.cpp) | **Whynter** | ARC-110WD A/C | | - | +| [Zepeal](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Zepeal.cpp) | **Zepeal** | DRT-A3311(BG) 5 button remote
DRT-A3311(BG) floor fan | | - | ## Send only protocols: @@ -100,6 +106,7 @@ - CARRIER_AC40 - CARRIER_AC64 - COOLIX +- CORONA_AC - DAIKIN - DAIKIN128 - DAIKIN152 @@ -124,6 +131,7 @@ - HITACHI_AC1 - HITACHI_AC2 - HITACHI_AC3 +- HITACHI_AC344 - HITACHI_AC424 - INAX - JVC @@ -135,6 +143,7 @@ - LUTRON - MAGIQUEST - MIDEA +- MIDEA24 - MITSUBISHI - MITSUBISHI112 - MITSUBISHI136 @@ -171,3 +180,4 @@ - VESTEL_AC - WHIRLPOOL_AC - WHYNTER +- ZEPEAL diff --git a/lib/IRremoteESP8266-2.7.8/docs/README.md b/lib/IRremoteESP8266-2.7.8/docs/README.md new file mode 100644 index 000000000..262e82b62 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/README.md @@ -0,0 +1,61 @@ +# IRremoteESP8266 Library + +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. + +## Supported Protocols +You can find the details of which protocols & devices are supported +[here](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). + +## Troubleshooting +Before reporting an issue or asking for help, please try to follow our [Troubleshooting Guide](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) first. + +## Frequently Asked Questions +Some common answers to common questions and problems are on our [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). + +## Library API Documentation +This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). +You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). + +## Installation +##### Official releases via the Arduino IDE v1.8+ (Windows & Linux) +1. Click the _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. +1. Enter `IRremoteESP8266` into the _"Filter your search..."_ top right search box. +1. Click on the IRremoteESP8266 result of the search. +1. Select the version you wish to install and click _"Install"_. + +##### Manual Installation for Windows +1. Click on _"Clone or Download"_ button, then _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ on the page. +1. Extract the contents of the downloaded zip file. +1. Rename the extracted folder to _"IRremoteESP8266"_. +1. Move this folder to your libraries directory. (under windows: `C:\Users\YOURNAME\Documents\Arduino\libraries\`) +1. Restart your Arduino IDE. +1. Check out the examples. + +##### Using Git to install the library ( Linux ) +``` +cd ~/Arduino/libraries +git clone https://github.com/crankyoldgit/IRremoteESP8266.git +``` +###### To update to the latest version of the library +``` +cd ~/Arduino/libraries/IRremoteESP8266 && git pull +``` + +## Contributing +If you want to [contribute](.github/CONTRIBUTING.md#how-can-i-contribute) to this project, consider: +- [Reporting](.github/CONTRIBUTING.md#reporting-bugs) bugs and errors +- Ask for enhancements +- Improve our documentation +- [Creating issues](.github/CONTRIBUTING.md#reporting-bugs) and [pull requests](.github/CONTRIBUTING.md#pull-requests) +- Tell other people about this library + +## Contributors +Available [here](.github/Contributors.md) + +## Library History +This library was originally based on Ken Shirriff's work (https://github.com/shirriff/Arduino-IRremote/) + +[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) has updated the IRsend class to work on ESP8266 and [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) the receiving & decoding part (IRrecv class). + +As of v2.0, the library was almost entirely re-written with the ESP8266's resources in mind. diff --git a/lib/IRremoteESP8266-2.7.8/docs/README_fr.md b/lib/IRremoteESP8266-2.7.8/docs/README_fr.md new file mode 100644 index 000000000..3ff81c5d8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/README_fr.md @@ -0,0 +1,64 @@ +# IRremoteESP8266 Library + +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. + +## Protocoles supportés +Vous pouvez trouver le détails des protocoles et machines supportés +[here](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). + +## Dépannage +Avant de reporter un probème ou de demander de l'aide, essayez de suivre notre [guide de dépannage](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) first. + +## Questions fréquentes +Les questions les plus fréquentes sont ici, avec des réponses [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). + +## Documentation API de la bibliothèque +Cette bibliothèque utilise [Doxygen](https://www.doxygen.nl/index.html) pour [documenter automatiquement](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [l'API](https://en.wikipedia.org/wiki/Application_programming_interface) de la [bibliothèque](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). Vous pouvez le trouver [ici](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). + +## Installation +##### Officiel releases avec l'Arduino IDE v1.8+ (Windows & Linux) +1. Cliquez sur _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. +1. Entrez `IRremoteESP8266` dans le _"Filter your search..."_ barre de recherche en haut à droite. +1. Cliquez sur le IRremoteESP8266 pour avoir les résultats de la recherche. +1. Selectionnez la version que vous voulez installer et cliquez sur _"Install"_. + +## Library API Documentation +This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). +You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). + +##### Installation manuelle pour Windows +1. cliquez le boutton sur _"Clone or Download"_ , et _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ on the page. +1. Extraire l'archive. +1. renommez le fichier par _"IRremoteESP8266"_. +1. déplacer le fichier dans votre fichier de bibliothèques. (Pour windows : `C:\Users\VOTRE_NOM\Documents\Arduino\libraries\`) +1. Redemarrez arduino IDE. +1. Regardez les exemples. + +##### En utilisant GIT ( Linux ) +``` +cd ~/Arduino/libraries +git clone https://github.com/crankyoldgit/IRremoteESP8266.git +``` +###### Pour se mettre à jour +``` +cd ~/Arduino/libraries/IRremoteESP8266 && git pull +``` + +## Contribution +Si vous voulez [contribuer](.github/CONTRIBUTING.md#how-can-i-contribute) au projet, pour les erreurs: +- [Reporting](.github/CONTRIBUTING.md#reporting-bugs) bug et erreurs +- Demander des améliorations +- Améliorer notre documentation +- [Création d'issues](.github/CONTRIBUTING.md#reporting-bugs) et [pull requests](.github/CONTRIBUTING.md#pull-requests) +- Parlez de cettre librairie à d'autres personnes + +## Contributeurs +disponible [ici](.github/Contributors.md) + +## Historique de la bibliothèque +Elle est basée sur le travail de Shirriff (https://github.com/shirriff/Arduino-IRremote/) + +[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) à mis a jour la IRsend class pour qu'elle soit fonctionnelle sur ESP8266 et [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) s'est occupé de la partie réception et décodage (IRrecv class). + +Comme pour la version 2.0, la bibliothèque à été completement réécrite avec les ressources sur ESP8266. diff --git a/lib/IRremoteESP8266-2.7.7/docs/_config.yml b/lib/IRremoteESP8266-2.7.8/docs/_config.yml similarity index 100% rename from lib/IRremoteESP8266-2.7.7/docs/_config.yml rename to lib/IRremoteESP8266-2.7.8/docs/_config.yml diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8cpp.html new file mode 100644 index 000000000..2cd303da8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8cpp.html @@ -0,0 +1,98 @@ + + + + + + + +IRremoteESP8266: src/IRac.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRac.cpp File Reference
+
+
+ + + + +

+Namespaces

 IRAcUtils
 
+ + + + + + + +

+Functions

String IRAcUtils::resultAcToString (const decode_results *const result)
 Display the human readable state of an A/C message if we can. More...
 
bool IRAcUtils::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. More...
 
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h.html new file mode 100644 index 000000000..8a58a1eee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h.html @@ -0,0 +1,127 @@ + + + + + + + +IRremoteESP8266: src/IRac.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRac.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  IRac
 
+ + + +

+Namespaces

 IRAcUtils
 
+ + + + + + + +

+Functions

String IRAcUtils::resultAcToString (const decode_results *const result)
 Display the human readable state of an A/C message if we can. More...
 
bool IRAcUtils::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. More...
 
+ + + +

+Variables

const int8_t kGpioUnused = -1
 
+

Variable Documentation

+ +

◆ kGpioUnused

+ +
+
+ + + + +
const int8_t kGpioUnused = -1
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h_source.html new file mode 100644 index 000000000..00c94ee20 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRac_8h_source.html @@ -0,0 +1,652 @@ + + + + + + + +IRremoteESP8266: src/IRac.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRac.h
+
+
+Go to the documentation of this file.
1 #ifndef IRAC_H_
+
2 #define IRAC_H_
+
3 
+
4 // Copyright 2019 David Conran
+
5 
+
6 #ifndef UNIT_TEST
+
7 #include <Arduino.h>
+
8 #endif
+
9 #include "IRremoteESP8266.h"
+
10 #include "ir_Amcor.h"
+
11 #include "ir_Argo.h"
+
12 #include "ir_Carrier.h"
+
13 #include "ir_Coolix.h"
+
14 #include "ir_Corona.h"
+
15 #include "ir_Daikin.h"
+
16 #include "ir_Delonghi.h"
+
17 #include "ir_Fujitsu.h"
+
18 #include "ir_Electra.h"
+
19 #include "ir_Goodweather.h"
+
20 #include "ir_Gree.h"
+
21 #include "ir_Haier.h"
+
22 #include "ir_Hitachi.h"
+
23 #include "ir_Kelvinator.h"
+
24 #include "ir_LG.h"
+
25 #include "ir_Midea.h"
+
26 #include "ir_Mitsubishi.h"
+
27 #include "ir_MitsubishiHeavy.h"
+
28 #include "ir_Neoclima.h"
+
29 #include "ir_Panasonic.h"
+
30 #include "ir_Samsung.h"
+
31 #include "ir_Sharp.h"
+
32 #include "ir_Tcl.h"
+
33 #include "ir_Teco.h"
+
34 #include "ir_Toshiba.h"
+
35 #include "ir_Trotec.h"
+
36 #include "ir_Vestel.h"
+
37 #include "ir_Whirlpool.h"
+
38 
+
39 // Constants
+
40 const int8_t kGpioUnused = -1;
+
41 
+
42 // Class
+
43 class IRac {
+
44  public:
+
45  explicit IRac(const uint16_t pin, const bool inverted = false,
+
46  const bool use_modulation = true);
+
47  static bool isProtocolSupported(const decode_type_t protocol);
+
48  static void initState(stdAc::state_t *state,
+
49  const decode_type_t vendor, const int16_t model,
+
50  const bool power, const stdAc::opmode_t mode,
+
51  const float degrees, const bool celsius,
+
52  const stdAc::fanspeed_t fan,
+
53  const stdAc::swingv_t swingv,
+
54  const stdAc::swingh_t swingh,
+
55  const bool quiet, const bool turbo, const bool econo,
+
56  const bool light, const bool filter, const bool clean,
+
57  const bool beep, const int16_t sleep,
+
58  const int16_t clock);
+
59  static void initState(stdAc::state_t *state);
+
60  void markAsSent(void);
+
61  bool sendAc(void);
+
62  bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
+
63  bool sendAc(const decode_type_t vendor, const int16_t model,
+
64  const bool power, const stdAc::opmode_t mode, const float degrees,
+
65  const bool celsius, const stdAc::fanspeed_t fan,
+
66  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
67  const bool quiet, const bool turbo, const bool econo,
+
68  const bool light, const bool filter, const bool clean,
+
69  const bool beep, const int16_t sleep = -1,
+
70  const int16_t clock = -1);
+
71  static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
+
72  static bool strToBool(const char *str, const bool def = false);
+
73  static int16_t strToModel(const char *str, const int16_t def = -1);
+ +
75  const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
+ +
77  const char *str,
+ + +
80  const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
+ +
82  const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
+
83  static String boolToString(const bool value);
+
84  static String opmodeToString(const stdAc::opmode_t mode);
+
85  static String fanspeedToString(const stdAc::fanspeed_t speed);
+
86  static String swingvToString(const stdAc::swingv_t swingv);
+
87  static String swinghToString(const stdAc::swingh_t swingh);
+ + +
90  bool hasStateChanged(void);
+ +
92 #ifndef UNIT_TEST
+
93 
+
94  private:
+
95 #endif
+
96  uint16_t _pin;
+
97  bool _inverted;
+ +
99  stdAc::state_t _prev; // The state we expect the device to currently be in.
+
100 #if SEND_AMCOR
+
101  void amcor(IRAmcorAc *ac,
+
102  const bool on, const stdAc::opmode_t mode, const float degrees,
+
103  const stdAc::fanspeed_t fan);
+
104 #endif // SEND_AMCOR
+
105 #if SEND_ARGO
+
106  void argo(IRArgoAC *ac,
+
107  const bool on, const stdAc::opmode_t mode, const float degrees,
+
108  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
109  const bool turbo, const int16_t sleep = -1);
+
110 #endif // SEND_ARGO
+
111 #if SEND_CARRIER_AC64
+
112 void carrier64(IRCarrierAc64 *ac,
+
113  const bool on, const stdAc::opmode_t mode,
+
114  const float degrees, const stdAc::fanspeed_t fan,
+
115  const stdAc::swingv_t swingv, const int16_t sleep = -1);
+
116 #endif // SEND_CARRIER_AC64
+
117 #if SEND_COOLIX
+
118  void coolix(IRCoolixAC *ac,
+
119  const bool on, const stdAc::opmode_t mode, const float degrees,
+
120  const stdAc::fanspeed_t fan,
+
121  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
122  const bool turbo, const bool light, const bool clean,
+
123  const int16_t sleep = -1);
+
124 #endif // SEND_COOLIX
+
125 #if SEND_CORONA_AC
+
126  void corona(IRCoronaAc *ac,
+
127  const bool on, const stdAc::opmode_t mode,
+
128  const float degrees, const stdAc::fanspeed_t fan,
+
129  const stdAc::swingv_t swingv, const bool econo);
+
130 #endif // SEND_CORONA_AC
+
131 #if SEND_DAIKIN
+
132  void daikin(IRDaikinESP *ac,
+
133  const bool on, const stdAc::opmode_t mode, const float degrees,
+
134  const stdAc::fanspeed_t fan,
+
135  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
136  const bool quiet, const bool turbo, const bool econo,
+
137  const bool clean);
+
138 #endif // SEND_DAIKIN
+
139 #if SEND_DAIKIN128
+
140  void daikin128(IRDaikin128 *ac,
+
141  const bool on, const stdAc::opmode_t mode,
+
142  const float degrees, const stdAc::fanspeed_t fan,
+
143  const stdAc::swingv_t swingv,
+
144  const bool quiet, const bool turbo, const bool light,
+
145  const bool econo, const int16_t sleep = -1,
+
146  const int16_t clock = -1);
+
147 #endif // SEND_DAIKIN128
+
148 #if SEND_DAIKIN152
+
149  void daikin152(IRDaikin152 *ac,
+
150  const bool on, const stdAc::opmode_t mode,
+
151  const float degrees, const stdAc::fanspeed_t fan,
+
152  const stdAc::swingv_t swingv,
+
153  const bool quiet, const bool turbo, const bool econo);
+
154 #endif // SEND_DAIKIN152
+
155 #if SEND_DAIKIN160
+
156  void daikin160(IRDaikin160 *ac,
+
157  const bool on, const stdAc::opmode_t mode,
+
158  const float degrees, const stdAc::fanspeed_t fan,
+
159  const stdAc::swingv_t swingv);
+
160 #endif // SEND_DAIKIN160
+
161 #if SEND_DAIKIN176
+
162  void daikin176(IRDaikin176 *ac,
+
163  const bool on, const stdAc::opmode_t mode,
+
164  const float degrees, const stdAc::fanspeed_t fan,
+
165  const stdAc::swingh_t swingh);
+
166 #endif // SEND_DAIKIN176
+
167 #if SEND_DAIKIN2
+
168  void daikin2(IRDaikin2 *ac,
+
169  const bool on, const stdAc::opmode_t mode,
+
170  const float degrees, const stdAc::fanspeed_t fan,
+
171  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
172  const bool quiet, const bool turbo, const bool light,
+
173  const bool econo, const bool filter, const bool clean,
+
174  const bool beep, const int16_t sleep = -1,
+
175  const int16_t clock = -1);
+
176 #endif // SEND_DAIKIN2
+
177 #if SEND_DAIKIN216
+
178 void daikin216(IRDaikin216 *ac,
+
179  const bool on, const stdAc::opmode_t mode,
+
180  const float degrees, const stdAc::fanspeed_t fan,
+
181  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
182  const bool quiet, const bool turbo);
+
183 #endif // SEND_DAIKIN216
+
184 #if SEND_DAIKIN64
+
185  void daikin64(IRDaikin64 *ac,
+
186  const bool on, const stdAc::opmode_t mode,
+
187  const float degrees, const stdAc::fanspeed_t fan,
+
188  const stdAc::swingv_t swingv,
+
189  const bool quiet, const bool turbo,
+
190  const int16_t sleep = -1, const int16_t clock = -1);
+
191 #endif // SEND_DAIKIN64
+
192 #if SEND_DELONGHI_AC
+
193  void delonghiac(IRDelonghiAc *ac,
+
194  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
195  const float degrees, const stdAc::fanspeed_t fan,
+
196  const bool turbo, const int16_t sleep = -1);
+
197 #endif // SEND_DELONGHI_AC
+
198 #if SEND_ELECTRA_AC
+
199 void electra(IRElectraAc *ac,
+
200  const bool on, const stdAc::opmode_t mode,
+
201  const float degrees, const stdAc::fanspeed_t fan,
+
202  const stdAc::swingv_t swingv,
+
203  const stdAc::swingh_t swingh, const bool turbo,
+
204  const bool lighttoggle, const bool clean);
+
205 #endif // SEND_ELECTRA_AC
+
206 #if SEND_FUJITSU_AC
+
207  void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
+
208  const bool on, const stdAc::opmode_t mode, const float degrees,
+
209  const stdAc::fanspeed_t fan,
+
210  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
211  const bool quiet, const bool turbo, const bool econo,
+
212  const bool filter, const bool clean);
+
213 #endif // SEND_FUJITSU_AC
+
214 #if SEND_GOODWEATHER
+
215  void goodweather(IRGoodweatherAc *ac,
+
216  const bool on, const stdAc::opmode_t mode,
+
217  const float degrees,
+
218  const stdAc::fanspeed_t fan,
+
219  const stdAc::swingv_t swingv,
+
220  const bool turbo, const bool light,
+
221  const int16_t sleep = -1);
+
222 #endif // SEND_GOODWEATHER
+
223 #if SEND_GREE
+
224  void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
+
225  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
226  const float degrees, const stdAc::fanspeed_t fan,
+
227  const stdAc::swingv_t swingv, const bool turbo, const bool light,
+
228  const bool clean, const int16_t sleep = -1);
+
229 #endif // SEND_GREE
+
230 #if SEND_HAIER_AC
+
231  void haier(IRHaierAC *ac,
+
232  const bool on, const stdAc::opmode_t mode, const float degrees,
+
233  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
234  const bool filter, const int16_t sleep = -1,
+
235  const int16_t clock = -1);
+
236 #endif // SEND_HAIER_AC
+
237 #if SEND_HAIER_AC_YRW02
+
238  void haierYrwo2(IRHaierACYRW02 *ac,
+
239  const bool on, const stdAc::opmode_t mode,
+
240  const float degrees, const stdAc::fanspeed_t fan,
+
241  const stdAc::swingv_t swingv,
+
242  const bool turbo, const bool filter,
+
243  const int16_t sleep = -1);
+
244 #endif // SEND_HAIER_AC_YRW02
+
245 #if SEND_HITACHI_AC
+
246  void hitachi(IRHitachiAc *ac,
+
247  const bool on, const stdAc::opmode_t mode,
+
248  const float degrees, const stdAc::fanspeed_t fan,
+
249  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
+
250 #endif // SEND_HITACHI_AC
+
251 #if SEND_HITACHI_AC1
+
252  void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model,
+
253  const bool on, const bool power_toggle,
+
254  const stdAc::opmode_t mode,
+
255  const float degrees, const stdAc::fanspeed_t fan,
+
256  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
257  const bool swing_toggle, const int16_t sleep = -1);
+
258 #endif // SEND_HITACHI_AC1
+
259 #if SEND_HITACHI_AC344
+
260  void hitachi344(IRHitachiAc344 *ac,
+
261  const bool on, const stdAc::opmode_t mode,
+
262  const float degrees, const stdAc::fanspeed_t fan,
+
263  const stdAc::swingv_t swingv,
+
264  const stdAc::swingh_t swingh);
+
265 #endif // SEND_HITACHI_AC344
+
266 #if SEND_HITACHI_AC424
+
267  void hitachi424(IRHitachiAc424 *ac,
+
268  const bool on, const stdAc::opmode_t mode,
+
269  const float degrees, const stdAc::fanspeed_t fan,
+
270  const stdAc::swingv_t swingv);
+
271 #endif // SEND_HITACHI_AC424
+
272 #if SEND_KELVINATOR
+
273  void kelvinator(IRKelvinatorAC *ac,
+
274  const bool on, const stdAc::opmode_t mode,
+
275  const float degrees, const stdAc::fanspeed_t fan,
+
276  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
277  const bool quiet, const bool turbo, const bool light,
+
278  const bool filter, const bool clean);
+
279 #endif // SEND_KELVINATOR
+
280 #if SEND_LG
+
281  void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
+
282  const bool on, const stdAc::opmode_t mode,
+
283  const float degrees, const stdAc::fanspeed_t fan);
+
284 #endif // SEND_LG
+
285 #if SEND_MIDEA
+
286  void midea(IRMideaAC *ac,
+
287  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
288  const float degrees, const stdAc::fanspeed_t fan,
+
289  const stdAc::swingv_t swingv, const int16_t sleep = -1);
+
290 #endif // SEND_MIDEA
+
291 #if SEND_MITSUBISHI_AC
+
292  void mitsubishi(IRMitsubishiAC *ac,
+
293  const bool on, const stdAc::opmode_t mode,
+
294  const float degrees,
+
295  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
296  const stdAc::swingh_t swingh,
+
297  const bool quiet, const int16_t clock = -1);
+
298 #endif // SEND_MITSUBISHI_AC
+
299 #if SEND_MITSUBISHI112
+ +
301  const bool on, const stdAc::opmode_t mode,
+
302  const float degrees, const stdAc::fanspeed_t fan,
+
303  const stdAc::swingv_t swingv,
+
304  const stdAc::swingh_t swingh,
+
305  const bool quiet);
+
306 #endif // SEND_MITSUBISHI112
+
307 #if SEND_MITSUBISHI136
+ +
309  const bool on, const stdAc::opmode_t mode,
+
310  const float degrees, const stdAc::fanspeed_t fan,
+
311  const stdAc::swingv_t swingv, const bool quiet);
+
312 #endif // SEND_MITSUBISHI136
+
313 #if SEND_MITSUBISHIHEAVY
+ +
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  const bool turbo, const bool econo, const bool clean);
+ +
321  const bool on, const stdAc::opmode_t mode,
+
322  const float degrees, const stdAc::fanspeed_t fan,
+
323  const stdAc::swingv_t swingv,
+
324  const stdAc::swingh_t swingh,
+
325  const bool quiet, const bool turbo, const bool econo,
+
326  const bool filter, const bool clean,
+
327  const int16_t sleep = -1);
+
328 #endif // SEND_MITSUBISHIHEAVY
+
329 #if SEND_NEOCLIMA
+
330  void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
+
331  const float degrees, const stdAc::fanspeed_t fan,
+
332  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
333  const bool turbo, const bool light, const bool filter,
+
334  const int16_t sleep = -1);
+
335 #endif // SEND_NEOCLIMA
+
336 #if SEND_PANASONIC_AC
+ +
338  const bool on, const stdAc::opmode_t mode, const float degrees,
+
339  const stdAc::fanspeed_t fan,
+
340  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
341  const bool quiet, const bool turbo, const bool filter,
+
342  const int16_t clock = -1);
+
343 #endif // SEND_PANASONIC_AC
+
344 #if SEND_SAMSUNG_AC
+
345  void samsung(IRSamsungAc *ac,
+
346  const bool on, const stdAc::opmode_t mode, const float degrees,
+
347  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
348  const bool quiet, const bool turbo, const bool light,
+
349  const bool filter, const bool clean,
+
350  const bool beep, const bool prevpower = true,
+
351  const bool forcepower = true);
+
352 #endif // SEND_SAMSUNG_AC
+
353 #if SEND_SHARP_AC
+
354  void sharp(IRSharpAc *ac,
+
355  const bool on, const bool prev_power, const stdAc::opmode_t mode,
+
356  const float degrees, const stdAc::fanspeed_t fan,
+
357  const stdAc::swingv_t swingv, const bool turbo, const bool filter,
+
358  const bool clean);
+
359 #endif // SEND_SHARP_AC
+
360 #if SEND_TCL112AC
+
361  void tcl112(IRTcl112Ac *ac,
+
362  const bool on, const stdAc::opmode_t mode, const float degrees,
+
363  const stdAc::fanspeed_t fan,
+
364  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
365  const bool turbo, const bool light, const bool econo,
+
366  const bool filter);
+
367 #endif // SEND_TCL112AC
+
368 #if SEND_TECO
+
369  void teco(IRTecoAc *ac,
+
370  const bool on, const stdAc::opmode_t mode, const float degrees,
+
371  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
372  const bool light, const int16_t sleep = -1);
+
373 #endif // SEND_TECO
+
374 #if SEND_TOSHIBA_AC
+
375  void toshiba(IRToshibaAC *ac,
+
376  const bool on, const stdAc::opmode_t mode, const float degrees,
+
377  const stdAc::fanspeed_t fan);
+
378 #endif // SEND_TOSHIBA_AC
+
379 #if SEND_TROTEC
+
380  void trotec(IRTrotecESP *ac,
+
381  const bool on, const stdAc::opmode_t mode, const float degrees,
+
382  const stdAc::fanspeed_t fan, const int16_t sleep = -1);
+
383 #endif // SEND_TROTEC
+
384 #if SEND_VESTEL_AC
+
385  void vestel(IRVestelAc *ac,
+
386  const bool on, const stdAc::opmode_t mode, const float degrees,
+
387  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
388  const bool turbo, const bool filter,
+
389  const int16_t sleep = -1, const int16_t clock = -1,
+
390  const bool sendNormal = true);
+
391 #endif // SEND_VESTEL_AC
+
392 #if SEND_WHIRLPOOL_AC
+ +
394  const bool on, const stdAc::opmode_t mode, const float degrees,
+
395  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
396  const bool turbo, const bool light,
+
397  const int16_t sleep = -1, const int16_t clock = -1);
+
398 #endif // SEND_WHIRLPOOL_AC
+
399 static stdAc::state_t cleanState(const stdAc::state_t state);
+
400 static stdAc::state_t handleToggles(const stdAc::state_t desired,
+
401  const stdAc::state_t *prev = NULL);
+
402 }; // IRac class
+
403 
+
404 namespace IRAcUtils {
+
405  String resultAcToString(const decode_results * const results);
+
406  bool decodeToState(const decode_results *decode, stdAc::state_t *result,
+
407  const stdAc::state_t *prev = NULL);
+
408 } // namespace IRAcUtils
+
409 #endif // IRAC_H_
+
+
Class for handling detailed Panasonic A/C messages.
Definition: ir_Panasonic.h:98
+
Support for Kelvinator A/C protocols.
+
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:95
+
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:1020
+
Class for handling detailed Toshiba A/C messages.
Definition: ir_Toshiba.h:62
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:714
+
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:128
+
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:123
+
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:133
+
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:2499
+
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:1096
+ +
Support for Electra A/C protocols.
+
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:2362
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
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:640
+
Support for Trotec protocols.
+
Class for handling detailed Daikin 280-bit A/C messages.
Definition: ir_Daikin.h:520
+
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)
Send a LG A/C message with the supplied settings.
Definition: IRac.cpp:1202
+
Class for handling detailed Delonghi A/C messages.
Definition: ir_Delonghi.h:102
+
Class for handling detailed Corona A/C messages.
Definition: ir_Corona.h:93
+
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:1168
+
Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering an...
Definition: ir_Daikin.h:602
+
Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
+
Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Ven...
Definition: ir_Daikin.h:864
+
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:2641
+
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:152
+
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:1814
+
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:709
+
void tcl112(IRTcl112Ac *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 econo, const bool filter)
Send a TCL 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1640
+
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:2368
+
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:2379
+
Support for Midea protocols. Midea added by crankyoldgit & bwze.
+
Support for Daikin A/C protocols.
+
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:129
+
Class for handling detailed Daikin 64-bit A/C messages.
Definition: ir_Daikin.h:998
+ +
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:1773
+
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition: ir_Hitachi.h:313
+
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:476
+
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: IRac.cpp:49
+
Class for handling detailed Daikin 216-bit A/C messages.
Definition: ir_Daikin.h:698
+
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:135
+
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 bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
Send a Samsung A/C message with the supplied settings.
Definition: IRac.cpp:1544
+
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:516
+
Class for handling detailed Hitachi 224-bit A/C messages.
Definition: ir_Hitachi.h:188
+
const int8_t kGpioUnused
Definition: IRac.h:40
+
Definition: IRac.cpp:2710
+
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:951
+
Class for handling detailed Whirlpool A/C messages.
Definition: ir_Whirlpool.h:91
+
Class for handling detailed Hitachi 344-bit A/C messages.
Definition: ir_Hitachi.h:401
+
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition: IRac.cpp:2612
+
stdAc::state_t next
The state we want the device to be in after we send.
Definition: IRac.h:91
+
std::string String
Definition: IRremoteESP8266.h:1093
+
Class for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done ...
Definition: ir_Mitsubishi.h:168
+
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:1736
+
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2539
+
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:81
+
Definition: ir_Mitsubishi.h:286
+
Class for handling detailed TCL A/C messages.
Definition: ir_Tcl.h:63
+
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:608
+
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:80
+
Support for TCL protocols.
+
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition: IRac.cpp:2391
+
void haierYrwo2(IRHaierACYRW02 *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)
Send a Haier YRWO2 A/C message with the supplied settings.
Definition: IRac.cpp:988
+
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:679
+
Support for Hitachi A/C protocols.
+
Support for Panasonic protocols.
+
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:1858
+
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:232
+
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:141
+ +
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:1306
+
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:3033
+
Class for handling detailed Hitachi 104-bit A/C messages.
Definition: ir_Hitachi.h:245
+
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:1130
+
Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
+
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition: IRac.cpp:2716
+
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:553
+
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:74
+
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:73
+
Class for handling detailed Kelvinator A/C messages.
Definition: ir_Kelvinator.h:137
+
bool _inverted
Definition: IRac.h:97
+
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:101
+
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:105
+
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:1500
+
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:2663
+
Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....
+
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 int16_t sleep=-1)
Send a Midea A/C message with the supplied settings.
Definition: IRac.cpp:1235
+
Definition: IRac.h:43
+
Support for Teco 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 bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Gree A/C message with the supplied settings.
Definition: IRac.cpp:913
+
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:766
+
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:1845
+
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:1271
+
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:279
+
Class for handling detailed Daikin 152-bit A/C messages.
Definition: ir_Daikin.h:938
+
Class for handling detailed LG A/C messages.
Definition: ir_LG.h:63
+
Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
+
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:217
+
Class for handling detailed Daikin 160-bit A/C messages.
Definition: ir_Daikin.h:754
+
static String opmodeToString(const stdAc::opmode_t mode)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:2619
+
Class for handling detailed Sharp A/C messages.
Definition: ir_Sharp.h:108
+
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:311
+
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:158
+
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:1342
+ +
bool _modulation
Definition: IRac.h:98
+
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:1676
+
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:2397
+
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:1057
+ +
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:2594
+
void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:1706
+
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:1377
+
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:2458
+
Class for handling detailed Vestel A/C messages.
Definition: ir_Vestel.h:116
+
void neoclima(IRNeoclimaAc *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 filter, const int16_t sleep=-1)
Send a Neoclima A/C message with the supplied settings.
Definition: IRac.cpp:1460
+
Class for handling detailed Trotec A/C messages.
Definition: ir_Trotec.h:76
+
Class for handling detailed Teco A/C messages.
Definition: ir_Teco.h:107
+
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:2687
+
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:739
+
stdAc::state_t _prev
Definition: IRac.h:99
+
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:289
+
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:586
+
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:441
+
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)
Initialse the given state with the supplied settings.
Definition: IRac.cpp:80
+
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:1418
+ +
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:220
+
Class for handling detailed Gree A/C messages.
Definition: ir_Gree.h:117
+
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:380
+
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:2427
+
Support for Toshiba protocols.
+
void sharp(IRSharpAc *ac, 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 bool turbo, const bool filter, const bool clean)
Send a Sharp A/C message with the supplied settings.
Definition: IRac.cpp:1588
+
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:871
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
Class for handling detailed Goodweather A/C messages.
Definition: ir_Goodweather.h:90
+
Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
+ +
Class for handling detailed Argo A/C messages.
Definition: ir_Argo.h:129
+
void fujitsu(IRFujitsuAC *ac, const fujitsu_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 econo, const bool filter, const bool clean)
Send a Fujitsu A/C message with the supplied settings.
Definition: IRac.cpp:808
+
Class for handling detailed Neoclima A/C messages.
Definition: ir_Neoclima.h:86
+
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition: IRac.cpp:133
+
Class for handling detailed Daikin 176-bit A/C messages.
Definition: ir_Daikin.h:806
+
Amcor A/C protocol.
+
uint16_t _pin
Definition: IRac.h:96
+
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:343
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8cpp.html new file mode 100644 index 000000000..405dbd5b5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8cpp.html @@ -0,0 +1,135 @@ + + + + + + + +IRremoteESP8266: src/IRrecv.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRrecv.cpp File Reference
+
+
+ + + + + + + + +

+Variables

portMUX_TYPE irremote_mux = portMUX_INITIALIZER_UNLOCKED
 
volatile irparams_t irparams
 
irparams_tirparams_save
 
+

Variable Documentation

+ +

◆ irparams

+ +
+
+ + + + +
volatile irparams_t irparams
+
+ +
+
+ +

◆ irparams_save

+ +
+
+ + + + +
irparams_t* irparams_save
+
+ +
+
+ +

◆ irremote_mux

+ +
+
+ + + + +
portMUX_TYPE irremote_mux = portMUX_INITIALIZER_UNLOCKED
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h.html new file mode 100644 index 000000000..726b05484 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h.html @@ -0,0 +1,425 @@ + + + + + + + +IRremoteESP8266: src/IRrecv.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRrecv.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

struct  irparams_t
 Information for the interrupt handler. More...
 
struct  match_result_t
 Results from a data match. More...
 
class  decode_results
 Results returned from the decoder. More...
 
class  IRrecv
 Class for receiving IR messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kHeader = 2
 
const uint16_t kFooter = 2
 
const uint16_t kStartOffset = 1
 
const uint16_t kMarkExcess = 50
 
const uint16_t kRawBuf = 100
 
const uint64_t kRepeat = UINT64_MAX
 
const uint16_t kUnknownThreshold = 6
 
const uint8_t kIdleState = 2
 
const uint8_t kMarkState = 3
 
const uint8_t kSpaceState = 4
 
const uint8_t kStopState = 5
 
const uint8_t kTolerance = 25
 
const uint8_t kUseDefTol = 255
 
const uint16_t kRawTick = 2
 
const uint8_t kTimeoutMs = 15
 
const uint16_t kMaxTimeoutMs = kRawTick * (UINT16_MAX / MS_TO_USEC(1))
 
const uint32_t kFnvPrime32 = 16777619UL
 
const uint32_t kFnvBasis32 = 2166136261UL
 
const uint8_t kDefaultESP32Timer = 3
 
const uint16_t kStateSizeMax = kHitachiAc2StateLength
 
+

Variable Documentation

+ +

◆ kDefaultESP32Timer

+ +
+
+ + + + +
const uint8_t kDefaultESP32Timer = 3
+
+ +
+
+ +

◆ kFnvBasis32

+ +
+
+ + + + +
const uint32_t kFnvBasis32 = 2166136261UL
+
+ +
+
+ +

◆ kFnvPrime32

+ +
+
+ + + + +
const uint32_t kFnvPrime32 = 16777619UL
+
+ +
+
+ +

◆ kFooter

+ +
+
+ + + + +
const uint16_t kFooter = 2
+
+ +
+
+ +

◆ kHeader

+ +
+
+ + + + +
const uint16_t kHeader = 2
+
+ +
+
+ +

◆ kIdleState

+ +
+
+ + + + +
const uint8_t kIdleState = 2
+
+ +
+
+ +

◆ kMarkExcess

+ +
+
+ + + + +
const uint16_t kMarkExcess = 50
+
+ +
+
+ +

◆ kMarkState

+ +
+
+ + + + +
const uint8_t kMarkState = 3
+
+ +
+
+ +

◆ kMaxTimeoutMs

+ +
+
+ + + + +
const uint16_t kMaxTimeoutMs = kRawTick * (UINT16_MAX / MS_TO_USEC(1))
+
+ +
+
+ +

◆ kRawBuf

+ +
+
+ + + + +
const uint16_t kRawBuf = 100
+
+ +
+
+ +

◆ kRawTick

+ +
+
+ + + + +
const uint16_t kRawTick = 2
+
+ +
+
+ +

◆ kRepeat

+ +
+
+ + + + +
const uint64_t kRepeat = UINT64_MAX
+
+ +
+
+ +

◆ kSpaceState

+ +
+
+ + + + +
const uint8_t kSpaceState = 4
+
+ +
+
+ +

◆ kStartOffset

+ +
+
+ + + + +
const uint16_t kStartOffset = 1
+
+ +
+
+ +

◆ kStateSizeMax

+ +
+
+ + + + +
const uint16_t kStateSizeMax = kHitachiAc2StateLength
+
+ +
+
+ +

◆ kStopState

+ +
+
+ + + + +
const uint8_t kStopState = 5
+
+ +
+
+ +

◆ kTimeoutMs

+ +
+
+ + + + +
const uint8_t kTimeoutMs = 15
+
+ +
+
+ +

◆ kTolerance

+ +
+
+ + + + +
const uint8_t kTolerance = 25
+
+ +
+
+ +

◆ kUnknownThreshold

+ +
+
+ + + + +
const uint16_t kUnknownThreshold = 6
+
+ +
+
+ +

◆ kUseDefTol

+ +
+
+ + + + +
const uint8_t kUseDefTol = 255
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h_source.html new file mode 100644 index 000000000..65256af77 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRrecv_8h_source.html @@ -0,0 +1,972 @@ + + + + + + + +IRremoteESP8266: src/IRrecv.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRrecv.h
+
+
+Go to the documentation of this file.
1 // Copyright 2009 Ken Shirriff
+
2 // Copyright 2015 Mark Szabo
+
3 // Copyright 2015 Sebastien Warin
+
4 // Copyright 2017 David Conran
+
5 
+
6 #ifndef IRRECV_H_
+
7 #define IRRECV_H_
+
8 
+
9 #ifndef UNIT_TEST
+
10 #include <Arduino.h>
+
11 #endif
+
12 #include <stddef.h>
+
13 #define __STDC_LIMIT_MACROS
+
14 #include <stdint.h>
+
15 #include "IRremoteESP8266.h"
+
16 
+
17 // Constants
+
18 const uint16_t kHeader = 2; // Usual nr. of header entries.
+
19 const uint16_t kFooter = 2; // Usual nr. of footer (stop bits) entries.
+
20 const uint16_t kStartOffset = 1; // Usual rawbuf entry to start from.
+
21 #define MS_TO_USEC(x) (x * 1000U) // Convert milli-Seconds to micro-Seconds.
+
22 // Marks tend to be 100us too long, and spaces 100us too short
+
23 // when received due to sensor lag.
+
24 const uint16_t kMarkExcess = 50;
+
25 const uint16_t kRawBuf = 100; // Default length of raw capture buffer
+
26 const uint64_t kRepeat = UINT64_MAX;
+
27 // Default min size of reported UNKNOWN messages.
+
28 const uint16_t kUnknownThreshold = 6;
+
29 
+
30 // receiver states
+
31 const uint8_t kIdleState = 2;
+
32 const uint8_t kMarkState = 3;
+
33 const uint8_t kSpaceState = 4;
+
34 const uint8_t kStopState = 5;
+
35 const uint8_t kTolerance = 25; // default percent tolerance in measurements.
+
36 const uint8_t kUseDefTol = 255; // Indicate to use the class default tolerance.
+
37 const uint16_t kRawTick = 2; // Capture tick to uSec factor.
+
38 #define RAWTICK kRawTick // Deprecated. For legacy user code support only.
+
39 // How long (ms) before we give up wait for more data?
+
40 // Don't exceed kMaxTimeoutMs without a good reason.
+
41 // That is the capture buffers maximum value size. (UINT16_MAX / kRawTick)
+
42 // Typically messages/protocols tend to repeat around the 100ms timeframe,
+
43 // thus we should timeout before that to give us some time to try to decode
+
44 // before we need to start capturing a possible new message.
+
45 // Typically 15ms suits most applications. However, some protocols demand a
+
46 // higher value. e.g. 90ms for XMP-1 and some aircon units.
+
47 const uint8_t kTimeoutMs = 15; // In MilliSeconds.
+
48 #define TIMEOUT_MS kTimeoutMs // For legacy documentation.
+
49 const uint16_t kMaxTimeoutMs = kRawTick * (UINT16_MAX / MS_TO_USEC(1));
+
50 
+
51 // Use FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param
+
52 const uint32_t kFnvPrime32 = 16777619UL;
+
53 const uint32_t kFnvBasis32 = 2166136261UL;
+
54 
+
55 // Which of the ESP32 timers to use by default. (0-3)
+
56 const uint8_t kDefaultESP32Timer = 3;
+
57 
+
58 #if DECODE_AC
+
59 // Hitachi AC is the current largest state size.
+ +
61 #else
+
62 // Just define something
+
63 const uint16_t kStateSizeMax = 0;
+
64 #endif
+
65 
+
66 // Types
+
67 
+
69 typedef struct {
+
70  uint8_t recvpin; // pin for IR data from detector
+
71  uint8_t rcvstate; // state machine
+
72  uint16_t timer; // state timer, counts 50uS ticks.
+
73  uint16_t bufsize; // max. nr. of entries in the capture buffer.
+
74  uint16_t *rawbuf; // raw data
+
75  // uint16_t is used for rawlen as it saves 3 bytes of iram in the interrupt
+
76  // handler. Don't ask why, I don't know. It just does.
+
77  uint16_t rawlen; // counter of entries in rawbuf.
+
78  uint8_t overflow; // Buffer overflow indicator.
+
79  uint8_t timeout; // Nr. of milliSeconds before we give up.
+
80 } irparams_t;
+
81 
+
83 typedef struct {
+
84  bool success; // Was the match successful?
+
85  uint64_t data; // The data found.
+
86  uint16_t used; // How many buffer positions were used.
+ +
88 
+
89 // Classes
+
90 
+ +
93  public:
+
94  decode_type_t decode_type; // NEC, SONY, RC5, UNKNOWN
+
95  // value, address, & command are all mutually exclusive with state.
+
96  // i.e. They MUST NOT be used at the same time as state, so we can use a union
+
97  // structure to save us a handful of valuable bytes of memory.
+
98  union {
+
99  struct {
+
100  uint64_t value; // Decoded value
+
101  uint32_t address; // Decoded device address.
+
102  uint32_t command; // Decoded command.
+
103  };
+
104  uint8_t state[kStateSizeMax]; // Multi-byte results.
+
105  };
+
106  uint16_t bits; // Number of bits in decoded value
+
107  volatile uint16_t *rawbuf; // Raw intervals in .5 us ticks
+
108  uint16_t rawlen; // Number of records in rawbuf.
+
109  bool overflow;
+
110  bool repeat; // Is the result a repeat code?
+
111 };
+
112 
+
114 class IRrecv {
+
115  public:
+
116 #if defined(ESP32)
+
117  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
+
118  const uint8_t timeout = kTimeoutMs,
+
119  const bool save_buffer = false,
+
120  const uint8_t timer_num = kDefaultESP32Timer); // Constructor
+
121 #else // ESP32
+
122  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
+
123  const uint8_t timeout = kTimeoutMs,
+
124  const bool save_buffer = false); // Constructor
+
125 #endif // ESP32
+
126  ~IRrecv(void); // Destructor
+
127  void setTolerance(const uint8_t percent = kTolerance);
+
128  uint8_t getTolerance(void);
+
129  bool decode(decode_results *results, irparams_t *save = NULL,
+
130  uint8_t max_skip = 0, uint16_t noise_floor = 0);
+
131  void enableIRIn(const bool pullup = false);
+
132  void disableIRIn(void);
+
133  void resume(void);
+
134  uint16_t getBufSize(void);
+
135 #if DECODE_HASH
+
136  void setUnknownThreshold(const uint16_t length);
+
137 #endif
+
138  bool match(const uint32_t measured, const uint32_t desired,
+
139  const uint8_t tolerance = kUseDefTol,
+
140  const uint16_t delta = 0);
+
141  bool matchMark(const uint32_t measured, const uint32_t desired,
+
142  const uint8_t tolerance = kUseDefTol,
+
143  const int16_t excess = kMarkExcess);
+
144  bool matchSpace(const uint32_t measured, const uint32_t desired,
+
145  const uint8_t tolerance = kUseDefTol,
+
146  const int16_t excess = kMarkExcess);
+
147 #ifndef UNIT_TEST
+
148 
+
149  private:
+
150 #endif
+ +
152  uint8_t _tolerance;
+
153 #if defined(ESP32)
+
154  uint8_t _timer_num;
+
155 #endif // defined(ESP32)
+
156 #if DECODE_HASH
+ +
158 #endif
+
159  // These are called by decode
+
160  uint8_t _validTolerance(const uint8_t percentage);
+
161  void copyIrParams(volatile irparams_t *src, irparams_t *dst);
+
162  uint16_t compare(const uint16_t oldval, const uint16_t newval);
+
163  uint32_t ticksLow(const uint32_t usecs,
+
164  const uint8_t tolerance = kUseDefTol,
+
165  const uint16_t delta = 0);
+
166  uint32_t ticksHigh(const uint32_t usecs,
+
167  const uint8_t tolerance = kUseDefTol,
+
168  const uint16_t delta = 0);
+
169  bool matchAtLeast(const uint32_t measured, const uint32_t desired,
+
170  const uint8_t tolerance = kUseDefTol,
+
171  const uint16_t delta = 0);
+
172  uint16_t _matchGeneric(volatile uint16_t *data_ptr,
+
173  uint64_t *result_bits_ptr,
+
174  uint8_t *result_ptr,
+
175  const bool use_bits,
+
176  const uint16_t remaining,
+
177  const uint16_t required,
+
178  const uint16_t hdrmark,
+
179  const uint32_t hdrspace,
+
180  const uint16_t onemark,
+
181  const uint32_t onespace,
+
182  const uint16_t zeromark,
+
183  const uint32_t zerospace,
+
184  const uint16_t footermark,
+
185  const uint32_t footerspace,
+
186  const bool atleast = false,
+
187  const uint8_t tolerance = kUseDefTol,
+
188  const int16_t excess = kMarkExcess,
+
189  const bool MSBfirst = true);
+
190  match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits,
+
191  const uint16_t onemark, const uint32_t onespace,
+
192  const uint16_t zeromark, const uint32_t zerospace,
+
193  const uint8_t tolerance = kUseDefTol,
+
194  const int16_t excess = kMarkExcess,
+
195  const bool MSBfirst = true);
+
196  uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr,
+
197  const uint16_t remaining, const uint16_t nbytes,
+
198  const uint16_t onemark, const uint32_t onespace,
+
199  const uint16_t zeromark, const uint32_t zerospace,
+
200  const uint8_t tolerance = kUseDefTol,
+
201  const int16_t excess = kMarkExcess,
+
202  const bool MSBfirst = true);
+
203  uint16_t matchGeneric(volatile uint16_t *data_ptr,
+
204  uint64_t *result_ptr,
+
205  const uint16_t remaining, const uint16_t nbits,
+
206  const uint16_t hdrmark, const uint32_t hdrspace,
+
207  const uint16_t onemark, const uint32_t onespace,
+
208  const uint16_t zeromark, const uint32_t zerospace,
+
209  const uint16_t footermark, const uint32_t footerspace,
+
210  const bool atleast = false,
+
211  const uint8_t tolerance = kUseDefTol,
+
212  const int16_t excess = kMarkExcess,
+
213  const bool MSBfirst = true);
+
214  uint16_t matchGeneric(volatile uint16_t *data_ptr, uint8_t *result_ptr,
+
215  const uint16_t remaining, const uint16_t nbits,
+
216  const uint16_t hdrmark, const uint32_t hdrspace,
+
217  const uint16_t onemark, const uint32_t onespace,
+
218  const uint16_t zeromark, const uint32_t zerospace,
+
219  const uint16_t footermark,
+
220  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 matchGenericConstBitTime(volatile uint16_t *data_ptr,
+
226  uint64_t *result_ptr,
+
227  const uint16_t remaining,
+
228  const uint16_t nbits,
+
229  const uint16_t hdrmark,
+
230  const uint32_t hdrspace,
+
231  const uint16_t one,
+
232  const uint32_t zero,
+
233  const uint16_t footermark,
+
234  const uint32_t footerspace,
+
235  const bool atleast = false,
+
236  const uint8_t tolerance = kUseDefTol,
+
237  const int16_t excess = kMarkExcess,
+
238  const bool MSBfirst = true);
+
239  uint16_t matchManchesterData(volatile const uint16_t *data_ptr,
+
240  uint64_t *result_ptr,
+
241  const uint16_t remaining,
+
242  const uint16_t nbits,
+
243  const uint16_t half_period,
+
244  const uint16_t starting_balance = 0,
+
245  const uint8_t tolerance = kUseDefTol,
+
246  const int16_t excess = kMarkExcess,
+
247  const bool MSBfirst = true,
+
248  const bool GEThomas = true);
+
249  uint16_t matchManchester(volatile const uint16_t *data_ptr,
+
250  uint64_t *result_ptr,
+
251  const uint16_t remaining,
+
252  const uint16_t nbits,
+
253  const uint16_t hdrmark,
+
254  const uint32_t hdrspace,
+
255  const uint16_t clock_period,
+
256  const uint16_t footermark,
+
257  const uint32_t footerspace,
+
258  const bool atleast = false,
+
259  const uint8_t tolerance = kUseDefTol,
+
260  const int16_t excess = kMarkExcess,
+
261  const bool MSBfirst = true,
+
262  const bool GEThomas = true);
+
263  void crudeNoiseFilter(decode_results *results, const uint16_t floor = 0);
+
264  bool decodeHash(decode_results *results);
+
265 #if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO)
+
266  bool decodeNEC(decode_results *results, uint16_t offset = kStartOffset,
+
267  const uint16_t nbits = kNECBits, const bool strict = true);
+
268 #endif
+
269 #if DECODE_ARGO
+
270  bool decodeArgo(decode_results *results, uint16_t offset = kStartOffset,
+
271  const uint16_t nbits = kArgoBits, const bool strict = true);
+
272 #endif // DECODE_ARGO
+
273 #if DECODE_SONY
+
274  bool decodeSony(decode_results *results, uint16_t offset = kStartOffset,
+
275  const uint16_t nbits = kSonyMinBits,
+
276  const bool strict = false);
+
277 #endif
+
278 #if DECODE_SANYO
+
279  // DISABLED due to poor quality.
+
280  // bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,
+
281  // uint16_t nbits = kSanyoSA8650BBits,
+
282  // bool strict = false);
+
283  bool decodeSanyoLC7461(decode_results *results,
+
284  uint16_t offset = kStartOffset,
+
285  const uint16_t nbits = kSanyoLC7461Bits,
+
286  bool strict = true);
+
287 #endif
+
288 #if DECODE_MITSUBISHI
+
289  bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset,
+
290  const uint16_t nbits = kMitsubishiBits,
+
291  const bool strict = true);
+
292 #endif
+
293 #if DECODE_MITSUBISHI2
+
294  bool decodeMitsubishi2(decode_results *results,
+
295  uint16_t offset = kStartOffset,
+
296  const uint16_t nbits = kMitsubishiBits,
+
297  const bool strict = true);
+
298 #endif
+
299 #if DECODE_MITSUBISHI_AC
+
300  bool decodeMitsubishiAC(decode_results *results,
+
301  uint16_t offset = kStartOffset,
+
302  const uint16_t nbits = kMitsubishiACBits,
+
303  const bool strict = false);
+
304 #endif
+
305 #if DECODE_MITSUBISHI136
+
306  bool decodeMitsubishi136(decode_results *results,
+
307  uint16_t offset = kStartOffset,
+
308  const uint16_t nbits = kMitsubishi136Bits,
+
309  const bool strict = true);
+
310 #endif
+
311 #if DECODE_MITSUBISHI112
+
312  bool decodeMitsubishi112(decode_results *results,
+
313  uint16_t offset = kStartOffset,
+
314  const uint16_t nbits = kMitsubishi112Bits,
+
315  const bool strict = true);
+
316 #endif
+
317 #if DECODE_MITSUBISHIHEAVY
+ +
319  uint16_t offset = kStartOffset,
+
320  const uint16_t nbits = kMitsubishiHeavy152Bits,
+
321  const bool strict = true);
+
322 #endif
+
323 #if (DECODE_RC5 || DECODE_R6 || DECODE_LASERTAG || DECODE_MWM)
+
324  int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used,
+
325  uint16_t bitTime, const uint8_t tolerance = kUseDefTol,
+
326  const int16_t excess = kMarkExcess,
+
327  const uint16_t delta = 0, const uint8_t maxwidth = 3);
+
328 #endif
+
329 #if DECODE_RC5
+
330  bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset,
+
331  const uint16_t nbits = kRC5XBits,
+
332  const bool strict = true);
+
333 #endif
+
334 #if DECODE_RC6
+
335  bool decodeRC6(decode_results *results, uint16_t offset = kStartOffset,
+
336  const uint16_t nbits = kRC6Mode0Bits,
+
337  const bool strict = false);
+
338 #endif
+
339 #if DECODE_RCMM
+
340  bool decodeRCMM(decode_results *results, uint16_t offset = kStartOffset,
+
341  const uint16_t nbits = kRCMMBits,
+
342  const bool strict = false);
+
343 #endif
+
344 #if (DECODE_PANASONIC || DECODE_DENON)
+
345  bool decodePanasonic(decode_results *results, uint16_t offset = kStartOffset,
+
346  const uint16_t nbits = kPanasonicBits,
+
347  const bool strict = false,
+
348  const uint32_t manufacturer = kPanasonicManufacturer);
+
349 #endif
+
350 #if DECODE_LG
+
351  bool decodeLG(decode_results *results, uint16_t offset = kStartOffset,
+
352  const uint16_t nbits = kLgBits,
+
353  const bool strict = false);
+
354 #endif
+
355 #if DECODE_INAX
+
356  bool decodeInax(decode_results *results, uint16_t offset = kStartOffset,
+
357  const uint16_t nbits = kInaxBits,
+
358  const bool strict = true);
+
359 #endif // DECODE_INAX
+
360 #if DECODE_JVC
+
361  bool decodeJVC(decode_results *results, uint16_t offset = kStartOffset,
+
362  const uint16_t nbits = kJvcBits,
+
363  const bool strict = true);
+
364 #endif
+
365 #if DECODE_SAMSUNG
+
366  bool decodeSAMSUNG(decode_results *results, uint16_t offset = kStartOffset,
+
367  const uint16_t nbits = kSamsungBits,
+
368  const bool strict = true);
+
369 #endif
+
370 #if DECODE_SAMSUNG
+
371  bool decodeSamsung36(decode_results *results, uint16_t offset = kStartOffset,
+
372  const uint16_t nbits = kSamsung36Bits,
+
373  const bool strict = true);
+
374 #endif
+
375 #if DECODE_SAMSUNG_AC
+
376  bool decodeSamsungAC(decode_results *results, uint16_t offset = kStartOffset,
+
377  const uint16_t nbits = kSamsungAcBits,
+
378  const bool strict = true);
+
379 #endif
+
380 #if DECODE_WHYNTER
+
381  bool decodeWhynter(decode_results *results, uint16_t offset = kStartOffset,
+
382  const uint16_t nbits = kWhynterBits,
+
383  const bool strict = true);
+
384 #endif
+
385 #if DECODE_COOLIX
+
386  bool decodeCOOLIX(decode_results *results, uint16_t offset = kStartOffset,
+
387  const uint16_t nbits = kCoolixBits,
+
388  const bool strict = true);
+
389 #endif
+
390 #if DECODE_DENON
+
391  bool decodeDenon(decode_results *results, uint16_t offset = kStartOffset,
+
392  const uint16_t nbits = kDenonBits,
+
393  const bool strict = true);
+
394 #endif
+
395 #if DECODE_DISH
+
396  bool decodeDISH(decode_results *results, uint16_t offset = kStartOffset,
+
397  const uint16_t nbits = kDishBits,
+
398  const bool strict = true);
+
399 #endif
+
400 #if (DECODE_SHARP || DECODE_DENON)
+
401  bool decodeSharp(decode_results *results, uint16_t offset = kStartOffset,
+
402  const uint16_t nbits = kSharpBits,
+
403  const bool strict = true, const bool expansion = true);
+
404 #endif
+
405 #if DECODE_SHARP_AC
+
406  bool decodeSharpAc(decode_results *results, uint16_t offset = kStartOffset,
+
407  const uint16_t nbits = kSharpAcBits,
+
408  const bool strict = true);
+
409 #endif
+
410 #if DECODE_AIWA_RC_T501
+
411  bool decodeAiwaRCT501(decode_results *results, uint16_t offset = kStartOffset,
+
412  const uint16_t nbits = kAiwaRcT501Bits,
+
413  const bool strict = true);
+
414 #endif
+
415 #if DECODE_NIKAI
+
416  bool decodeNikai(decode_results *results, uint16_t offset = kStartOffset,
+
417  const uint16_t nbits = kNikaiBits,
+
418  const bool strict = true);
+
419 #endif
+
420 #if DECODE_MAGIQUEST
+
421  bool decodeMagiQuest(decode_results *results, uint16_t offset = kStartOffset,
+
422  const uint16_t nbits = kMagiquestBits,
+
423  const bool strict = true);
+
424 #endif
+
425 #if DECODE_KELVINATOR
+
426  bool decodeKelvinator(decode_results *results, uint16_t offset = kStartOffset,
+
427  const uint16_t nbits = kKelvinatorBits,
+
428  const bool strict = true);
+
429 #endif
+
430 #if DECODE_DAIKIN
+
431  bool decodeDaikin(decode_results *results, uint16_t offset = kStartOffset,
+
432  const uint16_t nbits = kDaikinBits,
+
433  const bool strict = true);
+
434 #endif
+
435 #if DECODE_DAIKIN64
+
436  bool decodeDaikin64(decode_results *results, uint16_t offset = kStartOffset,
+
437  const uint16_t nbits = kDaikin64Bits,
+
438  const bool strict = true);
+
439 #endif // DECODE_DAIKIN64
+
440 #if DECODE_DAIKIN128
+
441  bool decodeDaikin128(decode_results *results, uint16_t offset = kStartOffset,
+
442  const uint16_t nbits = kDaikin128Bits,
+
443  const bool strict = true);
+
444 #endif // DECODE_DAIKIN128
+
445 #if DECODE_DAIKIN152
+
446  bool decodeDaikin152(decode_results *results, uint16_t offset = kStartOffset,
+
447  const uint16_t nbits = kDaikin152Bits,
+
448  const bool strict = true);
+
449 #endif // DECODE_DAIKIN152
+
450 #if DECODE_DAIKIN160
+
451  bool decodeDaikin160(decode_results *results, uint16_t offset = kStartOffset,
+
452  const uint16_t nbits = kDaikin160Bits,
+
453  const bool strict = true);
+
454 #endif // DECODE_DAIKIN160
+
455 #if DECODE_DAIKIN176
+
456  bool decodeDaikin176(decode_results *results, uint16_t offset = kStartOffset,
+
457  const uint16_t nbits = kDaikin176Bits,
+
458  const bool strict = true);
+
459 #endif // DECODE_DAIKIN176
+
460 #if DECODE_DAIKIN2
+
461  bool decodeDaikin2(decode_results *results, uint16_t offset = kStartOffset,
+
462  const uint16_t nbits = kDaikin2Bits,
+
463  const bool strict = true);
+
464 #endif
+
465 #if DECODE_DAIKIN216
+
466  bool decodeDaikin216(decode_results *results, uint16_t offset = kStartOffset,
+
467  const uint16_t nbits = kDaikin216Bits,
+
468  const bool strict = true);
+
469 #endif
+
470 #if DECODE_TOSHIBA_AC
+
471  bool decodeToshibaAC(decode_results *results, uint16_t offset = kStartOffset,
+
472  const uint16_t nbytes = kToshibaACBits,
+
473  const bool strict = true);
+
474 #endif
+
475 #if DECODE_TROTEC
+
476  bool decodeTrotec(decode_results *results, uint16_t offset = kStartOffset,
+
477  const uint16_t nbits = kTrotecBits,
+
478  const bool strict = true);
+
479 #endif // DECODE_TROTEC
+
480 #if DECODE_MIDEA
+
481  bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset,
+
482  const uint16_t nbits = kMideaBits,
+
483  const bool strict = true);
+
484 #endif // DECODE_MIDEA
+
485 #if DECODE_MIDEA24
+
486  bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset,
+
487  const uint16_t nbits = kMidea24Bits,
+
488  const bool strict = true);
+
489 #endif // DECODE_MIDEA24
+
490 #if DECODE_FUJITSU_AC
+
491  bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset,
+
492  const uint16_t nbits = kFujitsuAcBits,
+
493  const bool strict = false);
+
494 #endif
+
495 #if DECODE_LASERTAG
+
496  bool decodeLasertag(decode_results *results, uint16_t offset = kStartOffset,
+
497  const uint16_t nbits = kLasertagBits,
+
498  const bool strict = true);
+
499 #endif
+
500 #if DECODE_CARRIER_AC
+
501  bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
+
502  const uint16_t nbits = kCarrierAcBits,
+
503  const bool strict = true);
+
504 #endif // DECODE_CARRIER_AC
+
505 #if DECODE_CARRIER_AC40
+
506  bool decodeCarrierAC40(decode_results *results,
+
507  uint16_t offset = kStartOffset,
+
508  const uint16_t nbits = kCarrierAc40Bits,
+
509  const bool strict = true);
+
510 #endif // DECODE_CARRIER_AC40
+
511 #if DECODE_CARRIER_AC64
+
512  bool decodeCarrierAC64(decode_results *results,
+
513  uint16_t offset = kStartOffset,
+
514  const uint16_t nbits = kCarrierAc64Bits,
+
515  const bool strict = true);
+
516 #endif // DECODE_CARRIER_AC64
+
517 #if DECODE_GOODWEATHER
+
518  bool decodeGoodweather(decode_results *results,
+
519  uint16_t offset = kStartOffset,
+
520  const uint16_t nbits = kGoodweatherBits,
+
521  const bool strict = true);
+
522 #endif // DECODE_GOODWEATHER
+
523 #if DECODE_GREE
+
524  bool decodeGree(decode_results *results, uint16_t offset = kStartOffset,
+
525  const uint16_t nbits = kGreeBits,
+
526  const bool strict = true);
+
527 #endif
+
528 #if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02)
+
529  bool decodeHaierAC(decode_results *results, uint16_t offset = kStartOffset,
+
530  const uint16_t nbits = kHaierACBits,
+
531  const bool strict = true);
+
532 #endif
+
533 #if DECODE_HAIER_AC_YRW02
+
534  bool decodeHaierACYRW02(decode_results *results,
+
535  uint16_t offset = kStartOffset,
+
536  const uint16_t nbits = kHaierACYRW02Bits,
+
537  const bool strict = true);
+
538 #endif
+
539 #if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC344)
+
540  bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset,
+
541  const uint16_t nbits = kHitachiAcBits,
+
542  const bool strict = true, const bool MSBfirst = true);
+
543 #endif
+
544 #if DECODE_HITACHI_AC1
+
545  bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset,
+
546  const uint16_t nbits = kHitachiAc1Bits,
+
547  const bool strict = true);
+
548 #endif
+
549 #if DECODE_HITACHI_AC3
+
550  bool decodeHitachiAc3(decode_results *results,
+
551  uint16_t offset = kStartOffset,
+
552  const uint16_t nbits = kHitachiAc3Bits,
+
553  const bool strict = true);
+
554 #endif // DECODE_HITACHI_AC3
+
555 #if DECODE_HITACHI_AC424
+
556  bool decodeHitachiAc424(decode_results *results,
+
557  uint16_t offset = kStartOffset,
+
558  const uint16_t nbits = kHitachiAc424Bits,
+
559  const bool strict = true);
+
560 #endif // DECODE_HITACHI_AC424
+
561 #if DECODE_GICABLE
+
562  bool decodeGICable(decode_results *results, uint16_t offset = kStartOffset,
+
563  const uint16_t nbits = kGicableBits,
+
564  const bool strict = true);
+
565 #endif
+
566 #if DECODE_WHIRLPOOL_AC
+
567  bool decodeWhirlpoolAC(decode_results *results,
+
568  uint16_t offset = kStartOffset,
+
569  const uint16_t nbits = kWhirlpoolAcBits,
+
570  const bool strict = true);
+
571 #endif
+
572 #if DECODE_LUTRON
+
573  bool decodeLutron(decode_results *results, uint16_t offset = kStartOffset,
+
574  const uint16_t nbits = kLutronBits,
+
575  const bool strict = true);
+
576 #endif
+
577 #if DECODE_ELECTRA_AC
+
578  bool decodeElectraAC(decode_results *results, uint16_t offset = kStartOffset,
+
579  const uint16_t nbits = kElectraAcBits,
+
580  const bool strict = true);
+
581 #endif
+
582 #if DECODE_PANASONIC_AC
+
583  bool decodePanasonicAC(decode_results *results,
+
584  uint16_t offset = kStartOffset,
+
585  const uint16_t nbits = kPanasonicAcBits,
+
586  const bool strict = true);
+
587 #endif
+
588 #if DECODE_PIONEER
+
589  bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
+
590  const uint16_t nbits = kPioneerBits,
+
591  const bool strict = true);
+
592 #endif
+
593 #if DECODE_MWM
+
594  bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
+
595  const uint16_t nbits = 24,
+
596  const bool strict = true);
+
597 #endif
+
598 #if DECODE_VESTEL_AC
+
599  bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
+
600  const uint16_t nbits = kVestelAcBits,
+
601  const bool strict = true);
+
602 #endif
+
603 #if DECODE_TECO
+
604  bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
+
605  const uint16_t nbits = kTecoBits,
+
606  const bool strict = false);
+
607 #endif
+
608 #if DECODE_LEGOPF
+
609  bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
+
610  const uint16_t nbits = kLegoPfBits,
+
611  const bool strict = true);
+
612 #endif
+
613 #if DECODE_NEOCLIMA
+
614  bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
+
615  const uint16_t nbits = kNeoclimaBits,
+
616  const bool strict = true);
+
617 #endif // DECODE_NEOCLIMA
+
618 #if DECODE_AMCOR
+
619  bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
+
620  const uint16_t nbits = kAmcorBits,
+
621  const bool strict = true);
+
622 #endif // DECODE_AMCOR
+
623 #if DECODE_EPSON
+
624  bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
+
625  const uint16_t nbits = kEpsonBits,
+
626  const bool strict = true);
+
627 #endif // DECODE_EPSON
+
628 #if DECODE_SYMPHONY
+
629  bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
+
630  const uint16_t nbits = kSymphonyBits,
+
631  const bool strict = true);
+
632 #endif // DECODE_SYMPHONY
+
633 #if DECODE_AIRWELL
+
634  bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
+
635  const uint16_t nbits = kAirwellBits,
+
636  const bool strict = true);
+
637 #endif // DECODE_AIRWELL
+
638 #if DECODE_DELONGHI_AC
+
639  bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
+
640  const uint16_t nbits = kDelonghiAcBits,
+
641  const bool strict = true);
+
642 #endif // DECODE_DELONGHI_AC
+
643 #if DECODE_DOSHISHA
+
644  bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
+
645  const uint16_t nbits = kDoshishaBits,
+
646  const bool strict = true);
+
647 #endif // DECODE_DOSHISHA
+
648 #if DECODE_MULTIBRACKETS
+
649  bool decodeMultibrackets(decode_results *results,
+
650  uint16_t offset = kStartOffset,
+
651  const uint16_t nbits = kMultibracketsBits,
+
652  const bool strict = true);
+
653 #endif // DECODE_MULTIBRACKETS
+
654 #if DECODE_CORONA_AC
+
655  bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
+
656  const uint16_t nbits = kCoronaAcBitsShort,
+
657  const bool strict = true);
+
658 #endif // DECODE_CORONA_AC
+
659 #if DECODE_ZEPEAL
+
660 bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
+
661  const uint16_t nbits = kZepealBits,
+
662  const bool strict = true);
+
663 #endif // DECODE_ZEPEAL
+
664 };
+
665 
+
666 #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
+
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:861
+
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:123
+
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:993
+
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 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:3109
+
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:879
+
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:1268
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:714
+
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:826
+
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:945
+
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:983
+
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1008
+
uint8_t overflow
Definition: IRrecv.h:78
+
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:188
+
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:673
+
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:813
+
irparams_t * irparams_save
Definition: IRrecv.h:151
+
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:931
+
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:745
+
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:313
+
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:548
+
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:1216
+
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:781
+
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:50
+
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:963
+
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
+
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:60
+
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:1362
+
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:197
+
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:824
+
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:459
+
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:834
+
uint64_t data
Definition: IRrecv.h:85
+
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:968
+
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:921
+
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:319
+
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:977
+
bool decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbytes=kToshibaACBits, const bool strict=true)
Decode the supplied Toshiba A/C message. Status: STABLE / Working.
Definition: ir_Toshiba.cpp:322
+
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:868
+
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1003
+
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:572
+
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:59
+
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:619
+
uint8_t recvpin
Definition: IRrecv.h:70
+
uint16_t timer
Definition: IRrecv.h:72
+
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:3591
+
bool success
Definition: IRrecv.h:84
+
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:1415
+
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:872
+
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:1000
+
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:990
+
const uint8_t kStopState
Definition: IRrecv.h:34
+
uint16_t rawlen
Definition: IRrecv.h:108
+
const uint16_t kMaxTimeoutMs
Definition: IRrecv.h:49
+
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:842
+
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:130
+
const uint16_t kHitachiAc1Bits
Definition: IRremoteESP8266.h:896
+
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:377
+
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:1789
+
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:3198
+
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
+
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:952
+
bool decodeSanyoLC7461(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, bool strict=true)
Decode the supplied SANYO LC7461 message. Status: BETA / Probably works.
Definition: ir_Sanyo.cpp:117
+
decode_type_t decode_type
Definition: IRrecv.h:94
+
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:956
+
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:332
+
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:415
+
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:847
+
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:295
+
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:489
+
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:881
+
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:228
+
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:853
+
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:879
+
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:2162
+
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:1168
+
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:324
+
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:992
+
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:964
+
const uint16_t kStateSizeMax
Definition: IRrecv.h:60
+
Results from a data match.
Definition: IRrecv.h:83
+
uint8_t rcvstate
Definition: IRrecv.h:71
+
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:213
+
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:1456
+
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:84
+
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)
Match & decode the typical data section of an IR message. The data value is stored in the least signi...
Definition: IRrecv.cpp:1076
+
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:943
+
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:868
+
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:828
+
const uint16_t kStartOffset
Definition: IRrecv.h:20
+
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:819
+
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:152
+
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:835
+
volatile uint16_t * rawbuf
Definition: IRrecv.h:107
+
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:156
+
uint16_t used
Definition: IRrecv.h:86
+
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:953
+
uint32_t address
Definition: IRrecv.h:101
+
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:926
+
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:908
+
bool decodeSymphony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)
Decode the supplied Symphony packet/message. Status: STABLE / Should be working.
Definition: ir_Symphony.cpp:60
+
const uint16_t kSamsungAcBits
Definition: IRremoteESP8266.h:970
+
const uint16_t kUnknownThreshold
Definition: IRrecv.h:28
+
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:922
+
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:911
+
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:365
+
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:149
+
const uint16_t kNECBits
Definition: IRremoteESP8266.h:948
+
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:863
+
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:887
+
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:939
+
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1010
+
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:924
+
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:2553
+
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:950
+
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1006
+
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:723
+
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 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:254
+
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:830
+
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:959
+
uint16_t bits
Definition: IRrecv.h:106
+
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:884
+
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:909
+
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:913
+
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:850
+
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:815
+
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:882
+
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:997
+
bool decodeEpson(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)
Decode the supplied Epson message. Status: Beta / Probably works.
Definition: ir_Epson.cpp:45
+
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1000
+
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:837
+
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:981
+
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:893
+
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:900
+
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:409
+
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:96
+
uint8_t getTolerance(void)
Get the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:338
+
const uint16_t kDishBits
Definition: IRremoteESP8266.h:866
+
uint16_t compare(const uint16_t oldval, const uint16_t newval)
Compare two tick values.
Definition: IRrecv.cpp:1018
+
uint32_t command
Definition: IRrecv.h:102
+
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:877
+
uint64_t value
Definition: IRrecv.h:100
+
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:822
+
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:897
+
bool decodeSamsung36(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)
Decode the supplied Samsung36 message. Status: Alpha / Experimental.
Definition: ir_Samsung.cpp:186
+
const uint16_t kFooter
Definition: IRrecv.h:19
+
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:947
+
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:920
+
uint8_t timeout
Definition: IRrecv.h:79
+
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:89
+
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:1556
+
void resume(void)
Resume collection of received IR data.
Definition: IRrecv.cpp:280
+
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:890
+
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:906
+
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:642
+
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:1039
+
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:154
+
bool decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)
Decode the supplied Coolix A/C message. Status: STABLE / Known Working.
Definition: ir_Coolix.cpp:650
+
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:915
+
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:981
+
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:429
+
uint8_t _tolerance
Definition: IRrecv.h:152
+
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:1449
+
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:345
+
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:112
+
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:966
+
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1009
+
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:907
+
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:1121
+
uint16_t _unknown_threshold
Definition: IRrecv.h:157
+
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:856
+
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:506
+
void disableIRIn(void)
Stop collection of any received IR data. Disable any timers and interrupts.
Definition: IRrecv.cpp:264
+
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:981
+
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:895
+
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:967
+
uint8_t _timer_num
Definition: IRrecv.h:154
+
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:844
+
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:859
+
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:934
+
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)
Match & decode the typical data section of an IR message. The bytes are stored at result_ptr....
Definition: IRrecv.cpp:1118
+
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:937
+
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:869
+
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:1039
+
const uint8_t kSpaceState
Definition: IRrecv.h:33
+
const uint16_t kLgBits
Definition: IRremoteESP8266.h:917
+
uint8_t _validTolerance(const uint8_t percentage)
Convert the tolerance percentage into something valid.
Definition: IRrecv.cpp:873
+
const uint16_t kHeader
Definition: IRrecv.h:18
+
const uint32_t kFnvBasis32
Definition: IRrecv.h:53
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h.html new file mode 100644 index 000000000..a8a3d1f05 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h.html @@ -0,0 +1,3515 @@ + + + + + + + +IRremoteESP8266: src/IRremoteESP8266.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRremoteESP8266.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Typedefs

typedef std::string String
 
+ + + + +

+Enumerations

enum  decode_type_t {
+  UNKNOWN = -1, +UNUSED = 0, +RC5, +RC6, +
+  NEC, +SONY, +PANASONIC, +JVC, +
+  SAMSUNG, +WHYNTER, +AIWA_RC_T501, +LG, +
+  SANYO, +MITSUBISHI, +DISH, +SHARP, +
+  COOLIX, +DAIKIN, +DENON, +KELVINATOR, +
+  SHERWOOD, +MITSUBISHI_AC, +RCMM, +SANYO_LC7461, +
+  RC5X, +GREE, +PRONTO, +NEC_LIKE, +
+  ARGO, +TROTEC, +NIKAI, +RAW, +
+  GLOBALCACHE, +TOSHIBA_AC, +FUJITSU_AC, +MIDEA, +
+  MAGIQUEST, +LASERTAG, +CARRIER_AC, +HAIER_AC, +
+  MITSUBISHI2, +HITACHI_AC, +HITACHI_AC1, +HITACHI_AC2, +
+  GICABLE, +HAIER_AC_YRW02, +WHIRLPOOL_AC, +SAMSUNG_AC, +
+  LUTRON, +ELECTRA_AC, +PANASONIC_AC, +PIONEER, +
+  LG2, +MWM, +DAIKIN2, +VESTEL_AC, +
+  TECO, +SAMSUNG36, +TCL112AC, +LEGOPF, +
+  MITSUBISHI_HEAVY_88, +MITSUBISHI_HEAVY_152, +DAIKIN216, +SHARP_AC, +
+  GOODWEATHER, +INAX, +DAIKIN160, +NEOCLIMA, +
+  DAIKIN176, +DAIKIN128, +AMCOR, +DAIKIN152, +
+  MITSUBISHI136, +MITSUBISHI112, +HITACHI_AC424, +SONY_38K, +
+  EPSON, +SYMPHONY, +HITACHI_AC3, +DAIKIN64, +
+  AIRWELL, +DELONGHI_AC, +DOSHISHA, +MULTIBRACKETS, +
+  CARRIER_AC40, +CARRIER_AC64, +HITACHI_AC344, +CORONA_AC, +
+  MIDEA24, +ZEPEAL, +kLastDecodeType = ZEPEAL +
+ }
 Enumerator for defining and numbering of supported IR protocol. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kNoRepeat = 0
 
const uint16_t kSingleRepeat = 1
 
const uint16_t kAirwellBits = 34
 
const uint16_t kAirwellMinRepeats = 2
 
const uint16_t kAiwaRcT501Bits = 15
 
const uint16_t kAiwaRcT501MinRepeats = kSingleRepeat
 
const uint16_t kAlokaBits = 32
 
const uint16_t kAmcorStateLength = 8
 
const uint16_t kAmcorBits = kAmcorStateLength * 8
 
const uint16_t kAmcorDefaultRepeat = kSingleRepeat
 
const uint16_t kArgoStateLength = 12
 
const uint16_t kArgoBits = kArgoStateLength * 8
 
const uint16_t kArgoDefaultRepeat = kNoRepeat
 
const uint16_t kCoolixBits = 24
 
const uint16_t kCoolixDefaultRepeat = kSingleRepeat
 
const uint16_t kCarrierAcBits = 32
 
const uint16_t kCarrierAcMinRepeat = kNoRepeat
 
const uint16_t kCarrierAc40Bits = 40
 
const uint16_t kCarrierAc40MinRepeat = 2
 
const uint16_t kCarrierAc64Bits = 64
 
const uint16_t kCarrierAc64MinRepeat = kNoRepeat
 
const uint16_t kCoronaAcStateLengthShort = 7
 
const uint16_t kCoronaAcStateLength = kCoronaAcStateLengthShort * 3
 
const uint16_t kCoronaAcBitsShort = kCoronaAcStateLengthShort * 8
 
const uint16_t kCoronaAcBits = kCoronaAcStateLength * 8
 
const uint16_t kDaikinStateLength = 35
 
const uint16_t kDaikinBits = kDaikinStateLength * 8
 
const uint16_t kDaikinStateLengthShort = kDaikinStateLength - 8
 
const uint16_t kDaikinBitsShort = kDaikinStateLengthShort * 8
 
const uint16_t kDaikinDefaultRepeat = kNoRepeat
 
const uint16_t kDaikin2StateLength = 39
 
const uint16_t kDaikin2Bits = kDaikin2StateLength * 8
 
const uint16_t kDaikin2DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin64Bits = 64
 
const uint16_t kDaikin64DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin160StateLength = 20
 
const uint16_t kDaikin160Bits = kDaikin160StateLength * 8
 
const uint16_t kDaikin160DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin128StateLength = 16
 
const uint16_t kDaikin128Bits = kDaikin128StateLength * 8
 
const uint16_t kDaikin128DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin152StateLength = 19
 
const uint16_t kDaikin152Bits = kDaikin152StateLength * 8
 
const uint16_t kDaikin152DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin176StateLength = 22
 
const uint16_t kDaikin176Bits = kDaikin176StateLength * 8
 
const uint16_t kDaikin176DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin216StateLength = 27
 
const uint16_t kDaikin216Bits = kDaikin216StateLength * 8
 
const uint16_t kDaikin216DefaultRepeat = kNoRepeat
 
const uint16_t kDelonghiAcBits = 64
 
const uint16_t kDelonghiAcDefaultRepeat = kNoRepeat
 
const uint16_t kDenonBits = 15
 
const uint16_t kDenon48Bits = 48
 
const uint16_t kDenonLegacyBits = 14
 
const uint16_t kDishBits = 16
 
const uint16_t kDishMinRepeat = 3
 
const uint16_t kDoshishaBits = 40
 
const uint16_t kEpsonBits = 32
 
const uint16_t kEpsonMinRepeat = 2
 
const uint16_t kElectraAcStateLength = 13
 
const uint16_t kElectraAcBits = kElectraAcStateLength * 8
 
const uint16_t kElectraAcMinRepeat = kNoRepeat
 
const uint16_t kFujitsuAcMinRepeat = kNoRepeat
 
const uint16_t kFujitsuAcStateLength = 16
 
const uint16_t kFujitsuAcStateLengthShort = 7
 
const uint16_t kFujitsuAcBits = kFujitsuAcStateLength * 8
 
const uint16_t kFujitsuAcMinBits = (kFujitsuAcStateLengthShort - 1) * 8
 
const uint16_t kGicableBits = 16
 
const uint16_t kGicableMinRepeat = kSingleRepeat
 
const uint16_t kGoodweatherBits = 48
 
const uint16_t kGoodweatherMinRepeat = kNoRepeat
 
const uint16_t kGreeStateLength = 8
 
const uint16_t kGreeBits = kGreeStateLength * 8
 
const uint16_t kGreeDefaultRepeat = kNoRepeat
 
const uint16_t kHaierACStateLength = 9
 
const uint16_t kHaierACBits = kHaierACStateLength * 8
 
const uint16_t kHaierAcDefaultRepeat = kNoRepeat
 
const uint16_t kHaierACYRW02StateLength = 14
 
const uint16_t kHaierACYRW02Bits = kHaierACYRW02StateLength * 8
 
const uint16_t kHaierAcYrw02DefaultRepeat = kNoRepeat
 
const uint16_t kHitachiAcStateLength = 28
 
const uint16_t kHitachiAcBits = kHitachiAcStateLength * 8
 
const uint16_t kHitachiAcDefaultRepeat = kNoRepeat
 
const uint16_t kHitachiAc1StateLength = 13
 
const uint16_t kHitachiAc1Bits = kHitachiAc1StateLength * 8
 
const uint16_t kHitachiAc2StateLength = 53
 
const uint16_t kHitachiAc2Bits = kHitachiAc2StateLength * 8
 
const uint16_t kHitachiAc3StateLength = 27
 
const uint16_t kHitachiAc3Bits = kHitachiAc3StateLength * 8
 
const uint16_t kHitachiAc3MinStateLength = 15
 
const uint16_t kHitachiAc3MinBits = kHitachiAc3MinStateLength * 8
 
const uint16_t kHitachiAc344StateLength = 43
 
const uint16_t kHitachiAc344Bits = kHitachiAc344StateLength * 8
 
const uint16_t kHitachiAc424StateLength = 53
 
const uint16_t kHitachiAc424Bits = kHitachiAc424StateLength * 8
 
const uint16_t kInaxBits = 24
 
const uint16_t kInaxMinRepeat = kSingleRepeat
 
const uint16_t kJvcBits = 16
 
const uint16_t kKelvinatorStateLength = 16
 
const uint16_t kKelvinatorBits = kKelvinatorStateLength * 8
 
const uint16_t kKelvinatorDefaultRepeat = kNoRepeat
 
const uint16_t kLasertagBits = 13
 
const uint16_t kLasertagMinRepeat = kNoRepeat
 
const uint16_t kLegoPfBits = 16
 
const uint16_t kLegoPfMinRepeat = kNoRepeat
 
const uint16_t kLgBits = 28
 
const uint16_t kLg32Bits = 32
 
const uint16_t kLgDefaultRepeat = kNoRepeat
 
const uint16_t kLutronBits = 35
 
const uint16_t kMagiquestBits = 56
 
const uint16_t kMideaBits = 48
 
const uint16_t kMideaMinRepeat = kNoRepeat
 
const uint16_t kMidea24Bits = 24
 
const uint16_t kMidea24MinRepeat = kSingleRepeat
 
const uint16_t kMitsubishiBits = 16
 
const uint16_t kMitsubishiMinRepeat = kSingleRepeat
 
const uint16_t kMitsubishiACStateLength = 18
 
const uint16_t kMitsubishiACBits = kMitsubishiACStateLength * 8
 
const uint16_t kMitsubishiACMinRepeat = kSingleRepeat
 
const uint16_t kMitsubishi136StateLength = 17
 
const uint16_t kMitsubishi136Bits = kMitsubishi136StateLength * 8
 
const uint16_t kMitsubishi136MinRepeat = kNoRepeat
 
const uint16_t kMitsubishi112StateLength = 14
 
const uint16_t kMitsubishi112Bits = kMitsubishi112StateLength * 8
 
const uint16_t kMitsubishi112MinRepeat = kNoRepeat
 
const uint16_t kMitsubishiHeavy88StateLength = 11
 
const uint16_t kMitsubishiHeavy88Bits = kMitsubishiHeavy88StateLength * 8
 
const uint16_t kMitsubishiHeavy88MinRepeat = kNoRepeat
 
const uint16_t kMitsubishiHeavy152StateLength = 19
 
const uint16_t kMitsubishiHeavy152Bits = kMitsubishiHeavy152StateLength * 8
 
const uint16_t kMitsubishiHeavy152MinRepeat = kNoRepeat
 
const uint16_t kMultibracketsBits = 8
 
const uint16_t kMultibracketsDefaultRepeat = kSingleRepeat
 
const uint16_t kNikaiBits = 24
 
const uint16_t kNECBits = 32
 
const uint16_t kNeoclimaStateLength = 12
 
const uint16_t kNeoclimaBits = kNeoclimaStateLength * 8
 
const uint16_t kNeoclimaMinRepeat = kNoRepeat
 
const uint16_t kPanasonicBits = 48
 
const uint32_t kPanasonicManufacturer = 0x4004
 
const uint16_t kPanasonicAcStateLength = 27
 
const uint16_t kPanasonicAcStateShortLength = 16
 
const uint16_t kPanasonicAcBits = kPanasonicAcStateLength * 8
 
const uint16_t kPanasonicAcShortBits = kPanasonicAcStateShortLength * 8
 
const uint16_t kPanasonicAcDefaultRepeat = kNoRepeat
 
const uint16_t kPioneerBits = 64
 
const uint16_t kProntoMinLength = 6
 
const uint16_t kRC5RawBits = 14
 
const uint16_t kRC5Bits = kRC5RawBits - 2
 
const uint16_t kRC5XBits = kRC5RawBits - 1
 
const uint16_t kRC6Mode0Bits = 20
 
const uint16_t kRC6_36Bits = 36
 
const uint16_t kRCMMBits = 24
 
const uint16_t kSamsungBits = 32
 
const uint16_t kSamsung36Bits = 36
 
const uint16_t kSamsungAcStateLength = 14
 
const uint16_t kSamsungAcBits = kSamsungAcStateLength * 8
 
const uint16_t kSamsungAcExtendedStateLength = 21
 
const uint16_t kSamsungAcExtendedBits = kSamsungAcExtendedStateLength * 8
 
const uint16_t kSamsungAcDefaultRepeat = kNoRepeat
 
const uint16_t kSanyoSA8650BBits = 12
 
const uint16_t kSanyoLC7461AddressBits = 13
 
const uint16_t kSanyoLC7461CommandBits = 8
 
const uint16_t kSanyoLC7461Bits
 
const uint8_t kSharpAddressBits = 5
 
const uint8_t kSharpCommandBits = 8
 
const uint16_t kSharpBits = kSharpAddressBits + kSharpCommandBits + 2
 
const uint16_t kSharpAcStateLength = 13
 
const uint16_t kSharpAcBits = kSharpAcStateLength * 8
 
const uint16_t kSharpAcDefaultRepeat = kNoRepeat
 
const uint8_t kSherwoodBits = kNECBits
 
const uint16_t kSherwoodMinRepeat = kSingleRepeat
 
const uint16_t kSony12Bits = 12
 
const uint16_t kSony15Bits = 15
 
const uint16_t kSony20Bits = 20
 
const uint16_t kSonyMinBits = 12
 
const uint16_t kSonyMinRepeat = 2
 
const uint16_t kSymphonyBits = 12
 
const uint16_t kSymphonyDefaultRepeat = 3
 
const uint16_t kTcl112AcStateLength = 14
 
const uint16_t kTcl112AcBits = kTcl112AcStateLength * 8
 
const uint16_t kTcl112AcDefaultRepeat = kNoRepeat
 
const uint16_t kTecoBits = 35
 
const uint16_t kTecoDefaultRepeat = kNoRepeat
 
const uint16_t kToshibaACStateLength = 9
 
const uint16_t kToshibaACBits = kToshibaACStateLength * 8
 
const uint16_t kToshibaACMinRepeat = kSingleRepeat
 
const uint16_t kTrotecStateLength = 9
 
const uint16_t kTrotecBits = kTrotecStateLength * 8
 
const uint16_t kTrotecDefaultRepeat = kNoRepeat
 
const uint16_t kWhirlpoolAcStateLength = 21
 
const uint16_t kWhirlpoolAcBits = kWhirlpoolAcStateLength * 8
 
const uint16_t kWhirlpoolAcDefaultRepeat = kNoRepeat
 
const uint16_t kWhynterBits = 32
 
const uint8_t kVestelAcBits = 56
 
const uint16_t kZepealBits = 16
 
const uint16_t kZepealMinRepeat = 4
 
+

Typedef Documentation

+ +

◆ String

+ +
+
+ + + + +
typedef std::string String
+
+ +
+
+

Enumeration Type Documentation

+ +

◆ decode_type_t

+ +
+
+ + + + +
enum decode_type_t
+
+ +

Enumerator for defining and numbering of supported IR protocol.

+
Note
Always add to the end of the list and should never remove entries or change order. Projects may save the type number for later usage so numbering should always stay the same.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
UNKNOWN 
UNUSED 
RC5 
RC6 
NEC 
SONY 
PANASONIC 
JVC 
SAMSUNG 
WHYNTER 
AIWA_RC_T501 
LG 
SANYO 
MITSUBISHI 
DISH 
SHARP 
COOLIX 
DAIKIN 
DENON 
KELVINATOR 
SHERWOOD 
MITSUBISHI_AC 
RCMM 
SANYO_LC7461 
RC5X 
GREE 
PRONTO 
NEC_LIKE 
ARGO 
TROTEC 
NIKAI 
RAW 
GLOBALCACHE 
TOSHIBA_AC 
FUJITSU_AC 
MIDEA 
MAGIQUEST 
LASERTAG 
CARRIER_AC 
HAIER_AC 
MITSUBISHI2 
HITACHI_AC 
HITACHI_AC1 
HITACHI_AC2 
GICABLE 
HAIER_AC_YRW02 
WHIRLPOOL_AC 
SAMSUNG_AC 
LUTRON 
ELECTRA_AC 
PANASONIC_AC 
PIONEER 
LG2 
MWM 
DAIKIN2 
VESTEL_AC 
TECO 
SAMSUNG36 
TCL112AC 
LEGOPF 
MITSUBISHI_HEAVY_88 
MITSUBISHI_HEAVY_152 
DAIKIN216 
SHARP_AC 
GOODWEATHER 
INAX 
DAIKIN160 
NEOCLIMA 
DAIKIN176 
DAIKIN128 
AMCOR 
DAIKIN152 
MITSUBISHI136 
MITSUBISHI112 
HITACHI_AC424 
SONY_38K 
EPSON 
SYMPHONY 
HITACHI_AC3 
DAIKIN64 
AIRWELL 
DELONGHI_AC 
DOSHISHA 
MULTIBRACKETS 
CARRIER_AC40 
CARRIER_AC64 
HITACHI_AC344 
CORONA_AC 
MIDEA24 
ZEPEAL 
kLastDecodeType 
+ +
+
+

Variable Documentation

+ +

◆ kAirwellBits

+ +
+
+ + + + +
const uint16_t kAirwellBits = 34
+
+ +
+
+ +

◆ kAirwellMinRepeats

+ +
+
+ + + + +
const uint16_t kAirwellMinRepeats = 2
+
+ +
+
+ +

◆ kAiwaRcT501Bits

+ +
+
+ + + + +
const uint16_t kAiwaRcT501Bits = 15
+
+ +
+
+ +

◆ kAiwaRcT501MinRepeats

+ +
+
+ + + + +
const uint16_t kAiwaRcT501MinRepeats = kSingleRepeat
+
+ +
+
+ +

◆ kAlokaBits

+ +
+
+ + + + +
const uint16_t kAlokaBits = 32
+
+ +
+
+ +

◆ kAmcorBits

+ +
+
+ + + + +
const uint16_t kAmcorBits = kAmcorStateLength * 8
+
+ +
+
+ +

◆ kAmcorDefaultRepeat

+ +
+
+ + + + +
const uint16_t kAmcorDefaultRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kAmcorStateLength

+ +
+
+ + + + +
const uint16_t kAmcorStateLength = 8
+
+ +
+
+ +

◆ kArgoBits

+ +
+
+ + + + +
const uint16_t kArgoBits = kArgoStateLength * 8
+
+ +
+
+ +

◆ kArgoDefaultRepeat

+ +
+
+ + + + +
const uint16_t kArgoDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kArgoStateLength

+ +
+
+ + + + +
const uint16_t kArgoStateLength = 12
+
+ +
+
+ +

◆ kCarrierAc40Bits

+ +
+
+ + + + +
const uint16_t kCarrierAc40Bits = 40
+
+ +
+
+ +

◆ kCarrierAc40MinRepeat

+ +
+
+ + + + +
const uint16_t kCarrierAc40MinRepeat = 2
+
+ +
+
+ +

◆ kCarrierAc64Bits

+ +
+
+ + + + +
const uint16_t kCarrierAc64Bits = 64
+
+ +
+
+ +

◆ kCarrierAc64MinRepeat

+ +
+
+ + + + +
const uint16_t kCarrierAc64MinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kCarrierAcBits

+ +
+
+ + + + +
const uint16_t kCarrierAcBits = 32
+
+ +
+
+ +

◆ kCarrierAcMinRepeat

+ +
+
+ + + + +
const uint16_t kCarrierAcMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kCoolixBits

+ +
+
+ + + + +
const uint16_t kCoolixBits = 24
+
+ +
+
+ +

◆ kCoolixDefaultRepeat

+ +
+
+ + + + +
const uint16_t kCoolixDefaultRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kCoronaAcBits

+ +
+
+ + + + +
const uint16_t kCoronaAcBits = kCoronaAcStateLength * 8
+
+ +
+
+ +

◆ kCoronaAcBitsShort

+ +
+
+ + + + +
const uint16_t kCoronaAcBitsShort = kCoronaAcStateLengthShort * 8
+
+ +
+
+ +

◆ kCoronaAcStateLength

+ +
+
+ + + + +
const uint16_t kCoronaAcStateLength = kCoronaAcStateLengthShort * 3
+
+ +
+
+ +

◆ kCoronaAcStateLengthShort

+ +
+
+ + + + +
const uint16_t kCoronaAcStateLengthShort = 7
+
+ +
+
+ +

◆ kDaikin128Bits

+ +
+
+ + + + +
const uint16_t kDaikin128Bits = kDaikin128StateLength * 8
+
+ +
+
+ +

◆ kDaikin128DefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikin128DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikin128StateLength

+ +
+
+ + + + +
const uint16_t kDaikin128StateLength = 16
+
+ +
+
+ +

◆ kDaikin152Bits

+ +
+
+ + + + +
const uint16_t kDaikin152Bits = kDaikin152StateLength * 8
+
+ +
+
+ +

◆ kDaikin152DefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikin152DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikin152StateLength

+ +
+
+ + + + +
const uint16_t kDaikin152StateLength = 19
+
+ +
+
+ +

◆ kDaikin160Bits

+ +
+
+ + + + +
const uint16_t kDaikin160Bits = kDaikin160StateLength * 8
+
+ +
+
+ +

◆ kDaikin160DefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikin160DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikin160StateLength

+ +
+
+ + + + +
const uint16_t kDaikin160StateLength = 20
+
+ +
+
+ +

◆ kDaikin176Bits

+ +
+
+ + + + +
const uint16_t kDaikin176Bits = kDaikin176StateLength * 8
+
+ +
+
+ +

◆ kDaikin176DefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikin176DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikin176StateLength

+ +
+
+ + + + +
const uint16_t kDaikin176StateLength = 22
+
+ +
+
+ +

◆ kDaikin216Bits

+ +
+
+ + + + +
const uint16_t kDaikin216Bits = kDaikin216StateLength * 8
+
+ +
+
+ +

◆ kDaikin216DefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikin216DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikin216StateLength

+ +
+
+ + + + +
const uint16_t kDaikin216StateLength = 27
+
+ +
+
+ +

◆ kDaikin2Bits

+ +
+
+ + + + +
const uint16_t kDaikin2Bits = kDaikin2StateLength * 8
+
+ +
+
+ +

◆ kDaikin2DefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikin2DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikin2StateLength

+ +
+
+ + + + +
const uint16_t kDaikin2StateLength = 39
+
+ +
+
+ +

◆ kDaikin64Bits

+ +
+
+ + + + +
const uint16_t kDaikin64Bits = 64
+
+ +
+
+ +

◆ kDaikin64DefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikin64DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikinBits

+ +
+
+ + + + +
const uint16_t kDaikinBits = kDaikinStateLength * 8
+
+ +
+
+ +

◆ kDaikinBitsShort

+ +
+
+ + + + +
const uint16_t kDaikinBitsShort = kDaikinStateLengthShort * 8
+
+ +
+
+ +

◆ kDaikinDefaultRepeat

+ +
+
+ + + + +
const uint16_t kDaikinDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDaikinStateLength

+ +
+
+ + + + +
const uint16_t kDaikinStateLength = 35
+
+ +
+
+ +

◆ kDaikinStateLengthShort

+ +
+
+ + + + +
const uint16_t kDaikinStateLengthShort = kDaikinStateLength - 8
+
+ +
+
+ +

◆ kDelonghiAcBits

+ +
+
+ + + + +
const uint16_t kDelonghiAcBits = 64
+
+ +
+
+ +

◆ kDelonghiAcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kDelonghiAcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kDenon48Bits

+ +
+
+ + + + +
const uint16_t kDenon48Bits = 48
+
+ +
+
+ +

◆ kDenonBits

+ +
+
+ + + + +
const uint16_t kDenonBits = 15
+
+ +
+
+ +

◆ kDenonLegacyBits

+ +
+
+ + + + +
const uint16_t kDenonLegacyBits = 14
+
+ +
+
+ +

◆ kDishBits

+ +
+
+ + + + +
const uint16_t kDishBits = 16
+
+ +
+
+ +

◆ kDishMinRepeat

+ +
+
+ + + + +
const uint16_t kDishMinRepeat = 3
+
+ +
+
+ +

◆ kDoshishaBits

+ +
+
+ + + + +
const uint16_t kDoshishaBits = 40
+
+ +
+
+ +

◆ kElectraAcBits

+ +
+
+ + + + +
const uint16_t kElectraAcBits = kElectraAcStateLength * 8
+
+ +
+
+ +

◆ kElectraAcMinRepeat

+ +
+
+ + + + +
const uint16_t kElectraAcMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kElectraAcStateLength

+ +
+
+ + + + +
const uint16_t kElectraAcStateLength = 13
+
+ +
+
+ +

◆ kEpsonBits

+ +
+
+ + + + +
const uint16_t kEpsonBits = 32
+
+ +
+
+ +

◆ kEpsonMinRepeat

+ +
+
+ + + + +
const uint16_t kEpsonMinRepeat = 2
+
+ +
+
+ +

◆ kFujitsuAcBits

+ +
+
+ + + + +
const uint16_t kFujitsuAcBits = kFujitsuAcStateLength * 8
+
+ +
+
+ +

◆ kFujitsuAcMinBits

+ +
+
+ + + + +
const uint16_t kFujitsuAcMinBits = (kFujitsuAcStateLengthShort - 1) * 8
+
+ +
+
+ +

◆ kFujitsuAcMinRepeat

+ +
+
+ + + + +
const uint16_t kFujitsuAcMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kFujitsuAcStateLength

+ +
+
+ + + + +
const uint16_t kFujitsuAcStateLength = 16
+
+ +
+
+ +

◆ kFujitsuAcStateLengthShort

+ +
+
+ + + + +
const uint16_t kFujitsuAcStateLengthShort = 7
+
+ +
+
+ +

◆ kGicableBits

+ +
+
+ + + + +
const uint16_t kGicableBits = 16
+
+ +
+
+ +

◆ kGicableMinRepeat

+ +
+
+ + + + +
const uint16_t kGicableMinRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kGoodweatherBits

+ +
+
+ + + + +
const uint16_t kGoodweatherBits = 48
+
+ +
+
+ +

◆ kGoodweatherMinRepeat

+ +
+
+ + + + +
const uint16_t kGoodweatherMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kGreeBits

+ +
+
+ + + + +
const uint16_t kGreeBits = kGreeStateLength * 8
+
+ +
+
+ +

◆ kGreeDefaultRepeat

+ +
+
+ + + + +
const uint16_t kGreeDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kGreeStateLength

+ +
+
+ + + + +
const uint16_t kGreeStateLength = 8
+
+ +
+
+ +

◆ kHaierACBits

+ +
+
+ + + + +
const uint16_t kHaierACBits = kHaierACStateLength * 8
+
+ +
+
+ +

◆ kHaierAcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kHaierAcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kHaierACStateLength

+ +
+
+ + + + +
const uint16_t kHaierACStateLength = 9
+
+ +
+
+ +

◆ kHaierACYRW02Bits

+ +
+
+ + + + +
const uint16_t kHaierACYRW02Bits = kHaierACYRW02StateLength * 8
+
+ +
+
+ +

◆ kHaierAcYrw02DefaultRepeat

+ +
+
+ + + + +
const uint16_t kHaierAcYrw02DefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kHaierACYRW02StateLength

+ +
+
+ + + + +
const uint16_t kHaierACYRW02StateLength = 14
+
+ +
+
+ +

◆ kHitachiAc1Bits

+ +
+
+ + + + +
const uint16_t kHitachiAc1Bits = kHitachiAc1StateLength * 8
+
+ +
+
+ +

◆ kHitachiAc1StateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc1StateLength = 13
+
+ +
+
+ +

◆ kHitachiAc2Bits

+ +
+
+ + + + +
const uint16_t kHitachiAc2Bits = kHitachiAc2StateLength * 8
+
+ +
+
+ +

◆ kHitachiAc2StateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc2StateLength = 53
+
+ +
+
+ +

◆ kHitachiAc344Bits

+ +
+
+ + + + +
const uint16_t kHitachiAc344Bits = kHitachiAc344StateLength * 8
+
+ +
+
+ +

◆ kHitachiAc344StateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc344StateLength = 43
+
+ +
+
+ +

◆ kHitachiAc3Bits

+ +
+
+ + + + +
const uint16_t kHitachiAc3Bits = kHitachiAc3StateLength * 8
+
+ +
+
+ +

◆ kHitachiAc3MinBits

+ +
+
+ + + + +
const uint16_t kHitachiAc3MinBits = kHitachiAc3MinStateLength * 8
+
+ +
+
+ +

◆ kHitachiAc3MinStateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc3MinStateLength = 15
+
+ +
+
+ +

◆ kHitachiAc3StateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc3StateLength = 27
+
+ +
+
+ +

◆ kHitachiAc424Bits

+ +
+
+ + + + +
const uint16_t kHitachiAc424Bits = kHitachiAc424StateLength * 8
+
+ +
+
+ +

◆ kHitachiAc424StateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc424StateLength = 53
+
+ +
+
+ +

◆ kHitachiAcBits

+ +
+
+ + + + +
const uint16_t kHitachiAcBits = kHitachiAcStateLength * 8
+
+ +
+
+ +

◆ kHitachiAcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kHitachiAcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kHitachiAcStateLength

+ +
+
+ + + + +
const uint16_t kHitachiAcStateLength = 28
+
+ +
+
+ +

◆ kInaxBits

+ +
+
+ + + + +
const uint16_t kInaxBits = 24
+
+ +
+
+ +

◆ kInaxMinRepeat

+ +
+
+ + + + +
const uint16_t kInaxMinRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kJvcBits

+ +
+
+ + + + +
const uint16_t kJvcBits = 16
+
+ +
+
+ +

◆ kKelvinatorBits

+ +
+
+ + + + +
const uint16_t kKelvinatorBits = kKelvinatorStateLength * 8
+
+ +
+
+ +

◆ kKelvinatorDefaultRepeat

+ +
+
+ + + + +
const uint16_t kKelvinatorDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kKelvinatorStateLength

+ +
+
+ + + + +
const uint16_t kKelvinatorStateLength = 16
+
+ +
+
+ +

◆ kLasertagBits

+ +
+
+ + + + +
const uint16_t kLasertagBits = 13
+
+ +
+
+ +

◆ kLasertagMinRepeat

+ +
+
+ + + + +
const uint16_t kLasertagMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kLegoPfBits

+ +
+
+ + + + +
const uint16_t kLegoPfBits = 16
+
+ +
+
+ +

◆ kLegoPfMinRepeat

+ +
+
+ + + + +
const uint16_t kLegoPfMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kLg32Bits

+ +
+
+ + + + +
const uint16_t kLg32Bits = 32
+
+ +
+
+ +

◆ kLgBits

+ +
+
+ + + + +
const uint16_t kLgBits = 28
+
+ +
+
+ +

◆ kLgDefaultRepeat

+ +
+
+ + + + +
const uint16_t kLgDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kLutronBits

+ +
+
+ + + + +
const uint16_t kLutronBits = 35
+
+ +
+
+ +

◆ kMagiquestBits

+ +
+
+ + + + +
const uint16_t kMagiquestBits = 56
+
+ +
+
+ +

◆ kMidea24Bits

+ +
+
+ + + + +
const uint16_t kMidea24Bits = 24
+
+ +
+
+ +

◆ kMidea24MinRepeat

+ +
+
+ + + + +
const uint16_t kMidea24MinRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kMideaBits

+ +
+
+ + + + +
const uint16_t kMideaBits = 48
+
+ +
+
+ +

◆ kMideaMinRepeat

+ +
+
+ + + + +
const uint16_t kMideaMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kMitsubishi112Bits

+ +
+
+ + + + +
const uint16_t kMitsubishi112Bits = kMitsubishi112StateLength * 8
+
+ +
+
+ +

◆ kMitsubishi112MinRepeat

+ +
+
+ + + + +
const uint16_t kMitsubishi112MinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kMitsubishi112StateLength

+ +
+
+ + + + +
const uint16_t kMitsubishi112StateLength = 14
+
+ +
+
+ +

◆ kMitsubishi136Bits

+ +
+
+ + + + +
const uint16_t kMitsubishi136Bits = kMitsubishi136StateLength * 8
+
+ +
+
+ +

◆ kMitsubishi136MinRepeat

+ +
+
+ + + + +
const uint16_t kMitsubishi136MinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kMitsubishi136StateLength

+ +
+
+ + + + +
const uint16_t kMitsubishi136StateLength = 17
+
+ +
+
+ +

◆ kMitsubishiACBits

+ +
+
+ + + + +
const uint16_t kMitsubishiACBits = kMitsubishiACStateLength * 8
+
+ +
+
+ +

◆ kMitsubishiACMinRepeat

+ +
+
+ + + + +
const uint16_t kMitsubishiACMinRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kMitsubishiACStateLength

+ +
+
+ + + + +
const uint16_t kMitsubishiACStateLength = 18
+
+ +
+
+ +

◆ kMitsubishiBits

+ +
+
+ + + + +
const uint16_t kMitsubishiBits = 16
+
+ +
+
+ +

◆ kMitsubishiHeavy152Bits

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavy152Bits = kMitsubishiHeavy152StateLength * 8
+
+ +
+
+ +

◆ kMitsubishiHeavy152MinRepeat

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavy152MinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kMitsubishiHeavy152StateLength

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavy152StateLength = 19
+
+ +
+
+ +

◆ kMitsubishiHeavy88Bits

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavy88Bits = kMitsubishiHeavy88StateLength * 8
+
+ +
+
+ +

◆ kMitsubishiHeavy88MinRepeat

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavy88MinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kMitsubishiHeavy88StateLength

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavy88StateLength = 11
+
+ +
+
+ +

◆ kMitsubishiMinRepeat

+ +
+
+ + + + +
const uint16_t kMitsubishiMinRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kMultibracketsBits

+ +
+
+ + + + +
const uint16_t kMultibracketsBits = 8
+
+ +
+
+ +

◆ kMultibracketsDefaultRepeat

+ +
+
+ + + + +
const uint16_t kMultibracketsDefaultRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kNECBits

+ +
+
+ + + + +
const uint16_t kNECBits = 32
+
+ +
+
+ +

◆ kNeoclimaBits

+ +
+
+ + + + +
const uint16_t kNeoclimaBits = kNeoclimaStateLength * 8
+
+ +
+
+ +

◆ kNeoclimaMinRepeat

+ +
+
+ + + + +
const uint16_t kNeoclimaMinRepeat = kNoRepeat
+
+ +
+
+ +

◆ kNeoclimaStateLength

+ +
+
+ + + + +
const uint16_t kNeoclimaStateLength = 12
+
+ +
+
+ +

◆ kNikaiBits

+ +
+
+ + + + +
const uint16_t kNikaiBits = 24
+
+ +
+
+ +

◆ kNoRepeat

+ +
+
+ + + + +
const uint16_t kNoRepeat = 0
+
+ +
+
+ +

◆ kPanasonicAcBits

+ +
+
+ + + + +
const uint16_t kPanasonicAcBits = kPanasonicAcStateLength * 8
+
+ +
+
+ +

◆ kPanasonicAcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kPanasonicAcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kPanasonicAcShortBits

+ +
+
+ + + + +
const uint16_t kPanasonicAcShortBits = kPanasonicAcStateShortLength * 8
+
+ +
+
+ +

◆ kPanasonicAcStateLength

+ +
+
+ + + + +
const uint16_t kPanasonicAcStateLength = 27
+
+ +
+
+ +

◆ kPanasonicAcStateShortLength

+ +
+
+ + + + +
const uint16_t kPanasonicAcStateShortLength = 16
+
+ +
+
+ +

◆ kPanasonicBits

+ +
+
+ + + + +
const uint16_t kPanasonicBits = 48
+
+ +
+
+ +

◆ kPanasonicManufacturer

+ +
+
+ + + + +
const uint32_t kPanasonicManufacturer = 0x4004
+
+ +
+
+ +

◆ kPioneerBits

+ +
+
+ + + + +
const uint16_t kPioneerBits = 64
+
+ +
+
+ +

◆ kProntoMinLength

+ +
+
+ + + + +
const uint16_t kProntoMinLength = 6
+
+ +
+
+ +

◆ kRC5Bits

+ +
+
+ + + + +
const uint16_t kRC5Bits = kRC5RawBits - 2
+
+ +
+
+ +

◆ kRC5RawBits

+ +
+
+ + + + +
const uint16_t kRC5RawBits = 14
+
+ +
+
+ +

◆ kRC5XBits

+ +
+
+ + + + +
const uint16_t kRC5XBits = kRC5RawBits - 1
+
+ +
+
+ +

◆ kRC6_36Bits

+ +
+
+ + + + +
const uint16_t kRC6_36Bits = 36
+
+ +
+
+ +

◆ kRC6Mode0Bits

+ +
+
+ + + + +
const uint16_t kRC6Mode0Bits = 20
+
+ +
+
+ +

◆ kRCMMBits

+ +
+
+ + + + +
const uint16_t kRCMMBits = 24
+
+ +
+
+ +

◆ kSamsung36Bits

+ +
+
+ + + + +
const uint16_t kSamsung36Bits = 36
+
+ +
+
+ +

◆ kSamsungAcBits

+ +
+
+ + + + +
const uint16_t kSamsungAcBits = kSamsungAcStateLength * 8
+
+ +
+
+ +

◆ kSamsungAcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kSamsungAcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kSamsungAcExtendedBits

+ +
+
+ + + + +
const uint16_t kSamsungAcExtendedBits = kSamsungAcExtendedStateLength * 8
+
+ +
+
+ +

◆ kSamsungAcExtendedStateLength

+ +
+
+ + + + +
const uint16_t kSamsungAcExtendedStateLength = 21
+
+ +
+
+ +

◆ kSamsungAcStateLength

+ +
+
+ + + + +
const uint16_t kSamsungAcStateLength = 14
+
+ +
+
+ +

◆ kSamsungBits

+ +
+
+ + + + +
const uint16_t kSamsungBits = 32
+
+ +
+
+ +

◆ kSanyoLC7461AddressBits

+ +
+
+ + + + +
const uint16_t kSanyoLC7461AddressBits = 13
+
+ +
+
+ +

◆ kSanyoLC7461Bits

+ +
+
+ + + + +
const uint16_t kSanyoLC7461Bits
+
+Initial value: +
+
+ +

◆ kSanyoLC7461CommandBits

+ +
+
+ + + + +
const uint16_t kSanyoLC7461CommandBits = 8
+
+ +
+
+ +

◆ kSanyoSA8650BBits

+ +
+
+ + + + +
const uint16_t kSanyoSA8650BBits = 12
+
+ +
+
+ +

◆ kSharpAcBits

+ +
+
+ + + + +
const uint16_t kSharpAcBits = kSharpAcStateLength * 8
+
+ +
+
+ +

◆ kSharpAcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kSharpAcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kSharpAcStateLength

+ +
+
+ + + + +
const uint16_t kSharpAcStateLength = 13
+
+ +
+
+ +

◆ kSharpAddressBits

+ +
+
+ + + + +
const uint8_t kSharpAddressBits = 5
+
+ +
+
+ +

◆ kSharpBits

+ +
+
+ + + + +
const uint16_t kSharpBits = kSharpAddressBits + kSharpCommandBits + 2
+
+ +
+
+ +

◆ kSharpCommandBits

+ +
+
+ + + + +
const uint8_t kSharpCommandBits = 8
+
+ +
+
+ +

◆ kSherwoodBits

+ +
+
+ + + + +
const uint8_t kSherwoodBits = kNECBits
+
+ +
+
+ +

◆ kSherwoodMinRepeat

+ +
+
+ + + + +
const uint16_t kSherwoodMinRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kSingleRepeat

+ +
+
+ + + + +
const uint16_t kSingleRepeat = 1
+
+ +
+
+ +

◆ kSony12Bits

+ +
+
+ + + + +
const uint16_t kSony12Bits = 12
+
+ +
+
+ +

◆ kSony15Bits

+ +
+
+ + + + +
const uint16_t kSony15Bits = 15
+
+ +
+
+ +

◆ kSony20Bits

+ +
+
+ + + + +
const uint16_t kSony20Bits = 20
+
+ +
+
+ +

◆ kSonyMinBits

+ +
+
+ + + + +
const uint16_t kSonyMinBits = 12
+
+ +
+
+ +

◆ kSonyMinRepeat

+ +
+
+ + + + +
const uint16_t kSonyMinRepeat = 2
+
+ +
+
+ +

◆ kSymphonyBits

+ +
+
+ + + + +
const uint16_t kSymphonyBits = 12
+
+ +
+
+ +

◆ kSymphonyDefaultRepeat

+ +
+
+ + + + +
const uint16_t kSymphonyDefaultRepeat = 3
+
+ +
+
+ +

◆ kTcl112AcBits

+ +
+
+ + + + +
const uint16_t kTcl112AcBits = kTcl112AcStateLength * 8
+
+ +
+
+ +

◆ kTcl112AcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kTcl112AcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kTcl112AcStateLength

+ +
+
+ + + + +
const uint16_t kTcl112AcStateLength = 14
+
+ +
+
+ +

◆ kTecoBits

+ +
+
+ + + + +
const uint16_t kTecoBits = 35
+
+ +
+
+ +

◆ kTecoDefaultRepeat

+ +
+
+ + + + +
const uint16_t kTecoDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kToshibaACBits

+ +
+
+ + + + +
const uint16_t kToshibaACBits = kToshibaACStateLength * 8
+
+ +
+
+ +

◆ kToshibaACMinRepeat

+ +
+
+ + + + +
const uint16_t kToshibaACMinRepeat = kSingleRepeat
+
+ +
+
+ +

◆ kToshibaACStateLength

+ +
+
+ + + + +
const uint16_t kToshibaACStateLength = 9
+
+ +
+
+ +

◆ kTrotecBits

+ +
+
+ + + + +
const uint16_t kTrotecBits = kTrotecStateLength * 8
+
+ +
+
+ +

◆ kTrotecDefaultRepeat

+ +
+
+ + + + +
const uint16_t kTrotecDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kTrotecStateLength

+ +
+
+ + + + +
const uint16_t kTrotecStateLength = 9
+
+ +
+
+ +

◆ kVestelAcBits

+ +
+
+ + + + +
const uint8_t kVestelAcBits = 56
+
+ +
+
+ +

◆ kWhirlpoolAcBits

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcBits = kWhirlpoolAcStateLength * 8
+
+ +
+
+ +

◆ kWhirlpoolAcDefaultRepeat

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcDefaultRepeat = kNoRepeat
+
+ +
+
+ +

◆ kWhirlpoolAcStateLength

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcStateLength = 21
+
+ +
+
+ +

◆ kWhynterBits

+ +
+
+ + + + +
const uint16_t kWhynterBits = 32
+
+ +
+
+ +

◆ kZepealBits

+ +
+
+ + + + +
const uint16_t kZepealBits = 16
+
+ +
+
+ +

◆ kZepealMinRepeat

+ +
+
+ + + + +
const uint16_t kZepealMinRepeat = 4
+
+ +
+
+
+
const uint16_t kSanyoLC7461CommandBits
Definition: IRremoteESP8266.h:976
+
const uint16_t kSanyoLC7461AddressBits
Definition: IRremoteESP8266.h:975
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h_source.html new file mode 100644 index 000000000..42c1af80b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRremoteESP8266_8h_source.html @@ -0,0 +1,1463 @@ + + + + + + + +IRremoteESP8266: src/IRremoteESP8266.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRremoteESP8266.h
+
+
+Go to the documentation of this file.
1  /***************************************************
+
2  * IRremote for ESP8266
+
3  *
+
4  * Based on the IRremote library for Arduino by Ken Shirriff
+
5  * Version 0.11 August, 2009
+
6  * Copyright 2009 Ken Shirriff
+
7  * For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
+
8  *
+
9  * Edited by Mitra to add new controller SANYO
+
10  *
+
11  * Interrupt code based on NECIRrcv by Joe Knapp
+
12  * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556
+
13  * Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/
+
14  *
+
15  * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
+
16  * LG added by Darryl Smith (based on the JVC protocol)
+
17  * Whynter A/C ARC-110WD added by Francesco Meschia
+
18  * Coolix A/C / heatpump added by (send) bakrus & (decode) crankyoldgit
+
19  * Denon: sendDenon, decodeDenon added by Massimiliano Pinto
+
20  (from https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp)
+
21  * Kelvinator A/C and Sherwood added by crankyoldgit
+
22  * Mitsubishi (TV) sending added by crankyoldgit
+
23  * Pronto code sending added by crankyoldgit
+
24  * Mitsubishi & Toshiba A/C added by crankyoldgit
+
25  * (derived from https://github.com/r45635/HVAC-IR-Control)
+
26  * DISH decode by marcosamarinho
+
27  * Gree Heatpump sending added by Ville Skyttä (scop)
+
28  * (derived from https://github.com/ToniA/arduino-heatpumpir/blob/master/GreeHeatpumpIR.cpp)
+
29  * Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for sending IR code on ESP8266
+
30  * Updated by Sebastien Warin (http://sebastien.warin.fr) for receiving IR code on ESP8266
+
31  *
+
32  * Updated by sillyfrog for Daikin, adopted from
+
33  * (https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/)
+
34  * Fujitsu A/C code added by jonnygraham
+
35  * Trotec AC code by stufisher
+
36  * Carrier & Haier AC code by crankyoldgit
+
37  * Vestel AC code by Erdem U. Altınyurt
+
38  * Teco AC code by Fabien Valthier (hcoohb)
+
39  * Mitsubishi 112 AC Code by kuchel77
+
40  *
+
41  * GPL license, all text above must be included in any redistribution
+
42  ****************************************************/
+
43 
+
44 #ifndef IRREMOTEESP8266_H_
+
45 #define IRREMOTEESP8266_H_
+
46 
+
47 #define __STDC_LIMIT_MACROS
+
48 #include <stdint.h>
+
49 #ifdef UNIT_TEST
+
50 #include <iostream>
+
51 #include <string>
+
52 #endif // UNIT_TEST
+
53 
+
54 // Library Version
+
55 #define _IRREMOTEESP8266_VERSION_ "2.7.7"
+
56 
+
57 // Set the language & locale for the library. See the `locale` dir for options.
+
58 #ifndef _IR_LOCALE_
+
59 #define _IR_LOCALE_ en-AU
+
60 #endif // _IR_LOCALE_
+
61 
+
62 // Do we enable all the protocols by default (true), or disable them (false)?
+
63 // This allows users of the library to disable or enable all protocols at
+
64 // compile-time with `-D_IR_ENABLE_DEFAULT_=true` or
+
65 // `-D_IR_ENABLE_DEFAULT_=false` compiler flags respectively.
+
66 // Everything is included by default.
+
67 // e.g. If you only want to enable use of he NEC protocol to save program space,
+
68 // you would use something like:
+
69 // `-D_IR_ENABLE_DEFAULT_=false -DDECODE_NEC=true -DSEND_NEC=true`
+
70 //
+
71 // or alter your 'platform.ini' file accordingly:
+
72 // ```
+
73 // build_flags = -D_IR_ENABLE_DEFAULT_=false
+
74 // -DDECODE_NEC=true
+
75 // -DSEND_NEC=true
+
76 // ```
+
77 // If you want to enable support for every protocol *except* _decoding_ the
+
78 // Kelvinator protocol, you would use:
+
79 // `-DDECODE_KELVINATOR=false`
+
80 #ifndef _IR_ENABLE_DEFAULT_
+
81 #define _IR_ENABLE_DEFAULT_ true // Unless set externally, the default is on.
+
82 #endif // _IR_ENABLE_DEFAULT_
+
83 
+
84 // Supported IR protocols
+
85 // Each protocol you include costs memory and, during decode, costs time
+
86 // Disable (set to false) all the protocols you do not need/want!
+
87 // The Air Conditioner protocols are the most expensive memory-wise.
+
88 //
+
89 
+
90 // Semi-unique code for unknown messages
+
91 #ifndef DECODE_HASH
+
92 #define DECODE_HASH _IR_ENABLE_DEFAULT_
+
93 #endif // DECODE_HASH
+
94 
+
95 #ifndef SEND_RAW
+
96 #define SEND_RAW _IR_ENABLE_DEFAULT_
+
97 #endif // SEND_RAW
+
98 
+
99 #ifndef DECODE_NEC
+
100 #define DECODE_NEC _IR_ENABLE_DEFAULT_
+
101 #endif // DECODE_NEC
+
102 #ifndef SEND_NEC
+
103 #define SEND_NEC _IR_ENABLE_DEFAULT_
+
104 #endif // SEND_NEC
+
105 
+
106 #ifndef DECODE_SHERWOOD
+
107 #define DECODE_SHERWOOD false // Not applicable. Actually is DECODE_NEC
+
108 #endif // DECODE_SHERWOOD
+
109 #ifndef SEND_SHERWOOD
+
110 #define SEND_SHERWOOD _IR_ENABLE_DEFAULT_
+
111 #endif // SEND_SHERWOOD
+
112 
+
113 #ifndef DECODE_RC5
+
114 #define DECODE_RC5 _IR_ENABLE_DEFAULT_
+
115 #endif // DECODE_RC5
+
116 #ifndef SEND_RC5
+
117 #define SEND_RC5 _IR_ENABLE_DEFAULT_
+
118 #endif // SEND_RC5
+
119 
+
120 #ifndef DECODE_RC6
+
121 #define DECODE_RC6 _IR_ENABLE_DEFAULT_
+
122 #endif // DECODE_RC6
+
123 #ifndef SEND_RC6
+
124 #define SEND_RC6 _IR_ENABLE_DEFAULT_
+
125 #endif // SEND_RC6
+
126 
+
127 #ifndef DECODE_RCMM
+
128 #define DECODE_RCMM _IR_ENABLE_DEFAULT_
+
129 #endif // DECODE_RCMM
+
130 #ifndef SEND_RCMM
+
131 #define SEND_RCMM _IR_ENABLE_DEFAULT_
+
132 #endif // SEND_RCMM
+
133 
+
134 #ifndef DECODE_SONY
+
135 #define DECODE_SONY _IR_ENABLE_DEFAULT_
+
136 #endif // DECODE_SONY
+
137 #ifndef SEND_SONY
+
138 #define SEND_SONY _IR_ENABLE_DEFAULT_
+
139 #endif // SEND_SONY
+
140 
+
141 #ifndef DECODE_PANASONIC
+
142 #define DECODE_PANASONIC _IR_ENABLE_DEFAULT_
+
143 #endif // DECODE_PANASONIC
+
144 #ifndef SEND_PANASONIC
+
145 #define SEND_PANASONIC _IR_ENABLE_DEFAULT_
+
146 #endif // SEND_PANASONIC
+
147 
+
148 #ifndef DECODE_JVC
+
149 #define DECODE_JVC _IR_ENABLE_DEFAULT_
+
150 #endif // DECODE_JVC
+
151 #ifndef SEND_JVC
+
152 #define SEND_JVC _IR_ENABLE_DEFAULT_
+
153 #endif // SEND_JVC
+
154 
+
155 #ifndef DECODE_SAMSUNG
+
156 #define DECODE_SAMSUNG _IR_ENABLE_DEFAULT_
+
157 #endif // DECODE_SAMSUNG
+
158 #ifndef SEND_SAMSUNG
+
159 #define SEND_SAMSUNG _IR_ENABLE_DEFAULT_
+
160 #endif // SEND_SAMSUNG
+
161 
+
162 #ifndef DECODE_SAMSUNG36
+
163 #define DECODE_SAMSUNG36 _IR_ENABLE_DEFAULT_
+
164 #endif // DECODE_SAMSUNG36
+
165 #ifndef SEND_SAMSUNG36
+
166 #define SEND_SAMSUNG36 _IR_ENABLE_DEFAULT_
+
167 #endif // SEND_SAMSUNG36
+
168 
+
169 #ifndef DECODE_SAMSUNG_AC
+
170 #define DECODE_SAMSUNG_AC _IR_ENABLE_DEFAULT_
+
171 #endif // DECODE_SAMSUNG_AC
+
172 #ifndef SEND_SAMSUNG_AC
+
173 #define SEND_SAMSUNG_AC _IR_ENABLE_DEFAULT_
+
174 #endif // SEND_SAMSUNG_AC
+
175 
+
176 #ifndef DECODE_WHYNTER
+
177 #define DECODE_WHYNTER _IR_ENABLE_DEFAULT_
+
178 #endif // DECODE_WHYNTER
+
179 #ifndef SEND_WHYNTER
+
180 #define SEND_WHYNTER _IR_ENABLE_DEFAULT_
+
181 #endif // SEND_WHYNTER
+
182 
+
183 #ifndef DECODE_AIWA_RC_T501
+
184 #define DECODE_AIWA_RC_T501 _IR_ENABLE_DEFAULT_
+
185 #endif // DECODE_AIWA_RC_T501
+
186 #ifndef SEND_AIWA_RC_T501
+
187 #define SEND_AIWA_RC_T501 _IR_ENABLE_DEFAULT_
+
188 #endif // SEND_AIWA_RC_T501
+
189 
+
190 #ifndef DECODE_LG
+
191 #define DECODE_LG _IR_ENABLE_DEFAULT_
+
192 #endif // DECODE_LG
+
193 #ifndef SEND_LG
+
194 #define SEND_LG _IR_ENABLE_DEFAULT_
+
195 #endif // SEND_LG
+
196 
+
197 #ifndef DECODE_SANYO
+
198 #define DECODE_SANYO _IR_ENABLE_DEFAULT_
+
199 #endif // DECODE_SANYO
+
200 #ifndef SEND_SANYO
+
201 #define SEND_SANYO _IR_ENABLE_DEFAULT_
+
202 #endif // SEND_SANYO
+
203 
+
204 #ifndef DECODE_MITSUBISHI
+
205 #define DECODE_MITSUBISHI _IR_ENABLE_DEFAULT_
+
206 #endif // DECODE_MITSUBISHI
+
207 #ifndef SEND_MITSUBISHI
+
208 #define SEND_MITSUBISHI _IR_ENABLE_DEFAULT_
+
209 #endif // SEND_MITSUBISHI
+
210 
+
211 #ifndef DECODE_MITSUBISHI2
+
212 #define DECODE_MITSUBISHI2 _IR_ENABLE_DEFAULT_
+
213 #endif // DECODE_MITSUBISHI2
+
214 #ifndef SEND_MITSUBISHI2
+
215 #define SEND_MITSUBISHI2 _IR_ENABLE_DEFAULT_
+
216 #endif // SEND_MITSUBISHI2
+
217 
+
218 #ifndef DECODE_DISH
+
219 #define DECODE_DISH _IR_ENABLE_DEFAULT_
+
220 #endif // DECODE_DISH
+
221 #ifndef SEND_DISH
+
222 #define SEND_DISH _IR_ENABLE_DEFAULT_
+
223 #endif // SEND_DISH
+
224 
+
225 #ifndef DECODE_SHARP
+
226 #define DECODE_SHARP _IR_ENABLE_DEFAULT_
+
227 #endif // DECODE_SHARP
+
228 #ifndef SEND_SHARP
+
229 #define SEND_SHARP _IR_ENABLE_DEFAULT_
+
230 #endif // SEND_SHARP
+
231 
+
232 #ifndef DECODE_SHARP_AC
+
233 #define DECODE_SHARP_AC _IR_ENABLE_DEFAULT_
+
234 #endif // DECODE_SHARP_AC
+
235 #ifndef SEND_SHARP_AC
+
236 #define SEND_SHARP_AC _IR_ENABLE_DEFAULT_
+
237 #endif // SEND_SHARP_AC
+
238 
+
239 #ifndef DECODE_DENON
+
240 #define DECODE_DENON _IR_ENABLE_DEFAULT_
+
241 #endif // DECODE_DENON
+
242 #ifndef SEND_DENON
+
243 #define SEND_DENON _IR_ENABLE_DEFAULT_
+
244 #endif // SEND_DENON
+
245 
+
246 #ifndef DECODE_KELVINATOR
+
247 #define DECODE_KELVINATOR _IR_ENABLE_DEFAULT_
+
248 #endif // DECODE_KELVINATOR
+
249 #ifndef SEND_KELVINATOR
+
250 #define SEND_KELVINATOR _IR_ENABLE_DEFAULT_
+
251 #endif // SEND_KELVINATOR
+
252 
+
253 #ifndef DECODE_MITSUBISHI_AC
+
254 #define DECODE_MITSUBISHI_AC _IR_ENABLE_DEFAULT_
+
255 #endif // DECODE_MITSUBISHI_AC
+
256 #ifndef SEND_MITSUBISHI_AC
+
257 #define SEND_MITSUBISHI_AC _IR_ENABLE_DEFAULT_
+
258 #endif // SEND_MITSUBISHI_AC
+
259 
+
260 #ifndef DECODE_MITSUBISHI136
+
261 #define DECODE_MITSUBISHI136 _IR_ENABLE_DEFAULT_
+
262 #endif // DECODE_MITSUBISHI136
+
263 #ifndef SEND_MITSUBISHI136
+
264 #define SEND_MITSUBISHI136 _IR_ENABLE_DEFAULT_
+
265 #endif // SEND_MITSUBISHI136
+
266 
+
267 #ifndef DECODE_MITSUBISHI112
+
268 #define DECODE_MITSUBISHI112 _IR_ENABLE_DEFAULT_
+
269 #endif // DECODE_MITSUBISHI112
+
270 #ifndef SEND_MITSUBISHI112
+
271 #define SEND_MITSUBISHI112 _IR_ENABLE_DEFAULT_
+
272 #endif // SEND_MITSUBISHI112
+
273 
+
274 #ifndef DECODE_FUJITSU_AC
+
275 #define DECODE_FUJITSU_AC _IR_ENABLE_DEFAULT_
+
276 #endif // DECODE_FUJITSU_AC
+
277 #ifndef SEND_FUJITSU_AC
+
278 #define SEND_FUJITSU_AC _IR_ENABLE_DEFAULT_
+
279 #endif // SEND_FUJITSU_AC
+
280 
+
281 #ifndef DECODE_INAX
+
282 #define DECODE_INAX _IR_ENABLE_DEFAULT_
+
283 #endif // DECODE_INAX
+
284 #ifndef SEND_INAX
+
285 #define SEND_INAX _IR_ENABLE_DEFAULT_
+
286 #endif // SEND_INAX
+
287 
+
288 #ifndef DECODE_DAIKIN
+
289 #define DECODE_DAIKIN _IR_ENABLE_DEFAULT_
+
290 #endif // DECODE_DAIKIN
+
291 #ifndef SEND_DAIKIN
+
292 #define SEND_DAIKIN _IR_ENABLE_DEFAULT_
+
293 #endif // SEND_DAIKIN
+
294 
+
295 #ifndef DECODE_COOLIX
+
296 #define DECODE_COOLIX _IR_ENABLE_DEFAULT_
+
297 #endif // DECODE_COOLIX
+
298 #ifndef SEND_COOLIX
+
299 #define SEND_COOLIX _IR_ENABLE_DEFAULT_
+
300 #endif // SEND_COOLIX
+
301 
+
302 #ifndef DECODE_GLOBALCACHE
+
303 #define DECODE_GLOBALCACHE false // Not applicable.
+
304 #endif // DECODE_GLOBALCACHE
+
305 #ifndef SEND_GLOBALCACHE
+
306 #define SEND_GLOBALCACHE _IR_ENABLE_DEFAULT_
+
307 #endif // SEND_GLOBALCACHE
+
308 
+
309 #ifndef DECODE_GOODWEATHER
+
310 #define DECODE_GOODWEATHER _IR_ENABLE_DEFAULT_
+
311 #endif // DECODE_GOODWEATHER
+
312 #ifndef SEND_GOODWEATHER
+
313 #define SEND_GOODWEATHER _IR_ENABLE_DEFAULT_
+
314 #endif // SEND_GOODWEATHER
+
315 
+
316 #ifndef DECODE_GREE
+
317 #define DECODE_GREE _IR_ENABLE_DEFAULT_
+
318 #endif // DECODE_GREE
+
319 #ifndef SEND_GREE
+
320 #define SEND_GREE _IR_ENABLE_DEFAULT_
+
321 #endif // SEND_GREE
+
322 
+
323 #ifndef DECODE_PRONTO
+
324 #define DECODE_PRONTO false // Not applicable.
+
325 #endif // DECODE_PRONTO
+
326 #ifndef SEND_PRONTO
+
327 #define SEND_PRONTO _IR_ENABLE_DEFAULT_
+
328 #endif // SEND_PRONTO
+
329 
+
330 #ifndef DECODE_ARGO
+
331 #define DECODE_ARGO _IR_ENABLE_DEFAULT_
+
332 #endif // DECODE_ARGO
+
333 #ifndef SEND_ARGO
+
334 #define SEND_ARGO _IR_ENABLE_DEFAULT_
+
335 #endif // SEND_ARGO
+
336 
+
337 #ifndef DECODE_TROTEC
+
338 #define DECODE_TROTEC _IR_ENABLE_DEFAULT_
+
339 #endif // DECODE_TROTEC
+
340 #ifndef SEND_TROTEC
+
341 #define SEND_TROTEC _IR_ENABLE_DEFAULT_
+
342 #endif // SEND_TROTEC
+
343 
+
344 #ifndef DECODE_NIKAI
+
345 #define DECODE_NIKAI _IR_ENABLE_DEFAULT_
+
346 #endif // DECODE_NIKAI
+
347 #ifndef SEND_NIKAI
+
348 #define SEND_NIKAI _IR_ENABLE_DEFAULT_
+
349 #endif // SEND_NIKAI
+
350 
+
351 #ifndef DECODE_TOSHIBA_AC
+
352 #define DECODE_TOSHIBA_AC _IR_ENABLE_DEFAULT_
+
353 #endif // DECODE_TOSHIBA_AC
+
354 #ifndef SEND_TOSHIBA_AC
+
355 #define SEND_TOSHIBA_AC _IR_ENABLE_DEFAULT_
+
356 #endif // SEND_TOSHIBA_AC
+
357 
+
358 #ifndef DECODE_MAGIQUEST
+
359 #define DECODE_MAGIQUEST _IR_ENABLE_DEFAULT_
+
360 #endif // DECODE_MAGIQUEST
+
361 #ifndef SEND_MAGIQUEST
+
362 #define SEND_MAGIQUEST _IR_ENABLE_DEFAULT_
+
363 #endif // SEND_MAGIQUEST
+
364 
+
365 #ifndef DECODE_MIDEA
+
366 #define DECODE_MIDEA _IR_ENABLE_DEFAULT_
+
367 #endif // DECODE_MIDEA
+
368 #ifndef SEND_MIDEA
+
369 #define SEND_MIDEA _IR_ENABLE_DEFAULT_
+
370 #endif // SEND_MIDEA
+
371 
+
372 #ifndef DECODE_MIDEA24
+
373 #define DECODE_MIDEA24 _IR_ENABLE_DEFAULT_
+
374 #endif // DECODE_MIDEA24
+
375 #ifndef SEND_MIDEA24
+
376 #define SEND_MIDEA24 _IR_ENABLE_DEFAULT_
+
377 #endif // SEND_MIDEA24
+
378 
+
379 #ifndef DECODE_LASERTAG
+
380 #define DECODE_LASERTAG _IR_ENABLE_DEFAULT_
+
381 #endif // DECODE_LASERTAG
+
382 #ifndef SEND_LASERTAG
+
383 #define SEND_LASERTAG _IR_ENABLE_DEFAULT_
+
384 #endif // SEND_LASERTAG
+
385 
+
386 #ifndef DECODE_CARRIER_AC
+
387 #define DECODE_CARRIER_AC _IR_ENABLE_DEFAULT_
+
388 #endif // DECODE_CARRIER_AC
+
389 #ifndef SEND_CARRIER_AC
+
390 #define SEND_CARRIER_AC _IR_ENABLE_DEFAULT_
+
391 #endif // SEND_CARRIER_AC
+
392 
+
393 #ifndef DECODE_CARRIER_AC40
+
394 #define DECODE_CARRIER_AC40 _IR_ENABLE_DEFAULT_
+
395 #endif // DECODE_CARRIER_AC40
+
396 #ifndef SEND_CARRIER_AC40
+
397 #define SEND_CARRIER_AC40 _IR_ENABLE_DEFAULT_
+
398 #endif // SEND_CARRIER_AC40
+
399 
+
400 #ifndef DECODE_CARRIER_AC64
+
401 #define DECODE_CARRIER_AC64 _IR_ENABLE_DEFAULT_
+
402 #endif // DECODE_CARRIER_AC64
+
403 #ifndef SEND_CARRIER_AC64
+
404 #define SEND_CARRIER_AC64 _IR_ENABLE_DEFAULT_
+
405 #endif // SEND_CARRIER_AC64
+
406 
+
407 #ifndef DECODE_HAIER_AC
+
408 #define DECODE_HAIER_AC _IR_ENABLE_DEFAULT_
+
409 #endif // DECODE_HAIER_AC
+
410 #ifndef SEND_HAIER_AC
+
411 #define SEND_HAIER_AC _IR_ENABLE_DEFAULT_
+
412 #endif // SEND_HAIER_AC
+
413 
+
414 #ifndef DECODE_HITACHI_AC
+
415 #define DECODE_HITACHI_AC _IR_ENABLE_DEFAULT_
+
416 #endif // DECODE_HITACHI_AC
+
417 #ifndef SEND_HITACHI_AC
+
418 #define SEND_HITACHI_AC _IR_ENABLE_DEFAULT_
+
419 #endif // SEND_HITACHI_AC
+
420 
+
421 #ifndef DECODE_HITACHI_AC1
+
422 #define DECODE_HITACHI_AC1 _IR_ENABLE_DEFAULT_
+
423 #endif // DECODE_HITACHI_AC1
+
424 #ifndef SEND_HITACHI_AC1
+
425 #define SEND_HITACHI_AC1 _IR_ENABLE_DEFAULT_
+
426 #endif // SEND_HITACHI_AC1
+
427 
+
428 #ifndef DECODE_HITACHI_AC2
+
429 #define DECODE_HITACHI_AC2 _IR_ENABLE_DEFAULT_
+
430 #endif // DECODE_HITACHI_AC2
+
431 #ifndef SEND_HITACHI_AC2
+
432 #define SEND_HITACHI_AC2 _IR_ENABLE_DEFAULT_
+
433 #endif // SEND_HITACHI_AC2
+
434 
+
435 #ifndef DECODE_HITACHI_AC3
+
436 #define DECODE_HITACHI_AC3 _IR_ENABLE_DEFAULT_
+
437 #endif // DECODE_HITACHI_AC3
+
438 #ifndef SEND_HITACHI_AC3
+
439 #define SEND_HITACHI_AC3 _IR_ENABLE_DEFAULT_
+
440 #endif // SEND_HITACHI_AC3
+
441 
+
442 #ifndef DECODE_HITACHI_AC344
+
443 #define DECODE_HITACHI_AC344 _IR_ENABLE_DEFAULT_
+
444 #endif // DECODE_HITACHI_AC344
+
445 #ifndef SEND_HITACHI_AC344
+
446 #define SEND_HITACHI_AC344 _IR_ENABLE_DEFAULT_
+
447 #endif // SEND_HITACHI_AC344
+
448 
+
449 #ifndef DECODE_HITACHI_AC424
+
450 #define DECODE_HITACHI_AC424 _IR_ENABLE_DEFAULT_
+
451 #endif // DECODE_HITACHI_AC424
+
452 #ifndef SEND_HITACHI_AC424
+
453 #define SEND_HITACHI_AC424 _IR_ENABLE_DEFAULT_
+
454 #endif // SEND_HITACHI_AC424
+
455 
+
456 #ifndef DECODE_GICABLE
+
457 #define DECODE_GICABLE _IR_ENABLE_DEFAULT_
+
458 #endif // DECODE_GICABLE
+
459 #ifndef SEND_GICABLE
+
460 #define SEND_GICABLE _IR_ENABLE_DEFAULT_
+
461 #endif // SEND_GICABLE
+
462 
+
463 #ifndef DECODE_HAIER_AC_YRW02
+
464 #define DECODE_HAIER_AC_YRW02 _IR_ENABLE_DEFAULT_
+
465 #endif // DECODE_HAIER_AC_YRW02
+
466 #ifndef SEND_HAIER_AC_YRW02
+
467 #define SEND_HAIER_AC_YRW02 _IR_ENABLE_DEFAULT_
+
468 #endif // SEND_HAIER_AC_YRW02
+
469 
+
470 #ifndef DECODE_WHIRLPOOL_AC
+
471 #define DECODE_WHIRLPOOL_AC _IR_ENABLE_DEFAULT_
+
472 #endif // DECODE_WHIRLPOOL_AC
+
473 #ifndef SEND_WHIRLPOOL_AC
+
474 #define SEND_WHIRLPOOL_AC _IR_ENABLE_DEFAULT_
+
475 #endif // SEND_WHIRLPOOL_AC
+
476 
+
477 #ifndef DECODE_LUTRON
+
478 #define DECODE_LUTRON _IR_ENABLE_DEFAULT_
+
479 #endif // DECODE_LUTRON
+
480 #ifndef SEND_LUTRON
+
481 #define SEND_LUTRON _IR_ENABLE_DEFAULT_
+
482 #endif // SEND_LUTRON
+
483 
+
484 #ifndef DECODE_ELECTRA_AC
+
485 #define DECODE_ELECTRA_AC _IR_ENABLE_DEFAULT_
+
486 #endif // DECODE_ELECTRA_AC
+
487 #ifndef SEND_ELECTRA_AC
+
488 #define SEND_ELECTRA_AC _IR_ENABLE_DEFAULT_
+
489 #endif // SEND_ELECTRA_AC
+
490 
+
491 #ifndef DECODE_PANASONIC_AC
+
492 #define DECODE_PANASONIC_AC _IR_ENABLE_DEFAULT_
+
493 #endif // DECODE_PANASONIC_AC
+
494 #ifndef SEND_PANASONIC_AC
+
495 #define SEND_PANASONIC_AC _IR_ENABLE_DEFAULT_
+
496 #endif // SEND_PANASONIC_AC
+
497 
+
498 #ifndef DECODE_MWM
+
499 #define DECODE_MWM _IR_ENABLE_DEFAULT_
+
500 #endif // DECODE_MWM
+
501 #ifndef SEND_MWM
+
502 #define SEND_MWM _IR_ENABLE_DEFAULT_
+
503 #endif // SEND_MWM
+
504 
+
505 #ifndef DECODE_PIONEER
+
506 #define DECODE_PIONEER _IR_ENABLE_DEFAULT_
+
507 #endif // DECODE_PIONEER
+
508 #ifndef SEND_PIONEER
+
509 #define SEND_PIONEER _IR_ENABLE_DEFAULT_
+
510 #endif // SEND_PIONEER
+
511 
+
512 #ifndef DECODE_DAIKIN2
+
513 #define DECODE_DAIKIN2 _IR_ENABLE_DEFAULT_
+
514 #endif // DECODE_DAIKIN2
+
515 #ifndef SEND_DAIKIN2
+
516 #define SEND_DAIKIN2 _IR_ENABLE_DEFAULT_
+
517 #endif // SEND_DAIKIN2
+
518 
+
519 #ifndef DECODE_VESTEL_AC
+
520 #define DECODE_VESTEL_AC _IR_ENABLE_DEFAULT_
+
521 #endif // DECODE_VESTEL_AC
+
522 #ifndef SEND_VESTEL_AC
+
523 #define SEND_VESTEL_AC _IR_ENABLE_DEFAULT_
+
524 #endif // SEND_VESTEL_AC
+
525 
+
526 #ifndef DECODE_TECO
+
527 #define DECODE_TECO _IR_ENABLE_DEFAULT_
+
528 #endif // DECODE_TECO
+
529 #ifndef SEND_TECO
+
530 #define SEND_TECO _IR_ENABLE_DEFAULT_
+
531 #endif // SEND_TECO
+
532 
+
533 #ifndef DECODE_TCL112AC
+
534 #define DECODE_TCL112AC _IR_ENABLE_DEFAULT_
+
535 #endif // DECODE_TCL112AC
+
536 #ifndef SEND_TCL112AC
+
537 #define SEND_TCL112AC _IR_ENABLE_DEFAULT_
+
538 #endif // SEND_TCL112AC
+
539 
+
540 #ifndef DECODE_LEGOPF
+
541 #define DECODE_LEGOPF _IR_ENABLE_DEFAULT_
+
542 #endif // DECODE_LEGOPF
+
543 #ifndef SEND_LEGOPF
+
544 #define SEND_LEGOPF _IR_ENABLE_DEFAULT_
+
545 #endif // SEND_LEGOPF
+
546 
+
547 #ifndef DECODE_MITSUBISHIHEAVY
+
548 #define DECODE_MITSUBISHIHEAVY _IR_ENABLE_DEFAULT_
+
549 #endif // DECODE_MITSUBISHIHEAVY
+
550 #ifndef SEND_MITSUBISHIHEAVY
+
551 #define SEND_MITSUBISHIHEAVY _IR_ENABLE_DEFAULT_
+
552 #endif // SEND_MITSUBISHIHEAVY
+
553 
+
554 #ifndef DECODE_DAIKIN216
+
555 #define DECODE_DAIKIN216 _IR_ENABLE_DEFAULT_
+
556 #endif // DECODE_DAIKIN216
+
557 #ifndef SEND_DAIKIN216
+
558 #define SEND_DAIKIN216 _IR_ENABLE_DEFAULT_
+
559 #endif // SEND_DAIKIN216
+
560 
+
561 #ifndef DECODE_DAIKIN160
+
562 #define DECODE_DAIKIN160 _IR_ENABLE_DEFAULT_
+
563 #endif // DECODE_DAIKIN160
+
564 #ifndef SEND_DAIKIN160
+
565 #define SEND_DAIKIN160 _IR_ENABLE_DEFAULT_
+
566 #endif // SEND_DAIKIN160
+
567 
+
568 #ifndef DECODE_NEOCLIMA
+
569 #define DECODE_NEOCLIMA _IR_ENABLE_DEFAULT_
+
570 #endif // DECODE_NEOCLIMA
+
571 #ifndef SEND_NEOCLIMA
+
572 #define SEND_NEOCLIMA _IR_ENABLE_DEFAULT_
+
573 #endif // SEND_NEOCLIMA
+
574 
+
575 #ifndef DECODE_DAIKIN176
+
576 #define DECODE_DAIKIN176 _IR_ENABLE_DEFAULT_
+
577 #endif // DECODE_DAIKIN176
+
578 #ifndef SEND_DAIKIN176
+
579 #define SEND_DAIKIN176 _IR_ENABLE_DEFAULT_
+
580 #endif // SEND_DAIKIN176
+
581 
+
582 #ifndef DECODE_DAIKIN128
+
583 #define DECODE_DAIKIN128 _IR_ENABLE_DEFAULT_
+
584 #endif // DECODE_DAIKIN128
+
585 #ifndef SEND_DAIKIN128
+
586 #define SEND_DAIKIN128 _IR_ENABLE_DEFAULT_
+
587 #endif // SEND_DAIKIN128
+
588 
+
589 #ifndef DECODE_AMCOR
+
590 #define DECODE_AMCOR _IR_ENABLE_DEFAULT_
+
591 #endif // DECODE_AMCOR
+
592 #ifndef SEND_AMCOR
+
593 #define SEND_AMCOR _IR_ENABLE_DEFAULT_
+
594 #endif // SEND_AMCOR
+
595 
+
596 #ifndef DECODE_DAIKIN152
+
597 #define DECODE_DAIKIN152 _IR_ENABLE_DEFAULT_
+
598 #endif // DECODE_DAIKIN152
+
599 #ifndef SEND_DAIKIN152
+
600 #define SEND_DAIKIN152 _IR_ENABLE_DEFAULT_
+
601 #endif // SEND_DAIKIN152
+
602 
+
603 #ifndef DECODE_EPSON
+
604 #define DECODE_EPSON _IR_ENABLE_DEFAULT_
+
605 #endif // DECODE_EPSON
+
606 #ifndef SEND_EPSON
+
607 #define SEND_EPSON _IR_ENABLE_DEFAULT_
+
608 #endif // SEND_EPSON
+
609 
+
610 #ifndef DECODE_SYMPHONY
+
611 #define DECODE_SYMPHONY _IR_ENABLE_DEFAULT_
+
612 #endif // DECODE_SYMPHONY
+
613 #ifndef SEND_SYMPHONY
+
614 #define SEND_SYMPHONY _IR_ENABLE_DEFAULT_
+
615 #endif // SEND_SYMPHONY
+
616 
+
617 #ifndef DECODE_DAIKIN64
+
618 #define DECODE_DAIKIN64 _IR_ENABLE_DEFAULT_
+
619 #endif // DECODE_DAIKIN64
+
620 #ifndef SEND_DAIKIN64
+
621 #define SEND_DAIKIN64 _IR_ENABLE_DEFAULT_
+
622 #endif // SEND_DAIKIN64
+
623 
+
624 #ifndef DECODE_AIRWELL
+
625 #define DECODE_AIRWELL _IR_ENABLE_DEFAULT_
+
626 #endif // DECODE_AIRWELL
+
627 #ifndef SEND_AIRWELL
+
628 #define SEND_AIRWELL _IR_ENABLE_DEFAULT_
+
629 #endif // SEND_AIRWELL
+
630 
+
631 #ifndef DECODE_DELONGHI_AC
+
632 #define DECODE_DELONGHI_AC _IR_ENABLE_DEFAULT_
+
633 #endif // DECODE_DELONGHI_AC
+
634 #ifndef SEND_DELONGHI_AC
+
635 #define SEND_DELONGHI_AC _IR_ENABLE_DEFAULT_
+
636 #endif // SEND_DELONGHI_AC
+
637 
+
638 #ifndef DECODE_DOSHISHA
+
639 #define DECODE_DOSHISHA _IR_ENABLE_DEFAULT_
+
640 #endif // DECODE_DOSHISHA
+
641 #ifndef SEND_DOSHISHA
+
642 #define SEND_DOSHISHA _IR_ENABLE_DEFAULT_
+
643 #endif // SEND_DOSHISHA
+
644 
+
645 #ifndef DECODE_MULTIBRACKETS
+
646 #define DECODE_MULTIBRACKETS _IR_ENABLE_DEFAULT_
+
647 #endif // DECODE_MULTIBRACKETS
+
648 #ifndef SEND_MULTIBRACKETS
+
649 #define SEND_MULTIBRACKETS _IR_ENABLE_DEFAULT_
+
650 #endif // SEND_MULTIBRACKETS
+
651 
+
652 #ifndef DECODE_CORONA_AC
+
653 #define DECODE_CORONA_AC _IR_ENABLE_DEFAULT_
+
654 #endif // DECODE_CORONA_AC
+
655 #ifndef SEND_CORONA_AC
+
656 #define SEND_CORONA_AC _IR_ENABLE_DEFAULT_
+
657 #endif // SEND_CORONA_AC
+
658 
+
659 #ifndef DECODE_ZEPEAL
+
660 #define DECODE_ZEPEAL _IR_ENABLE_DEFAULT_
+
661 #endif // DECODE_ZEPEAL
+
662 #ifndef SEND_ZEPEAL
+
663 #define SEND_ZEPEAL _IR_ENABLE_DEFAULT_
+
664 #endif // SEND_ZEPEAL
+
665 
+
666 #if (DECODE_ARGO || DECODE_DAIKIN || DECODE_FUJITSU_AC || DECODE_GREE || \
+
667  DECODE_KELVINATOR || DECODE_MITSUBISHI_AC || DECODE_TOSHIBA_AC || \
+
668  DECODE_TROTEC || DECODE_HAIER_AC || DECODE_HITACHI_AC || \
+
669  DECODE_HITACHI_AC1 || DECODE_HITACHI_AC2 || DECODE_HAIER_AC_YRW02 || \
+
670  DECODE_WHIRLPOOL_AC || DECODE_SAMSUNG_AC || DECODE_ELECTRA_AC || \
+
671  DECODE_PANASONIC_AC || DECODE_MWM || DECODE_DAIKIN2 || \
+
672  DECODE_VESTEL_AC || DECODE_TCL112AC || DECODE_MITSUBISHIHEAVY || \
+
673  DECODE_DAIKIN216 || DECODE_SHARP_AC || DECODE_DAIKIN160 || \
+
674  DECODE_NEOCLIMA || DECODE_DAIKIN176 || DECODE_DAIKIN128 || \
+
675  DECODE_AMCOR || DECODE_DAIKIN152 || DECODE_MITSUBISHI136 || \
+
676  DECODE_MITSUBISHI112 || DECODE_HITACHI_AC424 || DECODE_HITACHI_AC3 || \
+
677  DECODE_HITACHI_AC344 || DECODE_CORONA_AC)
+
678  // Add any DECODE to the above if it uses result->state (see kStateSizeMax)
+
679  // you might also want to add the protocol to hasACState function
+
680 #define DECODE_AC true // We need some common infrastructure for decoding A/Cs.
+
681 #else
+
682 #define DECODE_AC false // We don't need that infrastructure.
+
683 #endif
+
684 
+
685 // Use millisecond 'delay()' calls where we can to avoid tripping the WDT.
+
686 // Note: If you plan to send IR messages in the callbacks of the AsyncWebserver
+
687 // library, you need to set ALLOW_DELAY_CALLS to false.
+
688 // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/430
+
689 #ifndef ALLOW_DELAY_CALLS
+
690 #define ALLOW_DELAY_CALLS true
+
691 #endif // ALLOW_DELAY_CALLS
+
692 
+
693 // Enable a run-time settable high-pass filter on captured data **before**
+
694 // trying any protocol decoding.
+
695 // i.e. Try to remove/merge any really short pulses detected in the raw data.
+
696 // Note: Even when this option is enabled, it is _off_ by default, and requires
+
697 // a user who knows what they are doing to enable it.
+
698 // The option to disable this feature is here if your project is _really_
+
699 // tight on resources. i.e. Saves a small handful of bytes and cpu time.
+
700 // WARNING: If you use this feature at runtime, you can no longer trust the
+
701 // **raw** data captured. It will now have been slightly **cooked**!
+
702 // DANGER: If you set the `noise_floor` value too high, it **WILL** break
+
703 // decoding of some protocols. You have been warned. Here Be Dragons!
+
704 //
+
705 // See: `irrecv::decode()` in IRrecv.cpp for more info.
+
706 #ifndef ENABLE_NOISE_FILTER_OPTION
+
707 #define ENABLE_NOISE_FILTER_OPTION true
+
708 #endif // ENABLE_NOISE_FILTER_OPTION
+
709 
+ +
715  UNKNOWN = -1,
+
716  UNUSED = 0,
+ + + + +
721  PANASONIC, // (5)
+ + + + +
726  LG, // (10)
+ + + + +
731  COOLIX, // (15)
+ + + + +
736  MITSUBISHI_AC, // (20)
+ + + + +
741  PRONTO, // Technically not a protocol, but an encoding. (25)
+ + + + +
746  RAW, // Technically not a protocol, but an encoding. (30)
+
747  GLOBALCACHE, // Technically not a protocol, but an encoding.
+ + + +
751  MAGIQUEST, // (35)
+ + + + +
756  HITACHI_AC, // (40)
+ + + + +
761  WHIRLPOOL_AC, // (45)
+ + + + +
766  PIONEER, // (50)
+ + + + +
771  TECO, // (55)
+ + + + + + + + + +
781  DAIKIN160, // 65
+ + + + +
786  DAIKIN152, // 70
+ + + + +
791  EPSON, // 75
+ + + + +
796  DELONGHI_AC, // 80
+ + + + + + + + +
805  // Add new entries before this one, and update it to point to the last entry.
+ +
807 };
+
808 
+
809 // Message lengths & required repeat values
+
810 const uint16_t kNoRepeat = 0;
+
811 const uint16_t kSingleRepeat = 1;
+
812 
+
813 const uint16_t kAirwellBits = 34;
+
814 const uint16_t kAirwellMinRepeats = 2;
+
815 const uint16_t kAiwaRcT501Bits = 15;
+ +
817 const uint16_t kAlokaBits = 32;
+
818 const uint16_t kAmcorStateLength = 8;
+
819 const uint16_t kAmcorBits = kAmcorStateLength * 8;
+ +
821 const uint16_t kArgoStateLength = 12;
+
822 const uint16_t kArgoBits = kArgoStateLength * 8;
+
823 const uint16_t kArgoDefaultRepeat = kNoRepeat;
+
824 const uint16_t kCoolixBits = 24;
+ +
826 const uint16_t kCarrierAcBits = 32;
+ +
828 const uint16_t kCarrierAc40Bits = 40;
+
829 const uint16_t kCarrierAc40MinRepeat = 2;
+
830 const uint16_t kCarrierAc64Bits = 64;
+ +
832 const uint16_t kCoronaAcStateLengthShort = 7;
+ + +
835 const uint16_t kCoronaAcBits = kCoronaAcStateLength * 8;
+
836 const uint16_t kDaikinStateLength = 35;
+
837 const uint16_t kDaikinBits = kDaikinStateLength * 8;
+ + + +
841 const uint16_t kDaikin2StateLength = 39;
+
842 const uint16_t kDaikin2Bits = kDaikin2StateLength * 8;
+ +
844 const uint16_t kDaikin64Bits = 64;
+ +
846 const uint16_t kDaikin160StateLength = 20;
+ + +
849 const uint16_t kDaikin128StateLength = 16;
+ + +
852 const uint16_t kDaikin152StateLength = 19;
+ + +
855 const uint16_t kDaikin176StateLength = 22;
+ + +
858 const uint16_t kDaikin216StateLength = 27;
+ + +
861 const uint16_t kDelonghiAcBits = 64;
+ +
863 const uint16_t kDenonBits = 15;
+
864 const uint16_t kDenon48Bits = 48;
+
865 const uint16_t kDenonLegacyBits = 14;
+
866 const uint16_t kDishBits = 16;
+
867 const uint16_t kDishMinRepeat = 3;
+
868 const uint16_t kDoshishaBits = 40;
+
869 const uint16_t kEpsonBits = 32;
+
870 const uint16_t kEpsonMinRepeat = 2;
+
871 const uint16_t kElectraAcStateLength = 13;
+ + + +
875 const uint16_t kFujitsuAcStateLength = 16;
+
876 const uint16_t kFujitsuAcStateLengthShort = 7;
+ + +
879 const uint16_t kGicableBits = 16;
+ +
881 const uint16_t kGoodweatherBits = 48;
+ +
883 const uint16_t kGreeStateLength = 8;
+
884 const uint16_t kGreeBits = kGreeStateLength * 8;
+
885 const uint16_t kGreeDefaultRepeat = kNoRepeat;
+
886 const uint16_t kHaierACStateLength = 9;
+
887 const uint16_t kHaierACBits = kHaierACStateLength * 8;
+ +
889 const uint16_t kHaierACYRW02StateLength = 14;
+ + +
892 const uint16_t kHitachiAcStateLength = 28;
+ + +
895 const uint16_t kHitachiAc1StateLength = 13;
+ +
897 const uint16_t kHitachiAc2StateLength = 53;
+ +
899 const uint16_t kHitachiAc3StateLength = 27;
+ +
901 const uint16_t kHitachiAc3MinStateLength = 15;
+ +
903 const uint16_t kHitachiAc344StateLength = 43;
+ +
905 const uint16_t kHitachiAc424StateLength = 53;
+ +
907 const uint16_t kInaxBits = 24;
+
908 const uint16_t kInaxMinRepeat = kSingleRepeat;
+
909 const uint16_t kJvcBits = 16;
+
910 const uint16_t kKelvinatorStateLength = 16;
+ + +
913 const uint16_t kLasertagBits = 13;
+
914 const uint16_t kLasertagMinRepeat = kNoRepeat;
+
915 const uint16_t kLegoPfBits = 16;
+
916 const uint16_t kLegoPfMinRepeat = kNoRepeat;
+
917 const uint16_t kLgBits = 28;
+
918 const uint16_t kLg32Bits = 32;
+
919 const uint16_t kLgDefaultRepeat = kNoRepeat;
+
920 const uint16_t kLutronBits = 35;
+
921 const uint16_t kMagiquestBits = 56;
+
922 const uint16_t kMideaBits = 48;
+
923 const uint16_t kMideaMinRepeat = kNoRepeat;
+
924 const uint16_t kMidea24Bits = 24;
+ +
926 const uint16_t kMitsubishiBits = 16;
+
927 // TODO(anyone): Verify that the Mitsubishi repeat is really needed.
+
928 // Based on marcosamarinho's code.
+ +
930 const uint16_t kMitsubishiACStateLength = 18;
+ + +
933 const uint16_t kMitsubishi136StateLength = 17;
+ + +
936 const uint16_t kMitsubishi112StateLength = 14;
+ + +
939 const uint16_t kMitsubishiHeavy88StateLength = 11;
+ + +
942 const uint16_t kMitsubishiHeavy152StateLength = 19;
+ + +
945 const uint16_t kMultibracketsBits = 8;
+ +
947 const uint16_t kNikaiBits = 24;
+
948 const uint16_t kNECBits = 32;
+
949 const uint16_t kNeoclimaStateLength = 12;
+
950 const uint16_t kNeoclimaBits = kNeoclimaStateLength * 8;
+
951 const uint16_t kNeoclimaMinRepeat = kNoRepeat;
+
952 const uint16_t kPanasonicBits = 48;
+
953 const uint32_t kPanasonicManufacturer = 0x4004;
+
954 const uint16_t kPanasonicAcStateLength = 27;
+
955 const uint16_t kPanasonicAcStateShortLength = 16;
+ + + +
959 const uint16_t kPioneerBits = 64;
+
960 const uint16_t kProntoMinLength = 6;
+
961 const uint16_t kRC5RawBits = 14;
+
962 const uint16_t kRC5Bits = kRC5RawBits - 2;
+
963 const uint16_t kRC5XBits = kRC5RawBits - 1;
+
964 const uint16_t kRC6Mode0Bits = 20; // Excludes the 'start' bit.
+
965 const uint16_t kRC6_36Bits = 36; // Excludes the 'start' bit.
+
966 const uint16_t kRCMMBits = 24;
+
967 const uint16_t kSamsungBits = 32;
+
968 const uint16_t kSamsung36Bits = 36;
+
969 const uint16_t kSamsungAcStateLength = 14;
+ +
971 const uint16_t kSamsungAcExtendedStateLength = 21;
+ + +
974 const uint16_t kSanyoSA8650BBits = 12;
+
975 const uint16_t kSanyoLC7461AddressBits = 13;
+
976 const uint16_t kSanyoLC7461CommandBits = 8;
+ + +
979 const uint8_t kSharpAddressBits = 5;
+
980 const uint8_t kSharpCommandBits = 8;
+
981 const uint16_t kSharpBits = kSharpAddressBits + kSharpCommandBits + 2; // 15
+
982 const uint16_t kSharpAcStateLength = 13;
+
983 const uint16_t kSharpAcBits = kSharpAcStateLength * 8; // 104
+ +
985 const uint8_t kSherwoodBits = kNECBits;
+ +
987 const uint16_t kSony12Bits = 12;
+
988 const uint16_t kSony15Bits = 15;
+
989 const uint16_t kSony20Bits = 20;
+
990 const uint16_t kSonyMinBits = 12;
+
991 const uint16_t kSonyMinRepeat = 2;
+
992 const uint16_t kSymphonyBits = 12;
+
993 const uint16_t kSymphonyDefaultRepeat = 3;
+
994 const uint16_t kTcl112AcStateLength = 14;
+
995 const uint16_t kTcl112AcBits = kTcl112AcStateLength * 8;
+ +
997 const uint16_t kTecoBits = 35;
+
998 const uint16_t kTecoDefaultRepeat = kNoRepeat;
+
999 const uint16_t kToshibaACStateLength = 9;
+ + +
1002 const uint16_t kTrotecStateLength = 9;
+
1003 const uint16_t kTrotecBits = kTrotecStateLength * 8;
+ +
1005 const uint16_t kWhirlpoolAcStateLength = 21;
+ + +
1008 const uint16_t kWhynterBits = 32;
+
1009 const uint8_t kVestelAcBits = 56;
+
1010 const uint16_t kZepealBits = 16;
+
1011 const uint16_t kZepealMinRepeat = 4;
+
1012 
+
1013 
+
1014 // Legacy defines. (Deprecated)
+
1015 #define AIWA_RC_T501_BITS kAiwaRcT501Bits
+
1016 #define ARGO_COMMAND_LENGTH kArgoStateLength
+
1017 #define COOLIX_BITS kCoolixBits
+
1018 #define CARRIER_AC_BITS kCarrierAcBits
+
1019 #define DAIKIN_COMMAND_LENGTH kDaikinStateLength
+
1020 #define DENON_BITS kDenonBits
+
1021 #define DENON_48_BITS kDenon48Bits
+
1022 #define DENON_LEGACY_BITS kDenonLegacyBits
+
1023 #define DISH_BITS kDishBits
+
1024 #define FUJITSU_AC_MIN_REPEAT kFujitsuAcMinRepeat
+
1025 #define FUJITSU_AC_STATE_LENGTH kFujitsuAcStateLength
+
1026 #define FUJITSU_AC_STATE_LENGTH_SHORT kFujitsuAcStateLengthShort
+
1027 #define FUJITSU_AC_BITS kFujitsuAcBits
+
1028 #define FUJITSU_AC_MIN_BITS kFujitsuAcMinBits
+
1029 #define GICABLE_BITS kGicableBits
+
1030 #define GREE_STATE_LENGTH kGreeStateLength
+
1031 #define HAIER_AC_STATE_LENGTH kHaierACStateLength
+
1032 #define HAIER_AC_YRW02_STATE_LENGTH kHaierACYRW02StateLength
+
1033 #define HITACHI_AC_STATE_LENGTH kHitachiAcStateLength
+
1034 #define HITACHI_AC_BITS kHitachiAcBits
+
1035 #define HITACHI_AC1_STATE_LENGTH kHitachiAc1StateLength
+
1036 #define HITACHI_AC1_BITS kHitachiAc1Bits
+
1037 #define HITACHI_AC2_STATE_LENGTH kHitachiAc2StateLength
+
1038 #define HITACHI_AC2_BITS kHitachiAc2Bits
+
1039 #define JVC_BITS kJvcBits
+
1040 #define KELVINATOR_STATE_LENGTH kKelvinatorStateLength
+
1041 #define LASERTAG_BITS kLasertagBits
+
1042 #define LG_BITS kLgBits
+
1043 #define LG32_BITS kLg32Bits
+
1044 #define MAGIQUEST_BITS kMagiquestBits
+
1045 #define MIDEA_BITS kMideaBits
+
1046 #define MITSUBISHI_BITS kMitsubishiBits
+
1047 #define MITSUBISHI_AC_STATE_LENGTH kMitsubishiACStateLength
+
1048 #define NEC_BITS kNECBits
+
1049 #define NIKAI_BITS kNikaiBits
+
1050 #define PANASONIC_BITS kPanasonicBits
+
1051 #define RC5_BITS kRC5Bits
+
1052 #define RC5X_BITS kRC5XBits
+
1053 #define RC6_MODE0_BITS kRC6Mode0Bits
+
1054 #define RC6_36_BITS kRC6_36Bits
+
1055 #define RCMM_BITS kRCMMBits
+
1056 #define SANYO_LC7461_BITS kSanyoLC7461Bits
+
1057 #define SAMSUNG_BITS kSamsungBits
+
1058 #define SANYO_SA8650B_BITS kSanyoSA8650BBits
+
1059 #define SHARP_BITS kSharpBits
+
1060 #define SHERWOOD_BITS kSherwoodBits
+
1061 #define SONY_12_BITS kSony12Bits
+
1062 #define SONY_15_BITS kSony15Bits
+
1063 #define SONY_20_BITS kSony20Bits
+
1064 #define TOSHIBA_AC_STATE_LENGTH kToshibaACStateLength
+
1065 #define TROTEC_COMMAND_LENGTH kTrotecStateLength
+
1066 #define WHYNTER_BITS kWhynterBits
+
1067 
+
1068 // Turn on Debugging information by uncommenting the following line.
+
1069 // #define DEBUG 1
+
1070 
+
1071 #ifdef DEBUG
+
1072 #ifdef UNIT_TEST
+
1073 #define DPRINT(x) do { std::cout << x; } while (0)
+
1074 #define DPRINTLN(x) do { std::cout << x << std::endl; } while (0)
+
1075 #endif // UNIT_TEST
+
1076 #ifdef ARDUINO
+
1077 #define DPRINT(x) do { Serial.print(x); } while (0)
+
1078 #define DPRINTLN(x) do { Serial.println(x); } while (0)
+
1079 #endif // ARDUINO
+
1080 #else // DEBUG
+
1081 #define DPRINT(x)
+
1082 #define DPRINTLN(x)
+
1083 #endif // DEBUG
+
1084 
+
1085 #ifdef UNIT_TEST
+
1086 #ifndef F
+
1087 // Create a no-op F() macro so the code base still compiles outside of the
+
1088 // Arduino framework. Thus we can safely use the Arduino 'F()' macro through-out
+
1089 // the code base. That macro stores constants in Flash (PROGMEM) memory.
+
1090 // See: https://github.com/crankyoldgit/IRremoteESP8266/issues/667
+
1091 #define F(x) x
+
1092 #endif // F
+
1093 typedef std::string String;
+
1094 #endif // UNIT_TEST
+
1095 
+
1096 #endif // IRREMOTEESP8266_H_
+
+
@ ARGO
Definition: IRremoteESP8266.h:743
+
const uint16_t kDaikin152DefaultRepeat
Definition: IRremoteESP8266.h:854
+
const uint16_t kSanyoSA8650BBits
Definition: IRremoteESP8266.h:974
+
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:861
+
const uint16_t kHaierAcYrw02DefaultRepeat
Definition: IRremoteESP8266.h:891
+
const uint16_t kHitachiAc3MinStateLength
Definition: IRremoteESP8266.h:901
+
const uint16_t kMitsubishiACStateLength
Definition: IRremoteESP8266.h:930
+
const uint16_t kMitsubishiHeavy152StateLength
Definition: IRremoteESP8266.h:942
+
const uint16_t kAirwellMinRepeats
Definition: IRremoteESP8266.h:814
+
const uint16_t kMideaMinRepeat
Definition: IRremoteESP8266.h:923
+
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:879
+
const uint16_t kGreeStateLength
Definition: IRremoteESP8266.h:883
+
@ DISH
Definition: IRremoteESP8266.h:729
+
@ UNUSED
Definition: IRremoteESP8266.h:716
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:714
+
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:826
+
const uint16_t kDenonLegacyBits
Definition: IRremoteESP8266.h:865
+
@ SHERWOOD
Definition: IRremoteESP8266.h:735
+
const uint16_t kSingleRepeat
Definition: IRremoteESP8266.h:811
+
const uint16_t kDaikin2DefaultRepeat
Definition: IRremoteESP8266.h:843
+
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:945
+
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:983
+
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1008
+
@ CARRIER_AC
Definition: IRremoteESP8266.h:753
+
@ TOSHIBA_AC
Definition: IRremoteESP8266.h:748
+
@ AIRWELL
Definition: IRremoteESP8266.h:795
+
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:813
+
const uint16_t kHaierAcDefaultRepeat
Definition: IRremoteESP8266.h:888
+
@ PRONTO
Definition: IRremoteESP8266.h:741
+
const uint16_t kTrotecDefaultRepeat
Definition: IRremoteESP8266.h:1004
+
const uint16_t kFujitsuAcMinRepeat
Definition: IRremoteESP8266.h:874
+
const uint16_t kCoronaAcBits
Definition: IRremoteESP8266.h:835
+
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:931
+
const uint16_t kMitsubishi136MinRepeat
Definition: IRremoteESP8266.h:935
+
@ UNKNOWN
Definition: IRremoteESP8266.h:715
+
const uint16_t kArgoDefaultRepeat
Definition: IRremoteESP8266.h:823
+
const uint16_t kHaierACStateLength
Definition: IRremoteESP8266.h:886
+
const uint16_t kHitachiAcStateLength
Definition: IRremoteESP8266.h:892
+
@ MITSUBISHI112
Definition: IRremoteESP8266.h:788
+
const uint16_t kDaikin176StateLength
Definition: IRremoteESP8266.h:855
+
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:963
+
const uint16_t kEpsonMinRepeat
Definition: IRremoteESP8266.h:870
+
const uint16_t kAmcorStateLength
Definition: IRremoteESP8266.h:818
+
@ DAIKIN128
Definition: IRremoteESP8266.h:784
+
const uint16_t kAlokaBits
Definition: IRremoteESP8266.h:817
+
@ JVC
Definition: IRremoteESP8266.h:722
+
@ SONY
Definition: IRremoteESP8266.h:720
+
@ HITACHI_AC2
Definition: IRremoteESP8266.h:758
+
const uint16_t kHitachiAc1StateLength
Definition: IRremoteESP8266.h:895
+
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:824
+
const uint16_t kMitsubishi112MinRepeat
Definition: IRremoteESP8266.h:938
+
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:834
+
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:968
+
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:921
+
@ LUTRON
Definition: IRremoteESP8266.h:763
+
const uint8_t kSharpCommandBits
Definition: IRremoteESP8266.h:980
+
const uint16_t kNeoclimaStateLength
Definition: IRremoteESP8266.h:949
+
@ RCMM
Definition: IRremoteESP8266.h:737
+
@ SANYO_LC7461
Definition: IRremoteESP8266.h:738
+
@ TROTEC
Definition: IRremoteESP8266.h:744
+
const uint16_t kFujitsuAcMinBits
Definition: IRremoteESP8266.h:878
+
const uint16_t kSamsungAcDefaultRepeat
Definition: IRremoteESP8266.h:973
+
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:977
+
@ DAIKIN160
Definition: IRremoteESP8266.h:781
+
@ CORONA_AC
Definition: IRremoteESP8266.h:802
+
const uint16_t kSanyoLC7461CommandBits
Definition: IRremoteESP8266.h:976
+
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1003
+
@ PANASONIC
Definition: IRremoteESP8266.h:721
+
const uint16_t kZepealMinRepeat
Definition: IRremoteESP8266.h:1011
+
const uint16_t kDenon48Bits
Definition: IRremoteESP8266.h:864
+
@ DAIKIN2
Definition: IRremoteESP8266.h:769
+
const uint16_t kHitachiAc2Bits
Definition: IRremoteESP8266.h:898
+
const uint16_t kElectraAcMinRepeat
Definition: IRremoteESP8266.h:873
+
@ MITSUBISHI_AC
Definition: IRremoteESP8266.h:736
+
@ MAGIQUEST
Definition: IRremoteESP8266.h:751
+
const uint16_t kHitachiAc3StateLength
Definition: IRremoteESP8266.h:899
+
const uint16_t kLg32Bits
Definition: IRremoteESP8266.h:918
+
@ DOSHISHA
Definition: IRremoteESP8266.h:797
+
const uint16_t kCoronaAcStateLengthShort
Definition: IRremoteESP8266.h:832
+
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:872
+
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:990
+
@ HAIER_AC_YRW02
Definition: IRremoteESP8266.h:760
+
const uint16_t kAiwaRcT501MinRepeats
Definition: IRremoteESP8266.h:816
+
@ HITACHI_AC424
Definition: IRremoteESP8266.h:789
+
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:842
+
const uint16_t kHitachiAc1Bits
Definition: IRremoteESP8266.h:896
+
@ CARRIER_AC64
Definition: IRremoteESP8266.h:800
+
@ NEC
Definition: IRremoteESP8266.h:719
+
@ FUJITSU_AC
Definition: IRremoteESP8266.h:749
+
const uint16_t kMitsubishiMinRepeat
Definition: IRremoteESP8266.h:929
+
@ GOODWEATHER
Definition: IRremoteESP8266.h:779
+
@ HITACHI_AC3
Definition: IRremoteESP8266.h:793
+
@ INAX
Definition: IRremoteESP8266.h:780
+
const uint16_t kArgoStateLength
Definition: IRremoteESP8266.h:821
+
@ SYMPHONY
Definition: IRremoteESP8266.h:792
+
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:952
+
std::string String
Definition: IRremoteESP8266.h:1093
+
@ HAIER_AC
Definition: IRremoteESP8266.h:754
+
const uint16_t kDaikinStateLengthShort
Definition: IRremoteESP8266.h:838
+
const uint16_t kRC5Bits
Definition: IRremoteESP8266.h:962
+
const uint16_t kLgDefaultRepeat
Definition: IRremoteESP8266.h:919
+
const uint16_t kDaikin152StateLength
Definition: IRremoteESP8266.h:852
+
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:956
+
const uint16_t kRC5RawBits
Definition: IRremoteESP8266.h:961
+
const uint16_t kHaierACYRW02StateLength
Definition: IRremoteESP8266.h:889
+
const uint16_t kSanyoLC7461AddressBits
Definition: IRremoteESP8266.h:975
+
const uint16_t kMultibracketsDefaultRepeat
Definition: IRremoteESP8266.h:946
+
@ LG
Definition: IRremoteESP8266.h:726
+
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:847
+
@ HITACHI_AC344
Definition: IRremoteESP8266.h:801
+
@ MIDEA
Definition: IRremoteESP8266.h:750
+
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:881
+
const uint16_t kGicableMinRepeat
Definition: IRremoteESP8266.h:880
+
@ GLOBALCACHE
Definition: IRremoteESP8266.h:747
+
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:853
+
const uint16_t kDaikin216StateLength
Definition: IRremoteESP8266.h:858
+
@ GICABLE
Definition: IRremoteESP8266.h:759
+
const uint16_t kSamsungAcStateLength
Definition: IRremoteESP8266.h:969
+
@ COOLIX
Definition: IRremoteESP8266.h:731
+
@ MIDEA24
Definition: IRremoteESP8266.h:803
+
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:992
+
const uint16_t kDaikin128StateLength
Definition: IRremoteESP8266.h:849
+
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:964
+
@ NEOCLIMA
Definition: IRremoteESP8266.h:782
+
const uint16_t kDaikin176DefaultRepeat
Definition: IRremoteESP8266.h:857
+
const uint16_t kMitsubishiHeavy152MinRepeat
Definition: IRremoteESP8266.h:944
+
const uint16_t kSony12Bits
Definition: IRremoteESP8266.h:987
+
const uint16_t kNoRepeat
Definition: IRremoteESP8266.h:810
+
const uint16_t kSony20Bits
Definition: IRremoteESP8266.h:989
+
const uint16_t kMitsubishiACMinRepeat
Definition: IRremoteESP8266.h:932
+
@ MULTIBRACKETS
Definition: IRremoteESP8266.h:798
+
const uint16_t kHitachiAc3MinBits
Definition: IRremoteESP8266.h:902
+
const uint16_t kPanasonicAcDefaultRepeat
Definition: IRremoteESP8266.h:958
+
const uint16_t kSymphonyDefaultRepeat
Definition: IRremoteESP8266.h:993
+
const uint16_t kSamsungAcExtendedStateLength
Definition: IRremoteESP8266.h:971
+
const uint16_t kCoolixDefaultRepeat
Definition: IRremoteESP8266.h:825
+
@ DENON
Definition: IRremoteESP8266.h:733
+
const uint16_t kTcl112AcDefaultRepeat
Definition: IRremoteESP8266.h:996
+
const uint16_t kDelonghiAcDefaultRepeat
Definition: IRremoteESP8266.h:862
+
const uint16_t kCoronaAcStateLength
Definition: IRremoteESP8266.h:833
+
@ SANYO
Definition: IRremoteESP8266.h:727
+
const uint16_t kTecoDefaultRepeat
Definition: IRremoteESP8266.h:998
+
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:943
+
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:868
+
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:828
+
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:819
+
const uint16_t kTrotecStateLength
Definition: IRremoteESP8266.h:1002
+
@ LG2
Definition: IRremoteESP8266.h:767
+
const uint16_t kWhirlpoolAcDefaultRepeat
Definition: IRremoteESP8266.h:1007
+
const uint16_t kHitachiAc424StateLength
Definition: IRremoteESP8266.h:905
+
const uint16_t kMitsubishiHeavy88StateLength
Definition: IRremoteESP8266.h:939
+
@ RC5X
Definition: IRremoteESP8266.h:739
+
@ LASERTAG
Definition: IRremoteESP8266.h:752
+
const uint16_t kFujitsuAcStateLengthShort
Definition: IRremoteESP8266.h:876
+
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:953
+
@ RAW
Definition: IRremoteESP8266.h:746
+
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:926
+
@ SONY_38K
Definition: IRremoteESP8266.h:790
+
@ RC6
Definition: IRremoteESP8266.h:718
+
@ PIONEER
Definition: IRremoteESP8266.h:766
+
const uint16_t kPanasonicAcStateLength
Definition: IRremoteESP8266.h:954
+
@ MITSUBISHI2
Definition: IRremoteESP8266.h:755
+
const uint16_t kFujitsuAcStateLength
Definition: IRremoteESP8266.h:875
+
const uint16_t kSamsungAcBits
Definition: IRremoteESP8266.h:970
+
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:922
+
const uint16_t kKelvinatorStateLength
Definition: IRremoteESP8266.h:910
+
const uint16_t kKelvinatorBits
Definition: IRremoteESP8266.h:911
+
@ LEGOPF
Definition: IRremoteESP8266.h:774
+
@ WHYNTER
Definition: IRremoteESP8266.h:724
+
const uint16_t kDaikin216DefaultRepeat
Definition: IRremoteESP8266.h:860
+
@ AMCOR
Definition: IRremoteESP8266.h:785
+
const uint16_t kWhirlpoolAcStateLength
Definition: IRremoteESP8266.h:1005
+
const uint16_t kNECBits
Definition: IRremoteESP8266.h:948
+
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:863
+
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:887
+
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1010
+
@ TCL112AC
Definition: IRremoteESP8266.h:773
+
const uint16_t kSony15Bits
Definition: IRremoteESP8266.h:988
+
const uint16_t kCarrierAc40MinRepeat
Definition: IRremoteESP8266.h:829
+
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:924
+
const uint16_t kDaikin160DefaultRepeat
Definition: IRremoteESP8266.h:848
+
const uint16_t kToshibaACMinRepeat
Definition: IRremoteESP8266.h:1001
+
const uint16_t kSamsungAcExtendedBits
Definition: IRremoteESP8266.h:972
+
const uint16_t kHitachiAc344StateLength
Definition: IRremoteESP8266.h:903
+
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:950
+
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1006
+
const uint16_t kHitachiAc344Bits
Definition: IRremoteESP8266.h:904
+
const uint16_t kRC6_36Bits
Definition: IRremoteESP8266.h:965
+
@ DAIKIN176
Definition: IRremoteESP8266.h:783
+
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:830
+
const uint16_t kDaikin128DefaultRepeat
Definition: IRremoteESP8266.h:851
+
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:959
+
const uint16_t kSharpAcStateLength
Definition: IRremoteESP8266.h:982
+
@ MITSUBISHI_HEAVY_88
Definition: IRremoteESP8266.h:775
+
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:884
+
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:909
+
const uint16_t kDaikinStateLength
Definition: IRremoteESP8266.h:836
+
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:913
+
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:850
+
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:815
+
const uint16_t kToshibaACStateLength
Definition: IRremoteESP8266.h:999
+
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:997
+
const uint16_t kInaxMinRepeat
Definition: IRremoteESP8266.h:908
+
const uint16_t kPanasonicAcStateShortLength
Definition: IRremoteESP8266.h:955
+
@ CARRIER_AC40
Definition: IRremoteESP8266.h:799
+
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1000
+
const uint8_t kSherwoodBits
Definition: IRremoteESP8266.h:985
+
@ DAIKIN152
Definition: IRremoteESP8266.h:786
+
@ NEC_LIKE
Definition: IRremoteESP8266.h:742
+
const uint16_t kDaikinDefaultRepeat
Definition: IRremoteESP8266.h:840
+
const uint16_t kDaikin64DefaultRepeat
Definition: IRremoteESP8266.h:845
+
@ SAMSUNG
Definition: IRremoteESP8266.h:723
+
@ AIWA_RC_T501
Definition: IRremoteESP8266.h:725
+
@ MITSUBISHI_HEAVY_152
Definition: IRremoteESP8266.h:776
+
@ VESTEL_AC
Definition: IRremoteESP8266.h:770
+
const uint16_t kDaikinBits
Definition: IRremoteESP8266.h:837
+
@ GREE
Definition: IRremoteESP8266.h:740
+
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:893
+
const uint16_t kMitsubishiHeavy88MinRepeat
Definition: IRremoteESP8266.h:941
+
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:900
+
const uint16_t kHitachiAcDefaultRepeat
Definition: IRremoteESP8266.h:894
+
@ NIKAI
Definition: IRremoteESP8266.h:745
+
const uint16_t kMidea24MinRepeat
Definition: IRremoteESP8266.h:925
+
const uint16_t kDishBits
Definition: IRremoteESP8266.h:866
+
@ WHIRLPOOL_AC
Definition: IRremoteESP8266.h:761
+
const uint16_t kDishMinRepeat
Definition: IRremoteESP8266.h:867
+
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:877
+
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:822
+
@ RC5
Definition: IRremoteESP8266.h:717
+
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:897
+
@ HITACHI_AC
Definition: IRremoteESP8266.h:756
+
@ SHARP_AC
Definition: IRremoteESP8266.h:778
+
@ HITACHI_AC1
Definition: IRremoteESP8266.h:757
+
const uint16_t kMitsubishiHeavy88Bits
Definition: IRremoteESP8266.h:940
+
const uint16_t kCarrierAcMinRepeat
Definition: IRremoteESP8266.h:827
+
@ ZEPEAL
Definition: IRremoteESP8266.h:804
+
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:947
+
const uint16_t kKelvinatorDefaultRepeat
Definition: IRremoteESP8266.h:912
+
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:920
+
const uint16_t kSharpAcDefaultRepeat
Definition: IRremoteESP8266.h:984
+
@ MITSUBISHI136
Definition: IRremoteESP8266.h:787
+
const uint16_t kTcl112AcStateLength
Definition: IRremoteESP8266.h:994
+
const uint16_t kDaikin160StateLength
Definition: IRremoteESP8266.h:846
+
const uint16_t kDaikin2StateLength
Definition: IRremoteESP8266.h:841
+
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:890
+
const uint16_t kSherwoodMinRepeat
Definition: IRremoteESP8266.h:986
+
const uint16_t kCarrierAc64MinRepeat
Definition: IRremoteESP8266.h:831
+
@ MWM
Definition: IRremoteESP8266.h:768
+
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:906
+
const uint16_t kPanasonicAcShortBits
Definition: IRremoteESP8266.h:957
+
@ DAIKIN
Definition: IRremoteESP8266.h:732
+
@ DELONGHI_AC
Definition: IRremoteESP8266.h:796
+
@ EPSON
Definition: IRremoteESP8266.h:791
+
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:915
+
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:981
+
@ kLastDecodeType
Definition: IRremoteESP8266.h:806
+
@ SAMSUNG_AC
Definition: IRremoteESP8266.h:762
+
const uint16_t kDaikinBitsShort
Definition: IRremoteESP8266.h:839
+
@ DAIKIN216
Definition: IRremoteESP8266.h:777
+
@ PANASONIC_AC
Definition: IRremoteESP8266.h:765
+
const uint16_t kProntoMinLength
Definition: IRremoteESP8266.h:960
+
const uint16_t kMitsubishi136StateLength
Definition: IRremoteESP8266.h:933
+
@ DAIKIN64
Definition: IRremoteESP8266.h:794
+
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:966
+
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1009
+
@ SAMSUNG36
Definition: IRremoteESP8266.h:772
+
const uint8_t kSharpAddressBits
Definition: IRremoteESP8266.h:979
+
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:907
+
const uint16_t kLegoPfMinRepeat
Definition: IRremoteESP8266.h:916
+
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:856
+
const uint16_t kAmcorDefaultRepeat
Definition: IRremoteESP8266.h:820
+
@ KELVINATOR
Definition: IRremoteESP8266.h:734
+
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:967
+
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:844
+
const uint16_t kTcl112AcBits
Definition: IRremoteESP8266.h:995
+
@ TECO
Definition: IRremoteESP8266.h:771
+
const uint16_t kLasertagMinRepeat
Definition: IRremoteESP8266.h:914
+
@ SHARP
Definition: IRremoteESP8266.h:730
+
@ MITSUBISHI
Definition: IRremoteESP8266.h:728
+
@ ELECTRA_AC
Definition: IRremoteESP8266.h:764
+
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:859
+
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:934
+
const uint16_t kNeoclimaMinRepeat
Definition: IRremoteESP8266.h:951
+
const uint16_t kMitsubishi112StateLength
Definition: IRremoteESP8266.h:936
+
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:937
+
const uint16_t kSonyMinRepeat
Definition: IRremoteESP8266.h:991
+
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:869
+
const uint16_t kLgBits
Definition: IRremoteESP8266.h:917
+
const uint16_t kGoodweatherMinRepeat
Definition: IRremoteESP8266.h:882
+
const uint16_t kElectraAcStateLength
Definition: IRremoteESP8266.h:871
+
const uint16_t kGreeDefaultRepeat
Definition: IRremoteESP8266.h:885
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8cpp.html new file mode 100644 index 000000000..33a3b4df7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8cpp.html @@ -0,0 +1,80 @@ + + + + + + + +IRremoteESP8266: src/IRsend.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRsend.cpp File Reference
+
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h.html new file mode 100644 index 000000000..1d8ef27da --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h.html @@ -0,0 +1,419 @@ + + + + + + + +IRremoteESP8266: src/IRsend.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRsend.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  stdAc::state_t
 Structure to hold a common A/C state. More...
 
class  IRsend
 Class for sending all basic IR protocols. More...
 
+ + + + +

+Namespaces

 stdAc
 Enumerators and Structures for the Common A/C API.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Enumerations

enum  stdAc::opmode_t {
+  stdAc::opmode_t::kOff = -1, +stdAc::opmode_t::kAuto = 0, +stdAc::opmode_t::kCool = 1, +stdAc::opmode_t::kHeat = 2, +
+  stdAc::opmode_t::kDry = 3, +stdAc::opmode_t::kFan = 4, +stdAc::opmode_t::kLastOpmodeEnum = kFan +
+ }
 Common A/C settings for A/C operating modes. More...
 
enum  stdAc::fanspeed_t {
+  stdAc::fanspeed_t::kAuto = 0, +stdAc::fanspeed_t::kMin = 1, +stdAc::fanspeed_t::kLow = 2, +stdAc::fanspeed_t::kMedium = 3, +
+  stdAc::fanspeed_t::kHigh = 4, +stdAc::fanspeed_t::kMax = 5, +stdAc::fanspeed_t::kLastFanspeedEnum = kMax +
+ }
 Common A/C settings for Fan Speeds. More...
 
enum  stdAc::swingv_t {
+  stdAc::swingv_t::kOff = -1, +stdAc::swingv_t::kAuto = 0, +stdAc::swingv_t::kHighest = 1, +stdAc::swingv_t::kHigh = 2, +
+  stdAc::swingv_t::kMiddle = 3, +stdAc::swingv_t::kLow = 4, +stdAc::swingv_t::kLowest = 5, +stdAc::swingv_t::kLastSwingvEnum = kLowest +
+ }
 Common A/C settings for Vertical Swing. More...
 
enum  stdAc::swingh_t {
+  stdAc::swingh_t::kOff = -1, +stdAc::swingh_t::kAuto = 0, +stdAc::swingh_t::kLeftMax = 1, +stdAc::swingh_t::kLeft = 2, +
+  stdAc::swingh_t::kMiddle = 3, +stdAc::swingh_t::kRight = 4, +stdAc::swingh_t::kRightMax = 5, +stdAc::swingh_t::kWide = 6, +
+  stdAc::swingh_t::kLastSwinghEnum = kWide +
+ }
 Common A/C settings for Horizontal Swing. More...
 
enum  fujitsu_ac_remote_model_t {
+  ARRAH2E = 1, +ARDB1, +ARREB1E, +ARJW2, +
+  ARRY4 +
+ }
 Fujitsu A/C model numbers. More...
 
enum  gree_ac_remote_model_t { YAW1F = 1, +YBOFB + }
 Gree A/C model numbers. More...
 
enum  hitachi_ac1_remote_model_t { R_LT0541_HTA_A = 1, +R_LT0541_HTA_B + }
 HITACHI_AC1 A/C model numbers. More...
 
enum  panasonic_ac_remote_model_t {
+  kPanasonicUnknown = 0, +kPanasonicLke = 1, +kPanasonicNke = 2, +kPanasonicDke = 3, +
+  kPanasonicJke = 4, +kPanasonicCkp = 5, +kPanasonicRkr = 6 +
+ }
 Panasonic A/C model numbers. More...
 
enum  whirlpool_ac_remote_model_t { DG11J13A = 1, +DG11J191 + }
 Whirlpool A/C model numbers. More...
 
enum  lg_ac_remote_model_t { GE6711AR2853M = 1, +AKB75215403 + }
 LG A/C model numbers. More...
 
+ + + + + + + + + + + +

+Variables

const int8_t kPeriodOffset = -2
 
const uint8_t kDutyDefault = 50
 
const uint8_t kDutyMax = 100
 
const uint16_t kMaxAccurateUsecDelay = 16383
 
const uint32_t kDefaultMessageGap = 100000
 
+

Enumeration Type Documentation

+ +

◆ fujitsu_ac_remote_model_t

+ +
+
+ + + + +
enum fujitsu_ac_remote_model_t
+
+ +

Fujitsu A/C model numbers.

+ + + + + + +
Enumerator
ARRAH2E 
ARDB1 
ARREB1E 
ARJW2 
ARRY4 
+ +
+
+ +

◆ gree_ac_remote_model_t

+ +
+
+ + + + +
enum gree_ac_remote_model_t
+
+ +

Gree A/C model numbers.

+ + + +
Enumerator
YAW1F 
YBOFB 
+ +
+
+ +

◆ hitachi_ac1_remote_model_t

+ +
+
+ + + + +
enum hitachi_ac1_remote_model_t
+
+ +

HITACHI_AC1 A/C model numbers.

+ + + +
Enumerator
R_LT0541_HTA_A 
R_LT0541_HTA_B 
+ +
+
+ +

◆ lg_ac_remote_model_t

+ +
+
+ + + + +
enum lg_ac_remote_model_t
+
+ +

LG A/C model numbers.

+ + + +
Enumerator
GE6711AR2853M 
AKB75215403 
+ +
+
+ +

◆ panasonic_ac_remote_model_t

+ +
+
+ + + + +
enum panasonic_ac_remote_model_t
+
+ +

Panasonic A/C model numbers.

+ + + + + + + + +
Enumerator
kPanasonicUnknown 
kPanasonicLke 
kPanasonicNke 
kPanasonicDke 
kPanasonicJke 
kPanasonicCkp 
kPanasonicRkr 
+ +
+
+ +

◆ whirlpool_ac_remote_model_t

+ +
+
+ + + + +
enum whirlpool_ac_remote_model_t
+
+ +

Whirlpool A/C model numbers.

+ + + +
Enumerator
DG11J13A 
DG11J191 
+ +
+
+

Variable Documentation

+ +

◆ kDefaultMessageGap

+ +
+
+ + + + +
const uint32_t kDefaultMessageGap = 100000
+
+ +
+
+ +

◆ kDutyDefault

+ +
+
+ + + + +
const uint8_t kDutyDefault = 50
+
+ +
+
+ +

◆ kDutyMax

+ +
+
+ + + + +
const uint8_t kDutyMax = 100
+
+ +
+
+ +

◆ kMaxAccurateUsecDelay

+ +
+
+ + + + +
const uint16_t kMaxAccurateUsecDelay = 16383
+
+ +
+
+ +

◆ kPeriodOffset

+ +
+
+ + + + +
const int8_t kPeriodOffset = -2
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h_source.html new file mode 100644 index 000000000..5afbc44c9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRsend_8h_source.html @@ -0,0 +1,1078 @@ + + + + + + + +IRremoteESP8266: src/IRsend.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRsend.h
+
+
+Go to the documentation of this file.
1 // Copyright 2009 Ken Shirriff
+
2 // Copyright 2015 Mark Szabo
+
3 // Copyright 2017 David Conran
+
4 #ifndef IRSEND_H_
+
5 #define IRSEND_H_
+
6 
+
7 #define __STDC_LIMIT_MACROS
+
8 #include <stdint.h>
+
9 #include "IRremoteESP8266.h"
+
10 
+
11 // Originally from https://github.com/shirriff/Arduino-IRremote/
+
12 // Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for
+
13 // sending IR code on ESP8266
+
14 
+
15 #if TEST || UNIT_TEST
+
16 #define VIRTUAL virtual
+
17 #else
+
18 #define VIRTUAL
+
19 #endif
+
20 
+
21 // Constants
+
22 // Offset (in microseconds) to use in Period time calculations to account for
+
23 // code excution time in producing the software PWM signal.
+
24 #if defined(ESP32)
+
25 // Calculated on a generic ESP-WROOM-32 board with v3.2-18 SDK @ 240MHz
+
26 const int8_t kPeriodOffset = -2;
+
27 #elif (defined(ESP8266) && F_CPU == 160000000L) // NOLINT(whitespace/parens)
+
28 // Calculated on an ESP8266 NodeMCU v2 board using:
+
29 // v2.6.0 with v2.5.2 ESP core @ 160MHz
+
30 const int8_t kPeriodOffset = -2;
+
31 #else // (defined(ESP8266) && F_CPU == 160000000L)
+
32 // Calculated on ESP8266 Wemos D1 mini using v2.4.1 with v2.4.0 ESP core @ 40MHz
+
33 const int8_t kPeriodOffset = -5;
+
34 #endif // (defined(ESP8266) && F_CPU == 160000000L)
+
35 const uint8_t kDutyDefault = 50; // Percentage
+
36 const uint8_t kDutyMax = 100; // Percentage
+
37 // delayMicroseconds() is only accurate to 16383us.
+
38 // Ref: https://www.arduino.cc/en/Reference/delayMicroseconds
+
39 const uint16_t kMaxAccurateUsecDelay = 16383;
+
40 // Usecs to wait between messages we don't know the proper gap time.
+
41 const uint32_t kDefaultMessageGap = 100000;
+
42 
+
44 namespace stdAc {
+
46  enum class opmode_t {
+
47  kOff = -1,
+
48  kAuto = 0,
+
49  kCool = 1,
+
50  kHeat = 2,
+
51  kDry = 3,
+
52  kFan = 4,
+
53  // Add new entries before this one, and update it to point to the last entry
+ +
55  };
+
56 
+
58  enum class fanspeed_t {
+
59  kAuto = 0,
+
60  kMin = 1,
+
61  kLow = 2,
+
62  kMedium = 3,
+
63  kHigh = 4,
+
64  kMax = 5,
+
65  // Add new entries before this one, and update it to point to the last entry
+ +
67  };
+
68 
+
70  enum class swingv_t {
+
71  kOff = -1,
+
72  kAuto = 0,
+
73  kHighest = 1,
+
74  kHigh = 2,
+
75  kMiddle = 3,
+
76  kLow = 4,
+
77  kLowest = 5,
+
78  // Add new entries before this one, and update it to point to the last entry
+ +
80  };
+
81 
+
83  enum class swingh_t {
+
84  kOff = -1,
+
85  kAuto = 0, // a.k.a. On.
+
86  kLeftMax = 1,
+
87  kLeft = 2,
+
88  kMiddle = 3,
+
89  kRight = 4,
+
90  kRightMax = 5,
+
91  kWide = 6, // a.k.a. left & right at the same time.
+
92  // Add new entries before this one, and update it to point to the last entry
+ +
94  };
+
95 
+
97  typedef struct {
+ +
99  int16_t model;
+
100  bool power;
+ +
102  float degrees;
+
103  bool celsius;
+ + + +
107  bool quiet;
+
108  bool turbo;
+
109  bool econo;
+
110  bool light;
+
111  bool filter;
+
112  bool clean;
+
113  bool beep;
+
114  int16_t sleep;
+
115  int16_t clock;
+
116  } state_t;
+
117 }; // namespace stdAc
+
118 
+ +
121  ARRAH2E = 1, // (1) AR-RAH2E, AR-RAC1E, AR-RAE1E (Default)
+
122  ARDB1, // (2) AR-DB1, AR-DL10 (AR-DL10 swing doesn't work)
+
123  ARREB1E, // (3) AR-REB1E
+
124  ARJW2, // (4) AR-JW2 (Same as ARDB1 but with horiz control)
+
125  ARRY4, // (5) AR-RY4 (Same as AR-RAH2E but with clean & filter)
+
126 };
+
127 
+ +
130  YAW1F = 1, // (1) Ultimate, EKOKAI, RusClimate (Default)
+
131  YBOFB, // (2) Green, YBOFB2, YAPOF3
+
132 };
+
133 
+ +
136  R_LT0541_HTA_A = 1, // (1) R-LT0541-HTA Remote in "A" setting. (Default)
+
137  R_LT0541_HTA_B, // (2) R-LT0541-HTA Remote in "B" setting.
+
138 };
+
139 
+ + + + +
145  kPanasonicDke = 3, // PKR too.
+ + + +
149 };
+
150 
+ +
153  DG11J13A = 1, // DG11J1-04 too
+ +
155 };
+
156 
+ +
159  GE6711AR2853M = 1, // (1) LG 28-bit Protocol (default)
+
160  AKB75215403, // (2) LG2 28-bit Protocol
+
161 };
+
162 
+
163 
+
164 // Classes
+
165 
+
170 class IRsend {
+
171  public:
+
172  explicit IRsend(uint16_t IRsendPin, bool inverted = false,
+
173  bool use_modulation = true);
+
174  void begin();
+
175  void enableIROut(uint32_t freq, uint8_t duty = kDutyDefault);
+
176  VIRTUAL void _delayMicroseconds(uint32_t usec);
+
177  VIRTUAL uint16_t mark(uint16_t usec);
+
178  VIRTUAL void space(uint32_t usec);
+
179  int8_t calibrate(uint16_t hz = 38000U);
+
180  void sendRaw(const uint16_t buf[], const uint16_t len, const uint16_t hz);
+
181  void sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark,
+
182  uint32_t zerospace, uint64_t data, uint16_t nbits,
+
183  bool MSBfirst = true);
+
184  void sendManchesterData(const uint16_t half_period, const uint64_t data,
+
185  const uint16_t nbits, const bool MSBfirst = true,
+
186  const bool GEThomas = true);
+
187  void sendManchester(const uint16_t headermark, const uint32_t headerspace,
+
188  const uint16_t half_period, const uint16_t footermark,
+
189  const uint32_t gap, const uint64_t data,
+
190  const uint16_t nbits, const uint16_t frequency = 38,
+
191  const bool MSBfirst = true,
+
192  const uint16_t repeat = kNoRepeat,
+
193  const uint8_t dutycycle = kDutyDefault,
+
194  const bool GEThomas = true);
+
195  void sendGeneric(const uint16_t headermark, const uint32_t headerspace,
+
196  const uint16_t onemark, const uint32_t onespace,
+
197  const uint16_t zeromark, const uint32_t zerospace,
+
198  const uint16_t footermark, const uint32_t gap,
+
199  const uint64_t data, const uint16_t nbits,
+
200  const uint16_t frequency, const bool MSBfirst,
+
201  const uint16_t repeat, const uint8_t dutycycle);
+
202  void sendGeneric(const uint16_t headermark, const uint32_t headerspace,
+
203  const uint16_t onemark, const uint32_t onespace,
+
204  const uint16_t zeromark, const uint32_t zerospace,
+
205  const uint16_t footermark, const uint32_t gap,
+
206  const uint32_t mesgtime, const uint64_t data,
+
207  const uint16_t nbits, const uint16_t frequency,
+
208  const bool MSBfirst, const uint16_t repeat,
+
209  const uint8_t dutycycle);
+
210  void sendGeneric(const uint16_t headermark, const uint32_t headerspace,
+
211  const uint16_t onemark, const uint32_t onespace,
+
212  const uint16_t zeromark, const uint32_t zerospace,
+
213  const uint16_t footermark, const uint32_t gap,
+
214  const uint8_t *dataptr, const uint16_t nbytes,
+
215  const uint16_t frequency, const bool MSBfirst,
+
216  const uint16_t repeat, const uint8_t dutycycle);
+
217  static uint16_t minRepeats(const decode_type_t protocol);
+
218  static uint16_t defaultBits(const decode_type_t protocol);
+
219  bool send(const decode_type_t type, const uint64_t data,
+
220  const uint16_t nbits, const uint16_t repeat = kNoRepeat);
+
221  bool send(const decode_type_t type, const uint8_t *state,
+
222  const uint16_t nbytes);
+
223 #if (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO || \
+
224  SEND_MIDEA24)
+
225  void sendNEC(uint64_t data, uint16_t nbits = kNECBits,
+
226  uint16_t repeat = kNoRepeat);
+
227  uint32_t encodeNEC(uint16_t address, uint16_t command);
+
228 #endif
+
229 #if SEND_SONY
+
230  // sendSony() should typically be called with repeat=2 as Sony devices
+
231  // expect the code to be sent at least 3 times. (code + 2 repeats = 3 codes)
+
232  // Legacy use of this procedure was to only send a single code so call it with
+
233  // repeat=0 for backward compatibility. As of v2.0 it defaults to sending
+
234  // a Sony command that will be accepted be a device.
+
235  void sendSony(const uint64_t data, const uint16_t nbits = kSony20Bits,
+
236  const uint16_t repeat = kSonyMinRepeat);
+
237  void sendSony38(const uint64_t data, const uint16_t nbits = kSony20Bits,
+
238  const uint16_t repeat = kSonyMinRepeat + 1);
+
239  uint32_t encodeSony(const uint16_t nbits, const uint16_t command,
+
240  const uint16_t address, const uint16_t extended = 0);
+
241 #endif // SEND_SONY
+
242 #if SEND_SHERWOOD
+
243  void sendSherwood(uint64_t data, uint16_t nbits = kSherwoodBits,
+
244  uint16_t repeat = kSherwoodMinRepeat);
+
245 #endif
+
246 #if SEND_SAMSUNG
+
247  void sendSAMSUNG(const uint64_t data, const uint16_t nbits = kSamsungBits,
+
248  const uint16_t repeat = kNoRepeat);
+
249  uint32_t encodeSAMSUNG(const uint8_t customer, const uint8_t command);
+
250 #endif
+
251 #if SEND_SAMSUNG36
+
252  void sendSamsung36(const uint64_t data, const uint16_t nbits = kSamsung36Bits,
+
253  const uint16_t repeat = kNoRepeat);
+
254 #endif
+
255 #if SEND_SAMSUNG_AC
+
256  void sendSamsungAC(const unsigned char data[],
+
257  const uint16_t nbytes = kSamsungAcStateLength,
+
258  const uint16_t repeat = kSamsungAcDefaultRepeat);
+
259 #endif
+
260 #if SEND_LG
+
261  void sendLG(uint64_t data, uint16_t nbits = kLgBits,
+
262  uint16_t repeat = kNoRepeat);
+
263  void sendLG2(uint64_t data, uint16_t nbits = kLgBits,
+
264  uint16_t repeat = kNoRepeat);
+
265  uint32_t encodeLG(uint16_t address, uint16_t command);
+
266 #endif
+
267 #if (SEND_SHARP || SEND_DENON)
+
268  uint32_t encodeSharp(const uint16_t address, const uint16_t command,
+
269  const uint16_t expansion = 1, const uint16_t check = 0,
+
270  const bool MSBfirst = false);
+
271  void sendSharp(const uint16_t address, const uint16_t command,
+
272  const uint16_t nbits = kSharpBits,
+
273  const uint16_t repeat = kNoRepeat);
+
274  void sendSharpRaw(const uint64_t data, const uint16_t nbits = kSharpBits,
+
275  const uint16_t repeat = kNoRepeat);
+
276 #endif
+
277 #if SEND_SHARP_AC
+
278  void sendSharpAc(const unsigned char data[],
+
279  const uint16_t nbytes = kSharpAcStateLength,
+
280  const uint16_t repeat = kSharpAcDefaultRepeat);
+
281 #endif // SEND_SHARP_AC
+
282 #if SEND_JVC
+
283  void sendJVC(uint64_t data, uint16_t nbits = kJvcBits,
+
284  uint16_t repeat = kNoRepeat);
+
285  uint16_t encodeJVC(uint8_t address, uint8_t command);
+
286 #endif
+
287 #if SEND_DENON
+
288  void sendDenon(uint64_t data, uint16_t nbits = kDenonBits,
+
289  uint16_t repeat = kNoRepeat);
+
290 #endif
+
291 #if SEND_SANYO
+
292  uint64_t encodeSanyoLC7461(uint16_t address, uint8_t command);
+
293  void sendSanyoLC7461(const uint64_t data,
+
294  const uint16_t nbits = kSanyoLC7461Bits,
+
295  const uint16_t repeat = kNoRepeat);
+
296 #endif
+
297 #if SEND_DISH
+
298  // sendDISH() should typically be called with repeat=3 as DISH devices
+
299  // expect the code to be sent at least 4 times. (code + 3 repeats = 4 codes)
+
300  // Legacy use of this procedure was only to send a single code
+
301  // so use repeat=0 for backward compatibility.
+
302  void sendDISH(uint64_t data, uint16_t nbits = kDishBits,
+
303  uint16_t repeat = kDishMinRepeat);
+
304 #endif
+
305 #if (SEND_PANASONIC || SEND_DENON)
+
306  void sendPanasonic64(const uint64_t data,
+
307  const uint16_t nbits = kPanasonicBits,
+
308  const uint16_t repeat = kNoRepeat);
+
309  void sendPanasonic(const uint16_t address, const uint32_t data,
+
310  const uint16_t nbits = kPanasonicBits,
+
311  const uint16_t repeat = kNoRepeat);
+
312  uint64_t encodePanasonic(const uint16_t manufacturer, const uint8_t device,
+
313  const uint8_t subdevice, const uint8_t function);
+
314 #endif
+
315 #if SEND_RC5
+
316  void sendRC5(const uint64_t data, uint16_t nbits = kRC5XBits,
+
317  const uint16_t repeat = kNoRepeat);
+
318  uint16_t encodeRC5(const uint8_t address, const uint8_t command,
+
319  const bool key_released = false);
+
320  uint16_t encodeRC5X(const uint8_t address, const uint8_t command,
+
321  const bool key_released = false);
+
322  uint64_t toggleRC5(const uint64_t data);
+
323 #endif
+
324 #if SEND_RC6
+
325  void sendRC6(const uint64_t data, const uint16_t nbits = kRC6Mode0Bits,
+
326  const uint16_t repeat = kNoRepeat);
+
327  uint64_t encodeRC6(const uint32_t address, const uint8_t command,
+
328  const uint16_t mode = kRC6Mode0Bits);
+
329  uint64_t toggleRC6(const uint64_t data, const uint16_t nbits = kRC6Mode0Bits);
+
330 #endif
+
331 #if SEND_RCMM
+
332  void sendRCMM(uint64_t data, uint16_t nbits = kRCMMBits,
+
333  uint16_t repeat = kNoRepeat);
+
334 #endif
+
335 #if SEND_COOLIX
+
336  void sendCOOLIX(uint64_t data, uint16_t nbits = kCoolixBits,
+
337  uint16_t repeat = kCoolixDefaultRepeat);
+
338 #endif
+
339 #if SEND_WHYNTER
+
340  void sendWhynter(const uint64_t data, const uint16_t nbits = kWhynterBits,
+
341  const uint16_t repeat = kNoRepeat);
+
342 #endif
+
343 #if SEND_MITSUBISHI
+
344  void sendMitsubishi(uint64_t data, uint16_t nbits = kMitsubishiBits,
+
345  uint16_t repeat = kMitsubishiMinRepeat);
+
346 #endif
+
347 #if SEND_MITSUBISHI136
+
348  void sendMitsubishi136(const unsigned char data[],
+
349  const uint16_t nbytes = kMitsubishi136StateLength,
+
350  const uint16_t repeat = kMitsubishi136MinRepeat);
+
351 #endif
+
352 #if SEND_MITSUBISHI112
+
353  void sendMitsubishi112(const unsigned char data[],
+
354  const uint16_t nbytes = kMitsubishi112StateLength,
+
355  const uint16_t repeat = kMitsubishi112MinRepeat);
+
356 #endif
+
357 #if SEND_MITSUBISHI2
+
358  void sendMitsubishi2(uint64_t data, uint16_t nbits = kMitsubishiBits,
+
359  uint16_t repeat = kMitsubishiMinRepeat);
+
360 #endif
+
361 #if SEND_MITSUBISHI_AC
+
362  void sendMitsubishiAC(const unsigned char data[],
+
363  const uint16_t nbytes = kMitsubishiACStateLength,
+
364  const uint16_t repeat = kMitsubishiACMinRepeat);
+
365 #endif
+
366 #if SEND_MITSUBISHIHEAVY
+ +
368  const unsigned char data[],
+
369  const uint16_t nbytes = kMitsubishiHeavy88StateLength,
+
370  const uint16_t repeat = kMitsubishiHeavy88MinRepeat);
+ +
372  const unsigned char data[],
+
373  const uint16_t nbytes = kMitsubishiHeavy152StateLength,
+
374  const uint16_t repeat = kMitsubishiHeavy152MinRepeat);
+
375 #endif
+
376 #if SEND_FUJITSU_AC
+
377  void sendFujitsuAC(const unsigned char data[], const uint16_t nbytes,
+
378  const uint16_t repeat = kFujitsuAcMinRepeat);
+
379 #endif
+
380 #if SEND_INAX
+
381  void sendInax(const uint64_t data, const uint16_t nbits = kInaxBits,
+
382  const uint16_t repeat = kInaxMinRepeat);
+
383 #endif // SEND_INAX
+
384 #if SEND_GLOBALCACHE
+
385  void sendGC(uint16_t buf[], uint16_t len);
+
386 #endif
+
387 #if SEND_KELVINATOR
+
388  void sendKelvinator(const unsigned char data[],
+
389  const uint16_t nbytes = kKelvinatorStateLength,
+
390  const uint16_t repeat = kKelvinatorDefaultRepeat);
+
391 #endif
+
392 #if SEND_DAIKIN
+
393  void sendDaikin(const unsigned char data[],
+
394  const uint16_t nbytes = kDaikinStateLength,
+
395  const uint16_t repeat = kDaikinDefaultRepeat);
+
396 #endif
+
397 #if SEND_DAIKIN64
+
398  void sendDaikin64(const uint64_t data, const uint16_t nbits = kDaikin64Bits,
+
399  const uint16_t repeat = kDaikin64DefaultRepeat);
+
400 #endif // SEND_DAIKIN64
+
401 #if SEND_DAIKIN128
+
402  void sendDaikin128(const unsigned char data[],
+
403  const uint16_t nbytes = kDaikin128StateLength,
+
404  const uint16_t repeat = kDaikin128DefaultRepeat);
+
405 #endif // SEND_DAIKIN128
+
406 #if SEND_DAIKIN152
+
407  void sendDaikin152(const unsigned char data[],
+
408  const uint16_t nbytes = kDaikin152StateLength,
+
409  const uint16_t repeat = kDaikin152DefaultRepeat);
+
410 #endif // SEND_DAIKIN152
+
411 #if SEND_DAIKIN160
+
412  void sendDaikin160(const unsigned char data[],
+
413  const uint16_t nbytes = kDaikin160StateLength,
+
414  const uint16_t repeat = kDaikin160DefaultRepeat);
+
415 #endif // SEND_DAIKIN160
+
416 #if SEND_DAIKIN176
+
417  void sendDaikin176(const unsigned char data[],
+
418  const uint16_t nbytes = kDaikin176StateLength,
+
419  const uint16_t repeat = kDaikin176DefaultRepeat);
+
420 #endif // SEND_DAIKIN176
+
421 #if SEND_DAIKIN2
+
422  void sendDaikin2(const unsigned char data[],
+
423  const uint16_t nbytes = kDaikin2StateLength,
+
424  const uint16_t repeat = kDaikin2DefaultRepeat);
+
425 #endif
+
426 #if SEND_DAIKIN216
+
427  void sendDaikin216(const unsigned char data[],
+
428  const uint16_t nbytes = kDaikin216StateLength,
+
429  const uint16_t repeat = kDaikin216DefaultRepeat);
+
430 #endif
+
431 #if SEND_AIWA_RC_T501
+
432  void sendAiwaRCT501(uint64_t data, uint16_t nbits = kAiwaRcT501Bits,
+
433  uint16_t repeat = kAiwaRcT501MinRepeats);
+
434 #endif
+
435 #if SEND_GREE
+
436  void sendGree(const uint64_t data, const uint16_t nbits = kGreeBits,
+
437  const uint16_t repeat = kGreeDefaultRepeat);
+
438  void sendGree(const uint8_t data[], const uint16_t nbytes = kGreeStateLength,
+
439  const uint16_t repeat = kGreeDefaultRepeat);
+
440 #endif
+
441 #if SEND_GOODWEATHER
+
442  void sendGoodweather(const uint64_t data,
+
443  const uint16_t nbits = kGoodweatherBits,
+
444  const uint16_t repeat = kGoodweatherMinRepeat);
+
445 #endif // SEND_GOODWEATHER
+
446 #if SEND_PRONTO
+
447  void sendPronto(uint16_t data[], uint16_t len, uint16_t repeat = kNoRepeat);
+
448 #endif
+
449 #if SEND_ARGO
+
450  void sendArgo(const unsigned char data[],
+
451  const uint16_t nbytes = kArgoStateLength,
+
452  const uint16_t repeat = kArgoDefaultRepeat);
+
453 #endif
+
454 #if SEND_TROTEC
+
455  void sendTrotec(const unsigned char data[],
+
456  const uint16_t nbytes = kTrotecStateLength,
+
457  const uint16_t repeat = kTrotecDefaultRepeat);
+
458 #endif
+
459 #if SEND_NIKAI
+
460  void sendNikai(uint64_t data, uint16_t nbits = kNikaiBits,
+
461  uint16_t repeat = kNoRepeat);
+
462 #endif
+
463 #if SEND_TOSHIBA_AC
+
464  void sendToshibaAC(const unsigned char data[],
+
465  const uint16_t nbytes = kToshibaACStateLength,
+
466  const uint16_t repeat = kToshibaACMinRepeat);
+
467 #endif
+
468 #if SEND_MIDEA
+
469  void sendMidea(uint64_t data, uint16_t nbits = kMideaBits,
+
470  uint16_t repeat = kMideaMinRepeat);
+
471 #endif // SEND_MIDEA
+
472 #if SEND_MIDEA24
+
473  void sendMidea24(const uint64_t data, const uint16_t nbits = kMidea24Bits,
+
474  const uint16_t repeat = kMidea24MinRepeat);
+
475 #endif // SEND_MIDEA24
+
476 #if SEND_MAGIQUEST
+
477  void sendMagiQuest(const uint64_t data, const uint16_t nbits = kMagiquestBits,
+
478  const uint16_t repeat = kNoRepeat);
+
479  uint64_t encodeMagiQuest(const uint32_t wand_id, const uint16_t magnitude);
+
480 #endif
+
481 #if SEND_LASERTAG
+
482  void sendLasertag(uint64_t data, uint16_t nbits = kLasertagBits,
+
483  uint16_t repeat = kLasertagMinRepeat);
+
484 #endif
+
485 #if SEND_CARRIER_AC
+
486  void sendCarrierAC(uint64_t data, uint16_t nbits = kCarrierAcBits,
+
487  uint16_t repeat = kCarrierAcMinRepeat);
+
488 #endif
+
489 #if SEND_CARRIER_AC40
+
490  void sendCarrierAC40(uint64_t data, uint16_t nbits = kCarrierAc40Bits,
+
491  uint16_t repeat = kCarrierAc40MinRepeat);
+
492 #endif
+
493 #if SEND_CARRIER_AC64
+
494  void sendCarrierAC64(uint64_t data, uint16_t nbits = kCarrierAc64Bits,
+
495  uint16_t repeat = kCarrierAc64MinRepeat);
+
496 #endif
+
497 #if (SEND_HAIER_AC || SEND_HAIER_AC_YRW02)
+
498  void sendHaierAC(const unsigned char data[],
+
499  const uint16_t nbytes = kHaierACStateLength,
+
500  const uint16_t repeat = kHaierAcDefaultRepeat);
+
501 #endif
+
502 #if SEND_HAIER_AC_YRW02
+
503  void sendHaierACYRW02(const unsigned char data[],
+
504  const uint16_t nbytes = kHaierACYRW02StateLength,
+
505  const uint16_t repeat = kHaierAcYrw02DefaultRepeat);
+
506 #endif
+
507 #if SEND_HITACHI_AC
+
508  void sendHitachiAC(const unsigned char data[],
+
509  const uint16_t nbytes = kHitachiAcStateLength,
+
510  const uint16_t repeat = kHitachiAcDefaultRepeat);
+
511 #endif
+
512 #if SEND_HITACHI_AC1
+
513  void sendHitachiAC1(const unsigned char data[],
+
514  const uint16_t nbytes = kHitachiAc1StateLength,
+
515  const uint16_t repeat = kHitachiAcDefaultRepeat);
+
516 #endif
+
517 #if SEND_HITACHI_AC2
+
518  void sendHitachiAC2(const unsigned char data[],
+
519  const uint16_t nbytes = kHitachiAc2StateLength,
+
520  const uint16_t repeat = kHitachiAcDefaultRepeat);
+
521 #endif
+
522 #if SEND_HITACHI_AC3
+
523  void sendHitachiAc3(const unsigned char data[],
+
524  const uint16_t nbytes, // No default as there as so many
+
525  // different sizes
+
526  const uint16_t repeat = kHitachiAcDefaultRepeat);
+
527 #endif // SEND_HITACHI_AC3
+
528 #if SEND_HITACHI_AC344
+
529  void sendHitachiAc344(const unsigned char data[],
+
530  const uint16_t nbytes = kHitachiAc344StateLength,
+
531  const uint16_t repeat = kHitachiAcDefaultRepeat);
+
532 #endif // SEND_HITACHI_AC344
+
533 #if SEND_HITACHI_AC424
+
534  void sendHitachiAc424(const unsigned char data[],
+
535  const uint16_t nbytes = kHitachiAc424StateLength,
+
536  const uint16_t repeat = kHitachiAcDefaultRepeat);
+
537 #endif // SEND_HITACHI_AC424
+
538 #if SEND_GICABLE
+
539  void sendGICable(uint64_t data, uint16_t nbits = kGicableBits,
+
540  uint16_t repeat = kGicableMinRepeat);
+
541 #endif
+
542 #if SEND_WHIRLPOOL_AC
+
543  void sendWhirlpoolAC(const unsigned char data[],
+
544  const uint16_t nbytes = kWhirlpoolAcStateLength,
+
545  const uint16_t repeat = kWhirlpoolAcDefaultRepeat);
+
546 #endif
+
547 #if SEND_LUTRON
+
548  void sendLutron(uint64_t data, uint16_t nbits = kLutronBits,
+
549  uint16_t repeat = kNoRepeat);
+
550 #endif
+
551 #if SEND_ELECTRA_AC
+
552  void sendElectraAC(const unsigned char data[],
+
553  const uint16_t nbytes = kElectraAcStateLength,
+
554  const uint16_t repeat = kNoRepeat);
+
555 #endif
+
556 #if SEND_PANASONIC_AC
+
557  void sendPanasonicAC(const unsigned char data[],
+
558  const uint16_t nbytes = kPanasonicAcStateLength,
+
559  const uint16_t repeat = kPanasonicAcDefaultRepeat);
+
560 #endif
+
561 #if SEND_PIONEER
+
562  void sendPioneer(const uint64_t data, const uint16_t nbits = kPioneerBits,
+
563  const uint16_t repeat = kNoRepeat);
+
564  uint64_t encodePioneer(uint16_t address, uint16_t command);
+
565 #endif
+
566 #if SEND_MWM
+
567  void sendMWM(const unsigned char data[], const uint16_t nbytes,
+
568  const uint16_t repeat = kNoRepeat);
+
569 #endif
+
570 #if SEND_VESTEL_AC
+
571  void sendVestelAc(const uint64_t data, const uint16_t nbits = kVestelAcBits,
+
572  const uint16_t repeat = kNoRepeat);
+
573 #endif
+
574 #if SEND_TCL112AC
+
575  void sendTcl112Ac(const unsigned char data[],
+
576  const uint16_t nbytes = kTcl112AcStateLength,
+
577  const uint16_t repeat = kTcl112AcDefaultRepeat);
+
578 #endif
+
579 #if SEND_TECO
+
580  void sendTeco(const uint64_t data, const uint16_t nbits = kTecoBits,
+
581  const uint16_t repeat = kNoRepeat);
+
582 #endif
+
583 #if SEND_LEGOPF
+
584  void sendLegoPf(const uint64_t data, const uint16_t nbits = kLegoPfBits,
+
585  const uint16_t repeat = kLegoPfMinRepeat);
+
586 #endif
+
587 #if SEND_NEOCLIMA
+
588  void sendNeoclima(const unsigned char data[],
+
589  const uint16_t nbytes = kNeoclimaStateLength,
+
590  const uint16_t repeat = kNeoclimaMinRepeat);
+
591 #endif // SEND_NEOCLIMA
+
592 #if SEND_AMCOR
+
593  void sendAmcor(const unsigned char data[],
+
594  const uint16_t nbytes = kAmcorStateLength,
+
595  const uint16_t repeat = kAmcorDefaultRepeat);
+
596 #endif // SEND_AMCOR
+
597 #if SEND_EPSON
+
598  void sendEpson(uint64_t data, uint16_t nbits = kEpsonBits,
+
599  uint16_t repeat = kEpsonMinRepeat);
+
600 #endif
+
601 #if SEND_SYMPHONY
+
602  void sendSymphony(uint64_t data, uint16_t nbits = kSymphonyBits,
+
603  uint16_t repeat = kSymphonyDefaultRepeat);
+
604 #endif
+
605 #if SEND_AIRWELL
+
606  void sendAirwell(uint64_t data, uint16_t nbits = kAirwellBits,
+
607  uint16_t repeat = kAirwellMinRepeats);
+
608 #endif
+
609 #if SEND_DELONGHI_AC
+
610  void sendDelonghiAc(uint64_t data, uint16_t nbits = kDelonghiAcBits,
+
611  uint16_t repeat = kDelonghiAcDefaultRepeat);
+
612 #endif
+
613 #if SEND_DOSHISHA
+
614  void sendDoshisha(const uint64_t data, uint16_t nbits = kDoshishaBits,
+
615  const uint16_t repeat = kNoRepeat);
+
616  uint64_t encodeDoshisha(const uint8_t command, const uint8_t channel = 0);
+
617 #endif // SEND_DOSHISHA
+
618 #if SEND_MULTIBRACKETS
+
619  void sendMultibrackets(const uint64_t data,
+
620  const uint16_t nbits = kMultibracketsBits,
+
621  const uint16_t repeat = kMultibracketsDefaultRepeat);
+
622 #endif
+
623 #if SEND_CORONA_AC
+
624  void sendCoronaAc(const uint8_t data[],
+
625  const uint16_t nbytes = kCoronaAcStateLength,
+
626  const uint16_t repeat = kNoRepeat);
+
627 #endif // SEND_CORONA_AC
+
628 #if SEND_ZEPEAL
+
629  void sendZepeal(const uint64_t data,
+
630  const uint16_t nbits = kZepealBits,
+
631  const uint16_t repeat = kZepealMinRepeat);
+
632 #endif
+
633 
+
634  protected:
+
635 #ifdef UNIT_TEST
+
636 #ifndef HIGH
+
637 #define HIGH 0x1
+
638 #endif
+
639 #ifndef LOW
+
640 #define LOW 0x0
+
641 #endif
+
642 #endif // UNIT_TEST
+
643  uint8_t outputOn;
+
644  uint8_t outputOff;
+
645  VIRTUAL void ledOff();
+
646  VIRTUAL void ledOn();
+
647 #ifndef UNIT_TEST
+
648 
+
649  private:
+
650 #else
+
651  uint32_t _freq_unittest;
+
652 #endif // UNIT_TEST
+
653  uint16_t onTimePeriod;
+
654  uint16_t offTimePeriod;
+
655  uint16_t IRpin;
+
656  int8_t periodOffset;
+
657  uint8_t _dutycycle;
+ +
659  uint32_t calcUSecPeriod(uint32_t hz, bool use_offset = true);
+
660 #if SEND_SONY
+
661  void _sendSony(const uint64_t data, const uint16_t nbits,
+
662  const uint16_t repeat, const uint16_t freq);
+
663 #endif // SEND_SONY
+
664 };
+
665 
+
666 #endif // IRSEND_H_
+
+
uint32_t calcUSecPeriod(uint32_t hz, bool use_offset=true)
Calculate the period for a given frequency.
Definition: IRsend.cpp:71
+
const uint16_t kDaikin152DefaultRepeat
Definition: IRremoteESP8266.h:854
+
void sendZepeal(const uint64_t data, const uint16_t nbits=kZepealBits, const uint16_t repeat=kZepealMinRepeat)
Send a Zepeal formatted message. Status: STABLE / Works on real device.
Definition: ir_Zepeal.cpp:47
+
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:861
+
void sendHaierACYRW02(const unsigned char data[], const uint16_t nbytes=kHaierACYRW02StateLength, const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
Send a Haier YR-W02 remote A/C formatted message. Status: Alpha / Untested on a real device.
Definition: ir_Haier.cpp:68
+
const uint16_t kHaierAcYrw02DefaultRepeat
Definition: IRremoteESP8266.h:891
+
void sendPronto(uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)
Send a Pronto Code formatted message. Status: STABLE / Known working.
Definition: ir_Pronto.cpp:56
+
uint8_t outputOff
Definition: IRsend.h:644
+
int8_t periodOffset
Definition: IRsend.h:656
+
const uint16_t kMitsubishiACStateLength
Definition: IRremoteESP8266.h:930
+
const uint16_t kMitsubishiHeavy152StateLength
Definition: IRremoteESP8266.h:942
+
const uint16_t kAirwellMinRepeats
Definition: IRremoteESP8266.h:814
+
const uint16_t kMideaMinRepeat
Definition: IRremoteESP8266.h:923
+
int16_t clock
Definition: IRsend.h:115
+
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:879
+
const uint16_t kGreeStateLength
Definition: IRremoteESP8266.h:883
+
uint32_t encodeNEC(uint16_t address, uint16_t command)
Calculate the raw NEC data based on address and command. Status: STABLE / Expected to work.
Definition: ir_NEC.cpp:48
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:714
+
uint64_t encodeDoshisha(const uint8_t command, const uint8_t channel=0)
Encode Doshisha combining constant values with command and channel. Status: STABLE / Working.
Definition: ir_Doshisha.cpp:67
+
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:826
+ +
void sendHitachiAc344(const unsigned char data[], const uint16_t nbytes=kHitachiAc344StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi A/C 43-byte/344-bit message. (HITACHI_AC344) Basically the same as sendHitatchiAC() ex...
Definition: ir_Hitachi.cpp:121
+
const uint16_t kDaikin2DefaultRepeat
Definition: IRremoteESP8266.h:843
+
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:945
+
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1008
+ +
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:813
+
const uint16_t kHaierAcDefaultRepeat
Definition: IRremoteESP8266.h:888
+
void sendMidea(uint64_t data, uint16_t nbits=kMideaBits, uint16_t repeat=kMideaMinRepeat)
Send a Midea message Status: Alpha / Needs testing against a real device.
Definition: ir_Midea.cpp:52
+
const uint16_t kTrotecDefaultRepeat
Definition: IRremoteESP8266.h:1004
+
const uint16_t kFujitsuAcMinRepeat
Definition: IRremoteESP8266.h:874
+
void sendLG(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
Send an LG formatted message. (LG) Status: Beta / Should be working.
Definition: ir_LG.cpp:69
+
@ kPanasonicRkr
Definition: IRsend.h:148
+
const uint16_t kMitsubishi136MinRepeat
Definition: IRremoteESP8266.h:935
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
VIRTUAL void _delayMicroseconds(uint32_t usec)
An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds().
Definition: IRsend.cpp:114
+
bool clean
Definition: IRsend.h:112
+
void sendLegoPf(const uint64_t data, const uint16_t nbits=kLegoPfBits, const uint16_t repeat=kLegoPfMinRepeat)
Send a LEGO Power Functions message. Status: Beta / Should work.
Definition: ir_Lego.cpp:33
+
const uint16_t kArgoDefaultRepeat
Definition: IRremoteESP8266.h:823
+
uint8_t outputOn
Definition: IRsend.h:643
+
const uint16_t kHaierACStateLength
Definition: IRremoteESP8266.h:886
+
const uint16_t kHitachiAcStateLength
Definition: IRremoteESP8266.h:892
+ +
const uint16_t kDaikin176StateLength
Definition: IRremoteESP8266.h:855
+
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:963
+
const uint16_t kEpsonMinRepeat
Definition: IRremoteESP8266.h:870
+
const uint16_t kAmcorStateLength
Definition: IRremoteESP8266.h:818
+
bool send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)
Send a simple (up to 64 bits) IR message of a given type. An unknown/unsupported type will send nothi...
Definition: IRsend.cpp:749
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
@ R_LT0541_HTA_B
Definition: IRsend.h:137
+
void sendWhynter(const uint64_t data, const uint16_t nbits=kWhynterBits, const uint16_t repeat=kNoRepeat)
Send a Whynter message. Status: STABLE.
Definition: ir_Whynter.cpp:45
+
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:152
+
void sendMitsubishiAC(const unsigned char data[], const uint16_t nbytes=kMitsubishiACStateLength, const uint16_t repeat=kMitsubishiACMinRepeat)
Send a Mitsubishi 144-bit A/C formatted message. (MITSUBISHI_AC) Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:233
+
void sendNikai(uint64_t data, uint16_t nbits=kNikaiBits, uint16_t repeat=kNoRepeat)
Send a Nikai formatted message. Status: STABLE / Working.
Definition: ir_Nikai.cpp:37
+
const uint32_t kDefaultMessageGap
Definition: IRsend.h:41
+
const uint16_t kMaxAccurateUsecDelay
Definition: IRsend.h:39
+
uint16_t encodeJVC(uint8_t address, uint8_t command)
Calculate the raw JVC data based on address and command. Status: STABLE / Works fine.
Definition: ir_JVC.cpp:78
+
uint16_t onTimePeriod
Definition: IRsend.h:653
+
void sendAiwaRCT501(uint64_t data, uint16_t nbits=kAiwaRcT501Bits, uint16_t repeat=kAiwaRcT501MinRepeats)
Send an Aiwa RC T501 formatted message. Status: BETA / Should work.
Definition: ir_Aiwa.cpp:30
+
uint16_t IRpin
Definition: IRsend.h:655
+
const uint16_t kHitachiAc1StateLength
Definition: IRremoteESP8266.h:895
+
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:824
+
const uint16_t kMitsubishi112MinRepeat
Definition: IRremoteESP8266.h:938
+
void sendSymphony(uint64_t data, uint16_t nbits=kSymphonyBits, uint16_t repeat=kSymphonyDefaultRepeat)
Send a Symphony packet. Status: STABLE / Should be working.
Definition: ir_Symphony.cpp:42
+
void sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits i...
Definition: IRsend.cpp:307
+ +
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:968
+
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:921
+
static uint16_t minRepeats(const decode_type_t protocol)
Get the minimum number of repeats for a given protocol.
Definition: IRsend.cpp:557
+
const uint16_t kNeoclimaStateLength
Definition: IRremoteESP8266.h:949
+
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:129
+
const uint16_t kSamsungAcDefaultRepeat
Definition: IRremoteESP8266.h:973
+
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:977
+
float degrees
Definition: IRsend.h:102
+
uint8_t _dutycycle
Definition: IRsend.h:657
+
bool celsius
Definition: IRsend.h:103
+
void sendLG2(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
Send an LG Variant-2 formatted message. (LG2) Status: Beta / Should be working.
Definition: ir_LG.cpp:103
+
const uint16_t kZepealMinRepeat
Definition: IRremoteESP8266.h:1011
+
VIRTUAL uint16_t mark(uint16_t usec)
Modulate the IR LED for the given period (usec) and at the duty cycle set.
Definition: IRsend.cpp:157
+
@ ARRY4
Definition: IRsend.h:125
+
@ ARDB1
Definition: IRsend.h:122
+ +
void sendDaikin152(const unsigned char data[], const uint16_t nbytes=kDaikin152StateLength, const uint16_t repeat=kDaikin152DefaultRepeat)
Send a Daikin152 (152-bit) A/C formatted message. Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:3169
+
void sendAmcor(const unsigned char data[], const uint16_t nbytes=kAmcorStateLength, const uint16_t repeat=kAmcorDefaultRepeat)
Send a Amcor HVAC formatted message. Status: STABLE / Reported as working.
Definition: ir_Amcor.cpp:39
+
stdAc::swingv_t swingv
Definition: IRsend.h:105
+
void sendLasertag(uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)
Send a Lasertag packet/message. Status: STABLE / Working.
Definition: ir_Lasertag.cpp:33
+
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:135
+
void sendEpson(uint64_t data, uint16_t nbits=kEpsonBits, uint16_t repeat=kEpsonMinRepeat)
Send an Epson formatted message. Status: Beta / Probably works.
Definition: ir_Epson.cpp:24
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
void sendManchesterData(const uint16_t half_period, const uint64_t data, const uint16_t nbits, const bool MSBfirst=true, const bool GEThomas=true)
Generic method for sending Manchester code data. Will send leading or trailing 0's if the nbits is la...
Definition: IRsend.cpp:445
+
const uint16_t kAiwaRcT501MinRepeats
Definition: IRremoteESP8266.h:816
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+ +
const uint16_t kMitsubishiMinRepeat
Definition: IRremoteESP8266.h:929
+
uint64_t encodeSanyoLC7461(uint16_t address, uint8_t command)
Construct a Sanyo LC7461 message.
Definition: ir_Sanyo.cpp:61
+
@ ARJW2
Definition: IRsend.h:124
+
const uint16_t kArgoStateLength
Definition: IRremoteESP8266.h:821
+ +
uint32_t encodeSAMSUNG(const uint8_t customer, const uint8_t command)
Construct a raw Samsung message from the supplied customer(address) & command. Status: STABLE / Shoul...
Definition: ir_Samsung.cpp:89
+
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:952
+
int16_t model
Definition: IRsend.h:99
+
uint64_t toggleRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits)
Flip the toggle bit of a Philips RC-6 data message. Used to indicate a change of remote button's stat...
Definition: ir_RC5_RC6.cpp:157
+
void sendSony(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat)
Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) Status: STABLE / Known working.
Definition: ir_Sony.cpp:46
+
const uint8_t kDutyMax
Definition: IRsend.h:36
+
uint32_t _freq_unittest
Definition: IRsend.h:651
+
const uint16_t kDaikin152StateLength
Definition: IRremoteESP8266.h:852
+
uint32_t encodeLG(uint16_t address, uint16_t command)
Construct a raw 28-bit LG message code from the supplied address & command. Status: STABLE / Works.
Definition: ir_LG.cpp:131
+
void sendRaw(const uint16_t buf[], const uint16_t len, const uint16_t hz)
Send a raw IRremote message.
Definition: IRsend.cpp:539
+
void sendMultibrackets(const uint64_t data, const uint16_t nbits=kMultibracketsBits, const uint16_t repeat=kMultibracketsDefaultRepeat)
Send a Multibrackets formatted message. Status: BETA / Appears to be working.
Definition: ir_Multibrackets.cpp:26
+ +
const uint16_t kHaierACYRW02StateLength
Definition: IRremoteESP8266.h:889
+
uint64_t encodeRC6(const uint32_t address, const uint8_t command, const uint16_t mode=kRC6Mode0Bits)
Encode a Philips RC-6 data message. Status: Beta / Should be working.
Definition: ir_RC5_RC6.cpp:171
+
const uint16_t kMultibracketsDefaultRepeat
Definition: IRremoteESP8266.h:946
+
void sendMitsubishi112(const unsigned char data[], const uint16_t nbytes=kMitsubishi112StateLength, const uint16_t repeat=kMitsubishi112MinRepeat)
Send a Mitsubishi 112-bit A/C formatted message. (MITSUBISHI112) Status: Stable / Reported as working...
Definition: ir_Mitsubishi.cpp:1184
+
@ kPanasonicCkp
Definition: IRsend.h:147
+
void sendWhirlpoolAC(const unsigned char data[], const uint16_t nbytes=kWhirlpoolAcStateLength, const uint16_t repeat=kWhirlpoolAcDefaultRepeat)
Send a Whirlpool A/C message. Status: BETA / Probably works.
Definition: ir_Whirlpool.cpp:50
+ +
void sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark, uint32_t zerospace, uint64_t data, uint16_t nbits, bool MSBfirst=true)
Generic method for sending data that is common to most protocols. Will send leading or trailing 0's i...
Definition: IRsend.cpp:246
+
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:881
+
void sendKelvinator(const unsigned char data[], const uint16_t nbytes=kKelvinatorStateLength, const uint16_t repeat=kKelvinatorDefaultRepeat)
Send a Kelvinator A/C message. Status: STABLE / Known working.
Definition: ir_Kelvinator.cpp:78
+
VIRTUAL void ledOn()
Turn on the IR LED.
Definition: IRsend.cpp:60
+
const uint16_t kGicableMinRepeat
Definition: IRremoteESP8266.h:880
+
void sendHitachiAC1(const unsigned char data[], const uint16_t nbytes=kHitachiAc1StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 13 byte/224-bit A/C formatted message. (HITACHI_AC1) Status: STABLE / Confirmed Workin...
Definition: ir_Hitachi.cpp:87
+
const uint16_t kDaikin216StateLength
Definition: IRremoteESP8266.h:858
+
void sendGICable(uint64_t data, uint16_t nbits=kGicableBits, uint16_t repeat=kGicableMinRepeat)
Send a raw G.I. Cable formatted message. Status: Alpha / Untested.
Definition: ir_GICable.cpp:37
+
const uint16_t kSamsungAcStateLength
Definition: IRremoteESP8266.h:969
+
@ DG11J13A
Definition: IRsend.h:153
+
void sendSharp(const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
Send a Sharp message Status: DEPRECATED / Previously working fine.
Definition: ir_Sharp.cpp:134
+
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:141
+ +
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
+ +
@ AKB75215403
Definition: IRsend.h:160
+
void sendDenon(uint64_t data, uint16_t nbits=kDenonBits, uint16_t repeat=kNoRepeat)
Send a Denon formatted message. Status: STABLE / Should be working.
Definition: ir_Denon.cpp:48
+
void sendCarrierAC64(uint64_t data, uint16_t nbits=kCarrierAc64Bits, uint16_t repeat=kCarrierAc64MinRepeat)
Send a Carrier 64bit HVAC formatted message. Status: STABLE / Known to be working.
Definition: ir_Carrier.cpp:178
+
void sendPioneer(const uint64_t data, const uint16_t nbits=kPioneerBits, const uint16_t repeat=kNoRepeat)
Send a raw Pioneer formatted message. Status: STABLE / Expected to be working.
Definition: ir_Pioneer.cpp:46
+
@ YAW1F
Definition: IRsend.h:130
+
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:992
+ +
const uint16_t kDaikin128StateLength
Definition: IRremoteESP8266.h:849
+
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:964
+
const uint16_t kDaikin176DefaultRepeat
Definition: IRremoteESP8266.h:857
+
void sendPanasonic64(const uint64_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
Send a Panasonic formatted message. Status: STABLE / Should be working.
Definition: ir_Panasonic.cpp:74
+
const uint16_t kMitsubishiHeavy152MinRepeat
Definition: IRremoteESP8266.h:944
+
void sendHaierAC(const unsigned char data[], const uint16_t nbytes=kHaierACStateLength, const uint16_t repeat=kHaierAcDefaultRepeat)
Send a Haier A/C formatted message. (HSU07-HEA03 remote) Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:45
+
void sendSamsung36(const uint64_t data, const uint16_t nbits=kSamsung36Bits, const uint16_t repeat=kNoRepeat)
Send a Samsung 36-bit formatted message. Status: Alpha / Experimental.
Definition: ir_Samsung.cpp:154
+
const uint16_t kNoRepeat
Definition: IRremoteESP8266.h:810
+
uint16_t offTimePeriod
Definition: IRsend.h:654
+
const uint16_t kSony20Bits
Definition: IRremoteESP8266.h:989
+
const uint16_t kMitsubishiACMinRepeat
Definition: IRremoteESP8266.h:932
+
void sendSony38(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat+1)
Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. Status: STABLE / Known working...
Definition: ir_Sony.cpp:62
+
uint32_t encodeSony(const uint16_t nbits, const uint16_t command, const uint16_t address, const uint16_t extended=0)
Convert Sony/SIRC command, address, & extended bits into sendSony format. Status: STABLE / Should be ...
Definition: ir_Sony.cpp:88
+ +
@ kPanasonicUnknown
Definition: IRsend.h:142
+
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
+
const uint16_t kPanasonicAcDefaultRepeat
Definition: IRremoteESP8266.h:958
+
const uint16_t kSymphonyDefaultRepeat
Definition: IRremoteESP8266.h:993
+
@ ARREB1E
Definition: IRsend.h:123
+
void sendPanasonicAC(const unsigned char data[], const uint16_t nbytes=kPanasonicAcStateLength, const uint16_t repeat=kPanasonicAcDefaultRepeat)
Send a Panasonic A/C message. Status: STABLE / Work with real device(s).
Definition: ir_Panasonic.cpp:173
+
stdAc::swingh_t swingh
Definition: IRsend.h:106
+
const uint16_t kCoolixDefaultRepeat
Definition: IRremoteESP8266.h:825
+
@ kPanasonicNke
Definition: IRsend.h:144
+
@ GE6711AR2853M
Definition: IRsend.h:159
+
void sendHitachiAc3(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi(3) A/C formatted message. (HITACHI_AC3) Status: STABLE / Working fine.
Definition: ir_Hitachi.cpp:1361
+
const uint16_t kTcl112AcDefaultRepeat
Definition: IRremoteESP8266.h:996
+
const uint16_t kDelonghiAcDefaultRepeat
Definition: IRremoteESP8266.h:862
+
void sendToshibaAC(const unsigned char data[], const uint16_t nbytes=kToshibaACStateLength, const uint16_t repeat=kToshibaACMinRepeat)
Send a Toshiba A/C message. Status: STABLE / Working.
Definition: ir_Toshiba.cpp:44
+
const uint16_t kCoronaAcStateLength
Definition: IRremoteESP8266.h:833
+
void sendRC5(const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)
Send a Philips RC-5/RC-5X packet. Status: RC-5 (stable), RC-5X (alpha)
Definition: ir_RC5_RC6.cpp:61
+
void sendMitsubishi(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
Send the supplied Mitsubishi 16-bit message. Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:104
+
void sendAirwell(uint64_t data, uint16_t nbits=kAirwellBits, uint16_t repeat=kAirwellMinRepeats)
Send an Airwell Manchester Code formatted message. Status: BETA / Appears to be working.
Definition: ir_Airwell.cpp:28
+
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:868
+
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:828
+ +
const uint16_t kTrotecStateLength
Definition: IRremoteESP8266.h:1002
+
const uint16_t kWhirlpoolAcDefaultRepeat
Definition: IRremoteESP8266.h:1007
+
void sendSAMSUNG(const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)
Send a 32-bit Samsung formatted message. Status: STABLE / Should be working.
Definition: ir_Samsung.cpp:75
+
const uint16_t kHitachiAc424StateLength
Definition: IRremoteESP8266.h:905
+
const uint16_t kMitsubishiHeavy88StateLength
Definition: IRremoteESP8266.h:939
+
void sendNeoclima(const unsigned char data[], const uint16_t nbytes=kNeoclimaStateLength, const uint16_t repeat=kNeoclimaMinRepeat)
Send a Neoclima message. Status: STABLE / Known to be working.
Definition: ir_Neoclima.cpp:41
+
void sendSharpRaw(const uint64_t data, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
Send a (raw) Sharp message.
Definition: ir_Sharp.cpp:64
+ +
void sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)
Send a Gree Heat Pump formatted message. Status: STABLE / Working.
Definition: ir_Gree.cpp:76
+ +
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:926
+
void sendMitsubishi136(const unsigned char data[], const uint16_t nbytes=kMitsubishi136StateLength, const uint16_t repeat=kMitsubishi136MinRepeat)
Send a Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: BETA / Probably working....
Definition: ir_Mitsubishi.cpp:812
+
Enumerators and Structures for the Common A/C API.
Definition: IRsend.h:44
+
@ R_LT0541_HTA_A
Definition: IRsend.h:136
+
const uint16_t kPanasonicAcStateLength
Definition: IRremoteESP8266.h:954
+
void sendMitsubishiHeavy88(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy88StateLength, const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
Send a MitsubishiHeavy 88-bit A/C message. Status: BETA / Appears to be working. Needs testing agains...
Definition: ir_MitsubishiHeavy.cpp:45
+
void sendVestelAc(const uint64_t data, const uint16_t nbits=kVestelAcBits, const uint16_t repeat=kNoRepeat)
Send a Vestel message Status: STABLE / Working.
Definition: ir_Vestel.cpp:38
+
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:922
+
const uint16_t kKelvinatorStateLength
Definition: IRremoteESP8266.h:910
+
void sendMidea24(const uint64_t data, const uint16_t nbits=kMidea24Bits, const uint16_t repeat=kMidea24MinRepeat)
Send a Midea24 formatted message. Status: STABLE / Confirmed working on a real device.
Definition: ir_Midea.cpp:479
+
static uint16_t defaultBits(const decode_type_t protocol)
Get the default number of bits for a given protocol.
Definition: IRsend.cpp:598
+
decode_type_t protocol
Definition: IRsend.h:98
+ +
const uint16_t kDaikin216DefaultRepeat
Definition: IRremoteESP8266.h:860
+ +
bool beep
Definition: IRsend.h:113
+
const uint16_t kWhirlpoolAcStateLength
Definition: IRremoteESP8266.h:1005
+
const uint16_t kNECBits
Definition: IRremoteESP8266.h:948
+
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:863
+
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1010
+
bool filter
Definition: IRsend.h:111
+
const uint16_t kCarrierAc40MinRepeat
Definition: IRremoteESP8266.h:829
+
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:924
+
void sendDelonghiAc(uint64_t data, uint16_t nbits=kDelonghiAcBits, uint16_t repeat=kDelonghiAcDefaultRepeat)
Send a Delonghi A/C formatted message. Status: STABLE / Reported as working on a real device.
Definition: ir_Delonghi.cpp:38
+
const uint16_t kDaikin160DefaultRepeat
Definition: IRremoteESP8266.h:848
+
void _sendSony(const uint64_t data, const uint16_t nbits, const uint16_t repeat, const uint16_t freq)
Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message Status: STABLE / Known w...
Definition: ir_Sony.cpp:73
+
const uint16_t kToshibaACMinRepeat
Definition: IRremoteESP8266.h:1001
+
void enableIROut(uint32_t freq, uint8_t duty=kDutyDefault)
Set the output frequency modulation and duty cycle.
Definition: IRsend.cpp:92
+ +
const uint16_t kHitachiAc344StateLength
Definition: IRremoteESP8266.h:903
+
@ kPanasonicDke
Definition: IRsend.h:145
+
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:830
+
const uint16_t kDaikin128DefaultRepeat
Definition: IRremoteESP8266.h:851
+
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:959
+
const uint16_t kSharpAcStateLength
Definition: IRremoteESP8266.h:982
+
void sendSharpAc(const unsigned char data[], const uint16_t nbytes=kSharpAcStateLength, const uint16_t repeat=kSharpAcDefaultRepeat)
Send a Sharp A/C message. Status: Alpha / Untested.
Definition: ir_Sharp.cpp:227
+
@ kPanasonicLke
Definition: IRsend.h:143
+
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:884
+
void sendCarrierAC(uint64_t data, uint16_t nbits=kCarrierAcBits, uint16_t repeat=kCarrierAcMinRepeat)
Send a Carrier HVAC formatted message. Status: STABLE / Works on real devices.
Definition: ir_Carrier.cpp:57
+
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:909
+
const uint16_t kDaikinStateLength
Definition: IRremoteESP8266.h:836
+
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:913
+
void sendDaikin160(const unsigned char data[], const uint16_t nbytes=kDaikin160StateLength, const uint16_t repeat=kDaikin160DefaultRepeat)
Send a Daikin160 (160-bit) A/C formatted message. Status: STABLE / Confirmed working.
Definition: ir_Daikin.cpp:1840
+
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:815
+
void sendDaikin2(const unsigned char data[], const uint16_t nbytes=kDaikin2StateLength, const uint16_t repeat=kDaikin2DefaultRepeat)
Send a Daikin2 (312-bit) A/C formatted message. Status: STABLE / Expected to work.
Definition: ir_Daikin.cpp:689
+
@ ARRAH2E
Definition: IRsend.h:121
+
const uint16_t kToshibaACStateLength
Definition: IRremoteESP8266.h:999
+
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:997
+
void sendMitsubishi2(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
Send a supplied second variant Mitsubishi 16-bit message. Status: BETA / Probably works.
Definition: ir_Mitsubishi.cpp:161
+
const uint16_t kInaxMinRepeat
Definition: IRremoteESP8266.h:908
+
VIRTUAL void ledOff()
Turn off the IR LED.
Definition: IRsend.cpp:53
+ +
const uint8_t kSherwoodBits
Definition: IRremoteESP8266.h:985
+
stdAc::opmode_t mode
Definition: IRsend.h:101
+
const uint16_t kDaikinDefaultRepeat
Definition: IRremoteESP8266.h:840
+
const uint16_t kDaikin64DefaultRepeat
Definition: IRremoteESP8266.h:845
+
void sendInax(const uint64_t data, const uint16_t nbits=kInaxBits, const uint16_t repeat=kInaxMinRepeat)
Send a Inax Toilet formatted message. Status: STABLE / Working.
Definition: ir_Inax.cpp:31
+
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:158
+
const uint16_t kMitsubishiHeavy88MinRepeat
Definition: IRremoteESP8266.h:941
+ +
const uint16_t kHitachiAcDefaultRepeat
Definition: IRremoteESP8266.h:894
+
bool econo
Definition: IRsend.h:109
+
void sendSherwood(uint64_t data, uint16_t nbits=kSherwoodBits, uint16_t repeat=kSherwoodMinRepeat)
Send an IR command to a Sherwood device. Status: STABLE / Known working.
Definition: ir_Sherwood.cpp:21
+
const uint16_t kMidea24MinRepeat
Definition: IRremoteESP8266.h:925
+
void sendMitsubishiHeavy152(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy152StateLength, const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
Send a MitsubishiHeavy 152-bit A/C message. Status: BETA / Appears to be working. Needs testing again...
Definition: ir_MitsubishiHeavy.cpp:62
+
const uint16_t kDishBits
Definition: IRremoteESP8266.h:866
+
const uint16_t kDishMinRepeat
Definition: IRremoteESP8266.h:867
+ +
void sendPanasonic(const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
Send a Panasonic formatted message. Status: STABLE, but DEPRECATED.
Definition: ir_Panasonic.cpp:91
+
VIRTUAL void space(uint32_t usec)
Turn the pin (LED) off for a given time. Sends an IR space for the specified number of microseconds....
Definition: IRsend.cpp:194
+
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:897
+
void sendGC(uint16_t buf[], uint16_t len)
Send a shortened GlobalCache (GC) IRdb/control tower formatted message. Status: STABLE / Known workin...
Definition: ir_GlobalCache.cpp:35
+
uint16_t encodeRC5(const uint8_t address, const uint8_t command, const bool key_released=false)
Encode a Philips RC-5 data message. Status: Beta / Should be working.
Definition: ir_RC5_RC6.cpp:115
+
void sendJVC(uint64_t data, uint16_t nbits=kJvcBits, uint16_t repeat=kNoRepeat)
Send a JVC formatted message. Status: STABLE / Working.
Definition: ir_JVC.cpp:46
+
void sendDoshisha(const uint64_t data, uint16_t nbits=kDoshishaBits, const uint16_t repeat=kNoRepeat)
Send a Doshisha formatted message. Status: STABLE / Works on real device.
Definition: ir_Doshisha.cpp:53
+ +
uint64_t toggleRC5(const uint64_t data)
Flip the toggle bit of a Philips RC-5/RC-5X data message. Used to indicate a change of remote button'...
Definition: ir_RC5_RC6.cpp:142
+
void sendDaikin(const unsigned char data[], const uint16_t nbytes=kDaikinStateLength, const uint16_t repeat=kDaikinDefaultRepeat)
Send a Daikin 280-bit A/C formatted message. Status: STABLE.
Definition: ir_Daikin.cpp:61
+
const uint16_t kCarrierAcMinRepeat
Definition: IRremoteESP8266.h:827
+
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:947
+
uint64_t encodeMagiQuest(const uint32_t wand_id, const uint16_t magnitude)
Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. (Only 48 bits of real data + 8...
Definition: ir_Magiquest.cpp:42
+ +
const uint16_t kKelvinatorDefaultRepeat
Definition: IRremoteESP8266.h:912
+
void sendHitachiAC2(const unsigned char data[], const uint16_t nbytes=kHitachiAc2StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 53 byte/424-bit A/C formatted message. (HITACHI_AC2) Basically the same as sendHitatch...
Definition: ir_Hitachi.cpp:105
+
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:920
+
void sendDaikin128(const unsigned char data[], const uint16_t nbytes=kDaikin128StateLength, const uint16_t repeat=kDaikin128DefaultRepeat)
Send a Daikin128 (128-bit) A/C formatted message. Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:2605
+
void sendCarrierAC40(uint64_t data, uint16_t nbits=kCarrierAc40Bits, uint16_t repeat=kCarrierAc40MinRepeat)
Send a Carrier 40bit HVAC formatted message. Status: STABLE / Tested against a real device.
Definition: ir_Carrier.cpp:129
+
const uint16_t kSharpAcDefaultRepeat
Definition: IRremoteESP8266.h:984
+ +
void sendTrotec(const unsigned char data[], const uint16_t nbytes=kTrotecStateLength, const uint16_t repeat=kTrotecDefaultRepeat)
Send a Trotec message. Status: Beta / Probably Working.
Definition: ir_Trotec.cpp:43
+
void sendCoronaAc(const uint8_t data[], const uint16_t nbytes=kCoronaAcStateLength, const uint16_t repeat=kNoRepeat)
Send a CoronaAc formatted message. Status: STABLE / Working on real device.
Definition: ir_Corona.cpp:51
+
bool light
Definition: IRsend.h:110
+
stdAc::fanspeed_t fanspeed
Definition: IRsend.h:104
+
const uint16_t kTcl112AcStateLength
Definition: IRremoteESP8266.h:994
+
void sendRCMM(uint64_t data, uint16_t nbits=kRCMMBits, uint16_t repeat=kNoRepeat)
Send a Philips RC-MM packet. Status: STABLE / Should be working.
Definition: ir_RCMM.cpp:46
+
void sendManchester(const uint16_t headermark, const uint32_t headerspace, const uint16_t half_period, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency=38, const bool MSBfirst=true, const uint16_t repeat=kNoRepeat, const uint8_t dutycycle=kDutyDefault, const bool GEThomas=true)
Generic method for sending Manchester code messages. Will send leading or trailing 0's if the nbits i...
Definition: IRsend.cpp:506
+
const uint16_t kDaikin160StateLength
Definition: IRremoteESP8266.h:846
+
void sendHitachiAC(const unsigned char data[], const uint16_t nbytes=kHitachiAcStateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 28-byte/224-bit A/C formatted message. (HITACHI_AC) Status: STABLE / Working.
Definition: ir_Hitachi.cpp:66
+
const uint16_t kDaikin2StateLength
Definition: IRremoteESP8266.h:841
+
void sendElectraAC(const unsigned char data[], const uint16_t nbytes=kElectraAcStateLength, const uint16_t repeat=kNoRepeat)
Send a Electra A/C formatted message. Status: Alpha / Needs testing against a real device.
Definition: ir_Electra.cpp:41
+ +
const uint16_t kSherwoodMinRepeat
Definition: IRremoteESP8266.h:986
+
const uint16_t kCarrierAc64MinRepeat
Definition: IRremoteESP8266.h:831
+
@ DG11J191
Definition: IRsend.h:154
+
void begin()
Enable the pin for output.
Definition: IRsend.cpp:45
+
void sendFujitsuAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kFujitsuAcMinRepeat)
Send a Fujitsu A/C formatted message. Status: STABLE / Known Good.
Definition: ir_Fujitsu.cpp:47
+ +
uint32_t encodeSharp(const uint16_t address, const uint16_t command, const uint16_t expansion=1, const uint16_t check=0, const bool MSBfirst=false)
Encode a (raw) Sharp message from it's components. Status: STABLE / Works okay.
Definition: ir_Sharp.cpp:99
+ +
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:915
+
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:981
+
int16_t sleep
Definition: IRsend.h:114
+
bool power
Definition: IRsend.h:100
+ +
void sendHitachiAc424(const unsigned char data[], const uint16_t nbytes=kHitachiAc424StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 53-byte/424-bit A/C formatted message. (HITACHI_AC424) Status: STABLE / Reported as wo...
Definition: ir_Hitachi.cpp:949
+
void sendTeco(const uint64_t data, const uint16_t nbits=kTecoBits, const uint16_t repeat=kNoRepeat)
Send a Teco A/C message. Status: Beta / Probably working.
Definition: ir_Teco.cpp:39
+ +
const uint16_t kMitsubishi136StateLength
Definition: IRremoteESP8266.h:933
+
void sendLutron(uint64_t data, uint16_t nbits=kLutronBits, uint16_t repeat=kNoRepeat)
Send a Lutron formatted message. Status: Stable / Appears to be working for real devices.
Definition: ir_Lutron.cpp:41
+
void sendSamsungAC(const unsigned char data[], const uint16_t nbytes=kSamsungAcStateLength, const uint16_t repeat=kSamsungAcDefaultRepeat)
Send a Samsung A/C message. Status: Stable / Known working.
Definition: ir_Samsung.cpp:235
+
uint64_t encodePanasonic(const uint16_t manufacturer, const uint8_t device, const uint8_t subdevice, const uint8_t function)
Calculate the raw Panasonic data based on device, subdevice, & function. Status: STABLE / Should be w...
Definition: ir_Panasonic.cpp:105
+
void sendSanyoLC7461(const uint64_t data, const uint16_t nbits=kSanyoLC7461Bits, const uint16_t repeat=kNoRepeat)
Send a Sanyo LC7461 message. Status: BETA / Probably works.
Definition: ir_Sanyo.cpp:93
+
IRsend(uint16_t IRsendPin, bool inverted=false, bool use_modulation=true)
Constructor for an IRsend object.
Definition: IRsend.cpp:28
+
void sendDISH(uint64_t data, uint16_t nbits=kDishBits, uint16_t repeat=kDishMinRepeat)
Send a DISH NETWORK formatted message. Status: STABLE / Working.
Definition: ir_Dish.cpp:48
+
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:966
+
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1009
+
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:907
+
@ YBOFB
Definition: IRsend.h:131
+
const uint16_t kLegoPfMinRepeat
Definition: IRremoteESP8266.h:916
+
const uint16_t kAmcorDefaultRepeat
Definition: IRremoteESP8266.h:820
+
void sendDaikin216(const unsigned char data[], const uint16_t nbytes=kDaikin216StateLength, const uint16_t repeat=kDaikin216DefaultRepeat)
Send a Daikin216 (216-bit) A/C formatted message. Status: Alpha / Untested on a real device.
Definition: ir_Daikin.cpp:1476
+
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:967
+
uint64_t encodePioneer(uint16_t address, uint16_t command)
Calculate the raw Pioneer data code based on two NEC sub-codes Status: STABLE / Expected to work.
Definition: ir_Pioneer.cpp:81
+
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:844
+
bool quiet
Definition: IRsend.h:107
+
uint16_t encodeRC5X(const uint8_t address, const uint8_t command, const bool key_released=false)
Encode a Philips RC-5X data message. Status: Beta / Should be working.
Definition: ir_RC5_RC6.cpp:127
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint16_t kLasertagMinRepeat
Definition: IRremoteESP8266.h:914
+
const uint8_t kDutyDefault
Definition: IRsend.h:35
+
bool turbo
Definition: IRsend.h:108
+
void sendMagiQuest(const uint64_t data, const uint16_t nbits=kMagiquestBits, const uint16_t repeat=kNoRepeat)
Send a MagiQuest formatted message. Status: Beta / Should be working.
Definition: ir_Magiquest.cpp:25
+
bool modulation
Definition: IRsend.h:658
+
const uint16_t kNeoclimaMinRepeat
Definition: IRremoteESP8266.h:951
+
const uint16_t kMitsubishi112StateLength
Definition: IRremoteESP8266.h:936
+ +
void sendArgo(const unsigned char data[], const uint16_t nbytes=kArgoStateLength, const uint16_t repeat=kArgoDefaultRepeat)
Send a Argo A/C formatted message. Status: BETA / Probably works.
Definition: ir_Argo.cpp:40
+
void sendTcl112Ac(const unsigned char data[], const uint16_t nbytes=kTcl112AcStateLength, const uint16_t repeat=kTcl112AcDefaultRepeat)
Send a TCL 112-bit A/C message. Status: Beta / Probably working.
Definition: ir_Tcl.cpp:33
+
@ kPanasonicJke
Definition: IRsend.h:146
+ +
const uint16_t kSonyMinRepeat
Definition: IRremoteESP8266.h:991
+
void sendCOOLIX(uint64_t data, uint16_t nbits=kCoolixBits, uint16_t repeat=kCoolixDefaultRepeat)
Send a Coolix message Status: STABLE / Confirmed Working.
Definition: ir_Coolix.cpp:51
+
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:869
+
void sendNEC(uint64_t data, uint16_t nbits=kNECBits, uint16_t repeat=kNoRepeat)
Send a raw NEC(Renesas) formatted message. Status: STABLE / Known working.
Definition: ir_NEC.cpp:28
+
void sendMWM(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kNoRepeat)
Send a MWM packet/message. Status: Implemented.
Definition: ir_MWM.cpp:37
+
void sendDaikin64(const uint64_t data, const uint16_t nbits=kDaikin64Bits, const uint16_t repeat=kDaikin64DefaultRepeat)
Send a Daikin64 (64-bit) A/C formatted message. Status: Beta / Probably Working.
Definition: ir_Daikin.cpp:3558
+
void sendRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits, const uint16_t repeat=kNoRepeat)
Send a Philips RC-6 packet. Status: Stable.
Definition: ir_RC5_RC6.cpp:190
+
const int8_t kPeriodOffset
Definition: IRsend.h:26
+
const uint16_t kLgBits
Definition: IRremoteESP8266.h:917
+
void sendDaikin176(const unsigned char data[], const uint16_t nbytes=kDaikin176StateLength, const uint16_t repeat=kDaikin176DefaultRepeat)
Send a Daikin176 (176-bit) A/C formatted message. Status: Alpha / Untested on a real device.
Definition: ir_Daikin.cpp:2212
+
const uint16_t kGoodweatherMinRepeat
Definition: IRremoteESP8266.h:882
+
const uint16_t kElectraAcStateLength
Definition: IRremoteESP8266.h:871
+
const uint16_t kGreeDefaultRepeat
Definition: IRremoteESP8266.h:885
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+
void sendGoodweather(const uint64_t data, const uint16_t nbits=kGoodweatherBits, const uint16_t repeat=kGoodweatherMinRepeat)
Send a Goodweather HVAC formatted message. Status: BETA / Needs testing on real device.
Definition: ir_Goodweather.cpp:33
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8cpp.html new file mode 100644 index 000000000..cbef4a002 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8cpp.html @@ -0,0 +1,2807 @@ + + + + + + + +IRremoteESP8266: src/IRtext.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRtext.cpp File Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const PROGMEM char * kUnknownStr = D_STR_UNKNOWN
 "Unknown" More...
 
const PROGMEM char * kProtocolStr = D_STR_PROTOCOL
 "Protocol" More...
 
const PROGMEM char * kPowerStr = D_STR_POWER
 "Power" More...
 
const PROGMEM char * kOnStr = D_STR_ON
 "On" More...
 
const PROGMEM char * kOffStr = D_STR_OFF
 "Off" More...
 
const PROGMEM char * kModeStr = D_STR_MODE
 "Mode" More...
 
const PROGMEM char * kToggleStr = D_STR_TOGGLE
 "Toggle" More...
 
const PROGMEM char * kTurboStr = D_STR_TURBO
 "Turbo" More...
 
const PROGMEM char * kSuperStr = D_STR_SUPER
 "Super" More...
 
const PROGMEM char * kSleepStr = D_STR_SLEEP
 "Sleep" More...
 
const PROGMEM char * kLightStr = D_STR_LIGHT
 "Light" More...
 
const PROGMEM char * kPowerfulStr = D_STR_POWERFUL
 "Powerful" More...
 
const PROGMEM char * kQuietStr = D_STR_QUIET
 "Quiet" More...
 
const PROGMEM char * kEconoStr = D_STR_ECONO
 "Econo" More...
 
const PROGMEM char * kSwingStr = D_STR_SWING
 "Swing" More...
 
const PROGMEM char * kSwingHStr = D_STR_SWINGH
 "SwingH" More...
 
const PROGMEM char * kSwingVStr = D_STR_SWINGV
 "SwingV" More...
 
const PROGMEM char * kBeepStr = D_STR_BEEP
 "Beep" More...
 
const PROGMEM char * kZoneFollowStr = D_STR_ZONEFOLLOW
 "Zone Follow" More...
 
const PROGMEM char * kFixedStr = D_STR_FIXED
 "Fixed" More...
 
const PROGMEM char * kMouldStr = D_STR_MOULD
 "Mould" More...
 
const PROGMEM char * kCleanStr = D_STR_CLEAN
 "Clean" More...
 
const PROGMEM char * kPurifyStr = D_STR_PURIFY
 "Purify" More...
 
const PROGMEM char * kTimerStr = D_STR_TIMER
 "Timer" More...
 
const PROGMEM char * kOnTimerStr = D_STR_ONTIMER
 "OnTimer" More...
 
const PROGMEM char * kOffTimerStr = D_STR_OFFTIMER
 "OffTimer" More...
 
const PROGMEM char * kClockStr = D_STR_CLOCK
 "Clock" More...
 
const PROGMEM char * kCommandStr = D_STR_COMMAND
 "Command" More...
 
const PROGMEM char * kXFanStr = D_STR_XFAN
 "XFan" More...
 
const PROGMEM char * kHealthStr = D_STR_HEALTH
 "Health" More...
 
const PROGMEM char * kModelStr = D_STR_MODEL
 "Model" More...
 
const PROGMEM char * kTempStr = D_STR_TEMP
 "Temp" More...
 
const PROGMEM char * kIFeelStr = D_STR_IFEEL
 "IFeel" More...
 
const PROGMEM char * kHumidStr = D_STR_HUMID
 "Humid" More...
 
const PROGMEM char * kSaveStr = D_STR_SAVE
 "Save" More...
 
const PROGMEM char * kEyeStr = D_STR_EYE
 "Eye" More...
 
const PROGMEM char * kFollowStr = D_STR_FOLLOW
 "Follow" More...
 
const PROGMEM char * kIonStr = D_STR_ION
 "Ion" More...
 
const PROGMEM char * kFreshStr = D_STR_FRESH
 "Fresh" More...
 
const PROGMEM char * kHoldStr = D_STR_HOLD
 "Hold" More...
 
const PROGMEM char * kButtonStr = D_STR_BUTTON
 "Button" More...
 
const PROGMEM char * k8CHeatStr = D_STR_8C_HEAT
 "8CHeat" More...
 
const PROGMEM char * kNightStr = D_STR_NIGHT
 "Night" More...
 
const PROGMEM char * kSilentStr = D_STR_SILENT
 "Silent" More...
 
const PROGMEM char * kFilterStr = D_STR_FILTER
 "Filter" More...
 
const PROGMEM char * k3DStr = D_STR_3D
 "3D" More...
 
const PROGMEM char * kCelsiusStr = D_STR_CELSIUS
 "Celsius" More...
 
const PROGMEM char * kTempUpStr = D_STR_TEMPUP
 "Temp Up" More...
 
const PROGMEM char * kTempDownStr = D_STR_TEMPDOWN
 "Temp Down" More...
 
const PROGMEM char * kStartStr = D_STR_START
 "Start" More...
 
const PROGMEM char * kStopStr = D_STR_STOP
 "Stop" More...
 
const PROGMEM char * kMoveStr = D_STR_MOVE
 "Move" More...
 
const PROGMEM char * kSetStr = D_STR_SET
 "Set" More...
 
const PROGMEM char * kCancelStr = D_STR_CANCEL
 "Cancel" More...
 
const PROGMEM char * kUpStr = D_STR_UP
 "Up" More...
 
const PROGMEM char * kDownStr = D_STR_DOWN
 "Down" More...
 
const PROGMEM char * kChangeStr = D_STR_CHANGE
 "Change" More...
 
const PROGMEM char * kComfortStr = D_STR_COMFORT
 "Comfort" More...
 
const PROGMEM char * kSensorStr = D_STR_SENSOR
 "Sensor" More...
 
const PROGMEM char * kWeeklyTimerStr = D_STR_WEEKLYTIMER
 "WeeklyTimer" More...
 
const PROGMEM char * kWifiStr = D_STR_WIFI
 "Wifi" More...
 
const PROGMEM char * kLastStr = D_STR_LAST
 "Last" More...
 
const PROGMEM char * kFastStr = D_STR_FAST
 "Fast" More...
 
const PROGMEM char * kSlowStr = D_STR_SLOW
 "Slow" More...
 
const PROGMEM char * kAirFlowStr = D_STR_AIRFLOW
 "Air Flow" More...
 
const PROGMEM char * kStepStr = D_STR_STEP
 "Step" More...
 
const PROGMEM char * kNAStr = D_STR_NA
 "N/A" More...
 
const PROGMEM char * kInsideStr = D_STR_INSIDE
 "Inside" More...
 
const PROGMEM char * kOutsideStr = D_STR_OUTSIDE
 "Outside" More...
 
const PROGMEM char * kLoudStr = D_STR_LOUD
 "Loud" More...
 
const PROGMEM char * kLowerStr = D_STR_LOWER
 "Lower" More...
 
const PROGMEM char * kUpperStr = D_STR_UPPER
 "Upper" More...
 
const PROGMEM char * kBreezeStr = D_STR_BREEZE
 "Breeze" More...
 
const PROGMEM char * kCirculateStr = D_STR_CIRCULATE
 "Circulate" More...
 
const PROGMEM char * kCeilingStr = D_STR_CEILING
 "Ceiling" More...
 
const PROGMEM char * kWallStr = D_STR_WALL
 "Wall" More...
 
const PROGMEM char * kRoomStr = D_STR_ROOM
 "Room" More...
 
const PROGMEM char * k6thSenseStr = D_STR_6THSENSE
 "6th Sense" More...
 
const PROGMEM char * kAutoStr = D_STR_AUTO
 "Auto" More...
 
const PROGMEM char * kAutomaticStr = D_STR_AUTOMATIC
 "Automatic" More...
 
const PROGMEM char * kManualStr = D_STR_MANUAL
 "Manual" More...
 
const PROGMEM char * kCoolStr = D_STR_COOL
 "Cool" More...
 
const PROGMEM char * kHeatStr = D_STR_HEAT
 "Heat" More...
 
const PROGMEM char * kFanStr = D_STR_FAN
 "Fan" More...
 
const PROGMEM char * kDryStr = D_STR_DRY
 "Dry" More...
 
const PROGMEM char * kFanOnlyStr = D_STR_FANONLY
 "fan_only" More...
 
const PROGMEM char * kMaxStr = D_STR_MAX
 "Max" More...
 
const PROGMEM char * kMaximumStr = D_STR_MAXIMUM
 "Maximum" More...
 
const PROGMEM char * kMinStr = D_STR_MIN
 "Min" More...
 
const PROGMEM char * kMinimumStr = D_STR_MINIMUM
 "Minimum" More...
 
const PROGMEM char * kMedStr = D_STR_MED
 "Med" More...
 
const PROGMEM char * kMediumStr = D_STR_MEDIUM
 "Medium" More...
 
const PROGMEM char * kHighestStr = D_STR_HIGHEST
 "Highest" More...
 
const PROGMEM char * kHighStr = D_STR_HIGH
 "High" More...
 
const PROGMEM char * kHiStr = D_STR_HI
 "Hi" More...
 
const PROGMEM char * kMidStr = D_STR_MID
 "Mid" More...
 
const PROGMEM char * kMiddleStr = D_STR_MIDDLE
 "Middle" More...
 
const PROGMEM char * kLowStr = D_STR_LOW
 "Low" More...
 
const PROGMEM char * kLoStr = D_STR_LO
 "Lo" More...
 
const PROGMEM char * kLowestStr = D_STR_LOWEST
 "Lowest" More...
 
const PROGMEM char * kMaxRightStr = D_STR_MAXRIGHT
 "Max Right" More...
 
const PROGMEM char * kRightMaxStr = D_STR_RIGHTMAX_NOSPACE
 "RightMax" More...
 
const PROGMEM char * kRightStr = D_STR_RIGHT
 "Right" More...
 
const PROGMEM char * kLeftStr = D_STR_LEFT
 "Left" More...
 
const PROGMEM char * kMaxLeftStr = D_STR_MAXLEFT
 "Max Left" More...
 
const PROGMEM char * kLeftMaxStr = D_STR_LEFTMAX_NOSPACE
 "LeftMax" More...
 
const PROGMEM char * kWideStr = D_STR_WIDE
 "Wide" More...
 
const PROGMEM char * kCentreStr = D_STR_CENTRE
 "Centre" More...
 
const PROGMEM char * kTopStr = D_STR_TOP
 "Top" More...
 
const PROGMEM char * kBottomStr = D_STR_BOTTOM
 "Bottom" More...
 
const PROGMEM char * kEyeAutoStr = D_STR_EYEAUTO
 "Eye Auto" More...
 
const PROGMEM char * kLightToggleStr = D_STR_LIGHTTOGGLE
 "Light Toggle" More...
 
const PROGMEM char * kOutsideQuietStr = D_STR_OUTSIDEQUIET
 "Outside Quiet" More...
 
const PROGMEM char * kPowerToggleStr = D_STR_POWERTOGGLE
 "Power Toggle" More...
 
const PROGMEM char * kPowerButtonStr = D_STR_POWERBUTTON
 "Power Button" More...
 
const PROGMEM char * kPreviousPowerStr = D_STR_PREVIOUSPOWER
 "Previous Power" More...
 
const PROGMEM char * kDisplayTempStr = D_STR_DISPLAYTEMP
 "Display Temp" More...
 
const PROGMEM char * kSensorTempStr = D_STR_SENSORTEMP
 "Sensor Temp" More...
 
const PROGMEM char * kSleepTimerStr = D_STR_SLEEP_TIMER
 "Sleep Timer" More...
 
const PROGMEM char * kSwingVModeStr = D_STR_SWINGVMODE
 "Swing(V) Mode" More...
 
const PROGMEM char * kSwingVToggleStr = D_STR_SWINGVTOGGLE
 "Swing(V) Toggle" More...
 
char kTimeSep = D_CHR_TIME_SEP
 ':' More...
 
const PROGMEM char * kSpaceLBraceStr = D_STR_SPACELBRACE
 " (" More...
 
const PROGMEM char * kCommaSpaceStr = D_STR_COMMASPACE
 ", " More...
 
const PROGMEM char * kColonSpaceStr = D_STR_COLONSPACE
 ": " More...
 
const PROGMEM char * kDayStr = D_STR_DAY
 "Day" More...
 
const PROGMEM char * kDaysStr = D_STR_DAYS
 "Days" More...
 
const PROGMEM char * kHourStr = D_STR_HOUR
 "Hour" More...
 
const PROGMEM char * kHoursStr = D_STR_HOURS
 "Hours" More...
 
const PROGMEM char * kMinuteStr = D_STR_MINUTE
 "Minute" More...
 
const PROGMEM char * kMinutesStr = D_STR_MINUTES
 "Minutes" More...
 
const PROGMEM char * kSecondStr = D_STR_SECOND
 "Second" More...
 
const PROGMEM char * kSecondsStr = D_STR_SECONDS
 "Seconds" More...
 
const PROGMEM char * kNowStr = D_STR_NOW
 "Now" More...
 
const PROGMEM char * kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS
 "SunMonTueWedThuFriSat" More...
 
const PROGMEM char * kYesStr = D_STR_YES
 "Yes" More...
 
const PROGMEM char * kNoStr = D_STR_NO
 "No" More...
 
const PROGMEM char * kTrueStr = D_STR_TRUE
 "True" More...
 
const PROGMEM char * kFalseStr = D_STR_FALSE
 "False" More...
 
const PROGMEM char * kRepeatStr = D_STR_REPEAT
 "Repeat" More...
 
const PROGMEM char * kCodeStr = D_STR_CODE
 "Code" More...
 
const PROGMEM char * kBitsStr = D_STR_BITS
 "Bits" More...
 
const PROGMEM char * kAllProtocolNamesStr
 New protocol strings should be added just above this line. More...
 
+

Detailed Description

+
Warning
If you add or remove an entry in this file, you should run: '../tools/generate_irtext_h.sh' to rebuild the IRtext.h file.
+

Variable Documentation

+ +

◆ k3DStr

+ +
+
+ + + + +
const PROGMEM char* k3DStr = D_STR_3D
+
+ +

"3D"

+ +
+
+ +

◆ k6thSenseStr

+ +
+
+ + + + +
const PROGMEM char* k6thSenseStr = D_STR_6THSENSE
+
+ +

"6th Sense"

+ +
+
+ +

◆ k8CHeatStr

+ +
+
+ + + + +
const PROGMEM char* k8CHeatStr = D_STR_8C_HEAT
+
+ +

"8CHeat"

+ +
+
+ +

◆ kAirFlowStr

+ +
+
+ + + + +
const PROGMEM char* kAirFlowStr = D_STR_AIRFLOW
+
+ +

"Air Flow"

+ +
+
+ +

◆ kAllProtocolNamesStr

+ +
+
+ + + + +
const PROGMEM char* kAllProtocolNamesStr
+
+ +

New protocol strings should be added just above this line.

+

This string requires double null termination.

+ +
+
+ +

◆ kAutomaticStr

+ +
+
+ + + + +
const PROGMEM char* kAutomaticStr = D_STR_AUTOMATIC
+
+ +

"Automatic"

+ +
+
+ +

◆ kAutoStr

+ +
+
+ + + + +
const PROGMEM char* kAutoStr = D_STR_AUTO
+
+ +

"Auto"

+ +
+
+ +

◆ kBeepStr

+ +
+
+ + + + +
const PROGMEM char* kBeepStr = D_STR_BEEP
+
+ +

"Beep"

+ +
+
+ +

◆ kBitsStr

+ +
+
+ + + + +
const PROGMEM char* kBitsStr = D_STR_BITS
+
+ +

"Bits"

+ +
+
+ +

◆ kBottomStr

+ +
+
+ + + + +
const PROGMEM char* kBottomStr = D_STR_BOTTOM
+
+ +

"Bottom"

+ +
+
+ +

◆ kBreezeStr

+ +
+
+ + + + +
const PROGMEM char* kBreezeStr = D_STR_BREEZE
+
+ +

"Breeze"

+ +
+
+ +

◆ kButtonStr

+ +
+
+ + + + +
const PROGMEM char* kButtonStr = D_STR_BUTTON
+
+ +

"Button"

+ +
+
+ +

◆ kCancelStr

+ +
+
+ + + + +
const PROGMEM char* kCancelStr = D_STR_CANCEL
+
+ +

"Cancel"

+ +
+
+ +

◆ kCeilingStr

+ +
+
+ + + + +
const PROGMEM char* kCeilingStr = D_STR_CEILING
+
+ +

"Ceiling"

+ +
+
+ +

◆ kCelsiusStr

+ +
+
+ + + + +
const PROGMEM char* kCelsiusStr = D_STR_CELSIUS
+
+ +

"Celsius"

+ +
+
+ +

◆ kCentreStr

+ +
+
+ + + + +
const PROGMEM char* kCentreStr = D_STR_CENTRE
+
+ +

"Centre"

+ +
+
+ +

◆ kChangeStr

+ +
+
+ + + + +
const PROGMEM char* kChangeStr = D_STR_CHANGE
+
+ +

"Change"

+ +
+
+ +

◆ kCirculateStr

+ +
+
+ + + + +
const PROGMEM char* kCirculateStr = D_STR_CIRCULATE
+
+ +

"Circulate"

+ +
+
+ +

◆ kCleanStr

+ +
+
+ + + + +
const PROGMEM char* kCleanStr = D_STR_CLEAN
+
+ +

"Clean"

+ +
+
+ +

◆ kClockStr

+ +
+
+ + + + +
const PROGMEM char* kClockStr = D_STR_CLOCK
+
+ +

"Clock"

+ +
+
+ +

◆ kCodeStr

+ +
+
+ + + + +
const PROGMEM char* kCodeStr = D_STR_CODE
+
+ +

"Code"

+ +
+
+ +

◆ kColonSpaceStr

+ +
+
+ + + + +
const PROGMEM char* kColonSpaceStr = D_STR_COLONSPACE
+
+ +

": "

+ +
+
+ +

◆ kComfortStr

+ +
+
+ + + + +
const PROGMEM char* kComfortStr = D_STR_COMFORT
+
+ +

"Comfort"

+ +
+
+ +

◆ kCommandStr

+ +
+
+ + + + +
const PROGMEM char* kCommandStr = D_STR_COMMAND
+
+ +

"Command"

+ +
+
+ +

◆ kCommaSpaceStr

+ +
+
+ + + + +
const PROGMEM char* kCommaSpaceStr = D_STR_COMMASPACE
+
+ +

", "

+ +
+
+ +

◆ kCoolStr

+ +
+
+ + + + +
const PROGMEM char* kCoolStr = D_STR_COOL
+
+ +

"Cool"

+ +
+
+ +

◆ kDaysStr

+ +
+
+ + + + +
const PROGMEM char* kDaysStr = D_STR_DAYS
+
+ +

"Days"

+ +
+
+ +

◆ kDayStr

+ +
+
+ + + + +
const PROGMEM char* kDayStr = D_STR_DAY
+
+ +

"Day"

+ +
+
+ +

◆ kDisplayTempStr

+ +
+
+ + + + +
const PROGMEM char* kDisplayTempStr = D_STR_DISPLAYTEMP
+
+ +

"Display Temp"

+ +
+
+ +

◆ kDownStr

+ +
+
+ + + + +
const PROGMEM char* kDownStr = D_STR_DOWN
+
+ +

"Down"

+ +
+
+ +

◆ kDryStr

+ +
+
+ + + + +
const PROGMEM char* kDryStr = D_STR_DRY
+
+ +

"Dry"

+ +
+
+ +

◆ kEconoStr

+ +
+
+ + + + +
const PROGMEM char* kEconoStr = D_STR_ECONO
+
+ +

"Econo"

+ +
+
+ +

◆ kEyeAutoStr

+ +
+
+ + + + +
const PROGMEM char* kEyeAutoStr = D_STR_EYEAUTO
+
+ +

"Eye Auto"

+ +
+
+ +

◆ kEyeStr

+ +
+
+ + + + +
const PROGMEM char* kEyeStr = D_STR_EYE
+
+ +

"Eye"

+ +
+
+ +

◆ kFalseStr

+ +
+
+ + + + +
const PROGMEM char* kFalseStr = D_STR_FALSE
+
+ +

"False"

+ +
+
+ +

◆ kFanOnlyStr

+ +
+
+ + + + +
const PROGMEM char* kFanOnlyStr = D_STR_FANONLY
+
+ +

"fan_only"

+ +
+
+ +

◆ kFanStr

+ +
+
+ + + + +
const PROGMEM char* kFanStr = D_STR_FAN
+
+ +

"Fan"

+ +
+
+ +

◆ kFastStr

+ +
+
+ + + + +
const PROGMEM char* kFastStr = D_STR_FAST
+
+ +

"Fast"

+ +
+
+ +

◆ kFilterStr

+ +
+
+ + + + +
const PROGMEM char* kFilterStr = D_STR_FILTER
+
+ +

"Filter"

+ +
+
+ +

◆ kFixedStr

+ +
+
+ + + + +
const PROGMEM char* kFixedStr = D_STR_FIXED
+
+ +

"Fixed"

+ +
+
+ +

◆ kFollowStr

+ +
+
+ + + + +
const PROGMEM char* kFollowStr = D_STR_FOLLOW
+
+ +

"Follow"

+ +
+
+ +

◆ kFreshStr

+ +
+
+ + + + +
const PROGMEM char* kFreshStr = D_STR_FRESH
+
+ +

"Fresh"

+ +
+
+ +

◆ kHealthStr

+ +
+
+ + + + +
const PROGMEM char* kHealthStr = D_STR_HEALTH
+
+ +

"Health"

+ +
+
+ +

◆ kHeatStr

+ +
+
+ + + + +
const PROGMEM char* kHeatStr = D_STR_HEAT
+
+ +

"Heat"

+ +
+
+ +

◆ kHighestStr

+ +
+
+ + + + +
const PROGMEM char* kHighestStr = D_STR_HIGHEST
+
+ +

"Highest"

+ +
+
+ +

◆ kHighStr

+ +
+
+ + + + +
const PROGMEM char* kHighStr = D_STR_HIGH
+
+ +

"High"

+ +
+
+ +

◆ kHiStr

+ +
+
+ + + + +
const PROGMEM char* kHiStr = D_STR_HI
+
+ +

"Hi"

+ +
+
+ +

◆ kHoldStr

+ +
+
+ + + + +
const PROGMEM char* kHoldStr = D_STR_HOLD
+
+ +

"Hold"

+ +
+
+ +

◆ kHoursStr

+ +
+
+ + + + +
const PROGMEM char* kHoursStr = D_STR_HOURS
+
+ +

"Hours"

+ +
+
+ +

◆ kHourStr

+ +
+
+ + + + +
const PROGMEM char* kHourStr = D_STR_HOUR
+
+ +

"Hour"

+ +
+
+ +

◆ kHumidStr

+ +
+
+ + + + +
const PROGMEM char* kHumidStr = D_STR_HUMID
+
+ +

"Humid"

+ +
+
+ +

◆ kIFeelStr

+ +
+
+ + + + +
const PROGMEM char* kIFeelStr = D_STR_IFEEL
+
+ +

"IFeel"

+ +
+
+ +

◆ kInsideStr

+ +
+
+ + + + +
const PROGMEM char* kInsideStr = D_STR_INSIDE
+
+ +

"Inside"

+ +
+
+ +

◆ kIonStr

+ +
+
+ + + + +
const PROGMEM char* kIonStr = D_STR_ION
+
+ +

"Ion"

+ +
+
+ +

◆ kLastStr

+ +
+
+ + + + +
const PROGMEM char* kLastStr = D_STR_LAST
+
+ +

"Last"

+ +
+
+ +

◆ kLeftMaxStr

+ +
+
+ + + + +
const PROGMEM char* kLeftMaxStr = D_STR_LEFTMAX_NOSPACE
+
+ +

"LeftMax"

+ +
+
+ +

◆ kLeftStr

+ +
+
+ + + + +
const PROGMEM char* kLeftStr = D_STR_LEFT
+
+ +

"Left"

+ +
+
+ +

◆ kLightStr

+ +
+
+ + + + +
const PROGMEM char* kLightStr = D_STR_LIGHT
+
+ +

"Light"

+ +
+
+ +

◆ kLightToggleStr

+ +
+
+ + + + +
const PROGMEM char* kLightToggleStr = D_STR_LIGHTTOGGLE
+
+ +

"Light Toggle"

+ +
+
+ +

◆ kLoStr

+ +
+
+ + + + +
const PROGMEM char* kLoStr = D_STR_LO
+
+ +

"Lo"

+ +
+
+ +

◆ kLoudStr

+ +
+
+ + + + +
const PROGMEM char* kLoudStr = D_STR_LOUD
+
+ +

"Loud"

+ +
+
+ +

◆ kLowerStr

+ +
+
+ + + + +
const PROGMEM char* kLowerStr = D_STR_LOWER
+
+ +

"Lower"

+ +
+
+ +

◆ kLowestStr

+ +
+
+ + + + +
const PROGMEM char* kLowestStr = D_STR_LOWEST
+
+ +

"Lowest"

+ +
+
+ +

◆ kLowStr

+ +
+
+ + + + +
const PROGMEM char* kLowStr = D_STR_LOW
+
+ +

"Low"

+ +
+
+ +

◆ kManualStr

+ +
+
+ + + + +
const PROGMEM char* kManualStr = D_STR_MANUAL
+
+ +

"Manual"

+ +
+
+ +

◆ kMaximumStr

+ +
+
+ + + + +
const PROGMEM char* kMaximumStr = D_STR_MAXIMUM
+
+ +

"Maximum"

+ +
+
+ +

◆ kMaxLeftStr

+ +
+
+ + + + +
const PROGMEM char* kMaxLeftStr = D_STR_MAXLEFT
+
+ +

"Max Left"

+ +
+
+ +

◆ kMaxRightStr

+ +
+
+ + + + +
const PROGMEM char* kMaxRightStr = D_STR_MAXRIGHT
+
+ +

"Max Right"

+ +
+
+ +

◆ kMaxStr

+ +
+
+ + + + +
const PROGMEM char* kMaxStr = D_STR_MAX
+
+ +

"Max"

+ +
+
+ +

◆ kMediumStr

+ +
+
+ + + + +
const PROGMEM char* kMediumStr = D_STR_MEDIUM
+
+ +

"Medium"

+ +
+
+ +

◆ kMedStr

+ +
+
+ + + + +
const PROGMEM char* kMedStr = D_STR_MED
+
+ +

"Med"

+ +
+
+ +

◆ kMiddleStr

+ +
+
+ + + + +
const PROGMEM char* kMiddleStr = D_STR_MIDDLE
+
+ +

"Middle"

+ +
+
+ +

◆ kMidStr

+ +
+
+ + + + +
const PROGMEM char* kMidStr = D_STR_MID
+
+ +

"Mid"

+ +
+
+ +

◆ kMinimumStr

+ +
+
+ + + + +
const PROGMEM char* kMinimumStr = D_STR_MINIMUM
+
+ +

"Minimum"

+ +
+
+ +

◆ kMinStr

+ +
+
+ + + + +
const PROGMEM char* kMinStr = D_STR_MIN
+
+ +

"Min"

+ +
+
+ +

◆ kMinutesStr

+ +
+
+ + + + +
const PROGMEM char* kMinutesStr = D_STR_MINUTES
+
+ +

"Minutes"

+ +
+
+ +

◆ kMinuteStr

+ +
+
+ + + + +
const PROGMEM char* kMinuteStr = D_STR_MINUTE
+
+ +

"Minute"

+ +
+
+ +

◆ kModelStr

+ +
+
+ + + + +
const PROGMEM char* kModelStr = D_STR_MODEL
+
+ +

"Model"

+ +
+
+ +

◆ kModeStr

+ +
+
+ + + + +
const PROGMEM char* kModeStr = D_STR_MODE
+
+ +

"Mode"

+ +
+
+ +

◆ kMouldStr

+ +
+
+ + + + +
const PROGMEM char* kMouldStr = D_STR_MOULD
+
+ +

"Mould"

+ +
+
+ +

◆ kMoveStr

+ +
+
+ + + + +
const PROGMEM char* kMoveStr = D_STR_MOVE
+
+ +

"Move"

+ +
+
+ +

◆ kNAStr

+ +
+
+ + + + +
const PROGMEM char* kNAStr = D_STR_NA
+
+ +

"N/A"

+ +
+
+ +

◆ kNightStr

+ +
+
+ + + + +
const PROGMEM char* kNightStr = D_STR_NIGHT
+
+ +

"Night"

+ +
+
+ +

◆ kNoStr

+ +
+
+ + + + +
const PROGMEM char* kNoStr = D_STR_NO
+
+ +

"No"

+ +
+
+ +

◆ kNowStr

+ +
+
+ + + + +
const PROGMEM char* kNowStr = D_STR_NOW
+
+ +

"Now"

+ +
+
+ +

◆ kOffStr

+ +
+
+ + + + +
const PROGMEM char* kOffStr = D_STR_OFF
+
+ +

"Off"

+ +
+
+ +

◆ kOffTimerStr

+ +
+
+ + + + +
const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER
+
+ +

"OffTimer"

+ +
+
+ +

◆ kOnStr

+ +
+
+ + + + +
const PROGMEM char* kOnStr = D_STR_ON
+
+ +

"On"

+ +
+
+ +

◆ kOnTimerStr

+ +
+
+ + + + +
const PROGMEM char* kOnTimerStr = D_STR_ONTIMER
+
+ +

"OnTimer"

+ +
+
+ +

◆ kOutsideQuietStr

+ +
+
+ + + + +
const PROGMEM char* kOutsideQuietStr = D_STR_OUTSIDEQUIET
+
+ +

"Outside Quiet"

+ +
+
+ +

◆ kOutsideStr

+ +
+
+ + + + +
const PROGMEM char* kOutsideStr = D_STR_OUTSIDE
+
+ +

"Outside"

+ +
+
+ +

◆ kPowerButtonStr

+ +
+
+ + + + +
const PROGMEM char* kPowerButtonStr = D_STR_POWERBUTTON
+
+ +

"Power Button"

+ +
+
+ +

◆ kPowerfulStr

+ +
+
+ + + + +
const PROGMEM char* kPowerfulStr = D_STR_POWERFUL
+
+ +

"Powerful"

+ +
+
+ +

◆ kPowerStr

+ +
+
+ + + + +
const PROGMEM char* kPowerStr = D_STR_POWER
+
+ +

"Power"

+ +
+
+ +

◆ kPowerToggleStr

+ +
+
+ + + + +
const PROGMEM char* kPowerToggleStr = D_STR_POWERTOGGLE
+
+ +

"Power Toggle"

+ +
+
+ +

◆ kPreviousPowerStr

+ +
+
+ + + + +
const PROGMEM char* kPreviousPowerStr = D_STR_PREVIOUSPOWER
+
+ +

"Previous Power"

+ +
+
+ +

◆ kProtocolStr

+ +
+
+ + + + +
const PROGMEM char* kProtocolStr = D_STR_PROTOCOL
+
+ +

"Protocol"

+ +
+
+ +

◆ kPurifyStr

+ +
+
+ + + + +
const PROGMEM char* kPurifyStr = D_STR_PURIFY
+
+ +

"Purify"

+ +
+
+ +

◆ kQuietStr

+ +
+
+ + + + +
const PROGMEM char* kQuietStr = D_STR_QUIET
+
+ +

"Quiet"

+ +
+
+ +

◆ kRepeatStr

+ +
+
+ + + + +
const PROGMEM char* kRepeatStr = D_STR_REPEAT
+
+ +

"Repeat"

+ +
+
+ +

◆ kRightMaxStr

+ +
+
+ + + + +
const PROGMEM char* kRightMaxStr = D_STR_RIGHTMAX_NOSPACE
+
+ +

"RightMax"

+ +
+
+ +

◆ kRightStr

+ +
+
+ + + + +
const PROGMEM char* kRightStr = D_STR_RIGHT
+
+ +

"Right"

+ +
+
+ +

◆ kRoomStr

+ +
+
+ + + + +
const PROGMEM char* kRoomStr = D_STR_ROOM
+
+ +

"Room"

+ +
+
+ +

◆ kSaveStr

+ +
+
+ + + + +
const PROGMEM char* kSaveStr = D_STR_SAVE
+
+ +

"Save"

+ +
+
+ +

◆ kSecondsStr

+ +
+
+ + + + +
const PROGMEM char* kSecondsStr = D_STR_SECONDS
+
+ +

"Seconds"

+ +
+
+ +

◆ kSecondStr

+ +
+
+ + + + +
const PROGMEM char* kSecondStr = D_STR_SECOND
+
+ +

"Second"

+ +
+
+ +

◆ kSensorStr

+ +
+
+ + + + +
const PROGMEM char* kSensorStr = D_STR_SENSOR
+
+ +

"Sensor"

+ +
+
+ +

◆ kSensorTempStr

+ +
+
+ + + + +
const PROGMEM char* kSensorTempStr = D_STR_SENSORTEMP
+
+ +

"Sensor Temp"

+ +
+
+ +

◆ kSetStr

+ +
+
+ + + + +
const PROGMEM char* kSetStr = D_STR_SET
+
+ +

"Set"

+ +
+
+ +

◆ kSilentStr

+ +
+
+ + + + +
const PROGMEM char* kSilentStr = D_STR_SILENT
+
+ +

"Silent"

+ +
+
+ +

◆ kSleepStr

+ +
+
+ + + + +
const PROGMEM char* kSleepStr = D_STR_SLEEP
+
+ +

"Sleep"

+ +
+
+ +

◆ kSleepTimerStr

+ +
+
+ + + + +
const PROGMEM char* kSleepTimerStr = D_STR_SLEEP_TIMER
+
+ +

"Sleep Timer"

+ +
+
+ +

◆ kSlowStr

+ +
+
+ + + + +
const PROGMEM char* kSlowStr = D_STR_SLOW
+
+ +

"Slow"

+ +
+
+ +

◆ kSpaceLBraceStr

+ +
+
+ + + + +
const PROGMEM char* kSpaceLBraceStr = D_STR_SPACELBRACE
+
+ +

" ("

+ +
+
+ +

◆ kStartStr

+ +
+
+ + + + +
const PROGMEM char* kStartStr = D_STR_START
+
+ +

"Start"

+ +
+
+ +

◆ kStepStr

+ +
+
+ + + + +
const PROGMEM char* kStepStr = D_STR_STEP
+
+ +

"Step"

+ +
+
+ +

◆ kStopStr

+ +
+
+ + + + +
const PROGMEM char* kStopStr = D_STR_STOP
+
+ +

"Stop"

+ +
+
+ +

◆ kSuperStr

+ +
+
+ + + + +
const PROGMEM char* kSuperStr = D_STR_SUPER
+
+ +

"Super"

+ +
+
+ +

◆ kSwingHStr

+ +
+
+ + + + +
const PROGMEM char* kSwingHStr = D_STR_SWINGH
+
+ +

"SwingH"

+ +
+
+ +

◆ kSwingStr

+ +
+
+ + + + +
const PROGMEM char* kSwingStr = D_STR_SWING
+
+ +

"Swing"

+ +
+
+ +

◆ kSwingVModeStr

+ +
+
+ + + + +
const PROGMEM char* kSwingVModeStr = D_STR_SWINGVMODE
+
+ +

"Swing(V) Mode"

+ +
+
+ +

◆ kSwingVStr

+ +
+
+ + + + +
const PROGMEM char* kSwingVStr = D_STR_SWINGV
+
+ +

"SwingV"

+ +
+
+ +

◆ kSwingVToggleStr

+ +
+
+ + + + +
const PROGMEM char* kSwingVToggleStr = D_STR_SWINGVTOGGLE
+
+ +

"Swing(V) Toggle"

+ +
+
+ +

◆ kTempDownStr

+ +
+
+ + + + +
const PROGMEM char* kTempDownStr = D_STR_TEMPDOWN
+
+ +

"Temp Down"

+ +
+
+ +

◆ kTempStr

+ +
+
+ + + + +
const PROGMEM char* kTempStr = D_STR_TEMP
+
+ +

"Temp"

+ +
+
+ +

◆ kTempUpStr

+ +
+
+ + + + +
const PROGMEM char* kTempUpStr = D_STR_TEMPUP
+
+ +

"Temp Up"

+ +
+
+ +

◆ kThreeLetterDayOfWeekStr

+ +
+
+ + + + +
const PROGMEM char* kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS
+
+ +

"SunMonTueWedThuFriSat"

+ +
+
+ +

◆ kTimerStr

+ +
+
+ + + + +
const PROGMEM char* kTimerStr = D_STR_TIMER
+
+ +

"Timer"

+ +
+
+ +

◆ kTimeSep

+ +
+
+ + + + +
char kTimeSep = D_CHR_TIME_SEP
+
+ +

':'

+ +
+
+ +

◆ kToggleStr

+ +
+
+ + + + +
const PROGMEM char* kToggleStr = D_STR_TOGGLE
+
+ +

"Toggle"

+ +
+
+ +

◆ kTopStr

+ +
+
+ + + + +
const PROGMEM char* kTopStr = D_STR_TOP
+
+ +

"Top"

+ +
+
+ +

◆ kTrueStr

+ +
+
+ + + + +
const PROGMEM char* kTrueStr = D_STR_TRUE
+
+ +

"True"

+ +
+
+ +

◆ kTurboStr

+ +
+
+ + + + +
const PROGMEM char* kTurboStr = D_STR_TURBO
+
+ +

"Turbo"

+ +
+
+ +

◆ kUnknownStr

+ +
+
+ + + + +
const PROGMEM char* kUnknownStr = D_STR_UNKNOWN
+
+ +

"Unknown"

+ +
+
+ +

◆ kUpperStr

+ +
+
+ + + + +
const PROGMEM char* kUpperStr = D_STR_UPPER
+
+ +

"Upper"

+ +
+
+ +

◆ kUpStr

+ +
+
+ + + + +
const PROGMEM char* kUpStr = D_STR_UP
+
+ +

"Up"

+ +
+
+ +

◆ kWallStr

+ +
+
+ + + + +
const PROGMEM char* kWallStr = D_STR_WALL
+
+ +

"Wall"

+ +
+
+ +

◆ kWeeklyTimerStr

+ +
+
+ + + + +
const PROGMEM char* kWeeklyTimerStr = D_STR_WEEKLYTIMER
+
+ +

"WeeklyTimer"

+ +
+
+ +

◆ kWideStr

+ +
+
+ + + + +
const PROGMEM char* kWideStr = D_STR_WIDE
+
+ +

"Wide"

+ +
+
+ +

◆ kWifiStr

+ +
+
+ + + + +
const PROGMEM char* kWifiStr = D_STR_WIFI
+
+ +

"Wifi"

+ +
+
+ +

◆ kXFanStr

+ +
+
+ + + + +
const PROGMEM char* kXFanStr = D_STR_XFAN
+
+ +

"XFan"

+ +
+
+ +

◆ kYesStr

+ +
+
+ + + + +
const PROGMEM char* kYesStr = D_STR_YES
+
+ +

"Yes"

+ +
+
+ +

◆ kZoneFollowStr

+ +
+
+ + + + +
const PROGMEM char* kZoneFollowStr = D_STR_ZONEFOLLOW
+
+ +

"Zone Follow"

+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h.html new file mode 100644 index 000000000..e3c285532 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h.html @@ -0,0 +1,2807 @@ + + + + + + + +IRremoteESP8266: src/IRtext.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRtext.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

char kTimeSep
 ':' More...
 
const char * k3DStr
 "3D" More...
 
const char * k6thSenseStr
 "6th Sense" More...
 
const char * k8CHeatStr
 "8CHeat" More...
 
const char * kAirFlowStr
 "Air Flow" More...
 
const char * kAllProtocolNamesStr
 New protocol strings should be added just above this line. More...
 
const char * kAutomaticStr
 "Automatic" More...
 
const char * kAutoStr
 "Auto" More...
 
const char * kBeepStr
 "Beep" More...
 
const char * kBitsStr
 "Bits" More...
 
const char * kBottomStr
 "Bottom" More...
 
const char * kBreezeStr
 "Breeze" More...
 
const char * kButtonStr
 "Button" More...
 
const char * kCancelStr
 "Cancel" More...
 
const char * kCeilingStr
 "Ceiling" More...
 
const char * kCelsiusStr
 "Celsius" More...
 
const char * kCentreStr
 "Centre" More...
 
const char * kChangeStr
 "Change" More...
 
const char * kCirculateStr
 "Circulate" More...
 
const char * kCleanStr
 "Clean" More...
 
const char * kClockStr
 "Clock" More...
 
const char * kCodeStr
 "Code" More...
 
const char * kColonSpaceStr
 ": " More...
 
const char * kComfortStr
 "Comfort" More...
 
const char * kCommandStr
 "Command" More...
 
const char * kCommaSpaceStr
 ", " More...
 
const char * kCoolStr
 "Cool" More...
 
const char * kDaysStr
 "Days" More...
 
const char * kDayStr
 "Day" More...
 
const char * kDisplayTempStr
 "Display Temp" More...
 
const char * kDownStr
 "Down" More...
 
const char * kDryStr
 "Dry" More...
 
const char * kEconoStr
 "Econo" More...
 
const char * kEyeAutoStr
 "Eye Auto" More...
 
const char * kEyeStr
 "Eye" More...
 
const char * kFalseStr
 "False" More...
 
const char * kFanOnlyStr
 "fan_only" More...
 
const char * kFanStr
 "Fan" More...
 
const char * kFastStr
 "Fast" More...
 
const char * kFilterStr
 "Filter" More...
 
const char * kFixedStr
 "Fixed" More...
 
const char * kFollowStr
 "Follow" More...
 
const char * kFreshStr
 "Fresh" More...
 
const char * kHealthStr
 "Health" More...
 
const char * kHeatStr
 "Heat" More...
 
const char * kHighestStr
 "Highest" More...
 
const char * kHighStr
 "High" More...
 
const char * kHiStr
 "Hi" More...
 
const char * kHoldStr
 "Hold" More...
 
const char * kHoursStr
 "Hours" More...
 
const char * kHourStr
 "Hour" More...
 
const char * kHumidStr
 "Humid" More...
 
const char * kIFeelStr
 "IFeel" More...
 
const char * kInsideStr
 "Inside" More...
 
const char * kIonStr
 "Ion" More...
 
const char * kLastStr
 "Last" More...
 
const char * kLeftMaxStr
 "LeftMax" More...
 
const char * kLeftStr
 "Left" More...
 
const char * kLightStr
 "Light" More...
 
const char * kLightToggleStr
 "Light Toggle" More...
 
const char * kLoStr
 "Lo" More...
 
const char * kLoudStr
 "Loud" More...
 
const char * kLowerStr
 "Lower" More...
 
const char * kLowestStr
 "Lowest" More...
 
const char * kLowStr
 "Low" More...
 
const char * kManualStr
 "Manual" More...
 
const char * kMaximumStr
 "Maximum" More...
 
const char * kMaxLeftStr
 "Max Left" More...
 
const char * kMaxRightStr
 "Max Right" More...
 
const char * kMaxStr
 "Max" More...
 
const char * kMediumStr
 "Medium" More...
 
const char * kMedStr
 "Med" More...
 
const char * kMiddleStr
 "Middle" More...
 
const char * kMidStr
 "Mid" More...
 
const char * kMinimumStr
 "Minimum" More...
 
const char * kMinStr
 "Min" More...
 
const char * kMinutesStr
 "Minutes" More...
 
const char * kMinuteStr
 "Minute" More...
 
const char * kModelStr
 "Model" More...
 
const char * kModeStr
 "Mode" More...
 
const char * kMouldStr
 "Mould" More...
 
const char * kMoveStr
 "Move" More...
 
const char * kNAStr
 "N/A" More...
 
const char * kNightStr
 "Night" More...
 
const char * kNoStr
 "No" More...
 
const char * kNowStr
 "Now" More...
 
const char * kOffStr
 "Off" More...
 
const char * kOffTimerStr
 "OffTimer" More...
 
const char * kOnStr
 "On" More...
 
const char * kOnTimerStr
 "OnTimer" More...
 
const char * kOutsideQuietStr
 "Outside Quiet" More...
 
const char * kOutsideStr
 "Outside" More...
 
const char * kPowerfulStr
 "Powerful" More...
 
const char * kPowerStr
 "Power" More...
 
const char * kPowerToggleStr
 "Power Toggle" More...
 
const char * kPowerButtonStr
 "Power Button" More...
 
const char * kPreviousPowerStr
 "Previous Power" More...
 
const char * kProtocolStr
 "Protocol" More...
 
const char * kPurifyStr
 "Purify" More...
 
const char * kQuietStr
 "Quiet" More...
 
const char * kRepeatStr
 "Repeat" More...
 
const char * kRightMaxStr
 "RightMax" More...
 
const char * kRightStr
 "Right" More...
 
const char * kRoomStr
 "Room" More...
 
const char * kSaveStr
 "Save" More...
 
const char * kSecondsStr
 "Seconds" More...
 
const char * kSecondStr
 "Second" More...
 
const char * kSensorStr
 "Sensor" More...
 
const char * kSensorTempStr
 "Sensor Temp" More...
 
const char * kSetStr
 "Set" More...
 
const char * kSilentStr
 "Silent" More...
 
const char * kSleepStr
 "Sleep" More...
 
const char * kSleepTimerStr
 "Sleep Timer" More...
 
const char * kSlowStr
 "Slow" More...
 
const char * kSpaceLBraceStr
 " (" More...
 
const char * kStartStr
 "Start" More...
 
const char * kStepStr
 "Step" More...
 
const char * kStopStr
 "Stop" More...
 
const char * kSuperStr
 "Super" More...
 
const char * kSwingHStr
 "SwingH" More...
 
const char * kSwingStr
 "Swing" More...
 
const char * kSwingVModeStr
 "Swing(V) Mode" More...
 
const char * kSwingVStr
 "SwingV" More...
 
const char * kSwingVToggleStr
 "Swing(V) Toggle" More...
 
const char * kTempDownStr
 "Temp Down" More...
 
const char * kTempStr
 "Temp" More...
 
const char * kTempUpStr
 "Temp Up" More...
 
const char * kThreeLetterDayOfWeekStr
 "SunMonTueWedThuFriSat" More...
 
const char * kTimerStr
 "Timer" More...
 
const char * kToggleStr
 "Toggle" More...
 
const char * kTopStr
 "Top" More...
 
const char * kTrueStr
 "True" More...
 
const char * kTurboStr
 "Turbo" More...
 
const char * kUnknownStr
 "Unknown" More...
 
const char * kUpperStr
 "Upper" More...
 
const char * kUpStr
 "Up" More...
 
const char * kWallStr
 "Wall" More...
 
const char * kWeeklyTimerStr
 "WeeklyTimer" More...
 
const char * kWideStr
 "Wide" More...
 
const char * kWifiStr
 "Wifi" More...
 
const char * kXFanStr
 "XFan" More...
 
const char * kYesStr
 "Yes" More...
 
const char * kZoneFollowStr
 "Zone Follow" More...
 
+

Variable Documentation

+ +

◆ k3DStr

+ +
+
+ + + + +
const char* k3DStr
+
+ +

"3D"

+ +
+
+ +

◆ k6thSenseStr

+ +
+
+ + + + +
const char* k6thSenseStr
+
+ +

"6th Sense"

+ +
+
+ +

◆ k8CHeatStr

+ +
+
+ + + + +
const char* k8CHeatStr
+
+ +

"8CHeat"

+ +
+
+ +

◆ kAirFlowStr

+ +
+
+ + + + +
const char* kAirFlowStr
+
+ +

"Air Flow"

+ +
+
+ +

◆ kAllProtocolNamesStr

+ +
+
+ + + + +
const char* kAllProtocolNamesStr
+
+ +

New protocol strings should be added just above this line.

+

This string requires double null termination.

+ +
+
+ +

◆ kAutomaticStr

+ +
+
+ + + + +
const char* kAutomaticStr
+
+ +

"Automatic"

+ +
+
+ +

◆ kAutoStr

+ +
+
+ + + + +
const char* kAutoStr
+
+ +

"Auto"

+ +
+
+ +

◆ kBeepStr

+ +
+
+ + + + +
const char* kBeepStr
+
+ +

"Beep"

+ +
+
+ +

◆ kBitsStr

+ +
+
+ + + + +
const char* kBitsStr
+
+ +

"Bits"

+ +
+
+ +

◆ kBottomStr

+ +
+
+ + + + +
const char* kBottomStr
+
+ +

"Bottom"

+ +
+
+ +

◆ kBreezeStr

+ +
+
+ + + + +
const char* kBreezeStr
+
+ +

"Breeze"

+ +
+
+ +

◆ kButtonStr

+ +
+
+ + + + +
const char* kButtonStr
+
+ +

"Button"

+ +
+
+ +

◆ kCancelStr

+ +
+
+ + + + +
const char* kCancelStr
+
+ +

"Cancel"

+ +
+
+ +

◆ kCeilingStr

+ +
+
+ + + + +
const char* kCeilingStr
+
+ +

"Ceiling"

+ +
+
+ +

◆ kCelsiusStr

+ +
+
+ + + + +
const char* kCelsiusStr
+
+ +

"Celsius"

+ +
+
+ +

◆ kCentreStr

+ +
+
+ + + + +
const char* kCentreStr
+
+ +

"Centre"

+ +
+
+ +

◆ kChangeStr

+ +
+
+ + + + +
const char* kChangeStr
+
+ +

"Change"

+ +
+
+ +

◆ kCirculateStr

+ +
+
+ + + + +
const char* kCirculateStr
+
+ +

"Circulate"

+ +
+
+ +

◆ kCleanStr

+ +
+
+ + + + +
const char* kCleanStr
+
+ +

"Clean"

+ +
+
+ +

◆ kClockStr

+ +
+
+ + + + +
const char* kClockStr
+
+ +

"Clock"

+ +
+
+ +

◆ kCodeStr

+ +
+
+ + + + +
const char* kCodeStr
+
+ +

"Code"

+ +
+
+ +

◆ kColonSpaceStr

+ +
+
+ + + + +
const char* kColonSpaceStr
+
+ +

": "

+ +
+
+ +

◆ kComfortStr

+ +
+
+ + + + +
const char* kComfortStr
+
+ +

"Comfort"

+ +
+
+ +

◆ kCommandStr

+ +
+
+ + + + +
const char* kCommandStr
+
+ +

"Command"

+ +
+
+ +

◆ kCommaSpaceStr

+ +
+
+ + + + +
const char* kCommaSpaceStr
+
+ +

", "

+ +
+
+ +

◆ kCoolStr

+ +
+
+ + + + +
const char* kCoolStr
+
+ +

"Cool"

+ +
+
+ +

◆ kDaysStr

+ +
+
+ + + + +
const char* kDaysStr
+
+ +

"Days"

+ +
+
+ +

◆ kDayStr

+ +
+
+ + + + +
const char* kDayStr
+
+ +

"Day"

+ +
+
+ +

◆ kDisplayTempStr

+ +
+
+ + + + +
const char* kDisplayTempStr
+
+ +

"Display Temp"

+ +
+
+ +

◆ kDownStr

+ +
+
+ + + + +
const char* kDownStr
+
+ +

"Down"

+ +
+
+ +

◆ kDryStr

+ +
+
+ + + + +
const char* kDryStr
+
+ +

"Dry"

+ +
+
+ +

◆ kEconoStr

+ +
+
+ + + + +
const char* kEconoStr
+
+ +

"Econo"

+ +
+
+ +

◆ kEyeAutoStr

+ +
+
+ + + + +
const char* kEyeAutoStr
+
+ +

"Eye Auto"

+ +
+
+ +

◆ kEyeStr

+ +
+
+ + + + +
const char* kEyeStr
+
+ +

"Eye"

+ +
+
+ +

◆ kFalseStr

+ +
+
+ + + + +
const char* kFalseStr
+
+ +

"False"

+ +
+
+ +

◆ kFanOnlyStr

+ +
+
+ + + + +
const char* kFanOnlyStr
+
+ +

"fan_only"

+ +
+
+ +

◆ kFanStr

+ +
+
+ + + + +
const char* kFanStr
+
+ +

"Fan"

+ +
+
+ +

◆ kFastStr

+ +
+
+ + + + +
const char* kFastStr
+
+ +

"Fast"

+ +
+
+ +

◆ kFilterStr

+ +
+
+ + + + +
const char* kFilterStr
+
+ +

"Filter"

+ +
+
+ +

◆ kFixedStr

+ +
+
+ + + + +
const char* kFixedStr
+
+ +

"Fixed"

+ +
+
+ +

◆ kFollowStr

+ +
+
+ + + + +
const char* kFollowStr
+
+ +

"Follow"

+ +
+
+ +

◆ kFreshStr

+ +
+
+ + + + +
const char* kFreshStr
+
+ +

"Fresh"

+ +
+
+ +

◆ kHealthStr

+ +
+
+ + + + +
const char* kHealthStr
+
+ +

"Health"

+ +
+
+ +

◆ kHeatStr

+ +
+
+ + + + +
const char* kHeatStr
+
+ +

"Heat"

+ +
+
+ +

◆ kHighestStr

+ +
+
+ + + + +
const char* kHighestStr
+
+ +

"Highest"

+ +
+
+ +

◆ kHighStr

+ +
+
+ + + + +
const char* kHighStr
+
+ +

"High"

+ +
+
+ +

◆ kHiStr

+ +
+
+ + + + +
const char* kHiStr
+
+ +

"Hi"

+ +
+
+ +

◆ kHoldStr

+ +
+
+ + + + +
const char* kHoldStr
+
+ +

"Hold"

+ +
+
+ +

◆ kHoursStr

+ +
+
+ + + + +
const char* kHoursStr
+
+ +

"Hours"

+ +
+
+ +

◆ kHourStr

+ +
+
+ + + + +
const char* kHourStr
+
+ +

"Hour"

+ +
+
+ +

◆ kHumidStr

+ +
+
+ + + + +
const char* kHumidStr
+
+ +

"Humid"

+ +
+
+ +

◆ kIFeelStr

+ +
+
+ + + + +
const char* kIFeelStr
+
+ +

"IFeel"

+ +
+
+ +

◆ kInsideStr

+ +
+
+ + + + +
const char* kInsideStr
+
+ +

"Inside"

+ +
+
+ +

◆ kIonStr

+ +
+
+ + + + +
const char* kIonStr
+
+ +

"Ion"

+ +
+
+ +

◆ kLastStr

+ +
+
+ + + + +
const char* kLastStr
+
+ +

"Last"

+ +
+
+ +

◆ kLeftMaxStr

+ +
+
+ + + + +
const char* kLeftMaxStr
+
+ +

"LeftMax"

+ +
+
+ +

◆ kLeftStr

+ +
+
+ + + + +
const char* kLeftStr
+
+ +

"Left"

+ +
+
+ +

◆ kLightStr

+ +
+
+ + + + +
const char* kLightStr
+
+ +

"Light"

+ +
+
+ +

◆ kLightToggleStr

+ +
+
+ + + + +
const char* kLightToggleStr
+
+ +

"Light Toggle"

+ +
+
+ +

◆ kLoStr

+ +
+
+ + + + +
const char* kLoStr
+
+ +

"Lo"

+ +
+
+ +

◆ kLoudStr

+ +
+
+ + + + +
const char* kLoudStr
+
+ +

"Loud"

+ +
+
+ +

◆ kLowerStr

+ +
+
+ + + + +
const char* kLowerStr
+
+ +

"Lower"

+ +
+
+ +

◆ kLowestStr

+ +
+
+ + + + +
const char* kLowestStr
+
+ +

"Lowest"

+ +
+
+ +

◆ kLowStr

+ +
+
+ + + + +
const char* kLowStr
+
+ +

"Low"

+ +
+
+ +

◆ kManualStr

+ +
+
+ + + + +
const char* kManualStr
+
+ +

"Manual"

+ +
+
+ +

◆ kMaximumStr

+ +
+
+ + + + +
const char* kMaximumStr
+
+ +

"Maximum"

+ +
+
+ +

◆ kMaxLeftStr

+ +
+
+ + + + +
const char* kMaxLeftStr
+
+ +

"Max Left"

+ +
+
+ +

◆ kMaxRightStr

+ +
+
+ + + + +
const char* kMaxRightStr
+
+ +

"Max Right"

+ +
+
+ +

◆ kMaxStr

+ +
+
+ + + + +
const char* kMaxStr
+
+ +

"Max"

+ +
+
+ +

◆ kMediumStr

+ +
+
+ + + + +
const char* kMediumStr
+
+ +

"Medium"

+ +
+
+ +

◆ kMedStr

+ +
+
+ + + + +
const char* kMedStr
+
+ +

"Med"

+ +
+
+ +

◆ kMiddleStr

+ +
+
+ + + + +
const char* kMiddleStr
+
+ +

"Middle"

+ +
+
+ +

◆ kMidStr

+ +
+
+ + + + +
const char* kMidStr
+
+ +

"Mid"

+ +
+
+ +

◆ kMinimumStr

+ +
+
+ + + + +
const char* kMinimumStr
+
+ +

"Minimum"

+ +
+
+ +

◆ kMinStr

+ +
+
+ + + + +
const char* kMinStr
+
+ +

"Min"

+ +
+
+ +

◆ kMinutesStr

+ +
+
+ + + + +
const char* kMinutesStr
+
+ +

"Minutes"

+ +
+
+ +

◆ kMinuteStr

+ +
+
+ + + + +
const char* kMinuteStr
+
+ +

"Minute"

+ +
+
+ +

◆ kModelStr

+ +
+
+ + + + +
const char* kModelStr
+
+ +

"Model"

+ +
+
+ +

◆ kModeStr

+ +
+
+ + + + +
const char* kModeStr
+
+ +

"Mode"

+ +
+
+ +

◆ kMouldStr

+ +
+
+ + + + +
const char* kMouldStr
+
+ +

"Mould"

+ +
+
+ +

◆ kMoveStr

+ +
+
+ + + + +
const char* kMoveStr
+
+ +

"Move"

+ +
+
+ +

◆ kNAStr

+ +
+
+ + + + +
const char* kNAStr
+
+ +

"N/A"

+ +
+
+ +

◆ kNightStr

+ +
+
+ + + + +
const char* kNightStr
+
+ +

"Night"

+ +
+
+ +

◆ kNoStr

+ +
+
+ + + + +
const char* kNoStr
+
+ +

"No"

+ +
+
+ +

◆ kNowStr

+ +
+
+ + + + +
const char* kNowStr
+
+ +

"Now"

+ +
+
+ +

◆ kOffStr

+ +
+
+ + + + +
const char* kOffStr
+
+ +

"Off"

+ +
+
+ +

◆ kOffTimerStr

+ +
+
+ + + + +
const char* kOffTimerStr
+
+ +

"OffTimer"

+ +
+
+ +

◆ kOnStr

+ +
+
+ + + + +
const char* kOnStr
+
+ +

"On"

+ +
+
+ +

◆ kOnTimerStr

+ +
+
+ + + + +
const char* kOnTimerStr
+
+ +

"OnTimer"

+ +
+
+ +

◆ kOutsideQuietStr

+ +
+
+ + + + +
const char* kOutsideQuietStr
+
+ +

"Outside Quiet"

+ +
+
+ +

◆ kOutsideStr

+ +
+
+ + + + +
const char* kOutsideStr
+
+ +

"Outside"

+ +
+
+ +

◆ kPowerButtonStr

+ +
+
+ + + + +
const char* kPowerButtonStr
+
+ +

"Power Button"

+ +
+
+ +

◆ kPowerfulStr

+ +
+
+ + + + +
const char* kPowerfulStr
+
+ +

"Powerful"

+ +
+
+ +

◆ kPowerStr

+ +
+
+ + + + +
const char* kPowerStr
+
+ +

"Power"

+ +
+
+ +

◆ kPowerToggleStr

+ +
+
+ + + + +
const char* kPowerToggleStr
+
+ +

"Power Toggle"

+ +
+
+ +

◆ kPreviousPowerStr

+ +
+
+ + + + +
const char* kPreviousPowerStr
+
+ +

"Previous Power"

+ +
+
+ +

◆ kProtocolStr

+ +
+
+ + + + +
const char* kProtocolStr
+
+ +

"Protocol"

+ +
+
+ +

◆ kPurifyStr

+ +
+
+ + + + +
const char* kPurifyStr
+
+ +

"Purify"

+ +
+
+ +

◆ kQuietStr

+ +
+
+ + + + +
const char* kQuietStr
+
+ +

"Quiet"

+ +
+
+ +

◆ kRepeatStr

+ +
+
+ + + + +
const char* kRepeatStr
+
+ +

"Repeat"

+ +
+
+ +

◆ kRightMaxStr

+ +
+
+ + + + +
const char* kRightMaxStr
+
+ +

"RightMax"

+ +
+
+ +

◆ kRightStr

+ +
+
+ + + + +
const char* kRightStr
+
+ +

"Right"

+ +
+
+ +

◆ kRoomStr

+ +
+
+ + + + +
const char* kRoomStr
+
+ +

"Room"

+ +
+
+ +

◆ kSaveStr

+ +
+
+ + + + +
const char* kSaveStr
+
+ +

"Save"

+ +
+
+ +

◆ kSecondsStr

+ +
+
+ + + + +
const char* kSecondsStr
+
+ +

"Seconds"

+ +
+
+ +

◆ kSecondStr

+ +
+
+ + + + +
const char* kSecondStr
+
+ +

"Second"

+ +
+
+ +

◆ kSensorStr

+ +
+
+ + + + +
const char* kSensorStr
+
+ +

"Sensor"

+ +
+
+ +

◆ kSensorTempStr

+ +
+
+ + + + +
const char* kSensorTempStr
+
+ +

"Sensor Temp"

+ +
+
+ +

◆ kSetStr

+ +
+
+ + + + +
const char* kSetStr
+
+ +

"Set"

+ +
+
+ +

◆ kSilentStr

+ +
+
+ + + + +
const char* kSilentStr
+
+ +

"Silent"

+ +
+
+ +

◆ kSleepStr

+ +
+
+ + + + +
const char* kSleepStr
+
+ +

"Sleep"

+ +
+
+ +

◆ kSleepTimerStr

+ +
+
+ + + + +
const char* kSleepTimerStr
+
+ +

"Sleep Timer"

+ +
+
+ +

◆ kSlowStr

+ +
+
+ + + + +
const char* kSlowStr
+
+ +

"Slow"

+ +
+
+ +

◆ kSpaceLBraceStr

+ +
+
+ + + + +
const char* kSpaceLBraceStr
+
+ +

" ("

+ +
+
+ +

◆ kStartStr

+ +
+
+ + + + +
const char* kStartStr
+
+ +

"Start"

+ +
+
+ +

◆ kStepStr

+ +
+
+ + + + +
const char* kStepStr
+
+ +

"Step"

+ +
+
+ +

◆ kStopStr

+ +
+
+ + + + +
const char* kStopStr
+
+ +

"Stop"

+ +
+
+ +

◆ kSuperStr

+ +
+
+ + + + +
const char* kSuperStr
+
+ +

"Super"

+ +
+
+ +

◆ kSwingHStr

+ +
+
+ + + + +
const char* kSwingHStr
+
+ +

"SwingH"

+ +
+
+ +

◆ kSwingStr

+ +
+
+ + + + +
const char* kSwingStr
+
+ +

"Swing"

+ +
+
+ +

◆ kSwingVModeStr

+ +
+
+ + + + +
const char* kSwingVModeStr
+
+ +

"Swing(V) Mode"

+ +
+
+ +

◆ kSwingVStr

+ +
+
+ + + + +
const char* kSwingVStr
+
+ +

"SwingV"

+ +
+
+ +

◆ kSwingVToggleStr

+ +
+
+ + + + +
const char* kSwingVToggleStr
+
+ +

"Swing(V) Toggle"

+ +
+
+ +

◆ kTempDownStr

+ +
+
+ + + + +
const char* kTempDownStr
+
+ +

"Temp Down"

+ +
+
+ +

◆ kTempStr

+ +
+
+ + + + +
const char* kTempStr
+
+ +

"Temp"

+ +
+
+ +

◆ kTempUpStr

+ +
+
+ + + + +
const char* kTempUpStr
+
+ +

"Temp Up"

+ +
+
+ +

◆ kThreeLetterDayOfWeekStr

+ +
+
+ + + + +
const char* kThreeLetterDayOfWeekStr
+
+ +

"SunMonTueWedThuFriSat"

+ +
+
+ +

◆ kTimerStr

+ +
+
+ + + + +
const char* kTimerStr
+
+ +

"Timer"

+ +
+
+ +

◆ kTimeSep

+ +
+
+ + + + +
char kTimeSep
+
+ +

':'

+ +
+
+ +

◆ kToggleStr

+ +
+
+ + + + +
const char* kToggleStr
+
+ +

"Toggle"

+ +
+
+ +

◆ kTopStr

+ +
+
+ + + + +
const char* kTopStr
+
+ +

"Top"

+ +
+
+ +

◆ kTrueStr

+ +
+
+ + + + +
const char* kTrueStr
+
+ +

"True"

+ +
+
+ +

◆ kTurboStr

+ +
+
+ + + + +
const char* kTurboStr
+
+ +

"Turbo"

+ +
+
+ +

◆ kUnknownStr

+ +
+
+ + + + +
const char* kUnknownStr
+
+ +

"Unknown"

+ +
+
+ +

◆ kUpperStr

+ +
+
+ + + + +
const char* kUpperStr
+
+ +

"Upper"

+ +
+
+ +

◆ kUpStr

+ +
+
+ + + + +
const char* kUpStr
+
+ +

"Up"

+ +
+
+ +

◆ kWallStr

+ +
+
+ + + + +
const char* kWallStr
+
+ +

"Wall"

+ +
+
+ +

◆ kWeeklyTimerStr

+ +
+
+ + + + +
const char* kWeeklyTimerStr
+
+ +

"WeeklyTimer"

+ +
+
+ +

◆ kWideStr

+ +
+
+ + + + +
const char* kWideStr
+
+ +

"Wide"

+ +
+
+ +

◆ kWifiStr

+ +
+
+ + + + +
const char* kWifiStr
+
+ +

"Wifi"

+ +
+
+ +

◆ kXFanStr

+ +
+
+ + + + +
const char* kXFanStr
+
+ +

"XFan"

+ +
+
+ +

◆ kYesStr

+ +
+
+ + + + +
const char* kYesStr
+
+ +

"Yes"

+ +
+
+ +

◆ kZoneFollowStr

+ +
+
+ + + + +
const char* kZoneFollowStr
+
+ +

"Zone Follow"

+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h_source.html new file mode 100644 index 000000000..a4b704249 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtext_8h_source.html @@ -0,0 +1,383 @@ + + + + + + + +IRremoteESP8266: src/IRtext.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRtext.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - David Conran (@crankyoldgit)
+
2 // This header file is to be included in files **other than** 'IRtext.cpp'.
+
3 //
+
4 // WARNING: Do not edit this file! This file is automatically generated by
+
5 // 'tools/generate_irtext_h.sh'.
+
6 
+
7 #ifndef IRTEXT_H_
+
8 #define IRTEXT_H_
+
9 
+
10 #include "i18n.h"
+
11 
+
12 // Constant text to be shared across all object files.
+
13 // This means there is only one copy of the character/string/text etc.
+
14 
+
15 extern char kTimeSep;
+
16 extern const char* k3DStr;
+
17 extern const char* k6thSenseStr;
+
18 extern const char* k8CHeatStr;
+
19 extern const char* kAirFlowStr;
+
20 extern const char *kAllProtocolNamesStr;
+
21 extern const char* kAutomaticStr;
+
22 extern const char* kAutoStr;
+
23 extern const char* kBeepStr;
+
24 extern const char* kBitsStr;
+
25 extern const char* kBottomStr;
+
26 extern const char* kBreezeStr;
+
27 extern const char* kButtonStr;
+
28 extern const char* kCancelStr;
+
29 extern const char* kCeilingStr;
+
30 extern const char* kCelsiusStr;
+
31 extern const char* kCentreStr;
+
32 extern const char* kChangeStr;
+
33 extern const char* kCirculateStr;
+
34 extern const char* kCleanStr;
+
35 extern const char* kClockStr;
+
36 extern const char* kCodeStr;
+
37 extern const char* kColonSpaceStr;
+
38 extern const char* kComfortStr;
+
39 extern const char* kCommandStr;
+
40 extern const char* kCommaSpaceStr;
+
41 extern const char* kCoolStr;
+
42 extern const char* kDaysStr;
+
43 extern const char* kDayStr;
+
44 extern const char* kDisplayTempStr;
+
45 extern const char* kDownStr;
+
46 extern const char* kDryStr;
+
47 extern const char* kEconoStr;
+
48 extern const char* kEyeAutoStr;
+
49 extern const char* kEyeStr;
+
50 extern const char* kFalseStr;
+
51 extern const char* kFanOnlyStr;
+
52 extern const char* kFanStr;
+
53 extern const char* kFastStr;
+
54 extern const char* kFilterStr;
+
55 extern const char* kFixedStr;
+
56 extern const char* kFollowStr;
+
57 extern const char* kFreshStr;
+
58 extern const char* kHealthStr;
+
59 extern const char* kHeatStr;
+
60 extern const char* kHighestStr;
+
61 extern const char* kHighStr;
+
62 extern const char* kHiStr;
+
63 extern const char* kHoldStr;
+
64 extern const char* kHoursStr;
+
65 extern const char* kHourStr;
+
66 extern const char* kHumidStr;
+
67 extern const char* kIFeelStr;
+
68 extern const char* kInsideStr;
+
69 extern const char* kIonStr;
+
70 extern const char* kLastStr;
+
71 extern const char* kLeftMaxStr;
+
72 extern const char* kLeftStr;
+
73 extern const char* kLightStr;
+
74 extern const char* kLightToggleStr;
+
75 extern const char* kLoStr;
+
76 extern const char* kLoudStr;
+
77 extern const char* kLowerStr;
+
78 extern const char* kLowestStr;
+
79 extern const char* kLowStr;
+
80 extern const char* kManualStr;
+
81 extern const char* kMaximumStr;
+
82 extern const char* kMaxLeftStr;
+
83 extern const char* kMaxRightStr;
+
84 extern const char* kMaxStr;
+
85 extern const char* kMediumStr;
+
86 extern const char* kMedStr;
+
87 extern const char* kMiddleStr;
+
88 extern const char* kMidStr;
+
89 extern const char* kMinimumStr;
+
90 extern const char* kMinStr;
+
91 extern const char* kMinutesStr;
+
92 extern const char* kMinuteStr;
+
93 extern const char* kModelStr;
+
94 extern const char* kModeStr;
+
95 extern const char* kMouldStr;
+
96 extern const char* kMoveStr;
+
97 extern const char* kNAStr;
+
98 extern const char* kNightStr;
+
99 extern const char* kNoStr;
+
100 extern const char* kNowStr;
+
101 extern const char* kOffStr;
+
102 extern const char* kOffTimerStr;
+
103 extern const char* kOnStr;
+
104 extern const char* kOnTimerStr;
+
105 extern const char* kOutsideQuietStr;
+
106 extern const char* kOutsideStr;
+
107 extern const char* kPowerfulStr;
+
108 extern const char* kPowerStr;
+
109 extern const char* kPowerToggleStr;
+
110 extern const char* kPowerButtonStr;
+
111 extern const char* kPreviousPowerStr;
+
112 extern const char* kProtocolStr;
+
113 extern const char* kPurifyStr;
+
114 extern const char* kQuietStr;
+
115 extern const char* kRepeatStr;
+
116 extern const char* kRightMaxStr;
+
117 extern const char* kRightStr;
+
118 extern const char* kRoomStr;
+
119 extern const char* kSaveStr;
+
120 extern const char* kSecondsStr;
+
121 extern const char* kSecondStr;
+
122 extern const char* kSensorStr;
+
123 extern const char* kSensorTempStr;
+
124 extern const char* kSetStr;
+
125 extern const char* kSilentStr;
+
126 extern const char* kSleepStr;
+
127 extern const char* kSleepTimerStr;
+
128 extern const char* kSlowStr;
+
129 extern const char* kSpaceLBraceStr;
+
130 extern const char* kStartStr;
+
131 extern const char* kStepStr;
+
132 extern const char* kStopStr;
+
133 extern const char* kSuperStr;
+
134 extern const char* kSwingHStr;
+
135 extern const char* kSwingStr;
+
136 extern const char* kSwingVModeStr;
+
137 extern const char* kSwingVStr;
+
138 extern const char* kSwingVToggleStr;
+
139 extern const char* kTempDownStr;
+
140 extern const char* kTempStr;
+
141 extern const char* kTempUpStr;
+
142 extern const char* kThreeLetterDayOfWeekStr;
+
143 extern const char* kTimerStr;
+
144 extern const char* kToggleStr;
+
145 extern const char* kTopStr;
+
146 extern const char* kTrueStr;
+
147 extern const char* kTurboStr;
+
148 extern const char* kUnknownStr;
+
149 extern const char* kUpperStr;
+
150 extern const char* kUpStr;
+
151 extern const char* kWallStr;
+
152 extern const char* kWeeklyTimerStr;
+
153 extern const char* kWideStr;
+
154 extern const char* kWifiStr;
+
155 extern const char* kXFanStr;
+
156 extern const char* kYesStr;
+
157 extern const char* kZoneFollowStr;
+
158 
+
159 #endif // IRTEXT_H_
+
+
const char * kTrueStr
"True"
Definition: IRtext.cpp:168
+
const char * kHoldStr
"Hold"
Definition: IRtext.cpp:57
+
const char * kStopStr
"Stop"
Definition: IRtext.cpp:68
+
const char * kQuietStr
"Quiet"
Definition: IRtext.cpp:30
+
const char * kBitsStr
"Bits"
Definition: IRtext.cpp:173
+
const char * kPowerButtonStr
"Power Button"
Definition: IRtext.cpp:137
+
const char * kMediumStr
"Medium"
Definition: IRtext.cpp:111
+
const char * kStepStr
"Step"
Definition: IRtext.cpp:83
+
const char * kSilentStr
"Silent"
Definition: IRtext.cpp:61
+
const char * kOnTimerStr
"OnTimer"
Definition: IRtext.cpp:42
+
const char * kLoStr
"Lo"
Definition: IRtext.cpp:119
+
const char * kSwingStr
"Swing"
Definition: IRtext.cpp:32
+
const char * kCodeStr
"Code"
Definition: IRtext.cpp:172
+
const char * kSecondsStr
"Seconds"
Definition: IRtext.cpp:162
+
const char * kSetStr
"Set"
Definition: IRtext.cpp:70
+
const char * kHiStr
"Hi"
Definition: IRtext.cpp:115
+
const char * kRepeatStr
"Repeat"
Definition: IRtext.cpp:171
+
const char * kCeilingStr
"Ceiling"
Definition: IRtext.cpp:92
+
const char * kPowerToggleStr
"Power Toggle"
Definition: IRtext.cpp:136
+
const char * kInsideStr
"Inside"
Definition: IRtext.cpp:85
+
const char * kTempDownStr
"Temp Down"
Definition: IRtext.cpp:66
+
const char * kMoveStr
"Move"
Definition: IRtext.cpp:69
+
const char * kColonSpaceStr
": "
Definition: IRtext.cpp:151
+
const char * kWideStr
"Wide"
Definition: IRtext.cpp:127
+
const char * kRightMaxStr
"RightMax"
Definition: IRtext.cpp:122
+
const char * kDownStr
"Down"
Definition: IRtext.cpp:73
+
const char * kLightStr
"Light"
Definition: IRtext.cpp:28
+
const char * kCoolStr
"Cool"
Definition: IRtext.cpp:100
+
const char * kRightStr
"Right"
Definition: IRtext.cpp:123
+
const char * kMinuteStr
"Minute"
Definition: IRtext.cpp:159
+
const char * kMinutesStr
"Minutes"
Definition: IRtext.cpp:160
+
const char * kSleepStr
"Sleep"
Definition: IRtext.cpp:27
+
const char * kMinimumStr
"Minimum"
Definition: IRtext.cpp:109
+
const char * k3DStr
"3D"
Definition: IRtext.cpp:63
+
const char * kTempStr
"Temp"
Definition: IRtext.cpp:49
+
const char * kAutomaticStr
"Automatic"
Definition: IRtext.cpp:98
+
const char * kSecondStr
"Second"
Definition: IRtext.cpp:161
+
const char * kSwingVToggleStr
"Swing(V) Toggle"
Definition: IRtext.cpp:144
+
const char * k6thSenseStr
"6th Sense"
Definition: IRtext.cpp:95
+
const char * kFilterStr
"Filter"
Definition: IRtext.cpp:62
+
const char * kNightStr
"Night"
Definition: IRtext.cpp:60
+
const char * kSpaceLBraceStr
" ("
Definition: IRtext.cpp:149
+
const char * kSleepTimerStr
"Sleep Timer"
Definition: IRtext.cpp:142
+
const char * kSwingVModeStr
"Swing(V) Mode"
Definition: IRtext.cpp:143
+
const char * kTimerStr
"Timer"
Definition: IRtext.cpp:41
+
const char * kChangeStr
"Change"
Definition: IRtext.cpp:74
+
const char * kAllProtocolNamesStr
New protocol strings should be added just above this line.
Definition: IRtext.cpp:177
+
const char * kIFeelStr
"IFeel"
Definition: IRtext.cpp:50
+
const char * kFalseStr
"False"
Definition: IRtext.cpp:169
+
const char * kMaxLeftStr
"Max Left"
Definition: IRtext.cpp:125
+
const char * kHealthStr
"Health"
Definition: IRtext.cpp:47
+
const char * kCommandStr
"Command"
Definition: IRtext.cpp:45
+
const char * kXFanStr
"XFan"
Definition: IRtext.cpp:46
+
const char * kPurifyStr
"Purify"
Definition: IRtext.cpp:40
+
const char * kHighStr
"High"
Definition: IRtext.cpp:114
+
const char * kCommaSpaceStr
", "
Definition: IRtext.cpp:150
+
const char * kFanStr
"Fan"
Definition: IRtext.cpp:102
+
const char * kTopStr
"Top"
Definition: IRtext.cpp:129
+
const char * kNowStr
"Now"
Definition: IRtext.cpp:163
+
const char * kOffStr
"Off"
Definition: IRtext.cpp:22
+
const char * kMaximumStr
"Maximum"
Definition: IRtext.cpp:107
+
const char * kButtonStr
"Button"
Definition: IRtext.cpp:58
+ +
const char * kTempUpStr
"Temp Up"
Definition: IRtext.cpp:65
+
const char * kCleanStr
"Clean"
Definition: IRtext.cpp:39
+
const char * kIonStr
"Ion"
Definition: IRtext.cpp:55
+
const char * kProtocolStr
"Protocol"
Definition: IRtext.cpp:19
+
const char * kEyeStr
"Eye"
Definition: IRtext.cpp:53
+
const char * kMedStr
"Med"
Definition: IRtext.cpp:110
+
const char * kThreeLetterDayOfWeekStr
"SunMonTueWedThuFriSat"
Definition: IRtext.cpp:164
+
const char * kCancelStr
"Cancel"
Definition: IRtext.cpp:71
+
const char * kWallStr
"Wall"
Definition: IRtext.cpp:93
+
const char * kToggleStr
"Toggle"
Definition: IRtext.cpp:24
+
const char * kMouldStr
"Mould"
Definition: IRtext.cpp:38
+
const char * kBottomStr
"Bottom"
Definition: IRtext.cpp:130
+
const char * kBeepStr
"Beep"
Definition: IRtext.cpp:35
+
const char * kRoomStr
"Room"
Definition: IRtext.cpp:94
+
const char * kFastStr
"Fast"
Definition: IRtext.cpp:80
+
const char * kDryStr
"Dry"
Definition: IRtext.cpp:103
+
const char * kUpperStr
"Upper"
Definition: IRtext.cpp:89
+
const char * kMiddleStr
"Middle"
Definition: IRtext.cpp:117
+
const char * kAirFlowStr
"Air Flow"
Definition: IRtext.cpp:82
+
const char * kLoudStr
"Loud"
Definition: IRtext.cpp:87
+
const char * kUnknownStr
"Unknown"
Definition: IRtext.cpp:18
+
const char * kSuperStr
"Super"
Definition: IRtext.cpp:26
+
const char * kAutoStr
"Auto"
Definition: IRtext.cpp:97
+
const char * kMidStr
"Mid"
Definition: IRtext.cpp:116
+
const char * kYesStr
"Yes"
Definition: IRtext.cpp:166
+
const char * kSlowStr
"Slow"
Definition: IRtext.cpp:81
+
const char * k8CHeatStr
"8CHeat"
Definition: IRtext.cpp:59
+
const char * kClockStr
"Clock"
Definition: IRtext.cpp:44
+
const char * kLeftMaxStr
"LeftMax"
Definition: IRtext.cpp:126
+
const char * kMaxStr
"Max"
Definition: IRtext.cpp:106
+
const char * kSaveStr
"Save"
Definition: IRtext.cpp:52
+
const char * kLightToggleStr
"Light Toggle"
Definition: IRtext.cpp:134
+
const char * kDayStr
"Day"
Definition: IRtext.cpp:155
+
const char * kFreshStr
"Fresh"
Definition: IRtext.cpp:56
+
const char * kCentreStr
"Centre"
Definition: IRtext.cpp:128
+
const char * kManualStr
"Manual"
Definition: IRtext.cpp:99
+
const char * kHeatStr
"Heat"
Definition: IRtext.cpp:101
+
const char * kMaxRightStr
"Max Right"
Definition: IRtext.cpp:121
+
const char * kUpStr
"Up"
Definition: IRtext.cpp:72
+
const char * kCelsiusStr
"Celsius"
Definition: IRtext.cpp:64
+
const char * kOnStr
"On"
Definition: IRtext.cpp:21
+
const char * kHoursStr
"Hours"
Definition: IRtext.cpp:158
+
const char * kBreezeStr
"Breeze"
Definition: IRtext.cpp:90
+
const char * kPowerfulStr
"Powerful"
Definition: IRtext.cpp:29
+
const char * kEyeAutoStr
"Eye Auto"
Definition: IRtext.cpp:133
+
const char * kComfortStr
"Comfort"
Definition: IRtext.cpp:75
+
const char * kHighestStr
"Highest"
Definition: IRtext.cpp:113
+
const char * kFanOnlyStr
"fan_only"
Definition: IRtext.cpp:104
+
const char * kMinStr
"Min"
Definition: IRtext.cpp:108
+
const char * kFollowStr
"Follow"
Definition: IRtext.cpp:54
+
const char * kWeeklyTimerStr
"WeeklyTimer"
Definition: IRtext.cpp:77
+
const char * kOutsideQuietStr
"Outside Quiet"
Definition: IRtext.cpp:135
+
const char * kLowStr
"Low"
Definition: IRtext.cpp:118
+
const char * kFixedStr
"Fixed"
Definition: IRtext.cpp:37
+
const char * kStartStr
"Start"
Definition: IRtext.cpp:67
+
const char * kDaysStr
"Days"
Definition: IRtext.cpp:156
+
const char * kWifiStr
"Wifi"
Definition: IRtext.cpp:78
+
const char * kSwingHStr
"SwingH"
Definition: IRtext.cpp:33
+
const char * kLastStr
"Last"
Definition: IRtext.cpp:79
+
const char * kEconoStr
"Econo"
Definition: IRtext.cpp:31
+
const char * kNAStr
"N/A"
Definition: IRtext.cpp:84
+
char kTimeSep
':'
Definition: IRtext.cpp:148
+
const char * kModelStr
"Model"
Definition: IRtext.cpp:48
+
const char * kOutsideStr
"Outside"
Definition: IRtext.cpp:86
+
const char * kPowerStr
"Power"
Definition: IRtext.cpp:20
+
const char * kCirculateStr
"Circulate"
Definition: IRtext.cpp:91
+
const char * kLeftStr
"Left"
Definition: IRtext.cpp:124
+
const char * kSensorStr
"Sensor"
Definition: IRtext.cpp:76
+
const char * kPreviousPowerStr
"Previous Power"
Definition: IRtext.cpp:138
+
const char * kHumidStr
"Humid"
Definition: IRtext.cpp:51
+
const char * kZoneFollowStr
"Zone Follow"
Definition: IRtext.cpp:36
+
const char * kNoStr
"No"
Definition: IRtext.cpp:167
+
const char * kOffTimerStr
"OffTimer"
Definition: IRtext.cpp:43
+
const char * kLowerStr
"Lower"
Definition: IRtext.cpp:88
+
const char * kDisplayTempStr
"Display Temp"
Definition: IRtext.cpp:140
+
const char * kSwingVStr
"SwingV"
Definition: IRtext.cpp:34
+
const char * kLowestStr
"Lowest"
Definition: IRtext.cpp:120
+
const char * kTurboStr
"Turbo"
Definition: IRtext.cpp:25
+
const char * kHourStr
"Hour"
Definition: IRtext.cpp:157
+
const char * kModeStr
"Mode"
Definition: IRtext.cpp:23
+
const char * kSensorTempStr
"Sensor Temp"
Definition: IRtext.cpp:141
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8cpp.html new file mode 100644 index 000000000..8c3da0949 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8cpp.html @@ -0,0 +1,119 @@ + + + + + + + +IRremoteESP8266: src/IRtimer.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRtimer.cpp File Reference
+
+
+ + + + + + +

+Variables

uint32_t _IRtimer_unittest_now = 0
 
uint32_t _TimerMs_unittest_now = 0
 
+

Variable Documentation

+ +

◆ _IRtimer_unittest_now

+ +
+
+ + + + +
uint32_t _IRtimer_unittest_now = 0
+
+ +
+
+ +

◆ _TimerMs_unittest_now

+ +
+
+ + + + +
uint32_t _TimerMs_unittest_now = 0
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h.html new file mode 100644 index 000000000..333d009b4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h.html @@ -0,0 +1,94 @@ + + + + + + + +IRremoteESP8266: src/IRtimer.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRtimer.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  IRtimer
 This class performs a simple timer in useconds since instantiated. More...
 
class  TimerMs
 This class performs a simple timer in milli-seoncds since instantiated. More...
 
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h_source.html new file mode 100644 index 000000000..eaef1f0bc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRtimer_8h_source.html @@ -0,0 +1,128 @@ + + + + + + + +IRremoteESP8266: src/IRtimer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRtimer.h
+
+
+Go to the documentation of this file.
1 // Copyright 2017 David Conran
+
2 
+
3 #ifndef IRTIMER_H_
+
4 #define IRTIMER_H_
+
5 
+
6 #define __STDC_LIMIT_MACROS
+
7 #include <stdint.h>
+
8 
+
9 // Classes
+
10 
+
13 class IRtimer {
+
14  public:
+
15  IRtimer();
+
16  void reset();
+
17  uint32_t elapsed();
+
18 #ifdef UNIT_TEST
+
19  static void add(uint32_t usecs);
+
20 #endif // UNIT_TEST
+
21 
+
22  private:
+
23  uint32_t start;
+
24 };
+
25 
+
28 class TimerMs {
+
29  public:
+
30  TimerMs();
+
31  void reset();
+
32  uint32_t elapsed();
+
33 #ifdef UNIT_TEST
+
34  static void add(uint32_t msecs);
+
35 #endif // UNIT_TEST
+
36 
+
37  private:
+
38  uint32_t start;
+
39 };
+
40 #endif // IRTIMER_H_
+
+
uint32_t start
Definition: IRtimer.h:38
+
This class performs a simple timer in useconds since instantiated.
Definition: IRtimer.h:13
+
static void add(uint32_t usecs)
Add time to the timer to simulate elapsed time.
Definition: IRtimer.cpp:44
+
void reset()
Resets the IRtimer object.
Definition: IRtimer.cpp:18
+
IRtimer()
Class constructor.
Definition: IRtimer.cpp:15
+
uint32_t elapsed()
Calculate how many microseconds have elapsed since the timer was started.
Definition: IRtimer.cpp:28
+
uint32_t elapsed()
Calculate how many milliseconds have elapsed since the timer was started.
Definition: IRtimer.cpp:61
+
void reset()
Resets the TimerMs object.
Definition: IRtimer.cpp:51
+
TimerMs()
Class constructor.
Definition: IRtimer.cpp:48
+
uint32_t start
Definition: IRtimer.h:23
+
static void add(uint32_t msecs)
Add time to the timer to simulate elapsed time.
Definition: IRtimer.cpp:77
+
This class performs a simple timer in milli-seoncds since instantiated.
Definition: IRtimer.h:28
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8cpp.html new file mode 100644 index 000000000..b0d65d3dc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8cpp.html @@ -0,0 +1,871 @@ + + + + + + + +IRremoteESP8266: src/IRutils.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRutils.cpp File Reference
+
+
+ + + + + +

+Namespaces

 irutils
 Namespace for covering common functions & procedures for advancd protocol handlers.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

uint64_t reverseBits (uint64_t input, uint16_t nbits)
 Reverse the order of the requested least significant nr. of bits. More...
 
String uint64ToString (uint64_t input, uint8_t base)
 Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. More...
 
void serialPrintUint64 (uint64_t input, uint8_t base)
 Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) More...
 
decode_type_t strToDecodeType (const char *const str)
 Convert a C-style string to a decode_type_t. More...
 
String typeToString (const decode_type_t protocol, const bool isRepeat)
 Convert a protocol type (enum etc) to a human readable string. More...
 
bool hasACState (const decode_type_t protocol)
 Does the given protocol use a complex state as part of the decode? More...
 
uint16_t getCorrectedRawLength (const decode_results *const results)
 Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. More...
 
String resultToSourceCode (const decode_results *const results)
 Return a String containing the key values of a decode_results structure in a C/C++ code style format. More...
 
String resultToTimingInfo (const decode_results *const results)
 Dump out the decode_results structure. More...
 
String resultToHexidecimal (const decode_results *const result)
 Convert the decode_results structure's value/state to simple hexadecimal. More...
 
String resultToHumanReadableBasic (const decode_results *const results)
 Dump out the decode_results structure into a human readable format. More...
 
uint16_t * resultToRawArray (const decode_results *const decode)
 Convert a decode_results into an array suitable for sendRaw(). More...
 
uint8_t sumBytes (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Sum all the bytes of an array and return the least significant 8-bits of the result. More...
 
uint8_t xorBytes (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Calculate a rolling XOR of all the bytes of an array. More...
 
uint16_t countBits (const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init)
 Count the number of bits of a certain type in an array. More...
 
uint16_t countBits (const uint64_t data, const uint8_t length, const bool ones, const uint16_t init)
 Count the number of bits of a certain type in an Integer. More...
 
uint64_t invertBits (const uint64_t data, const uint16_t nbits)
 Invert/Flip the bits in an Integer. More...
 
float celsiusToFahrenheit (const float deg)
 Convert degrees Celsius to degrees Fahrenheit. More...
 
float fahrenheitToCelsius (const float deg)
 Convert degrees Fahrenheit to degrees Celsius. More...
 
String irutils::addLabeledString (const String value, const String label, const bool precomma)
 Create a String with a colon separated "label: value" pair suitable for Humans. More...
 
String irutils::addBoolToString (const bool value, const String label, const bool precomma)
 Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". More...
 
String irutils::addIntToString (const uint16_t value, const String label, const bool precomma)
 Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
 
String irutils::modelToStr (const decode_type_t protocol, const int16_t model)
 Generate the model string for a given Protocol/Model pair. More...
 
String irutils::addModelToString (const decode_type_t protocol, const int16_t model, const bool precomma)
 Create a String of human output for a given protocol model number. e.g. "Model: JKE". More...
 
String irutils::addTempToString (const uint16_t degrees, const bool celsius, const bool precomma)
 Create a String of human output for a given temperature. e.g. "Temp: 25C". More...
 
String irutils::addModeToString (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
 Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". More...
 
String irutils::addDayToString (const uint8_t day_of_week, const int8_t offset, const bool precomma)
 Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". More...
 
String irutils::addFanToString (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)
 Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". More...
 
String irutils::htmlEscape (const String unescaped)
 Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. More...
 
String irutils::msToString (uint32_t const msecs)
 Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". More...
 
String irutils::minsToString (const uint16_t mins)
 Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". More...
 
uint8_t irutils::sumNibbles (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Sum all the nibbles together in a series of bytes. More...
 
uint8_t irutils::sumNibbles (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)
 Sum all the nibbles together in an integer. More...
 
uint8_t irutils::bcdToUint8 (const uint8_t bcd)
 Convert a byte of Binary Coded Decimal(BCD) into an Integer. More...
 
uint8_t irutils::uint8ToBcd (const uint8_t integer)
 Convert an Integer into a byte of Binary Coded Decimal(BCD). More...
 
bool irutils::getBit (const uint64_t data, const uint8_t position, const uint8_t size)
 Return the value of positionth bit of an Integer. More...
 
bool irutils::getBit (const uint8_t data, const uint8_t position)
 Return the value of positionth bit of an Integer. More...
 
uint64_t irutils::setBit (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
 Return the value of an Integer with the positionth bit changed. More...
 
uint8_t irutils::setBit (const uint8_t data, const uint8_t position, const bool on)
 Return the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint8_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint32_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint64_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBits (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
 Alter an uint8_t value by overwriting an arbitary given number of bits. More...
 
void irutils::setBits (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)
 Alter an uint32_t value by overwriting an arbitary given number of bits. More...
 
void irutils::setBits (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)
 Alter an uint64_t value by overwriting an arbitary given number of bits. More...
 
+

Function Documentation

+ +

◆ celsiusToFahrenheit()

+ +
+
+ + + + + + + + +
float celsiusToFahrenheit (const float deg)
+
+ +

Convert degrees Celsius to degrees Fahrenheit.

+ +
+
+ +

◆ countBits() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t countBits (const uint64_t data,
const uint8_t length,
const bool ones,
const uint16_t init 
)
+
+ +

Count the number of bits of a certain type in an Integer.

+
Parameters
+ + + + + +
[in]dataThe value you want bits counted for. Starting from the LSB.
[in]lengthHow many bits to use in the calculation? Starts at the LSB
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The nr. of bits found of the given type found in the Integer.
+ +
+
+ +

◆ countBits() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t countBits (const uint8_t *const start,
const uint16_t length,
const bool ones,
const uint16_t init 
)
+
+ +

Count the number of bits of a certain type in an array.

+
Parameters
+ + + + + +
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The nr. of bits found of the given type found in the array.
+ +
+
+ +

◆ fahrenheitToCelsius()

+ +
+
+ + + + + + + + +
float fahrenheitToCelsius (const float deg)
+
+ +

Convert degrees Fahrenheit to degrees Celsius.

+ +
+
+ +

◆ getCorrectedRawLength()

+ +
+
+ + + + + + + + +
uint16_t getCorrectedRawLength (const decode_results *const results)
+
+ +

Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
The corrected length.
+ +
+
+ +

◆ hasACState()

+ +
+
+ + + + + + + + +
bool hasACState (const decode_type_t protocol)
+
+ +

Does the given protocol use a complex state as part of the decode?

+
Parameters
+ + +
[in]protocolThe decode_type_t protocol we are enquiring about.
+
+
+
Returns
True if the protocol uses a state array. False if just an integer.
+ +
+
+ +

◆ invertBits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t invertBits (const uint64_t data,
const uint16_t nbits 
)
+
+ +

Invert/Flip the bits in an Integer.

+
Parameters
+ + + +
[in]dataThe Integer that will be inverted.
[in]nbitsHow many bits are to be inverted. Starting from the LSB.
+
+
+
Returns
An Integer with the appropriate bits inverted/flipped.
+ +
+
+ +

◆ resultToHexidecimal()

+ +
+
+ + + + + + + + +
String resultToHexidecimal (const decode_results *const result)
+
+ +

Convert the decode_results structure's value/state to simple hexadecimal.

+
Parameters
+ + +
[in]resultA ptr to a decode_results structure.
+
+
+
Returns
A String containing the output.
+ +
+
+ +

◆ resultToHumanReadableBasic()

+ +
+
+ + + + + + + + +
String resultToHumanReadableBasic (const decode_results *const results)
+
+ +

Dump out the decode_results structure into a human readable format.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
A String containing the output.
+ +
+
+ +

◆ resultToRawArray()

+ +
+
+ + + + + + + + +
uint16_t* resultToRawArray (const decode_results *const decode)
+
+ +

Convert a decode_results into an array suitable for sendRaw().

+
Parameters
+ + +
[in]decodeA ptr to a decode_results structure that contains a mesg.
+
+
+
Returns
A PTR to a dynamically allocated uint16_t sendRaw compatible array.
+
Note
The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller.
+ +
+
+ +

◆ resultToSourceCode()

+ +
+
+ + + + + + + + +
String resultToSourceCode (const decode_results *const results)
+
+ +

Return a String containing the key values of a decode_results structure in a C/C++ code style format.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
A String containing the code-ified result.
+ +
+
+ +

◆ resultToTimingInfo()

+ +
+
+ + + + + + + + +
String resultToTimingInfo (const decode_results *const results)
+
+ +

Dump out the decode_results structure.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
A String containing the legacy information format.
+
Deprecated:
This is only for those that want this legacy format.
+ +
+
+ +

◆ reverseBits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t reverseBits (uint64_t input,
uint16_t nbits 
)
+
+ +

Reverse the order of the requested least significant nr. of bits.

+
Parameters
+ + + +
[in]inputBit pattern/integer to reverse.
[in]nbitsNr. of bits to reverse. (LSB -> MSB)
+
+
+
Returns
The reversed bit pattern.
+ +
+
+ +

◆ serialPrintUint64()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serialPrintUint64 (uint64_t input,
uint8_t base 
)
+
+ +

Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t)

+
Parameters
+ + + +
[in]inputThe value to print
[in]baseThe output base.
+
+
+ +
+
+ +

◆ strToDecodeType()

+ +
+
+ + + + + + + + +
decode_type_t strToDecodeType (const char *const str)
+
+ +

Convert a C-style string to a decode_type_t.

+
Parameters
+ + +
[in]strA C-style string containing a protocol name or number.
+
+
+
Returns
A decode_type_t enum. (decode_type_t::UNKNOWN if no match.)
+ +
+
+ +

◆ sumBytes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t sumBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
+
+ +

Sum all the bytes of an array and return the least significant 8-bits of the result.

+
Parameters
+ + + + +
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The 8-bit calculated result of all the bytes and init value.
+ +
+
+ +

◆ typeToString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
String typeToString (const decode_type_t protocol,
const bool isRepeat 
)
+
+ +

Convert a protocol type (enum etc) to a human readable string.

+
Parameters
+ + + +
[in]protocolNr. (enum) of the protocol.
[in]isRepeatA flag indicating if it is a repeat message.
+
+
+
Returns
A String containing the protocol name. kUnknownStr if no match.
+ +
+
+ +

◆ uint64ToString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
String uint64ToString (uint64_t input,
uint8_t base 
)
+
+ +

Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.

+
Parameters
+ + + +
[in]inputThe value to print
[in]baseThe output base.
+
+
+
Returns
A String representation of the integer.
+
Note
Based on Arduino's Print::printNumber()
+ +
+
+ +

◆ xorBytes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t xorBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
+
+ +

Calculate a rolling XOR of all the bytes of an array.

+
Parameters
+ + + + +
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The 8-bit calculated result of all the bytes and init value.
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h.html new file mode 100644 index 000000000..9c9c4cd28 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h.html @@ -0,0 +1,942 @@ + + + + + + + +IRremoteESP8266: src/IRutils.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
IRutils.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Namespaces

 irutils
 Namespace for covering common functions & procedures for advancd protocol handlers.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

uint64_t reverseBits (uint64_t input, uint16_t nbits)
 Reverse the order of the requested least significant nr. of bits. More...
 
String uint64ToString (uint64_t input, uint8_t base=10)
 Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. More...
 
String typeToString (const decode_type_t protocol, const bool isRepeat=false)
 Convert a protocol type (enum etc) to a human readable string. More...
 
void serialPrintUint64 (uint64_t input, uint8_t base=10)
 Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) More...
 
String resultToSourceCode (const decode_results *const results)
 Return a String containing the key values of a decode_results structure in a C/C++ code style format. More...
 
String resultToTimingInfo (const decode_results *const results)
 Dump out the decode_results structure. More...
 
String resultToHumanReadableBasic (const decode_results *const results)
 Dump out the decode_results structure into a human readable format. More...
 
String resultToHexidecimal (const decode_results *const result)
 Convert the decode_results structure's value/state to simple hexadecimal. More...
 
bool hasACState (const decode_type_t protocol)
 Does the given protocol use a complex state as part of the decode? More...
 
uint16_t getCorrectedRawLength (const decode_results *const results)
 Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. More...
 
uint16_t * resultToRawArray (const decode_results *const decode)
 Convert a decode_results into an array suitable for sendRaw(). More...
 
uint8_t sumBytes (const uint8_t *const start, const uint16_t length, const uint8_t init=0)
 Sum all the bytes of an array and return the least significant 8-bits of the result. More...
 
uint8_t xorBytes (const uint8_t *const start, const uint16_t length, const uint8_t init=0)
 Calculate a rolling XOR of all the bytes of an array. More...
 
uint16_t countBits (const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)
 Count the number of bits of a certain type in an array. More...
 
uint16_t countBits (const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0)
 Count the number of bits of a certain type in an Integer. More...
 
uint64_t invertBits (const uint64_t data, const uint16_t nbits)
 Invert/Flip the bits in an Integer. More...
 
decode_type_t strToDecodeType (const char *str)
 Convert a C-style string to a decode_type_t. More...
 
float celsiusToFahrenheit (const float deg)
 Convert degrees Celsius to degrees Fahrenheit. More...
 
float fahrenheitToCelsius (const float deg)
 Convert degrees Fahrenheit to degrees Celsius. More...
 
String irutils::addBoolToString (const bool value, const String label, const bool precomma)
 Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". More...
 
String irutils::addIntToString (const uint16_t value, const String label, const bool precomma)
 Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
 
String irutils::modelToStr (const decode_type_t protocol, const int16_t model)
 Generate the model string for a given Protocol/Model pair. More...
 
String irutils::addModelToString (const decode_type_t protocol, const int16_t model, const bool precomma)
 Create a String of human output for a given protocol model number. e.g. "Model: JKE". More...
 
String irutils::addLabeledString (const String value, const String label, const bool precomma)
 Create a String with a colon separated "label: value" pair suitable for Humans. More...
 
String irutils::addTempToString (const uint16_t degrees, const bool celsius, const bool precomma)
 Create a String of human output for a given temperature. e.g. "Temp: 25C". More...
 
String irutils::addModeToString (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
 Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". More...
 
String irutils::addFanToString (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)
 Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". More...
 
String irutils::addDayToString (const uint8_t day_of_week, const int8_t offset, const bool precomma)
 Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". More...
 
String irutils::htmlEscape (const String unescaped)
 Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. More...
 
String irutils::msToString (uint32_t const msecs)
 Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". More...
 
String irutils::minsToString (const uint16_t mins)
 Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". More...
 
uint8_t irutils::sumNibbles (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Sum all the nibbles together in a series of bytes. More...
 
uint8_t irutils::sumNibbles (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)
 Sum all the nibbles together in an integer. More...
 
uint8_t irutils::bcdToUint8 (const uint8_t bcd)
 Convert a byte of Binary Coded Decimal(BCD) into an Integer. More...
 
uint8_t irutils::uint8ToBcd (const uint8_t integer)
 Convert an Integer into a byte of Binary Coded Decimal(BCD). More...
 
bool irutils::getBit (const uint64_t data, const uint8_t position, const uint8_t size)
 Return the value of positionth bit of an Integer. More...
 
bool irutils::getBit (const uint8_t data, const uint8_t position)
 Return the value of positionth bit of an Integer. More...
 
uint64_t irutils::setBit (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
 Return the value of an Integer with the positionth bit changed. More...
 
uint8_t irutils::setBit (const uint8_t data, const uint8_t position, const bool on)
 Return the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint8_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint32_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint64_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBits (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
 Alter an uint8_t value by overwriting an arbitary given number of bits. More...
 
void irutils::setBits (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)
 Alter an uint32_t value by overwriting an arbitary given number of bits. More...
 
void irutils::setBits (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)
 Alter an uint64_t value by overwriting an arbitary given number of bits. More...
 
+ + + + + + + + + +

+Variables

const uint8_t kNibbleSize = 4
 
const uint8_t kLowNibble = 0
 
const uint8_t kHighNibble = 4
 
const uint8_t kModeBitsSize = 3
 
+

Function Documentation

+ +

◆ celsiusToFahrenheit()

+ +
+
+ + + + + + + + +
float celsiusToFahrenheit (const float deg)
+
+ +

Convert degrees Celsius to degrees Fahrenheit.

+ +
+
+ +

◆ countBits() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t countBits (const uint64_t data,
const uint8_t length,
const bool ones,
const uint16_t init 
)
+
+ +

Count the number of bits of a certain type in an Integer.

+
Parameters
+ + + + + +
[in]dataThe value you want bits counted for. Starting from the LSB.
[in]lengthHow many bits to use in the calculation? Starts at the LSB
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The nr. of bits found of the given type found in the Integer.
+ +
+
+ +

◆ countBits() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t countBits (const uint8_t *const start,
const uint16_t length,
const bool ones,
const uint16_t init 
)
+
+ +

Count the number of bits of a certain type in an array.

+
Parameters
+ + + + + +
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The nr. of bits found of the given type found in the array.
+ +
+
+ +

◆ fahrenheitToCelsius()

+ +
+
+ + + + + + + + +
float fahrenheitToCelsius (const float deg)
+
+ +

Convert degrees Fahrenheit to degrees Celsius.

+ +
+
+ +

◆ getCorrectedRawLength()

+ +
+
+ + + + + + + + +
uint16_t getCorrectedRawLength (const decode_results *const results)
+
+ +

Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
The corrected length.
+ +
+
+ +

◆ hasACState()

+ +
+
+ + + + + + + + +
bool hasACState (const decode_type_t protocol)
+
+ +

Does the given protocol use a complex state as part of the decode?

+
Parameters
+ + +
[in]protocolThe decode_type_t protocol we are enquiring about.
+
+
+
Returns
True if the protocol uses a state array. False if just an integer.
+ +
+
+ +

◆ invertBits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t invertBits (const uint64_t data,
const uint16_t nbits 
)
+
+ +

Invert/Flip the bits in an Integer.

+
Parameters
+ + + +
[in]dataThe Integer that will be inverted.
[in]nbitsHow many bits are to be inverted. Starting from the LSB.
+
+
+
Returns
An Integer with the appropriate bits inverted/flipped.
+ +
+
+ +

◆ resultToHexidecimal()

+ +
+
+ + + + + + + + +
String resultToHexidecimal (const decode_results *const result)
+
+ +

Convert the decode_results structure's value/state to simple hexadecimal.

+
Parameters
+ + +
[in]resultA ptr to a decode_results structure.
+
+
+
Returns
A String containing the output.
+ +
+
+ +

◆ resultToHumanReadableBasic()

+ +
+
+ + + + + + + + +
String resultToHumanReadableBasic (const decode_results *const results)
+
+ +

Dump out the decode_results structure into a human readable format.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
A String containing the output.
+ +
+
+ +

◆ resultToRawArray()

+ +
+
+ + + + + + + + +
uint16_t* resultToRawArray (const decode_results *const decode)
+
+ +

Convert a decode_results into an array suitable for sendRaw().

+
Parameters
+ + +
[in]decodeA ptr to a decode_results structure that contains a mesg.
+
+
+
Returns
A PTR to a dynamically allocated uint16_t sendRaw compatible array.
+
Note
The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller.
+ +
+
+ +

◆ resultToSourceCode()

+ +
+
+ + + + + + + + +
String resultToSourceCode (const decode_results *const results)
+
+ +

Return a String containing the key values of a decode_results structure in a C/C++ code style format.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
A String containing the code-ified result.
+ +
+
+ +

◆ resultToTimingInfo()

+ +
+
+ + + + + + + + +
String resultToTimingInfo (const decode_results *const results)
+
+ +

Dump out the decode_results structure.

+
Parameters
+ + +
[in]resultsA ptr to a decode_results structure.
+
+
+
Returns
A String containing the legacy information format.
+
Deprecated:
This is only for those that want this legacy format.
+ +
+
+ +

◆ reverseBits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t reverseBits (uint64_t input,
uint16_t nbits 
)
+
+ +

Reverse the order of the requested least significant nr. of bits.

+
Parameters
+ + + +
[in]inputBit pattern/integer to reverse.
[in]nbitsNr. of bits to reverse. (LSB -> MSB)
+
+
+
Returns
The reversed bit pattern.
+ +
+
+ +

◆ serialPrintUint64()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serialPrintUint64 (uint64_t input,
uint8_t base 
)
+
+ +

Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t)

+
Parameters
+ + + +
[in]inputThe value to print
[in]baseThe output base.
+
+
+ +
+
+ +

◆ strToDecodeType()

+ +
+
+ + + + + + + + +
decode_type_t strToDecodeType (const char *const str)
+
+ +

Convert a C-style string to a decode_type_t.

+
Parameters
+ + +
[in]strA C-style string containing a protocol name or number.
+
+
+
Returns
A decode_type_t enum. (decode_type_t::UNKNOWN if no match.)
+ +
+
+ +

◆ sumBytes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t sumBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
+
+ +

Sum all the bytes of an array and return the least significant 8-bits of the result.

+
Parameters
+ + + + +
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The 8-bit calculated result of all the bytes and init value.
+ +
+
+ +

◆ typeToString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
String typeToString (const decode_type_t protocol,
const bool isRepeat 
)
+
+ +

Convert a protocol type (enum etc) to a human readable string.

+
Parameters
+ + + +
[in]protocolNr. (enum) of the protocol.
[in]isRepeatA flag indicating if it is a repeat message.
+
+
+
Returns
A String containing the protocol name. kUnknownStr if no match.
+ +
+
+ +

◆ uint64ToString()

+ +
+
+ + + + + + + + + + + + + + + + + + +
String uint64ToString (uint64_t input,
uint8_t base 
)
+
+ +

Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.

+
Parameters
+ + + +
[in]inputThe value to print
[in]baseThe output base.
+
+
+
Returns
A String representation of the integer.
+
Note
Based on Arduino's Print::printNumber()
+ +
+
+ +

◆ xorBytes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t xorBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
+
+ +

Calculate a rolling XOR of all the bytes of an array.

+
Parameters
+ + + + +
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
+
+
+
Returns
The 8-bit calculated result of all the bytes and init value.
+ +
+
+

Variable Documentation

+ +

◆ kHighNibble

+ +
+
+ + + + +
const uint8_t kHighNibble = 4
+
+ +
+
+ +

◆ kLowNibble

+ +
+
+ + + + +
const uint8_t kLowNibble = 0
+
+ +
+
+ +

◆ kModeBitsSize

+ +
+
+ + + + +
const uint8_t kModeBitsSize = 3
+
+ +
+
+ +

◆ kNibbleSize

+ +
+
+ + + + +
const uint8_t kNibbleSize = 4
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h_source.html new file mode 100644 index 000000000..74305e92d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/IRutils_8h_source.html @@ -0,0 +1,235 @@ + + + + + + + +IRremoteESP8266: src/IRutils.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IRutils.h
+
+
+Go to the documentation of this file.
1 #ifndef IRUTILS_H_
+
2 #define IRUTILS_H_
+
3 
+
4 // Copyright 2017 David Conran
+
5 
+
6 #ifndef UNIT_TEST
+
7 #include <Arduino.h>
+
8 #endif
+
9 #define __STDC_LIMIT_MACROS
+
10 #include <stdint.h>
+
11 #ifndef ARDUINO
+
12 #include <string>
+
13 #endif
+
14 #include "IRremoteESP8266.h"
+
15 #include "IRrecv.h"
+
16 
+
17 const uint8_t kNibbleSize = 4;
+
18 const uint8_t kLowNibble = 0;
+
19 const uint8_t kHighNibble = 4;
+
20 const uint8_t kModeBitsSize = 3;
+
21 uint64_t reverseBits(uint64_t input, uint16_t nbits);
+
22 String uint64ToString(uint64_t input, uint8_t base = 10);
+
23 String typeToString(const decode_type_t protocol,
+
24  const bool isRepeat = false);
+
25 void serialPrintUint64(uint64_t input, uint8_t base = 10);
+
26 String resultToSourceCode(const decode_results * const results);
+
27 String resultToTimingInfo(const decode_results * const results);
+
28 String resultToHumanReadableBasic(const decode_results * const results);
+
29 String resultToHexidecimal(const decode_results * const result);
+
30 bool hasACState(const decode_type_t protocol);
+
31 uint16_t getCorrectedRawLength(const decode_results * const results);
+
32 uint16_t *resultToRawArray(const decode_results * const decode);
+
33 uint8_t sumBytes(const uint8_t * const start, const uint16_t length,
+
34  const uint8_t init = 0);
+
35 uint8_t xorBytes(const uint8_t * const start, const uint16_t length,
+
36  const uint8_t init = 0);
+
37 uint16_t countBits(const uint8_t * const start, const uint16_t length,
+
38  const bool ones = true, const uint16_t init = 0);
+
39 uint16_t countBits(const uint64_t data, const uint8_t length,
+
40  const bool ones = true, const uint16_t init = 0);
+
41 uint64_t invertBits(const uint64_t data, const uint16_t nbits);
+
42 decode_type_t strToDecodeType(const char *str);
+
43 float celsiusToFahrenheit(const float deg);
+
44 float fahrenheitToCelsius(const float deg);
+
47 namespace irutils {
+
48  String addBoolToString(const bool value, const String label,
+
49  const bool precomma = true);
+
50  String addIntToString(const uint16_t value, const String label,
+
51  const bool precomma = true);
+
52  String modelToStr(const decode_type_t protocol, const int16_t model);
+
53  String addModelToString(const decode_type_t protocol, const int16_t model,
+
54  const bool precomma = true);
+
55  String addLabeledString(const String value, const String label,
+
56  const bool precomma = true);
+
57  String addTempToString(const uint16_t degrees, const bool celsius = true,
+
58  const bool precomma = true);
+
59  String addModeToString(const uint8_t mode, const uint8_t automatic,
+
60  const uint8_t cool, const uint8_t heat,
+
61  const uint8_t dry, const uint8_t fan);
+
62  String addFanToString(const uint8_t speed, const uint8_t high,
+
63  const uint8_t low, const uint8_t automatic,
+
64  const uint8_t quiet, const uint8_t medium);
+
65  String addDayToString(const uint8_t day_of_week, const int8_t offset = 0,
+
66  const bool precomma = true);
+
67  String htmlEscape(const String unescaped);
+
68  String msToString(uint32_t const msecs);
+
69  String minsToString(const uint16_t mins);
+
70  uint8_t sumNibbles(const uint8_t * const start, const uint16_t length,
+
71  const uint8_t init = 0);
+
72  uint8_t sumNibbles(const uint64_t data, const uint8_t count = 16,
+
73  const uint8_t init = 0, const bool nibbleonly = true);
+
74  uint8_t bcdToUint8(const uint8_t bcd);
+
75  uint8_t uint8ToBcd(const uint8_t integer);
+
76  bool getBit(const uint64_t data, const uint8_t position,
+
77  const uint8_t size = 64);
+
78  bool getBit(const uint8_t data, const uint8_t position);
+
79 #define GETBIT8(a, b) (a & ((uint8_t)1 << b))
+
80 #define GETBIT16(a, b) (a & ((uint16_t)1 << b))
+
81 #define GETBIT32(a, b) (a & ((uint32_t)1 << b))
+
82 #define GETBIT64(a, b) (a & ((uint64_t)1 << b))
+
83 #define GETBITS8(data, offset, size) \
+
84  (((data) & (((uint8_t)UINT8_MAX >> (8 - (size))) << (offset))) >> (offset))
+
85 #define GETBITS16(data, offset, size) \
+
86  (((data) & (((uint16_t)UINT16_MAX >> (16 - (size))) << (offset))) >> \
+
87  (offset))
+
88 #define GETBITS32(data, offset, size) \
+
89  (((data) & (((uint32_t)UINT32_MAX >> (32 - (size))) << (offset))) >> \
+
90  (offset))
+
91 #define GETBITS64(data, offset, size) \
+
92  (((data) & (((uint64_t)UINT64_MAX >> (64 - (size))) << (offset))) >> \
+
93  (offset))
+
94  uint64_t setBit(const uint64_t data, const uint8_t position,
+
95  const bool on = true, const uint8_t size = 64);
+
96  uint8_t setBit(const uint8_t data, const uint8_t position,
+
97  const bool on = true);
+
98  void setBit(uint8_t * const data, const uint8_t position,
+
99  const bool on = true);
+
100  void setBit(uint32_t * const data, const uint8_t position,
+
101  const bool on = true);
+
102  void setBit(uint64_t * const data, const uint8_t position,
+
103  const bool on = true);
+
104  void setBits(uint8_t * const dst, const uint8_t offset, const uint8_t nbits,
+
105  const uint8_t data);
+
106  void setBits(uint32_t * const dst, const uint8_t offset, const uint8_t nbits,
+
107  const uint32_t data);
+
108  void setBits(uint64_t * const dst, const uint8_t offset, const uint8_t nbits,
+
109  const uint64_t data);
+
110 } // namespace irutils
+
111 #endif // IRUTILS_H_
+
+
String addTempToString(const uint16_t degrees, const bool celsius, const bool precomma)
Create a String of human output for a given temperature. e.g. "Temp: 25C".
Definition: IRutils.cpp:577
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:714
+
String addDayToString(const uint8_t day_of_week, const int8_t offset, const bool precomma)
Create a String of the 3-letter day of the week from a numerical day of the week. e....
Definition: IRutils.cpp:616
+
uint16_t * resultToRawArray(const decode_results *const decode)
Convert a decode_results into an array suitable for sendRaw().
Definition: IRutils.cpp:351
+
void setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
Alter an uint8_t value by overwriting an arbitary given number of bits.
Definition: IRutils.cpp:873
+
String resultToSourceCode(const decode_results *const results)
Return a String containing the key values of a decode_results structure in a C/C++ code style format.
Definition: IRutils.cpp:193
+
Results returned from the decoder.
Definition: IRrecv.h:92
+
uint16_t getCorrectedRawLength(const decode_results *const results)
Return the corrected length of a 'raw' format array structure after over-large values are converted i...
Definition: IRutils.cpp:179
+
String addModelToString(const decode_type_t protocol, const int16_t model, const bool precomma)
Create a String of human output for a given protocol model number. e.g. "Model: JKE".
Definition: IRutils.cpp:562
+
uint16_t countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)
Count the number of bits of a certain type in an array.
Definition: IRutils.cpp:402
+
String msToString(uint32_t const msecs)
Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds...
Definition: IRutils.cpp:692
+
String addModeToString(const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)".
Definition: IRutils.cpp:593
+
String resultToHumanReadableBasic(const decode_results *const results)
Dump out the decode_results structure into a human readable format.
Definition: IRutils.cpp:324
+
String resultToTimingInfo(const decode_results *const results)
Dump out the decode_results structure.
Definition: IRutils.cpp:274
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kNibbleSize
Definition: IRutils.h:17
+
String modelToStr(const decode_type_t protocol, const int16_t model)
Generate the model string for a given Protocol/Model pair.
Definition: IRutils.cpp:498
+
const uint8_t kLowNibble
Definition: IRutils.h:18
+ +
uint8_t uint8ToBcd(const uint8_t integer)
Convert an Integer into a byte of Binary Coded Decimal(BCD).
Definition: IRutils.cpp:778
+
decode_type_t strToDecodeType(const char *str)
Convert a C-style string to a decode_type_t.
Definition: IRutils.cpp:83
+
const uint8_t kHighNibble
Definition: IRutils.h:19
+
uint8_t sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init)
Sum all the nibbles together in a series of bytes.
Definition: IRutils.cpp:743
+
String uint64ToString(uint64_t input, uint8_t base=10)
Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle...
Definition: IRutils.cpp:44
+
float celsiusToFahrenheit(const float deg)
Convert degrees Celsius to degrees Fahrenheit.
Definition: IRutils.cpp:450
+
String addIntToString(const uint16_t value, const String label, const bool precomma)
Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".
Definition: IRutils.cpp:489
+
uint8_t xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)
Calculate a rolling XOR of all the bytes of an array.
Definition: IRutils.cpp:388
+
const uint8_t kModeBitsSize
Definition: IRutils.h:20
+
bool getBit(const uint64_t data, const uint8_t position, const uint8_t size)
Return the value of positionth bit of an Integer.
Definition: IRutils.cpp:788
+
float fahrenheitToCelsius(const float deg)
Convert degrees Fahrenheit to degrees Celsius.
Definition: IRutils.cpp:453
+ +
uint8_t sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)
Sum all the bytes of an array and return the least significant 8-bits of the result.
Definition: IRutils.cpp:375
+
String typeToString(const decode_type_t protocol, const bool isRepeat=false)
Convert a protocol type (enum etc) to a human readable string.
Definition: IRutils.cpp:105
+
String addFanToString(const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)
Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)".
Definition: IRutils.cpp:642
+
String resultToHexidecimal(const decode_results *const result)
Convert the decode_results structure's value/state to simple hexadecimal.
Definition: IRutils.cpp:304
+
String addBoolToString(const bool value, const String label, const bool precomma)
Create a String with a colon separated flag suitable for Humans. e.g. "Power: On".
Definition: IRutils.cpp:477
+
String minsToString(const uint16_t mins)
Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59".
Definition: IRutils.cpp:728
+
uint8_t bcdToUint8(const uint8_t bcd)
Convert a byte of Binary Coded Decimal(BCD) into an Integer.
Definition: IRutils.cpp:770
+
Namespace for covering common functions & procedures for advancd protocol handlers.
Definition: IRutils.cpp:455
+
uint64_t reverseBits(uint64_t input, uint16_t nbits)
Reverse the order of the requested least significant nr. of bits.
Definition: IRutils.cpp:24
+
String htmlEscape(const String unescaped)
Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.
Definition: IRutils.cpp:660
+
bool hasACState(const decode_type_t protocol)
Does the given protocol use a complex state as part of the decode?
Definition: IRutils.cpp:130
+
uint64_t setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
Return the value of an Integer with the positionth bit changed.
Definition: IRutils.cpp:808
+
void serialPrintUint64(uint64_t input, uint8_t base=10)
Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long long...
Definition: IRutils.cpp:75
+
String addLabeledString(const String value, const String label, const bool precomma)
Create a String with a colon separated "label: value" pair suitable for Humans.
Definition: IRutils.cpp:462
+
uint64_t invertBits(const uint64_t data, const uint16_t nbits)
Invert/Flip the bits in an Integer.
Definition: IRutils.cpp:439
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/README_8md.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/README_8md.html new file mode 100644 index 000000000..cf3677096 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/README_8md.html @@ -0,0 +1,76 @@ + + + + + + + +IRremoteESP8266: src/locale/README.md File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
src/locale/README.md File Reference
+
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/annotated.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/annotated.html new file mode 100644 index 000000000..b4f7fbce8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/annotated.html @@ -0,0 +1,134 @@ + + + + + + + +IRremoteESP8266: Class List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NstdAcEnumerators and Structures for the Common A/C API
 Cstate_tStructure to hold a common A/C state
 Cdecode_resultsResults returned from the decoder
 CIRac
 CIRAmcorAcClass for handling detailed Amcor A/C messages
 CIRArgoACClass for handling detailed Argo A/C messages
 CIRCarrierAc64Class for handling detailed Carrier 64 bit A/C messages
 CIRCoolixACClass for handling detailed Coolix A/C messages
 CIRCoronaAcClass for handling detailed Corona A/C messages
 CIRDaikin128Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Vena
 CIRDaikin152Class for handling detailed Daikin 152-bit A/C messages
 CIRDaikin160Class for handling detailed Daikin 160-bit A/C messages
 CIRDaikin176Class for handling detailed Daikin 176-bit A/C messages
 CIRDaikin2Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering analysis by sheppy99
 CIRDaikin216Class for handling detailed Daikin 216-bit A/C messages
 CIRDaikin64Class for handling detailed Daikin 64-bit A/C messages
 CIRDaikinESPClass for handling detailed Daikin 280-bit A/C messages
 CIRDelonghiAcClass for handling detailed Delonghi A/C messages
 CIRElectraAcClass for handling detailed Electra A/C messages
 CIRFujitsuACClass for handling detailed Fujitsu A/C messages
 CIRGoodweatherAcClass for handling detailed Goodweather A/C messages
 CIRGreeACClass for handling detailed Gree A/C messages
 CIRHaierACClass for handling detailed Haier A/C messages
 CIRHaierACYRW02Class for handling detailed Haier ACYRW02 A/C messages
 CIRHitachiAcClass for handling detailed Hitachi 224-bit A/C messages
 CIRHitachiAc1Class for handling detailed Hitachi 104-bit A/C messages
 CIRHitachiAc3Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages
 CIRHitachiAc344Class for handling detailed Hitachi 344-bit A/C messages
 CIRHitachiAc424Class for handling detailed Hitachi 53-byte/424-bit A/C messages
 CIRKelvinatorACClass for handling detailed Kelvinator A/C messages
 CIRLgAcClass for handling detailed LG A/C messages
 CIRMideaACClass for handling detailed Midea A/C messages
 CIRMitsubishi112
 CIRMitsubishi136Class for handling detailed Mitsubishi 136-bit A/C messages
 CIRMitsubishiACClass for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done at: https://github.com/r45635/HVAC-IR-Control
 CIRMitsubishiHeavy152AcClass for handling detailed Mitsubishi Heavy 152-bit A/C messages
 CIRMitsubishiHeavy88AcClass for handling detailed Mitsubishi Heavy 88-bit A/C messages
 CIRNeoclimaAcClass for handling detailed Neoclima A/C messages
 CIRPanasonicAcClass for handling detailed Panasonic A/C messages
 Cirparams_tInformation for the interrupt handler
 CIRrecvClass for receiving IR messages
 CIRSamsungAcClass for handling detailed Samsung A/C messages
 CIRsendClass for sending all basic IR protocols
 CIRSharpAcClass for handling detailed Sharp A/C messages
 CIRTcl112AcClass for handling detailed TCL A/C messages
 CIRTecoAcClass for handling detailed Teco A/C messages
 CIRtimerThis class performs a simple timer in useconds since instantiated
 CIRToshibaACClass for handling detailed Toshiba A/C messages
 CIRTrotecESPClass for handling detailed Trotec A/C messages
 CIRVestelAcClass for handling detailed Vestel A/C messages
 CIRWhirlpoolAcClass for handling detailed Whirlpool A/C messages
 CmagiquestMagiQuest packet is both Wand ID and magnitude of swish and flick
 Cmatch_result_tResults from a data match
 CTimerMsThis class performs a simple timer in milli-seoncds since instantiated
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/bc_s.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/bdwn.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRAmcorAc Member List
+
+
+ +

This is the complete list of members for IRAmcorAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRAmcorAcprivate
begin()IRAmcorAc
calcChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)IRAmcorAcstatic
calibrate(void)IRAmcorAcinline
checksum(void)IRAmcorAcprivate
convertFan(const stdAc::fanspeed_t speed)IRAmcorAc
convertMode(const stdAc::opmode_t mode)IRAmcorAc
getFan()IRAmcorAc
getMax(void)IRAmcorAc
getMode()IRAmcorAc
getPower()IRAmcorAc
getRaw()IRAmcorAc
getTemp()IRAmcorAc
IRAmcorAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRAmcorAcexplicit
off()IRAmcorAc
on()IRAmcorAc
remote_stateIRAmcorAcprivate
send(const uint16_t repeat=kAmcorDefaultRepeat)IRAmcorAc
setFan(const uint8_t speed)IRAmcorAc
setMax(const bool on)IRAmcorAc
setMode(const uint8_t mode)IRAmcorAc
setPower(const bool state)IRAmcorAc
setRaw(const uint8_t state[])IRAmcorAc
setTemp(const uint8_t temp)IRAmcorAc
stateReset()IRAmcorAc
toCommon(void)IRAmcorAc
toCommonFanSpeed(const uint8_t speed)IRAmcorAcstatic
toCommonMode(const uint8_t mode)IRAmcorAcstatic
toString()IRAmcorAc
validChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)IRAmcorAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc.html new file mode 100644 index 000000000..8d4caf51c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc.html @@ -0,0 +1,997 @@ + + + + + + + +IRremoteESP8266: IRAmcorAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Amcor A/C messages. + More...

+ +

#include <ir_Amcor.h>

+
+Collaboration diagram for IRAmcorAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRAmcorAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset ()
 Reset the internals of the object to a known good state. More...
 
void send (const uint16_t repeat=kAmcorDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPower (const bool state)
 Set the internal state to have the desired power. More...
 
bool getPower ()
 Get the power setting from the internal state. More...
 
void on ()
 Set the internal state to have the power on. More...
 
void off ()
 Set the internal state to have the power off. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setMax (const bool on)
 Control the current Maximum Cooling or Heating setting. (i.e. Turbo) More...
 
bool getMax (void)
 Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on? More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan ()
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode ()
 Get the current operation mode setting. More...
 
uint8_t * getRaw ()
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint8_t state[])
 Set the raw state of the object. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString ()
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kAmcorStateLength)
 Calculate the checksum for the supplied state. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kAmcorStateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Update the checksum value for the internal state. More...
 
+ + + + + +

+Private Attributes

IRsend _irsend
 
uint8_t remote_state [kAmcorStateLength]
 
+

Detailed Description

+

Class for handling detailed Amcor A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRAmcorAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRAmcorAc::IRAmcorAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRAmcorAc::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRAmcorAc::calcChecksum (const uint8_t state[],
const uint16_t length = kAmcorStateLength 
)
+
+static
+
+ +

Calculate the checksum for the supplied state.

+
Parameters
+ + + +
[in]stateThe source state to generate the checksum from.
[in]lengthLength of the supplied state to checksum.
+
+
+
Returns
The checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRAmcorAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRAmcorAc::checksum (void )
+
+private
+
+ +

Update the checksum value for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRAmcorAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRAmcorAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + +
uint8_t IRAmcorAc::getFan ()
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMax()

+ +
+
+ + + + + + + + +
bool IRAmcorAc::getMax (void )
+
+ +

Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + +
uint8_t IRAmcorAc::getMode ()
+
+ +

Get the current operation mode setting.

+
Returns
The current operation mode.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + +
bool IRAmcorAc::getPower ()
+
+ +

Get the power setting from the internal state.

+
Returns
A boolean indicating the power setting.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint8_t * IRAmcorAc::getRaw ()
+
+ +

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

+
Returns
A PTR to the internal state.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRAmcorAc::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
Get current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + +
void IRAmcorAc::off ()
+
+ +

Set the internal state to have the power off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + +
void IRAmcorAc::on ()
+
+ +

Set the internal state to have the power on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRAmcorAc::send (const uint16_t repeat = kAmcorDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRAmcorAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMax()

+ +
+
+ + + + + + + + +
void IRAmcorAc::setMax (const bool on)
+
+ +

Control the current Maximum Cooling or Heating setting. (i.e. Turbo)

+
Note
Only allowed in Cool or Heat mode.
+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRAmcorAc::setMode (const uint8_t mode)
+
+ +

Set the desired operation mode.

+
Parameters
+ + +
[in]modeThe desired operation mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRAmcorAc::setPower (const bool on)
+
+ +

Set the internal state to have the desired power.

+
Parameters
+ + +
[in]onThe desired power state.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRAmcorAc::setRaw (const uint8_t state[])
+
+ +

Set the raw state of the object.

+
Parameters
+ + +
[in]stateThe raw state from the native IR message.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRAmcorAc::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + +
void IRAmcorAc::stateReset ()
+
+ +

Reset the internals of the object to a known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRAmcorAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRAmcorAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRAmcorAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRAmcorAc::toString ()
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRAmcorAc::validChecksum (const uint8_t state[],
const uint16_t length = kAmcorStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
+
+
+
Returns
A boolean indicating if it's checksum is valid.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRAmcorAc::_irsend
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRAmcorAc::remote_state[kAmcorStateLength]
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.map new file mode 100644 index 000000000..4cebbf9a2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 new file mode 100644 index 000000000..7fde870f1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 @@ -0,0 +1 @@ +163192504ac8319807adb950a6186ac0 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRAmcorAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..484d0b2520154ea6fff48d180b12ea8e0057cffc GIT binary patch literal 3009 zcmZXW2Q*yU8pns|y(L02LJC(z9p=esiC_p5L??O>Wn5(pqZ5Qgxk^SEB~cSS21yK& z7{*mb8H6Ev?=_<5oxHp5dhe~f&e~_MbJqUO`PR4p-~YGc3?9JQSp-=?AP~Ebw#GwX zMgk*@i2=CJFX)kgiNQe^t^xY_>w48xk_rN`qIERx8V6*r=OFd?h6Tg(=;@M^>?+bs zY16w9vQTbWjp_u`{fYX%NO2zBvBIdqlrzv%B=FI%dL@j#Wzq7^vAx#m z^z@YP!UY~M7-4RHad~+;TP4WU>XY3U+KJF(({Sa+uGiR{R~B7%*^X#kL6%ll zG#L<=L^Nb}b+zlIgxM2!_ksE=LPC`x9BgcKc3xh8Bqnl1MngNwV1ie!TnP*c;#MC)0Ex_g z`1~0pnyPc$^F$uzGU}&ccrJ|aJs&}kP9!OZNpAqc6aN=#Ke#)B%n}iyHHSkWF&21V4#d( zLgV2APHLo!Ky)mkDYt17e9_jjzdnXJ*=}cMWxXaTnE)hS<2|c|ULV!;@{;j76?NSB z_OY<2h+9agXJx3YgG|05ENrLlXJTyJH#w>A;c*L4%-r0ZqVMnqJKXxRVUlwcm(iA% zhOF#=6n|Yq=WqFM-*m0Fk3fzbPl|bu*qMaK#4x};Jt>crAm?&8PR`uCt=K9R892b@ zE1ssOMRegv*QOP$pOqK}}B zNX7Thnyuv5!b^0u;H?Q!ibSD6>G9eEl8J3-Voc+{G?@~Vz}n8pRd3}PiR=q$%%d4l z_(8v*QJ9WinB?zIsOSF#vvikkP!=*1Zj!%OM?JfBtk!b#N#)8VC-%c+%h8vKBHiSt z@uMojpMytR=6z>5*OJ-a7S#>zP0t1`Za{3+z%KhilT^|7wJV=wgT7Y~X^A#B$c{33 zLUTUH2Z+g+JtEyDjMiMqt6ob50%kk#MXs>Zc0IzTRQ(zA=kAQzW+)Ifd_qgze@|J}#Ixp%k-} zV$!&7kck=ESL?*3C2!x(tf`UneifmBtBsg(y` zT^mWK0+LmmlEQlH4TfJtt4NiB|mrkOF^ z*XJ~!>>`oKQS0$_BTvuDW7;NoV<{&4X24J;)Wm@DKTTjrx!zh<2$oo#F}Fx35WQeF zLtSD0TP1{hUd%Rr#fbC&=$cYEWaU&ox;;M&4iMxYpF&Ugt&z>$uTF*P^0 zXQu7N^2*9gYaDO61wO_C@9cV8Em272IW>4!-xdOaVCItHTie^22ES@@EBmXmvy+pd zfx+h@-Sm+U-q&n{x9MM8kfd;E`S~e`rpAfo2DErK0bBpj$f)kHx>{x(-`uQ5Lqmfm zCpI@Xqd^1$VS9Uf`t>s*LGGlE$1TId>9MgmD(6CX=D9oi`bk*P<*&*nym7weu$<_D zDpz}Z`*LdnmftowIplahIX5?vD{^JU4ZSvU7lo=dt$+JAZhh?im=2B&u$K`JXiuJ6 z74yft0Rf7pWkXV&CN3^wAiPWO*Us@Qe)p^1i6$j@ua3>ysVTb}Jf8Z|SByv`%0r>F zBVeZRgM)y0t=XuQzyvKI{sq7E!c$JwsWmE|jg8H~#6pzZ2g19Hy^FI+Y9tS+ zqg>{}-hjT&{re4$ay4&C1Qc^!0HmC@8Fr6VeL{3%Q+6PENG7wO`fL z>{PB=G>59l%F6Qb^Y6B>O80&Hrl+n>3)*bl<%o!gD7UP8Ze| + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRArgoAC Member List
+
+
+ +

This is the complete list of members for IRArgoAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRArgoACprivate
argoIRArgoACprivate
begin(void)IRArgoAC
calcChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)IRArgoACstatic
calibrate(void)IRArgoACinline
checksum(void)IRArgoACprivate
convertFan(const stdAc::fanspeed_t speed)IRArgoACstatic
convertMode(const stdAc::opmode_t mode)IRArgoACstatic
convertSwingV(const stdAc::swingv_t position)IRArgoACstatic
cool_modeIRArgoACprivate
flap_modeIRArgoACprivate
getFan(void)IRArgoAC
getFlap(void)IRArgoAC
getiFeel(void)IRArgoAC
getMax(void)IRArgoAC
getMode(void)IRArgoAC
getNight(void)IRArgoAC
getPower(void)IRArgoAC
getRaw(void)IRArgoAC
getRoomTemp(void)IRArgoAC
getTemp(void)IRArgoAC
heat_modeIRArgoACprivate
IRArgoAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRArgoACexplicit
off(void)IRArgoAC
on(void)IRArgoAC
send(const uint16_t repeat=kArgoDefaultRepeat)IRArgoAC
setFan(const uint8_t fan)IRArgoAC
setFlap(const uint8_t flap)IRArgoAC
setiFeel(const bool on)IRArgoAC
setMax(const bool on)IRArgoAC
setMode(const uint8_t mode)IRArgoAC
setNight(const bool on)IRArgoAC
setPower(const bool on)IRArgoAC
setRaw(const uint8_t state[])IRArgoAC
setRoomTemp(const uint8_t degrees)IRArgoAC
setTemp(const uint8_t degrees)IRArgoAC
setTime(void)IRArgoAC
stateReset(void)IRArgoACprivate
toCommon(void)IRArgoAC
toCommonFanSpeed(const uint8_t speed)IRArgoACstatic
toCommonMode(const uint8_t mode)IRArgoACstatic
toString()IRArgoAC
validChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)IRArgoACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC.html new file mode 100644 index 000000000..72244b98b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC.html @@ -0,0 +1,1381 @@ + + + + + + + +IRremoteESP8266: IRArgoAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Argo A/C messages. + More...

+ +

#include <ir_Argo.h>

+
+Collaboration diagram for IRArgoAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRArgoAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kArgoDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the internal state to have the power on. More...
 
void off (void)
 Set the internal state to have the power off. More...
 
void setPower (const bool on)
 Set the internal state to have the desired power. More...
 
bool getPower (void)
 Get the power setting from the internal state. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setFlap (const uint8_t flap)
 Set the flap position. i.e. Swing. More...
 
uint8_t getFlap (void)
 Get the flap position. i.e. Swing. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode (void)
 Get the current operation mode setting. More...
 
void setMax (const bool on)
 Control the current Max setting. (i.e. Turbo) More...
 
bool getMax (void)
 Is the Max (i.e. Turbo) setting on? More...
 
void setNight (const bool on)
 Turn on/off the Night mode. i.e. Sleep. More...
 
bool getNight (void)
 Get the status of Night mode. i.e. Sleep. More...
 
void setiFeel (const bool on)
 Turn on/off the iFeel mode. More...
 
bool getiFeel (void)
 Get the status of iFeel mode. More...
 
void setTime (void)
 Set the time for the A/C. More...
 
void setRoomTemp (const uint8_t degrees)
 Set the value for the current room temperature. More...
 
uint8_t getRoomTemp (void)
 Get the currently stored value for the room temperature setting. More...
 
uint8_t * getRaw (void)
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint8_t state[])
 Set the raw state of the object. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString ()
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kArgoStateLength)
 Verify the checksum is valid for a given state. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kArgoStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset (void)
 Reset the internals of the object to a known good state. More...
 
void checksum (void)
 Update the checksum for the internal state. More...
 
+ + + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t argo [kArgoStateLength]
 
uint8_t flap_mode
 
uint8_t heat_mode
 
uint8_t cool_mode
 
+

Detailed Description

+

Class for handling detailed Argo A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRArgoAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRArgoAC::IRArgoAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRArgoAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRArgoAC::calcChecksum (const uint8_t state[],
const uint16_t length = kArgoStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
+
+
+
Returns
A boolean indicating if it's checksum is valid.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRArgoAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRArgoAC::checksum (void )
+
+private
+
+ +

Update the checksum for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRArgoAC::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRArgoAC::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRArgoAC::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRArgoAC::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getFlap()

+ +
+
+ + + + + + + + +
uint8_t IRArgoAC::getFlap (void )
+
+ +

Get the flap position. i.e. Swing.

+
Warning
Not yet working!
+
Returns
The current flap setting.
+ +
+
+ +

◆ getiFeel()

+ +
+
+ + + + + + + + +
bool IRArgoAC::getiFeel (void )
+
+ +

Get the status of iFeel mode.

+
Returns
true if on, false if off.
+ +
+
+ +

◆ getMax()

+ +
+
+ + + + + + + + +
bool IRArgoAC::getMax (void )
+
+ +

Is the Max (i.e. Turbo) setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRArgoAC::getMode (void )
+
+ +

Get the current operation mode setting.

+
Returns
The current operation mode.
+ +
+
+ +

◆ getNight()

+ +
+
+ + + + + + + + +
bool IRArgoAC::getNight (void )
+
+ +

Get the status of Night mode. i.e. Sleep.

+
Returns
true if on, false if off.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRArgoAC::getPower (void )
+
+ +

Get the power setting from the internal state.

+
Returns
A boolean indicating the power setting.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRArgoAC::getRaw (void )
+
+ +

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

+
Returns
A PTR to the internal state.
+ +
+
+ +

◆ getRoomTemp()

+ +
+
+ + + + + + + + +
uint8_t IRArgoAC::getRoomTemp (void )
+
+ +

Get the currently stored value for the room temperature setting.

+
Returns
The current setting for the room temp. in degrees celsius.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRArgoAC::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRArgoAC::off (void )
+
+ +

Set the internal state to have the power off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRArgoAC::on (void )
+
+ +

Set the internal state to have the power on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRArgoAC::send (const uint16_t repeat = kArgoDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRArgoAC::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+ +
+
+ +

◆ setFlap()

+ +
+
+ + + + + + + + +
void IRArgoAC::setFlap (const uint8_t flap)
+
+ +

Set the flap position. i.e. Swing.

+
Warning
Not yet working!
+
Parameters
+ + +
[in]flapThe desired setting.
+
+
+ +
+
+ +

◆ setiFeel()

+ +
+
+ + + + + + + + +
void IRArgoAC::setiFeel (const bool on)
+
+ +

Turn on/off the iFeel mode.

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setMax()

+ +
+
+ + + + + + + + +
void IRArgoAC::setMax (const bool on)
+
+ +

Control the current Max setting. (i.e. Turbo)

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRArgoAC::setMode (const uint8_t mode)
+
+ +

Set the desired operation mode.

+
Parameters
+ + +
[in]modeThe desired operation mode.
+
+
+ +
+
+ +

◆ setNight()

+ +
+
+ + + + + + + + +
void IRArgoAC::setNight (const bool on)
+
+ +

Turn on/off the Night mode. i.e. Sleep.

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRArgoAC::setPower (const bool on)
+
+ +

Set the internal state to have the desired power.

+
Parameters
+ + +
[in]onThe desired power state.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRArgoAC::setRaw (const uint8_t state[])
+
+ +

Set the raw state of the object.

+
Parameters
+ + +
[in]stateThe raw state from the native IR message.
+
+
+ +
+
+ +

◆ setRoomTemp()

+ +
+
+ + + + + + + + +
void IRArgoAC::setRoomTemp (const uint8_t degrees)
+
+ +

Set the value for the current room temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRArgoAC::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+
Note
Sending 0 equals +4
+ +
+
+ +

◆ setTime()

+ +
+
+ + + + + + + + +
void IRArgoAC::setTime (void )
+
+ +

Set the time for the A/C.

+
Warning
Not yet working!
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRArgoAC::stateReset (void )
+
+private
+
+ +

Reset the internals of the object to a known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRArgoAC::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRArgoAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRArgoAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRArgoAC::toString ()
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRArgoAC::validChecksum (const uint8_t state[],
const uint16_t length = kArgoStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
+
+
+
Returns
A boolean indicating if it's checksum is valid.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRArgoAC::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ argo

+ +
+
+ + + + + +
+ + + + +
uint8_t IRArgoAC::argo[kArgoStateLength]
+
+private
+
+ +
+
+ +

◆ cool_mode

+ +
+
+ + + + + +
+ + + + +
uint8_t IRArgoAC::cool_mode
+
+private
+
+ +
+
+ +

◆ flap_mode

+ +
+
+ + + + + +
+ + + + +
uint8_t IRArgoAC::flap_mode
+
+private
+
+ +
+
+ +

◆ heat_mode

+ +
+
+ + + + + +
+ + + + +
uint8_t IRArgoAC::heat_mode
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.map new file mode 100644 index 000000000..d2a486ba8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.md5 new file mode 100644 index 000000000..e84f3b330 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.md5 @@ -0,0 +1 @@ +7d040225d2db5b4715532b7d4ba5268b \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRArgoAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a7838e03d2748923e6be5065db7a353a8c9b0a2e GIT binary patch literal 3164 zcmZ8k2UHW=79HumcOqRuEYwJe1VV4pMBvduc%UFvg1`$Up{Wo+L{yM2MTr3v1*I68 zp@Rqli9qPROD}(X>;Jd@|1)dmu9-V?=bpRI*?Z3e3o`>&CLtyO09cI-b*;eG8$6;I z=)f~|Zvq-@=-f>Vbb-^~dtQA>IsmY68tEde?`N;PM49p!h<2X<~o#6kAF-`9Xk6uV_3->$bk!{siH!U#iUhY%tYj>Qe5u}f zB#_h?&sYFCpBVH^tYhOIR0oC9fbUOpi@T>unLNEj5caPVAKr0-V@64&jg^n%Oq`FV zYyR3-TwGeBz1%#b#O(T?kjEa~FQDj5!dt|XW*SR2Ze2A~j_95qvj7NvVZRJg zrr8xO^Yt>?%E~G=GjmS4HxQzV#pLFS&i3Y}a7&xjNbp_ zFZ+^f0(Hs*O7*s7dwP4>@r@_ys@P_*>5$V5m;l^w-J-0mr4$uOIo5|~n7^~TMC|U? zGc{$I4pRFzFwj3V)K(&AR{^Xw9A0^xp3W&CkT~+rYwBo!>#tAFc!Th8bt-CVh0s;U zY&dFE0|sN$<@czz51j844}c`Z#?k;z zv$+`rfg!tahs#_odS*G-j2ydn$icm7WU^yP7;vO~tBu9V(vnc(Q*A%Fwr2j;r4jDy zu(Gm311!wXPh^g)Ah`qthc99e5s)>0ch*Ec+zI6dug$>|f1%^O|?1%=dh4|$60@%5~} z!9iM_&7+TF;hn4zYVcAH8X!x>KYs8|Yk#3ZrSFI$aVDs!xL86)h5>v_=Hf*iEiE9L zo;4Z-RSXK{b#rqYt_xEN3JRK7S*h~)jYdvthiT$AR5Sh&qgGrxuIne{;4nU!k`LGcK|8GE7J<>`q+AUdZr5|bPh){ z#Plk1tD0}De!ZuD7F?Iu%PoUrgM=|(1!=hvmMYB?t_Qi*rrUP0tKG<2=@>e{6IcBe zL^}L850j%SK+LC*{pP^i!o1>0dxZ zuks16dau>0$f$@hB4)F8UHy)iFmhXydAR4{gV|Cvw_h9J8z9Ft-MlyOP?goMtg9_! z=Ibq*=CF)$UIj0JtLkj=oOwT%v-sAcaAi$&l=CyY!eCFj0LMTs0$p^B2 z>i=-mjQrn(h4si9Im;TlF`N!xNBJ(2w~}H#Xs`3z@fxU^rY0tNa+KUYH(yqggSN-< z!B{d=b-flm0{1sPD|G^%-wvTON&~wovVH_K?Qm_d^iw$(>~kfr$t?ede18sUgiAMn zY6t7}>6BA)$OUtEcL}wiX$H;TRov9v+-|OUtV>5nM_g+>HLI(uBc^Dc82VlnF2m!c z_xJaY4rDVPf+@;{voQ$|4<~|S8u49mG+ai)8tdohy}$MKX@y5b7`eHLGcq$vvL#?R zv<b4XBkqy<=8U9Wh*Jh@t6Zz+9 z(tLSUoKlwsm7PFI`2X5?ef6qNRI3D104@0k0tCcuX_X(wLP#smTcG+|Q~r(DZ-IG? zB7bRMcegn6X7Yc>`8{Ym(~B#;n0VCByn%)FtzOMXoR3Vlm5*3Mo3bc_+8>L)ibg>| zeG@#T6FG5Bj31{L>f~8GYgFgiQ1De@RJnhgKYV%@5fTy-m7k%&$Hc^RzK*rs8B@$` z%JE-QNSE+F+*wh*zn(Wxr=1_Iov&qV%rx}Y>Cx!uDCd@lW+a3uuIaWeTd2H!ZR7Ed zFmjdrVDOFY)}e*Hy?QZwyfinVCod_9<@?|urR%wpU2V`g_}&C{WO)pNLA>DIOo{kR2`jTGij*ztmbb z0HWgS7!5w&m956@@X=4t%WF)TdZvm7hT7hK!<>5-|i?(ld&CJ*u z4p(6^JWSi$+W^q@rxFu0bG}tso>f_eSFZ@UJ|eVhhD+PR(J|@$du89@iZkFW)^~RF zeSI$t;T#fXIy0Gr^F(4M&<6(x>&Ls}m?_n+91YS1TwNW+XQ(`;q(nL=>LkqC+M1=) z#mOo8*V2!|f&!}c_V(fW2$iGbA(T=Zkx#7S3jBozgtNxTtMu z+5fDwK4ggxRMw5NUh>W{_^y)gIH!KCnsl&tqUr{#TNf#YP8yi*x9KQ5FoGl z6rrO-ZF+v-SqC&r^vKoC&@j;=q3s-vFw=QSN$RYtchMuh`hkH84SSQ!mz?Va6h|

~%G1z70H?JAotfZ?45ea_x~{w)%?#Crz^?nC8&991PIGMxBh2mm`fdu&3&R;Prd zVBO`9=YsxKGS0Fh#8JM`23W&ksBKEkQGz^QLzP|fd zU6?9pw7_)O4%aX?Hs0F?gXqfD6a}*$)9!&LxPB?gjeOYBqDwa2DAyFWAMIv7qkX#t&jMnH;74ClApE9eG2XNuV49}J_&jC=IFV*PgaCn)6l34 zplCnI%+w5meMYXJTippJa`mxiVaRoytQ?+RPQGDxEMooFuT~JLjZq)GxRg|^=zH(- znJXX!hr4SA4i3Us{m6-6c};=&XP~9^r6p%23F9VrN{&4MwZ5 yU$(NQ+k-AU$+9yQKL6nntaS9oZk!U$T$IV7{vUdxf~w%}0$`+Pru$ag75y&_l=n*j literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64-members.html new file mode 100644 index 000000000..a681c9218 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64-members.html @@ -0,0 +1,117 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +

+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRCarrierAc64 Member List
+
+
+ +

This is the complete list of members for IRCarrierAc64, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_cancelOffTimer(void)IRCarrierAc64private
_cancelOnTimer(void)IRCarrierAc64private
_irsendIRCarrierAc64private
begin()IRCarrierAc64
calcChecksum(const uint64_t state)IRCarrierAc64static
calibrate(void)IRCarrierAc64inline
checksum(void)IRCarrierAc64private
convertFan(const stdAc::fanspeed_t speed)IRCarrierAc64
convertMode(const stdAc::opmode_t mode)IRCarrierAc64
getFan()IRCarrierAc64
getMode()IRCarrierAc64
getOffTimer(void)IRCarrierAc64
getOnTimer(void)IRCarrierAc64
getPower()IRCarrierAc64
getRaw()IRCarrierAc64
getSleep(void)IRCarrierAc64
getSwingV(void)IRCarrierAc64
getTemp()IRCarrierAc64
IRCarrierAc64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRCarrierAc64explicit
off()IRCarrierAc64
on()IRCarrierAc64
remote_stateIRCarrierAc64private
send(const uint16_t repeat=kCarrierAc64MinRepeat)IRCarrierAc64
setFan(const uint8_t speed)IRCarrierAc64
setMode(const uint8_t mode)IRCarrierAc64
setOffTimer(const uint16_t nr_of_mins)IRCarrierAc64
setOnTimer(const uint16_t nr_of_mins)IRCarrierAc64
setPower(const bool on)IRCarrierAc64
setRaw(const uint64_t state)IRCarrierAc64
setSleep(const bool on)IRCarrierAc64
setSwingV(const bool on)IRCarrierAc64
setTemp(const uint8_t temp)IRCarrierAc64
stateReset()IRCarrierAc64
toCommon(void)IRCarrierAc64
toCommonFanSpeed(const uint8_t speed)IRCarrierAc64static
toCommonMode(const uint8_t mode)IRCarrierAc64static
toString()IRCarrierAc64
validChecksum(const uint64_t state)IRCarrierAc64static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64.html new file mode 100644 index 000000000..111037a52 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64.html @@ -0,0 +1,1206 @@ + + + + + + + +IRremoteESP8266: IRCarrierAc64 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Carrier 64 bit A/C messages. + More...

+ +

#include <ir_Carrier.h>

+
+Collaboration diagram for IRCarrierAc64:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRCarrierAc64 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kCarrierAc64MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower ()
 Get the value of the current power setting. More...
 
void on ()
 Change the power setting to On. More...
 
void off ()
 Change the power setting to Off. More...
 
void setTemp (const uint8_t temp)
 Set the temp in deg C. More...
 
uint8_t getTemp ()
 Get the current temperature from the internal state. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingV (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getSleep (void)
 Get the Sleep mode of the A/C. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan ()
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode ()
 Get the operating mode setting of the A/C. More...
 
void setOnTimer (const uint16_t nr_of_mins)
 Set the On Timer time. More...
 
uint16_t getOnTimer (void)
 Get the current On Timer time. More...
 
void setOffTimer (const uint16_t nr_of_mins)
 Set the Off Timer time. More...
 
uint16_t getOffTimer (void)
 Get the current Off Timer time. More...
 
uint64_t getRaw ()
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t state)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the A/C state to it's common stdAc::state_t equivalent. More...
 
String toString ()
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's common stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + + + + +

+Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
void _cancelOnTimer (void)
 Clear the On Timer enable bit. More...
 
void _cancelOffTimer (void)
 Clear the Off Timer enable bit. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint64_t remote_state
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Carrier 64 bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRCarrierAc64()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRCarrierAc64::IRCarrierAc64 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _cancelOffTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCarrierAc64::_cancelOffTimer (void )
+
+private
+
+ +

Clear the Off Timer enable bit.

+ +
+
+ +

◆ _cancelOnTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCarrierAc64::_cancelOnTimer (void )
+
+private
+
+ +

Clear the On Timer enable bit.

+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRCarrierAc64::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRCarrierAc64::calcChecksum (const uint64_t state)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + +
[in]stateThe value to calc the checksum of.
+
+
+
Returns
The 4-bit checksum stored in a uint_8.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRCarrierAc64::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCarrierAc64::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRCarrierAc64::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRCarrierAc64::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a standard A/C mode into its native mode.

+
Parameters
+ + +
[in]modeA stdAc::opmode_t to be converted to it's native equivalent.
+
+
+
Returns
The corresponding native mode.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + +
uint8_t IRCarrierAc64::getFan ()
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + +
uint8_t IRCarrierAc64::getMode ()
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRCarrierAc64::getOffTimer (void )
+
+ +

Get the current Off Timer time.

+
Returns
The number of minutes it is set for. 0 means it's off.
+
Note
The A/C protocol only supports one hour increments.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRCarrierAc64::getOnTimer (void )
+
+ +

Get the current On Timer time.

+
Returns
The number of minutes it is set for. 0 means it's off.
+
Note
The A/C protocol only supports one hour increments.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + +
bool IRCarrierAc64::getPower ()
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint64_t IRCarrierAc64::getRaw ()
+
+ +

Get a copy of the internal state as a valid code for this protocol.

+
Returns
A valid code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRCarrierAc64::getSleep (void )
+
+ +

Get the Sleep mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
bool IRCarrierAc64::getSwingV (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRCarrierAc64::getTemp ()
+
+ +

Get the current temperature from the internal state.

+
Returns
The current temperature in Celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + +
void IRCarrierAc64::off ()
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + +
void IRCarrierAc64::on ()
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::send (const uint16_t repeat = kCarrierAc64MinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setOffTimer (const uint16_t nr_of_mins)
+
+ +

Set the Off Timer time.

+
Parameters
+ + +
[in]nr_of_minsNumber of minutes to set the timer to. (< 60 is disable).
+
+
+
Note
The A/C protocol only supports one hour increments.
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setOnTimer (const uint16_t nr_of_mins)
+
+ +

Set the On Timer time.

+
Parameters
+ + +
[in]nr_of_minsNumber of minutes to set the timer to. (< 60 is disable).
+
+
+
Note
The A/C protocol only supports one hour increments.
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setRaw (const uint64_t state)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]stateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setSleep (const bool on)
+
+ +

Set the Sleep mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setSwingV (const bool on)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRCarrierAc64::setTemp (const uint8_t temp)
+
+ +

Set the temp in deg C.

+
Parameters
+ + +
[in]tempThe desired temperature in Celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + +
void IRCarrierAc64::stateReset ()
+
+ +

Reset the internal state to a fixed known good state.

+
Note
The state is powered off.
+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRCarrierAc64::toCommon (void )
+
+ +

Convert the A/C state to it's common stdAc::state_t equivalent.

+
Returns
A stdAc::state_t state.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRCarrierAc64::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRCarrierAc64::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode to it's common stdAc::opmode_t equivalent.

+
Parameters
+ + +
[in]modeA native operation mode to be converted.
+
+
+
Returns
The corresponding common stdAc::opmode_t mode.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRCarrierAc64::toString ()
+
+ +

Convert the internal state into a human readable string.

+
Returns
The current internal state expressed as a human readable String.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRCarrierAc64::validChecksum (const uint64_t state)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]stateThe array to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRCarrierAc64::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint64_t IRCarrierAc64::remote_state
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.map new file mode 100644 index 000000000..d0c818960 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 new file mode 100644 index 000000000..fd7409742 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 @@ -0,0 +1 @@ +c88965083519dee20186a15bc2f69a8c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCarrierAc64__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72adeb220645a7fd55ba14e7ff519605fceedc3c GIT binary patch literal 3653 zcmZu!2UJtdwhk&?ih>jY`4LF~DWVhsY0@Qh1StVUI!Fnjg(?b26^+zTq>0p@-a7;Y z2}lR&y_bj}oj1IH-FMep_pYpyvu4g@&Yr#ZR}!kFp-e?_lL7*PP^qdY=zzNyxctdT z!1wozS9;(^Vy>pF06D+-e6G*NfR#t83UYd$Nt?;OT6#~3 z^MPB!b?M|S_lr>La?z8!$E~wxM$PoEYn!T56C_)u{!F+wc*sn+Zf}hpBNWLveysjrVr2`^SkF+4 zg&<0o2Wnom~U3D6{QsZf@>Q zm6>)#Xw%axrm4jVJo@#G(_yRx_xf4|&Cjxh_IFWHN@Q||hRmhbz0ljY12Hg735k4B z^;(RHW}E;bUeZG#EZupojlBFMEb3EHCc@rha^ubC_;GVBfrg zZt5eSKE1I%Tp+JaA56_gA*-Q5EhHr5L%=bb)SyB=rhVfIj4N}G6%-Vru~;=LE9i1> zs`X6M>$gEcFG|M-C9q;nPyvCcxjFOOw{LrbpXHbZfnTb;1-;sIp0k&jMioN)T^M0;3cAWl#Bvj zE%o!BR@K(#?VX;U;=H%(vmFHm1sMal`S|F)yu2>aG76gNRr;Tw{<%b(m6fF~QD{5x zB@|pDwy8@$wt5zh?2)Rf$lUjR+wedZzx?RToC{@)VmWo# z6G@4>g|2j?C+7xk880DMJ$T|9ojhYbgu!&3(|4hXEa4iw)s2O%wF8eaHdCadk$6Q7 z*5@ni^9fue4sTFS_2i{Q*+N*ULC&{x>(?YO;@znzDGLvqPA_jqDf;n3a^!%-KB8ht zH`2(w9=h_N0gEu~6O2JUsF~@Z6c}X{ zR_?VG969@j92_0x`v31>a*r*Yd*5tVBmo`|hdPL|sH&=702z>{h>JZSlgU~SC!~zO z=7f=8O-`us-h*mloApp*w@!XpW6cTP$tyu;iqgr{p{S4Y(haG{XOmA6y}i8#+h`{f ztDdCQDp_ON)nI$(4_olq3ylCWBpU}(_zzl8A3cqIiYSMq z@${?yx8=H#N4uR8Y}b9O{-tUEZ!^mzO~)O*moHv$kkZ^jDexukEYJFx?04Z-;T`lB z2f1|l@+PH|&+}^jlO7j)0jZ?=pwhI`)_I$Ptm0|QhSl9pW@cuw@yr1w!v-I(jKzKg z#!}(m;nIKPyRSc8> zSU69-08&y~>a|%uvO^%en5=QTcqlgQLl=&Ftgo+cA2h`GmUd&R9vdA^>%KKHmg%dR zEPq&bAbL&L4tBZ>Z2M5P%5EvXv z2XS&O|vX8LvKnza!59ZhlhVPld?O5 zQWx0{Krie^cB)_Q+2zSmlBPmLZM?LvM6!h2+-i0zl%GG+Yj-JUv(U6Y@vcE3EhD4y zpRLKx?(T)r;+Kz(Rx*+vx&#IUKupoATw!5hK(m3|k^1}l?=gYM zXVJ&|n-Of1u`@Hzr4JYA^b3rF-oK}T+_-TAG6DQTC1YlD)9Ih--cLNb51nTMCM$}H z?%nd)k$c*P?^@&G=U)V^W;NRqGy#kVYPCN|+;z!$wuQL%duQaU3;zSUu04v4vT30c zGgj%8n&@1Rnfdk&DNTtd!5j$t%Fpt;o{QP(rOyY8}TPSObfYHk~c7Vc0OpOt$htL@I~FesGzC}WcEn- zrxF@1!NtXOg_w9O#@fPymX#F_+$hPL*QWJo5t|Vlj#yEfjGR2p|NIQn9WV4|a8NIb zO|m_J=rYJTDSwtdJ96Hfoo#LjqVzgDTpp|U76WGk)Ht`ehy#9vS=dG^;~3H4 zlMr*)pu`+U5qy>T@p4b{Sc9*m%-KN(qMpUoWGX-Z7Vv2FinCa!hUUr1(=U5xQ^B-> zzkj1d9VgzUrluPC{a(=)br_X(cD`q7YC7s5dUh~R1F*gM6Y1{$#bbNQ-Es~cY)-Gp z0fU8+5 zOUq-xF5h~4VE_T$-Ec6VeLS(N8ca10pnV5~ z{_UHJoxMF_e;>-t{SLe&DLL6|F~;CoHImDq(Bz_67t*7ftsx>AJ39JI)M=_aT`|1M z=kUH##s@}IPa;@$d!uus>#{~L4g1vRI?C)keS5L6)-NFU@i5z>a}zj%42)=lC8cn63Q&7M0Q?9_isvZ2uuq z|JVoT0nNHKYh%<;#z^%#;e)ok3>oM^pY4Vavy}C_D=Q=aXZ|FJ@Ts9AwgV^ZMAq|; V%j5)Z@V^kEs;Hq*`1pC?{{WPlE;9fC literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC-members.html new file mode 100644 index 000000000..88e247857 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC-members.html @@ -0,0 +1,137 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRCoolixAC Member List
+
+
+ +

This is the complete list of members for IRCoolixAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRCoolixACprivate
begin()IRCoolixAC
calibrate(void)IRCoolixACinline
cleanFlagIRCoolixACprivate
clearSensorTemp()IRCoolixAC
convertFan(const stdAc::fanspeed_t speed)IRCoolixAC
convertMode(const stdAc::opmode_t mode)IRCoolixAC
getClean()IRCoolixAC
getFan()IRCoolixAC
getLed()IRCoolixAC
getMode()IRCoolixAC
getNormalState(void)IRCoolixACprivate
getPower()IRCoolixAC
getRaw()IRCoolixAC
getSensorTemp()IRCoolixAC
getSleep()IRCoolixAC
getSwing()IRCoolixAC
getTemp()IRCoolixAC
getTempRaw()IRCoolixACprivate
getTurbo()IRCoolixAC
getZoneFollow()IRCoolixAC
handleSpecialState(const uint32_t data)IRCoolixACprivate
IRCoolixAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRCoolixACexplicit
isSpecialState(void)IRCoolixACprivate
ledFlagIRCoolixACprivate
off()IRCoolixAC
on()IRCoolixAC
powerFlagIRCoolixACprivate
recoverSavedState(void)IRCoolixACprivate
remote_stateIRCoolixACprivate
saved_stateIRCoolixACprivate
send(const uint16_t repeat=kCoolixDefaultRepeat)IRCoolixAC
setClean()IRCoolixAC
setFan(const uint8_t speed, const bool modecheck=true)IRCoolixAC
setLed()IRCoolixAC
setMode(const uint8_t mode)IRCoolixAC
setPower(const bool state)IRCoolixAC
setRaw(const uint32_t new_code)IRCoolixAC
setSensorTemp(const uint8_t desired)IRCoolixAC
setSensorTempRaw(const uint8_t code)IRCoolixACprivate
setSleep()IRCoolixAC
setSwing()IRCoolixAC
setTemp(const uint8_t temp)IRCoolixAC
setTempRaw(const uint8_t code)IRCoolixACprivate
setTurbo()IRCoolixAC
setZoneFollow(const bool on)IRCoolixACprivate
sleepFlagIRCoolixACprivate
stateReset()IRCoolixAC
swingFlagIRCoolixACprivate
swingHFlagIRCoolixACprivate
swingVFlagIRCoolixACprivate
toCommon(const stdAc::state_t *prev=NULL)IRCoolixAC
toCommonFanSpeed(const uint8_t speed)IRCoolixACstatic
toCommonMode(const uint8_t mode)IRCoolixACstatic
toString()IRCoolixAC
turboFlagIRCoolixACprivate
updateSavedState(void)IRCoolixACprivate
zoneFollowFlagIRCoolixACprivate
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC.html new file mode 100644 index 000000000..75343d576 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC.html @@ -0,0 +1,1710 @@ + + + + + + + +IRremoteESP8266: IRCoolixAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Coolix A/C messages. + More...

+ +

#include <ir_Coolix.h>

+
+Collaboration diagram for IRCoolixAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRCoolixAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kCoolixDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void on ()
 Change the power setting to On. More...
 
void off ()
 Change the power setting to Off. More...
 
void setPower (const bool state)
 Change the power setting. More...
 
bool getPower ()
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setSensorTemp (const uint8_t desired)
 Set the sensor temperature. More...
 
uint8_t getSensorTemp ()
 Get the sensor temperature setting. More...
 
void clearSensorTemp ()
 Clear the Sensor Temperature setting.. More...
 
void setFan (const uint8_t speed, const bool modecheck=true)
 Set the speed of the fan. More...
 
uint8_t getFan ()
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode ()
 Get the operating mode setting of the A/C. More...
 
void setSwing ()
 Toggle the Swing mode of the A/C. More...
 
bool getSwing ()
 Get the Swing setting of the A/C. More...
 
void setSleep ()
 Toggle the Sleep mode of the A/C. More...
 
bool getSleep ()
 Get the Sleep setting of the A/C. More...
 
void setTurbo ()
 Toggle the Turbo mode of the A/C. More...
 
bool getTurbo ()
 Get the Turbo setting of the A/C. More...
 
void setLed ()
 Toggle the Led (light) mode of the A/C. More...
 
bool getLed ()
 Get the Led (light) setting of the A/C. More...
 
void setClean ()
 Toggle the Clean mode of the A/C. More...
 
bool getClean ()
 Get the Clean setting of the A/C. More...
 
bool getZoneFollow ()
 Get the Zone Follow setting of the A/C. More...
 
uint32_t getRaw ()
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint32_t new_code)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL)
 Convert the A/C state to it's common stdAc::state_t equivalent. More...
 
String toString ()
 Convert the internal state into a human readable string. More...
 
+ + + + + + + +

+Static Public Member Functions

static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's common stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void setTempRaw (const uint8_t code)
 Set the raw (native) temperature value. More...
 
uint8_t getTempRaw ()
 Get the raw (native) temperature value. More...
 
void setSensorTempRaw (const uint8_t code)
 Set the raw (native) sensor temperature value. More...
 
void setZoneFollow (const bool on)
 Change the Zone Follow setting. More...
 
bool isSpecialState (void)
 Is the current state is a special state? More...
 
bool handleSpecialState (const uint32_t data)
 Adjust any internal settings based on the type of special state we are supplied. Does nothing if it isn't a special state. More...
 
void updateSavedState (void)
 Backup the current internal state as long as it isn't a special state. More...
 
void recoverSavedState (void)
 Restore the current internal state from backup as long as it isn't a special state. More...
 
uint32_t getNormalState (void)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
bool powerFlag
 
bool turboFlag
 
bool ledFlag
 
bool cleanFlag
 
bool sleepFlag
 
bool zoneFollowFlag
 
bool swingFlag
 
bool swingHFlag
 
bool swingVFlag
 
uint32_t remote_state
 The state of the IR remote in IR code form. More...
 
uint32_t saved_state
 Copy of the state if we required a special mode. More...
 
+

Detailed Description

+

Class for handling detailed Coolix A/C messages.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/484
+

Constructor & Destructor Documentation

+ +

◆ IRCoolixAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRCoolixAC::IRCoolixAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRCoolixAC::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRCoolixAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ clearSensorTemp()

+ +
+
+ + + + + + + +
void IRCoolixAC::clearSensorTemp ()
+
+ +

Clear the Sensor Temperature setting..

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRCoolixAC::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRCoolixAC::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a standard A/C mode into its native mode.

+
Parameters
+ + +
[in]modeA stdAc::opmode_t to be converted to it's native equivalent.
+
+
+
Returns
The corresponding native mode.
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + +
bool IRCoolixAC::getClean ()
+
+ +

Get the Clean setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + +
uint8_t IRCoolixAC::getFan ()
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getLed()

+ +
+
+ + + + + + + +
bool IRCoolixAC::getLed ()
+
+ +

Get the Led (light) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + +
uint8_t IRCoolixAC::getMode ()
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getNormalState()

+ +
+
+ + + + + +
+ + + + + + + + +
uint32_t IRCoolixAC::getNormalState (void )
+
+private
+
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + +
bool IRCoolixAC::getPower ()
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint32_t IRCoolixAC::getRaw ()
+
+ +

Get a copy of the internal state as a valid code for this protocol.

+
Returns
A valid code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSensorTemp()

+ +
+
+ + + + + + + +
uint8_t IRCoolixAC::getSensorTemp ()
+
+ +

Get the sensor temperature setting.

+
Returns
The current setting for sensor temp. in degrees celsius.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + +
bool IRCoolixAC::getSleep ()
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + +
bool IRCoolixAC::getSwing ()
+
+ +

Get the Swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRCoolixAC::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTempRaw()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t IRCoolixAC::getTempRaw ()
+
+private
+
+ +

Get the raw (native) temperature value.

+
Returns
The native temperature value.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + +
bool IRCoolixAC::getTurbo ()
+
+ +

Get the Turbo setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getZoneFollow()

+ +
+
+ + + + + + + +
bool IRCoolixAC::getZoneFollow ()
+
+ +

Get the Zone Follow setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ handleSpecialState()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRCoolixAC::handleSpecialState (const uint32_t data)
+
+private
+
+ +

Adjust any internal settings based on the type of special state we are supplied. Does nothing if it isn't a special state.

+
Parameters
+ + +
[in]dataThe state we need to act upon.
+
+
+
Note
Special state means commands that are not affecting Temperature/Mode/Fan
+
Returns
true, if it is a special state. false if it isn't.
+ +
+
+ +

◆ isSpecialState()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRCoolixAC::isSpecialState (void )
+
+private
+
+ +

Is the current state is a special state?

+
Returns
true, if it is. false if it isn't.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + +
void IRCoolixAC::off ()
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + +
void IRCoolixAC::on ()
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ recoverSavedState()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoolixAC::recoverSavedState (void )
+
+private
+
+ +

Restore the current internal state from backup as long as it isn't a special state.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRCoolixAC::send (const uint16_t repeat = kCoolixDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + +
void IRCoolixAC::setClean ()
+
+ +

Toggle the Clean mode of the A/C.

+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRCoolixAC::setFan (const uint8_t speed,
const bool modecheck = true 
)
+
+ +

Set the speed of the fan.

+
Parameters
+ + + +
[in]speedThe desired setting.
[in]modecheckDo we enforce any mode limitations before setting?
+
+
+ +
+
+ +

◆ setLed()

+ +
+
+ + + + + + + +
void IRCoolixAC::setLed ()
+
+ +

Toggle the Led (light) mode of the A/C.

+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRCoolixAC::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRCoolixAC::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRCoolixAC::setRaw (const uint32_t new_code)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSensorTemp()

+ +
+
+ + + + + + + + +
void IRCoolixAC::setSensorTemp (const uint8_t desired)
+
+ +

Set the sensor temperature.

+
Parameters
+ + +
[in]desiredThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setSensorTempRaw()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoolixAC::setSensorTempRaw (const uint8_t code)
+
+private
+
+ +

Set the raw (native) sensor temperature value.

+
Note
Bypasses any checks or additional actions.
+
Parameters
+ + +
[in]codeThe desired native sensor temperature.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + +
void IRCoolixAC::setSleep ()
+
+ +

Toggle the Sleep mode of the A/C.

+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + +
void IRCoolixAC::setSwing ()
+
+ +

Toggle the Swing mode of the A/C.

+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRCoolixAC::setTemp (const uint8_t desired)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]desiredThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTempRaw()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoolixAC::setTempRaw (const uint8_t code)
+
+private
+
+ +

Set the raw (native) temperature value.

+
Note
Bypasses any checks.
+
Parameters
+ + +
[in]codeThe desired native temperature.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + +
void IRCoolixAC::setTurbo ()
+
+ +

Toggle the Turbo mode of the A/C.

+ +
+
+ +

◆ setZoneFollow()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoolixAC::setZoneFollow (const bool on)
+
+private
+
+ +

Change the Zone Follow setting.

+
Note
Internal use only.
+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + +
void IRCoolixAC::stateReset ()
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRCoolixAC::toCommon (const stdAc::state_tprev = NULL)
+
+ +

Convert the A/C state to it's common stdAc::state_t equivalent.

+
Parameters
+ + +
[in]prevPtr to the previous state if required.
+
+
+
Returns
A stdAc::state_t state.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRCoolixAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRCoolixAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode to it's common stdAc::opmode_t equivalent.

+
Parameters
+ + +
[in]modeA native operation mode to be converted.
+
+
+
Returns
The corresponding common stdAc::opmode_t mode.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRCoolixAC::toString ()
+
+ +

Convert the internal state into a human readable string.

+
Returns
The current internal state expressed as a human readable String.
+ +
+
+ +

◆ updateSavedState()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoolixAC::updateSavedState (void )
+
+private
+
+ +

Backup the current internal state as long as it isn't a special state.

+
Note
: Must be called before every special state to make sure the remote_state is safe
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRCoolixAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ cleanFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::cleanFlag
+
+private
+
+ +
+
+ +

◆ ledFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::ledFlag
+
+private
+
+ +
+
+ +

◆ powerFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::powerFlag
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint32_t IRCoolixAC::remote_state
+
+private
+
+ +

The state of the IR remote in IR code form.

+ +
+
+ +

◆ saved_state

+ +
+
+ + + + + +
+ + + + +
uint32_t IRCoolixAC::saved_state
+
+private
+
+ +

Copy of the state if we required a special mode.

+ +
+
+ +

◆ sleepFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::sleepFlag
+
+private
+
+ +
+
+ +

◆ swingFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::swingFlag
+
+private
+
+ +
+
+ +

◆ swingHFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::swingHFlag
+
+private
+
+ +
+
+ +

◆ swingVFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::swingVFlag
+
+private
+
+ +
+
+ +

◆ turboFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::turboFlag
+
+private
+
+ +
+
+ +

◆ zoneFollowFlag

+ +
+
+ + + + + +
+ + + + +
bool IRCoolixAC::zoneFollowFlag
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.map new file mode 100644 index 000000000..74e59be41 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 new file mode 100644 index 000000000..eb300fb90 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 @@ -0,0 +1 @@ +4ccbb54c1327fe4f53812f4cc284a8f1 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoolixAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..76fd97accf66c1cc1bd189534eedf6d44c1c43dc GIT binary patch literal 3102 zcmZWr2{=@1A0HuIm&i_*i#}OGvSgP%WgGj*o`$i^7-B40%2Fsxl6|Y}VJu}|!Zf+I zWEf z4m{CkP6O|=V?Qv!aN6Uhu>t7h=Uv=co&f^=K5k;5YZIEkUJz-?y(}D4WVlxR2d^QY zz?lT}7@6(93@4blGQmv0CdsmA%%bm_VPfE}C}6JSt{w>!QO~e~*f5Y(lhW+hJ%VJ| z5h~9Wo0mcv;(O>HUfyS4%Kt%I2>u zeVAI#ndT&7m2aNDcsGfw-1;8D*3#c!7SXj|)}A!3WnyBYdAQb?o4N5;{M#;h{N5IZ z_nWji9yc)ozICgbtUVjj@9c5-ef^u970T1o)4Pi;EM;8k?|3NInVA_&uK1Lcvliu7 zSftF$Lv3awe-N;Wqne7IE?_P$L-)o0#G!n(3=5rOTr7XMybG#-d3jkhuK4B4Sgdfw zo`$~iJTX=an=?klFT~CyBTdq>&;&z)YS!|qobjtg~RFM#yAHQ z>S|b6n1P|;IW8`P8#kEE%*=c=<>XS7eJ9aw?@pbfr_a%jR0q~f?$XJ%sh*mQYu z?Ccu+KfhI|*{NWMzv$?2di=H}Vx!Z3X?dA7hY3e6%Y$=7d|v|-?W%35hlj}`(ML!J zNV!E3PmDJV2F_9wJbR9hucB7u{CSzVP$H}H-1M{*Xl!=&(j}f`P=Ai17mj+Lo{8a) zna`h%ZR>V-@1_?PYFGIiCF6yVStCf5yeBxEjY~NBUxH_uKx1QL&oVRX1D9`baBzGW z7+Cl^_7aq@8O9N_xf!r`%4@a-c|<$hP*PE;T7H<2P*rr%G#hly)m3D8coau#N0cQ)oaad>SbtS4vj`T_k)|0vyXuK zGMvOMAAVN z85kHqyz-jRp={m2z$+ysB}*jI(}IF01D=5}R{)-OQ7BGMPJIAe5D3K4Ze70Q%tB## zhqScxhoPZ-}E&ftc)ZQSS;R(nRSujPe?} zUoA8L$h4IrYD4w4wo=KT(}zMJrS-UcNw`#tv9u>W|`0cp@S#S(dxBxfwK}0 zyCd|HQnqbml=P2O{iiq{Ep_y=4@VT1Rdggw6-H2RW!zPfSD70sae$=pF8(=>uo4Vd zDL`3SSuK*4jN)q%SK5=?+SDz|FZ(Q=`xzqPY9}T~(o`T-5PsE7(6HJ6rNCoKQ7_eg8fQjlR4E2vE|yce-1H^4*WNh}dL6fsJO9&tdQ6^m-(M zIFD$k>|jn$Pha&y2p*Za*t#$p@*jL~_3@FetgKWmFxNg@Q~XI`U*BqVYThtZTvas` zceuYZkH}hTy+X~?Ty*L=&lH{U*Pu9S2Hi)e^;aw8w_x%RL=uE<_1^8xU_Ma6L zthXARh$Z++Be+;l{RGMDNOi;iDFw^L+VC*?nlGpbb=F}Z#B=?Xuau5?vXT-uU=hys zi$;K*{F<3SnM~innsf+E+pKc^^Z6I?7JwAT$iBHr7#vP&-{{&gkb^I*mB5a8CVQxy z2hUK0vdwAFo+)i7Wp!U(VeO{>VPD2>-Ew)~bTd>KuhDwY9%LV>Q(IO>@)1om;^O9R z?WkQC0dVmvehEg_wJX1>O4_2lts1fp*MvLn0>w~leh~CVS3*J8_kD-*-0FYb(JMQtr~YZ0?H*BRk3YrXfeqf#lyG!;EfeG;WiTdl5pT2z!ezK^v4m!1YHHS#hDVB|q@`c9x90&SG8eI-1sE8lJ)~xE%lDk1psBmN==rPg zSCy5Ck%!;G_V(CZW#7%Med4GU1Y%-jbh@jnOLMb_9w3MDlU7GI*^hpnB|;h@6)$`C z4-TxHoJ@fo1#DfX%T^CwwQWZD`!54l2Y6ql`1haco{&#LzJ_TugUwFfmdH>dKUGMk!|fW|0W#a{s6u)c?_t?iVb z3XiN~|Iz*qq`~vIkap)zp|3Zzn)G(ct^h`uDP#ZX(6cIE}j_D=Q0%i;H{Ahhh|E0BR#HC6)O6IZxNo_Mm7z0L-`kpN-7So~U=y4k$iB zWFWAIX&07}fgvp?#{>qGij9p0dYz~!?TLvAzv+f}5(#>6cnI_J1G=NQSSGf>o#CsB zK_pWZ`0OK~)X>JQ5si(s?Ck3S0h^DI_L8!)rJbDx6V>+C4h|mxhE==V16-e;ots

{r+fQEi7)*1pK2WmCBP0`l_HtPw6{s|Xiv$U}>xPJZ2=VpWml5l?Y zc~*MbU%l`D$%_5DP_|Aq&4DDkuR|u2*A=;AeMwI9fRp~FjU3;x&CUEP+n d84~eZI=u1ILW#3cQ$WKHGBGqasMT|O@Nf7jEHeNA literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc-members.html new file mode 100644 index 000000000..d6f9bac48 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc-members.html @@ -0,0 +1,120 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +

+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRCoronaAc Member List
+
+
+ +

This is the complete list of members for IRCoronaAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_getTimer(const uint8_t section)IRCoronaAcprivate
_irsendIRCoronaAcprivate
_setPower(const bool on)IRCoronaAcprivate
_setTimer(const uint8_t section, const uint16_t nr_of_mins)IRCoronaAcprivate
begin()IRCoronaAc
calibrate(void)IRCoronaAcinline
checksum(uint8_t *data)IRCoronaAcprivatestatic
convertFan(const stdAc::fanspeed_t speed)IRCoronaAc
convertMode(const stdAc::opmode_t mode)IRCoronaAc
getEcono(void)IRCoronaAc
getFan()IRCoronaAc
getMode()IRCoronaAc
getOffTimer(void)IRCoronaAc
getOnTimer(void)IRCoronaAc
getPower()IRCoronaAc
getPowerButton()IRCoronaAc
getRaw()IRCoronaAc
getSectionByte(const uint8_t section)IRCoronaAcprivatestatic
getSwingVToggle(void)IRCoronaAc
getTemp()IRCoronaAc
IRCoronaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRCoronaAcexplicit
off()IRCoronaAc
on()IRCoronaAc
remote_stateIRCoronaAcprivate
send(const uint16_t repeat=kNoRepeat)IRCoronaAc
setEcono(const bool on)IRCoronaAc
setFan(const uint8_t speed)IRCoronaAc
setMode(const uint8_t mode)IRCoronaAc
setOffTimer(const uint16_t nr_of_mins)IRCoronaAc
setOnTimer(const uint16_t nr_of_mins)IRCoronaAc
setPower(const bool on)IRCoronaAc
setPowerButton(const bool on)IRCoronaAcprivate
setRaw(const uint8_t new_code[], const uint16_t length=kCoronaAcStateLength)IRCoronaAc
setSwingVToggle(const bool on)IRCoronaAc
setTemp(const uint8_t temp)IRCoronaAc
stateReset()IRCoronaAc
toCommon()IRCoronaAc
toCommonFanSpeed(const uint8_t speed)IRCoronaAcstatic
toCommonMode(const uint8_t mode)IRCoronaAcstatic
toString()IRCoronaAc
validSection(const uint8_t state[], const uint16_t pos, const uint8_t section)IRCoronaAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc.html new file mode 100644 index 000000000..7a9e4513c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc.html @@ -0,0 +1,1360 @@ + + + + + + + +IRremoteESP8266: IRCoronaAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Corona A/C messages. + More...

+ +

#include <ir_Corona.h>

+
+Collaboration diagram for IRCoronaAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRCoronaAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor for handling detailed Corona A/C messages. More...
 
void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kNoRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPower (const bool on)
 Change the power setting. (in practice Standby, remote power) More...
 
bool getPower ()
 Get the current power setting. (in practice Standby, remote power) More...
 
bool getPowerButton ()
 Get the value of the current power button setting. More...
 
void on ()
 Change the power setting to On. More...
 
void off ()
 Change the power setting to Off. More...
 
void setTemp (const uint8_t temp)
 Set the temp in deg C. More...
 
uint8_t getTemp ()
 Get the current temperature from the internal state. More...
 
void setSwingVToggle (const bool on)
 Set the Vertical Swing toggle setting. More...
 
bool getSwingVToggle (void)
 Get the Vertical Swing toggle setting. More...
 
void setFan (const uint8_t speed)
 Set the operating speed of the A/C Fan. More...
 
uint8_t getFan ()
 Get the operating speed of the A/C Fan. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode ()
 Get the operating mode setting of the A/C. More...
 
void setEcono (const bool on)
 Change the powersave setting. More...
 
bool getEcono (void)
 Get the value of the current powersave setting. More...
 
void setOnTimer (const uint16_t nr_of_mins)
 Set the On Timer time. More...
 
uint16_t getOnTimer (void)
 Get the current On Timer time. More...
 
void setOffTimer (const uint16_t nr_of_mins)
 Set the Off Timer time. More...
 
uint16_t getOffTimer (void)
 Get the current Off Timer time. More...
 
uint8_t * getRaw ()
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kCoronaAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a standard A/C Fan speed into its native fan speed. More...
 
stdAc::state_t toCommon ()
 Convert the A/C state to it's common stdAc::state_t equivalent. More...
 
String toString ()
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validSection (const uint8_t state[], const uint16_t pos, const uint8_t section)
 Check that a CoronaAc Section part is valid with section byte and inverted. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's common stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed to it's common equivalent. More...
 
+ + + + + + + + + + + + + +

+Private Member Functions

void setPowerButton (const bool on)
 Change the power button setting. More...
 
void _setPower (const bool on)
 Change the power setting. (in practice Standby, remote power) More...
 
void _setTimer (const uint8_t section, const uint16_t nr_of_mins)
 Set the Timer time. More...
 
uint16_t _getTimer (const uint8_t section)
 Get the current Timer time. More...
 
+ + + + + + + +

+Static Private Member Functions

static uint8_t getSectionByte (const uint8_t section)
 Get the byte that identifies the section. More...
 
static void checksum (uint8_t *data)
 Calculate and set the check values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kCoronaAcStateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Corona A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRCoronaAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRCoronaAc::IRCoronaAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor for handling detailed Corona A/C messages.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _getTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRCoronaAc::_getTimer (const uint8_t section)
+
+private
+
+ +

Get the current Timer time.

+
Returns
The number of minutes it is set for. 0 means it's off.
+
Note
The A/C protocol supports 2 second increments
+ +
+
+ +

◆ _setPower()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoronaAc::_setPower (const bool on)
+
+private
+
+ +

Change the power setting. (in practice Standby, remote power)

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ _setTimer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRCoronaAc::_setTimer (const uint8_t section,
const uint16_t nr_of_mins 
)
+
+private
+
+ +

Set the Timer time.

+
Parameters
+ + + +
[in]sectionindex of section, used for offset.
[in]nr_of_minsNumber of minutes to set the timer to. (non in range value is disable). Valid is from 1 minute to 12 hours
+
+
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRCoronaAc::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRCoronaAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoronaAc::checksum (uint8_t * data)
+
+staticprivate
+
+ +

Calculate and set the check values for the internal state.

+
Parameters
+ + +
[in,out]dataThe array to be modified
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRCoronaAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a standard A/C Fan speed into its native fan speed.

+
Parameters
+ + +
[in]speedThe desired stdAc::fanspeed_t fan speed
+
+
+
Returns
The given fan speed in native format
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRCoronaAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a standard A/C mode into its native mode.

+
Parameters
+ + +
[in]modeA stdAc::opmode_t mode to be converted to it's native equivalent
+
+
+
Returns
The corresponding native mode.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + + +
bool IRCoronaAc::getEcono (void )
+
+ +

Get the value of the current powersave setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + +
uint8_t IRCoronaAc::getFan ()
+
+ +

Get the operating speed of the A/C Fan.

+
Returns
The current operating fan speed setting
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + +
uint8_t IRCoronaAc::getMode ()
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRCoronaAc::getOffTimer (void )
+
+ +

Get the current Off Timer time.

+
Returns
The number of minutes it is set for. 0 means it's off.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRCoronaAc::getOnTimer (void )
+
+ +

Get the current On Timer time.

+
Returns
The number of minutes it is set for. 0 means it's off.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + +
bool IRCoronaAc::getPower ()
+
+ +

Get the current power setting. (in practice Standby, remote power)

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerButton()

+ +
+
+ + + + + + + +
bool IRCoronaAc::getPowerButton ()
+
+ +

Get the value of the current power button setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint8_t * IRCoronaAc::getRaw ()
+
+ +

Get a copy of the internal state as a valid code for this protocol.

+
Returns
A Ptr to a valid code for this protocol based on the current internal state.
+
Note
To get stable AC state, if no timers, send once without PowerButton set, and once with
+ +
+
+ +

◆ getSectionByte()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRCoronaAc::getSectionByte (const uint8_t section)
+
+staticprivate
+
+ +

Get the byte that identifies the section.

+
Parameters
+ + +
[in]sectionIndex of the section 0-2, 3 and above is used as the special case for short message
+
+
+
Returns
The byte used for the section
+ +
+
+ +

◆ getSwingVToggle()

+ +
+
+ + + + + + + + +
bool IRCoronaAc::getSwingVToggle (void )
+
+ +

Get the Vertical Swing toggle setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRCoronaAc::getTemp ()
+
+ +

Get the current temperature from the internal state.

+
Returns
The current temperature in Celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + +
void IRCoronaAc::off ()
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + +
void IRCoronaAc::on ()
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRCoronaAc::send (const uint16_t repeat = kNoRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setEcono (const bool on)
+
+ +

Change the powersave setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setFan (const uint8_t speed)
+
+ +

Set the operating speed of the A/C Fan.

+
Parameters
+ + +
[in]speedThe desired fan speed
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setOffTimer (const uint16_t nr_of_mins)
+
+ +

Set the Off Timer time.

+
Parameters
+ + +
[in]nr_of_minsNumber of minutes to set the timer to. (0 or kCoronaAcTimerOff is disable).
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setOnTimer (const uint16_t nr_of_mins)
+
+ +

Set the On Timer time.

+
Parameters
+ + +
[in]nr_of_minsNumber of minutes to set the timer to. (0 or kCoronaAcTimerOff is disable).
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setPower (const bool on)
+
+ +

Change the power setting. (in practice Standby, remote power)

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
If changed, setPowerButton is also needed, unless timer is or was active
+ +
+
+ +

◆ setPowerButton()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRCoronaAc::setPowerButton (const bool on)
+
+private
+
+ +

Change the power button setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
this sets that the AC should set power, use setPower to define if the AC should end up as on or off When no timer is active, the below is a truth table With AC On, a command with setPower and setPowerButton gives nothing With AC On, a command with setPower but not setPowerButton is ok With AC Off, a command with setPower but not setPowerButton gives nothing With AC Off, a command with setPower and setPowerButton is ok
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRCoronaAc::setRaw (const uint8_t new_code[],
const uint16_t length = kCoronaAcStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid state for this protocol.
[in]lengthof the new_code array.
+
+
+ +
+
+ +

◆ setSwingVToggle()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setSwingVToggle (const bool on)
+
+ +

Set the Vertical Swing toggle setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
This is a button press, and not a state after sending it once you should turn it off
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRCoronaAc::setTemp (const uint8_t temp)
+
+ +

Set the temp in deg C.

+
Parameters
+ + +
[in]tempThe desired temperature in Celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + +
void IRCoronaAc::stateReset ()
+
+ +

Reset the internal state to a fixed known good state.

+
Note
The state is powered off.
+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + +
stdAc::state_t IRCoronaAc::toCommon ()
+
+ +

Convert the A/C state to it's common stdAc::state_t equivalent.

+
Returns
A stdAc::state_t state.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRCoronaAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed to it's common equivalent.

+
Parameters
+ + +
[in]speedThe desired native fan speed
+
+
+
Returns
The given fan speed in stdAc::fanspeed_t format
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRCoronaAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode to it's common stdAc::opmode_t equivalent.

+
Parameters
+ + +
[in]modeA native operation mode to be converted.
+
+
+
Returns
The corresponding common stdAc::opmode_t mode.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRCoronaAc::toString ()
+
+ +

Convert the internal state into a human readable string.

+
Returns
The current internal state expressed as a human readable String.
+ +
+
+ +

◆ validSection()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool IRCoronaAc::validSection (const uint8_t state[],
const uint16_t pos,
const uint8_t section 
)
+
+static
+
+ +

Check that a CoronaAc Section part is valid with section byte and inverted.

+
Parameters
+ + + + +
[in]stateAn array of bytes containing the section
[in]posWhere to start in the state array
[in]sectionWhich section to work with Used to get the section byte, and is validated against pos
+
+
+
Returns
true if section is valid, otherwise false
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRCoronaAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRCoronaAc::remote_state[kCoronaAcStateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.map new file mode 100644 index 000000000..7b9921ac4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 new file mode 100644 index 000000000..fe237b80f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 @@ -0,0 +1 @@ +2a8dc27b8683799250ee74acb6173d8f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRCoronaAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c35c4704f46851e6dd4b588cd30cd3d0cee59d GIT binary patch literal 3290 zcmZ8kcQ{?A54`DwnI`9!wPbzla4I(oKwN^BdQL|2@uq_b!h z7U@Il12mR<%)9@%^BQ+Wm)-Q8Vv2u+q*XcBh9LXrO52ult9s~Yo3TOqB_^issi|N{ z5(13DU@Y(7cN!UJ<#GaW@}fEBtAfE-Y-|c>Hs%pQw`M)qd0y%V%QaDK#^qZ)Bu>Ni#4|q3nK@ zh`4ydLyr9{EG(V~C)kCZBGk^_G4L0Tc=!YaxC|A+!K!#mla0;I zTeojB+1c4mlSl~(34fQAz)cDiy!fO$sCQXeSsR<0=C`*8Q`OJJN(24;SlHO22n60h zl0RomOw1y-MxisBW6%wno{SV2KJMqkBVrR4JA;ik0*YeD>jy1 zLQ>KlgSmC{W_V+xB7`F;Z?&wd-Env2vtK|!`qQUfY^E@Q)M#N5k-PrumOQ+?;t~>$ zC;OX=_|IeA$c{ZMQ3zs`CB^RU?ykL06V$StX|3bqQyQQvPz{D%h0tWYIn5y+s7C+Fqd3exv_VpQU z{Zv#`^gg2oGdHm-{Q?RK zS!|*v)tD*yBb=uvM4kGBPEJlvM@NT+gClmxt!r$IGg(&~fKw}8z}nN39KX7|zyG4D zin$FX%|E>6XVp|+W3QFOFt@d30wj83VuE_KT0oxdDB!evoYvE$D}`!}pYVLq(ZQe8 z9hsWS+?RP-6%|42b`L6w2+iwXY#wzWN^KLy%zRxwwqMlLPB^t91_D${PS;r z2`bN0JB3dvxxmS~t!yU)g0`C;VBy?P11T-)ixH&wF*8T5<8P-icNo``25q{vj>cnf zt5f&5)=!$&y`wA#C>1d$Te1YkbN4Ryo&sOwZgDd_JUeYo`z~&7jV!o8KgN26hVM zAGJT=Z6P2)hqIhgA$330&xa<***1y}J+OCw!{A?H>yff!AAq9p+yzHoCqbnxJOSb} ze`;39v;QSAbHN!(vtda&6NEyaPEXrdxA@qKh1%oGUshJuzhxXtK3)QVZS6R8eXHa( z1Cz&0b}e)#`S|-UPkD6^aWos{Jm~kj;0e4TFxHzrwY0Rl0D4zsH9lr}sptV0p^qfp<}G;8-mcXz_emtubpuXQzHSG#rx)ukgNBcmrg zGy8Ta6xO(F|G6F#5+W!mX@tY!E+usfMzc5qTqh_XpqZx@@(?O7pEx%+$Lf?nQG#>k z^)K=)-fH%&6hT>8Wwxrb(v7|vS&{oep`?YGc7^+Uc5N!T{IB%r_Uc?kx@OT0uhR-YyPRs9 z$oXb6qi`gDClrgVn`Wf0X6EI2s_1!LZz-1-Wehl4GUoWV4Sv&>@e-UKRz)#)$^orV zo?<&7k%wutM|1XEY7N_6Venq!URB&J2ot&I} z`TBKjjI>j14fSi}ly1ZMPdFNq@($b=3XJ;qRv=QR?@bL;WIPH}Cv}S+&@eg)THLjsSK}kvJ*J2h5pU~dk z?sF7%NYK2b>FzE*G&Dq>sQcg&iVW#~laayZ4{JU~cd2?L99o#csD9 zq`1|2&ue+0(XYzNoL2gCo|lxcg27icbam-RMn?40yDA!H4E_9|fP5Z4$%X(t-`Lz- z8+wZ83nt6t=H`C!IKPInhw@C+V|Wn=#LxZxS{%g@Q0#1F|L?Pl(-14K-FqTzvtj3| z>B4{xGi#vHl0+g=$V#EA{aB){t!-&#WoNCl;Ooc;JRo5I2`u;PpYn6qbQh4n8oxD*+PXS!8>XEVf|rH4x#oih+*KWC%7DTax3)fx4>31q1-wk> z&`??&e`xl?!h*mWATLlTv^r?lWoLJna&WLZUgMju)N^17+&y_Pu!T5gvB5*af#SJs1| z#}^bG9uCUO%R{z5R#H_})&5EY_p6F?0-nQ;BRX-JG z=o{MDvqT^$?-`}%Ha3!yk{D%VWFW}uIg#z}&yW?9_w@B|%E>(g&Qk9=@jlBgv=@MJ z$PL=q(n9xzL{b%=8D0LqhX;efKYmhGUPonRae{1ZZGE#}_HF8+WpSYzTU<;t)K8xb z1IXj=dNV|uyyw3%NFGdMQ}a5WKfln18l+=}-RYW5OuQl}B(z2*>l6=ppKLay9-~NN zR#oyO5^18^fe!E>Pct)VvuJCB@c7!W^D~D{7z}oY@EO?r2pJr#0s{O%TB_{~NAjqP z;y}Ktk&BCnfq}sd4h{XFmdbW`iWOfc6~`k#1J{?J1K;Q5E%wS|??CzEsUl7Khh5I;Q?r|wUAktg38nN+=c zMbkMp78q}9Z+}ync#UWh7Z=CC$N`xH3cRSKB&NMxEioyn;%gLNL)Op3LmW`FKqX$3 z+M@+(H{{{Nhq(O-*9QQ^IXO9ib@;gXk7QNr`#0{xxb;`1$T}CMI@duynZn8B@v94K zYrVO0=#TyV!ph3IK<8uwjH?s^6jgL|w2i~+_wV{}qVHp{7;`Le?z@6Np{`$3r*h z5uSbQLXiFHX%dRdy{YBcxH-~%>VLh8P&K;CMuIKakOAC8r&7y4 G^1lH5h+|*? literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128-members.html new file mode 100644 index 000000000..a77e405ef --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128-members.html @@ -0,0 +1,132 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikin128 Member List
+
+
+ +

This is the complete list of members for IRDaikin128, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikin128private
begin()IRDaikin128
calcFirstChecksum(const uint8_t state[])IRDaikin128privatestatic
calcSecondChecksum(const uint8_t state[])IRDaikin128privatestatic
calibrate(void)IRDaikin128inline
checksum(void)IRDaikin128private
clearOnTimerFlag(void)IRDaikin128private
clearSleepTimerFlag(void)IRDaikin128private
convertFan(const stdAc::fanspeed_t speed)IRDaikin128static
convertMode(const stdAc::opmode_t mode)IRDaikin128static
getClock(void)IRDaikin128
getEcono(void)IRDaikin128
getFan(void)IRDaikin128
getLightToggle(void)IRDaikin128
getMode(void)IRDaikin128
getOffTimer(void)IRDaikin128
getOffTimerEnabled(void)IRDaikin128
getOnTimer(void)IRDaikin128
getOnTimerEnabled(void)IRDaikin128
getPowerful(void)IRDaikin128
getPowerToggle(void)IRDaikin128
getQuiet(void)IRDaikin128
getRaw(void)IRDaikin128
getSleep(void)IRDaikin128
getSwingVertical()IRDaikin128
getTemp(void)IRDaikin128
getTimer(const uint8_t *ptr)IRDaikin128privatestatic
IRDaikin128(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin128explicit
remote_stateIRDaikin128private
send(const uint16_t repeat=kDaikin128DefaultRepeat)IRDaikin128
setClock(const uint16_t mins_since_midnight)IRDaikin128
setEcono(const bool on)IRDaikin128
setFan(const uint8_t fan)IRDaikin128
setLightToggle(const uint8_t unit_type)IRDaikin128
setMode(const uint8_t mode)IRDaikin128
setOffTimer(const uint16_t mins_since_midnight)IRDaikin128
setOffTimerEnabled(const bool on)IRDaikin128
setOnTimer(const uint16_t mins_since_midnight)IRDaikin128
setOnTimerEnabled(const bool on)IRDaikin128
setPowerful(const bool on)IRDaikin128
setPowerToggle(const bool toggle)IRDaikin128
setQuiet(const bool on)IRDaikin128
setRaw(const uint8_t new_code[])IRDaikin128
setSleep(const bool on)IRDaikin128
setSwingVertical(const bool on)IRDaikin128
setTemp(const uint8_t temp)IRDaikin128
setTimer(uint8_t *ptr, const uint16_t mins_since_midnight)IRDaikin128privatestatic
stateReset(void)IRDaikin128private
toCommon(const stdAc::state_t *prev=NULL)IRDaikin128
toCommonFanSpeed(const uint8_t speed)IRDaikin128static
toCommonMode(const uint8_t mode)IRDaikin128static
toString(void)IRDaikin128
validChecksum(uint8_t state[])IRDaikin128static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128.html new file mode 100644 index 000000000..e2522aa48 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128.html @@ -0,0 +1,1669 @@ + + + + + + + +IRremoteESP8266: IRDaikin128 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Vena. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikin128:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikin128 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin128DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPowerToggle (const bool toggle)
 Set the Power toggle setting of the A/C. More...
 
bool getPowerToggle (void)
 Get the Power toggle setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical ()
 Get the Vertical Swing mode of the A/C. More...
 
bool getSleep (void)
 Get the Sleep mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful (void)
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono (void)
 Get the Economical mode of the A/C. More...
 
void setOnTimer (const uint16_t mins_since_midnight)
 Set the On Timer time for the A/C unit. More...
 
uint16_t getOnTimer (void)
 Get the On Timer time to be sent to the A/C unit. More...
 
bool getOnTimerEnabled (void)
 Get the enable status of the On Timer. More...
 
void setOnTimerEnabled (const bool on)
 Set the enable status of the On Timer. More...
 
void setOffTimer (const uint16_t mins_since_midnight)
 Set the Off Timer time for the A/C unit. More...
 
uint16_t getOffTimer (void)
 Get the Off Timer time to be sent to the A/C unit. More...
 
bool getOffTimerEnabled (void)
 Get the enable status of the Off Timer. More...
 
void setOffTimerEnabled (const bool on)
 Set the enable status of the Off Timer. More...
 
void setClock (const uint16_t mins_since_midnight)
 Set the clock on the A/C unit. More...
 
uint16_t getClock (void)
 Get the clock time to be sent to the A/C unit. More...
 
void setLightToggle (const uint8_t unit_type)
 Set the Light toggle setting of the A/C. More...
 
uint8_t getLightToggle (void)
 Get the Light toggle setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[])
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + + + + + +

+Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
void clearOnTimerFlag (void)
 
void clearSleepTimerFlag (void)
 
+ + + + + + + + + + + +

+Static Private Member Functions

static uint8_t calcFirstChecksum (const uint8_t state[])
 
static uint8_t calcSecondChecksum (const uint8_t state[])
 
static void setTimer (uint8_t *ptr, const uint16_t mins_since_midnight)
 Set the time for a timer at the given location. More...
 
static uint16_t getTimer (const uint8_t *ptr)
 Get the time for a timer at the given location. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote_state [kDaikin128StateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Vena.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikin128()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikin128::IRDaikin128 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDaikin128::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcFirstChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin128::calcFirstChecksum (const uint8_t state[])
+
+staticprivate
+
+ +
+
+ +

◆ calcSecondChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin128::calcSecondChecksum (const uint8_t state[])
+
+staticprivate
+
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikin128::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRDaikin128::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ clearOnTimerFlag()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRDaikin128::clearOnTimerFlag (void )
+
+private
+
+ +
+
+ +

◆ clearSleepTimerFlag()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRDaikin128::clearSleepTimerFlag (void )
+
+private
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin128::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin128::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getClock()

+ +
+
+ + + + + + + + +
uint16_t IRDaikin128::getClock (void )
+
+ +

Get the clock time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + + +
bool IRDaikin128::getEcono (void )
+
+ +

Get the Economical mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin128::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getLightToggle()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin128::getLightToggle (void )
+
+ +

Get the Light toggle setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin128::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRDaikin128::getOffTimer (void )
+
+ +

Get the Off Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOffTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRDaikin128::getOffTimerEnabled (void )
+
+ +

Get the enable status of the Off Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRDaikin128::getOnTimer (void )
+
+ +

Get the On Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOnTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRDaikin128::getOnTimerEnabled (void )
+
+ +

Get the enable status of the On Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerful()

+ +
+
+ + + + + + + + +
bool IRDaikin128::getPowerful (void )
+
+ +

Get the Powerful (Turbo) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerToggle()

+ +
+
+ + + + + + + + +
bool IRDaikin128::getPowerToggle (void )
+
+ +

Get the Power toggle setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRDaikin128::getQuiet (void )
+
+ +

Get the Quiet mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRDaikin128::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRDaikin128::getSleep (void )
+
+ +

Get the Sleep mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + +
bool IRDaikin128::getSwingVertical ()
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin128::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRDaikin128::getTimer (const uint8_t * ptr)
+
+staticprivate
+
+ +

Get the time for a timer at the given location.

+
Parameters
+ + +
[in]ptrA Ptr to the byte containing the Timer value.
+
+
+
Returns
The number of minutes since midnight that the timer is set to.
+
Note
Timer is stored in nr. of half hours internally.
+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikin128::send (const uint16_t repeat = kDaikin128DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClock()

+ +
+
+ + + + + + + + +
void IRDaikin128::setClock (const uint16_t mins_since_midnight)
+
+ +

Set the clock on the A/C unit.

+
Parameters
+ + +
[in]mins_since_midnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRDaikin128::setEcono (const bool on)
+
+ +

Set the Economy mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikin128::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setLightToggle()

+ +
+
+ + + + + + + + +
void IRDaikin128::setLightToggle (const uint8_t unit)
+
+ +

Set the Light toggle setting of the A/C.

+
Parameters
+ + +
[in]unitDevice to show the LED (Light) Display info about.
+
+
+
Note
0 is off.
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikin128::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRDaikin128::setOffTimer (const uint16_t mins_since_midnight)
+
+ +

Set the Off Timer time for the A/C unit.

+
Parameters
+ + +
[in]mins_since_midnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setOffTimerEnabled()

+ +
+
+ + + + + + + + +
void IRDaikin128::setOffTimerEnabled (const bool on)
+
+ +

Set the enable status of the Off Timer.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRDaikin128::setOnTimer (const uint16_t mins_since_midnight)
+
+ +

Set the On Timer time for the A/C unit.

+
Parameters
+ + +
[in]mins_since_midnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setOnTimerEnabled()

+ +
+
+ + + + + + + + +
void IRDaikin128::setOnTimerEnabled (const bool on)
+
+ +

Set the enable status of the On Timer.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerful()

+ +
+
+ + + + + + + + +
void IRDaikin128::setPowerful (const bool on)
+
+ +

Set the Powerful (Turbo) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerToggle()

+ +
+
+ + + + + + + + +
void IRDaikin128::setPowerToggle (const bool toggle)
+
+ +

Set the Power toggle setting of the A/C.

+
Parameters
+ + +
[in]toggletrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRDaikin128::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDaikin128::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRDaikin128::setSleep (const bool on)
+
+ +

Set the Sleep mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRDaikin128::setSwingVertical (const bool on)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikin128::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRDaikin128::setTimer (uint8_t * ptr,
const uint16_t mins_since_midnight 
)
+
+staticprivate
+
+ +

Set the time for a timer at the given location.

+
Parameters
+ + + +
[in,out]ptrPtr to the byte containing the Timer value to be updated.
[in]mins_since_midnightThe number of minutes the new timer should be set to.
+
+
+
Note
Timer is rounds down to the nearest half hour.
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRDaikin128::stateReset (void )
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikin128::toCommon (const stdAc::state_tprev = NULL)
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Parameters
+ + +
[in]prevPtr to a previous state.
+
+
+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRDaikin128::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRDaikin128::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRDaikin128::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRDaikin128::validChecksum (uint8_t state[])
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]stateThe array to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikin128::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikin128::remote_state[kDaikin128StateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.map new file mode 100644 index 000000000..409771223 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.md5 new file mode 100644 index 000000000..2f277b744 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.md5 @@ -0,0 +1 @@ +de983d342633022717e3dd59d86c22b1 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin128__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb1a1b31d451748e867ddc96af558811b0b77a1 GIT binary patch literal 3291 zcmZWs2UHVVw+0D_2=fdBZv``UVI*34Nm=bSln_TFC^f|0>34pt#n5D3JftD|KCw0^*e z12Y5H&w-M8K*Q{)cS{TO`_GZrQIZS-u_x+kX_$p%ZDiw&&P|APtGzdD6||SQt|{^O zZDF!vZ;GkzqZilxWwl(=nEfB16YR}MhGVW*p8G#`@Ext~YXEPclhW^-N4{)j*HM1pg;S0N=h`>@3cRSD~COie& z2|c~NQ86)KDchF3V#5psL7oy4RZ}B9J3A{V?+rcrwPiU5x9il`(mL(!?LCY8eN6jY zTY$R~cAlM;;98%KUH_CX!TS33YfzR#z|+M=XVv3fQ+IdwkgbkipPRfgU)=^it-rq? zsu&m(CjjT+7PBZfAN=tamiv9PZOeb@-MRVs`Iv+R^DqliK>6(Z!t&blhOGOz1dT>}SyiPC{`l1iA=EaPTU`yG ztilx3)tO){t*y&+=MEoh{Kef3^ zYf*kqO-(H)bQ!Wdm`P5Tb(78o$ZDZ3mXQ{3ZdZxSsCJ+c_=H|xM*6((f z-XGKcBQa=e5mnQEcGBh-#GEIEzJij(ke){xjE^clOTidKu^P{kP*g6!BPds`A?iu(X z=HFG%lc$#g`Ug?&gik?_8Zjroo*>REv->W-;g*csN^PoV=3{~mqMs6q)eFi3+<($1Ro?fhO%k?<=HjxH<~}13It(5CM4Rsts-gc?)5IbbF=M~( zi$GZu`or9fXnZxM5)>P!KTptv$^`y*&kzoc;AoUlPz&MHK#&c-2x5X(wlu=;|27ih zV_0EZ^fD<*vC6WWahQtDL)uX;nJW^O*KS-ndC1{#{2tYOu8MwiW%A05r$E|M9oROl zQ!!=8-KE-h(;m}B9uw7p)grr!7mWASqEWuC!Co*M_K3oy&sG%lV7jZ~Mkkk1z_fmE z|K=Gq$Bn`ytGZ@>rK760BbqSZ&?a%~UW%S$#D-+9wbe9Je_J4dF*Rds5RrnVn%%hT zUbGw-pr$pByLTv2rgs0;_`5XNQ>>L`a1~Re!^utWck2p6MO4Qzq5HXxpzt5VYSg!B zO#{?{=l9|egWs~_|6c~yY~rVr)O^;qI8#<~YGeyjLrU`GOMo0fzwA0Ys$=Fk0B(Cy zQE|-%|M6*}>REzDU5XnF@}1Hi2%+mj309RBP2O{89UU+cZf5~wuBfQ!8yl;i zJUUqKi=0I50iik8p@}p40U>gPLt=Ot(Q^z{XH!NY2pvhkol`!S;NLBX!?|kJcjYMi z>GD1~8>fylb>^}tmvtVBQ7-=@C$Iin4S>L3SeJp-NzEv-4?aJvk5 z>iqf@FFG(e`D;1)yqy&yUH??#{K9fbvu{BA%(CC^1ld^zdzf^eXt>A5#@2=&t!2p1 z&&L$&J~U`I{YSY9laaWSa84-FeqH+Tg$CU3YtNI#l@*Uvob(86!GI`*iOtOw1sG;+ zr`CxK@(l_aAd~TFX@WT+^90Tr+hKskqf1I)3*={Rd$g(e^YT^Xqq|)Z533zFyiPuR z&=1<2Wr@tr7N&;(xQ*W>kuLcA`y;Vyd{R@nZb@j^eFY3zv_CiBr zBe$U7o1Q0ZVdmt`5t>eXY%Hm!CK296PlCw0CT3)m4gK(U%AwQ4KULg`0@h|>VF^Fl z=x$XoM5F(V93LMy7^|Qx!7)C#N z!p+NjGbpGjgSpvT#Ky+vPOT%;`&7w-qN1WPIv^)21YEFB*a_n4F#cqTgh{cEpJIeln^hKUze3VJDfS`mp%OiCIJ?V@tT3tm4JIWRE5xxPW8 z2`U9$t9Koo2PWue-l%*p16Yu5K&$}N_4V}ywgE28jhBz_boYmJ*{O#6ymE4K9Vhue zc6Rm;R&u9m9HL%rwyxwjExmj3AzMixGHkOIFX!=T7NIvm)sQ6s3NLo)l8K$2A)r}+ zNM1jyy8j>zj#3ZF${Pu8l@w%uTQJV zbIRYw6pwwnJXngypV3Rb_I0#Kk2Y0bGDAPZ3AOKw;od(yG_kZKmzkHx#Kk$0{}$%s z<4a6TjO=%8b%AVeZ^uJq|Cp$ZjEuvwE10C@o}LCEVV1kmWw*(T=M+W<1|p`WrW%@?sVNi+#o*2zh-mnC2EfRfn|A;gSVmsqTz}XC Q{H=g=Q3hI7n)Z+X1z)*qQ2+n{ literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152-members.html new file mode 100644 index 000000000..7b47665d8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152-members.html @@ -0,0 +1,116 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikin152 Member List
+
+
+ +

This is the complete list of members for IRDaikin152, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikin152private
begin()IRDaikin152
calibrate(void)IRDaikin152inline
checksum()IRDaikin152private
convertFan(const stdAc::fanspeed_t speed)IRDaikin152static
convertMode(const stdAc::opmode_t mode)IRDaikin152static
getComfort(void)IRDaikin152
getEcono(void)IRDaikin152
getFan(void)IRDaikin152
getMode(void)IRDaikin152
getPower(void)IRDaikin152
getPowerful(void)IRDaikin152
getQuiet(void)IRDaikin152
getRaw()IRDaikin152
getSensor(void)IRDaikin152
getSwingV(void)IRDaikin152
getTemp()IRDaikin152
IRDaikin152(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin152explicit
off(void)IRDaikin152
on(void)IRDaikin152
remote_stateIRDaikin152private
send(const uint16_t repeat=kDaikin152DefaultRepeat)IRDaikin152
setComfort(const bool on)IRDaikin152
setEcono(const bool on)IRDaikin152
setFan(const uint8_t fan)IRDaikin152
setMode(const uint8_t mode)IRDaikin152
setPower(const bool on)IRDaikin152
setPowerful(const bool on)IRDaikin152
setQuiet(const bool on)IRDaikin152
setRaw(const uint8_t new_code[])IRDaikin152
setSensor(const bool on)IRDaikin152
setSwingV(const bool on)IRDaikin152
setTemp(const uint8_t temp)IRDaikin152
stateReset()IRDaikin152private
toCommon(void)IRDaikin152
toString(void)IRDaikin152
validChecksum(uint8_t state[], const uint16_t length=kDaikin152StateLength)IRDaikin152static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152.html new file mode 100644 index 000000000..a9d798e0b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152.html @@ -0,0 +1,1172 @@ + + + + + + + +IRremoteESP8266: IRDaikin152 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 152-bit A/C messages. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikin152:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikin152 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin152DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw ()
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingV (void)
 Get the Vertical Swing mode of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful (void)
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setSensor (const bool on)
 Set the Sensor mode of the A/C. More...
 
bool getSensor (void)
 Get the Sensor mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono (void)
 Get the Economical mode of the A/C. More...
 
void setComfort (const bool on)
 Set the Comfort mode of the A/C. More...
 
bool getComfort (void)
 Get the Comfort mode of the A/C. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin152StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void checksum ()
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote_state [kDaikin152StateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Daikin 152-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikin152()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikin152::IRDaikin152 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDaikin152::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikin152::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin152::checksum ()
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin152::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin152::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getComfort()

+ +
+
+ + + + + + + + +
bool IRDaikin152::getComfort (void )
+
+ +

Get the Comfort mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + + +
bool IRDaikin152::getEcono (void )
+
+ +

Get the Economical mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin152::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin152::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRDaikin152::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerful()

+ +
+
+ + + + + + + + +
bool IRDaikin152::getPowerful (void )
+
+ +

Get the Powerful (Turbo) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRDaikin152::getQuiet (void )
+
+ +

Get the Quiet mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint8_t * IRDaikin152::getRaw ()
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSensor()

+ +
+
+ + + + + + + + +
bool IRDaikin152::getSensor (void )
+
+ +

Get the Sensor mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
bool IRDaikin152::getSwingV (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDaikin152::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRDaikin152::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRDaikin152::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikin152::send (const uint16_t repeat = kDaikin152DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setComfort()

+ +
+
+ + + + + + + + +
void IRDaikin152::setComfort (const bool on)
+
+ +

Set the Comfort mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRDaikin152::setEcono (const bool on)
+
+ +

Set the Economy mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikin152::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikin152::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRDaikin152::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerful()

+ +
+
+ + + + + + + + +
void IRDaikin152::setPowerful (const bool on)
+
+ +

Set the Powerful (Turbo) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRDaikin152::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDaikin152::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSensor()

+ +
+
+ + + + + + + + +
void IRDaikin152::setSensor (const bool on)
+
+ +

Set the Sensor mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRDaikin152::setSwingV (const bool on)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikin152::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin152::stateReset ()
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikin152::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRDaikin152::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRDaikin152::validChecksum (uint8_t state[],
const uint16_t length = kDaikin152StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikin152::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikin152::remote_state[kDaikin152StateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.map new file mode 100644 index 000000000..e246fb533 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.md5 new file mode 100644 index 000000000..193be7839 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.md5 @@ -0,0 +1 @@ +3bbfb60d234bb57df5106a32f8aecca3 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin152__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4e791ca999ab9af56e4d802b6433bf9edebeb9 GIT binary patch literal 3202 zcmY+H2{=@38^>qJ8e*~=q==L?46*~QG*5OnnCENCF5gFqZGxS^g6hOm|!W@S4x6_L+*nw`0WwH>aX zYC|MYgwE!gb4*#vx=si4^0OMxrX z@rj8q>gw=}EL=Y8Uo{vQ8RK!dR@aKlqUeWvE-9CPhS zFNnm)+96xtJEikE?&q?^Gz9Yq-bv|AlQJ_jH8oA~zl>^67Cqm%vmm0~P+E$pA(IoQ zv3qM(?^b9urc`R(kS`7MhL$*9qb8|~b)m2sOmsM0$;_!H3aGY6|{PObr z{5%7Vz|V?*vg8#PkS3`YikQ4 z=!6MJbf!zw1dKm_{`|hW+IOKxs3BBbT>RkY?~OU|(#p#7!a{Ih;I`N@7!2MjT}QbZ zn$^cwSHpsWf+)koKW1aaS0<8-&H$e*r+c)25lEC{EG)Oxazk8?b7`AEa;o(t( zJkoa=GDXq*g{P*#Q{whho585kI@zjXq`;cyjI zRivF=$74>B$Ay{UNysxir!+K#D#m&`#KU`@UrAIHtV znR_m!sQBdVTgA}OP!j~=td5SDo!tm{t^1BLdUM4Vm_9Bp?v%Xz=RDiJkWt#5#9&^j zM^*xA3E=1diU`Q_0-!^IJeXu~sNSa^AA9g!@nfMu?COos4>!yF4F;WhR4Q6r1e2#f zmPW^l_UaN{LEmSyN1#x)08uSZSbQ>Z51+LEMfOodO~M#XNP(VhFpkgN8{vBs&gwbB zwAlE8y5zH(@E-DdyQ)CLeWnQ6P}bHzJIZ%X%6_~=1-kOlm5=px!J!jN=9ZUn>|I#V zQ%oIInR*mEP{5{cE#aLm`&a8q+OQZ+?bwji54BeVa1|J8aUfiir%Lyh-^2_xymVj; zGl`BI<5`v*UjKj_b|@jJBC=3oTbRd;%aYf!-v82KKRV&eN7yA+W_jbVMQNi`PKEO} z0u2Eu)_WT63thE`ET&0nMQPV7%J`%g8_9cwj(e2Mu0WM8sq&)DWJ|d>lTj;W8Ld2K z-JSBKlK0*7j0 zto#B46Vs(F*#!gyHd;>T#sMjeUiu=Dnwd#lOu^xJot>SZ15&?P`|wKr{*P{#^{=(f z9+fNeJ3Bk^`Pf~!UqC#sHmvjTx*0! z{5*|jxU*ZQ7e<1`3keDB?wSw;tyD>jAN%?&kF+4t%rUqyoYsg1EaISeV^~T@X9^v8Xi?;apz{~$Kt)vO=Hm)hSFgHM@4twY z5DKir9t7|2@0*yK4veHgH5ejZzdjGd*LA)tLu=<-x^|=Q#lF$<+Z#WAPys(YtEq_x zXv2k>o~U{tV)G`tH$OeSWqpzi_Idb_N~Sl`QV-Y3^mhQH#3mpoPsS%FGZz#WCqzXt zAPDMBfbRzFZ*;&-Og{GZKCnW6Wh0BmBauj(YuA1Z*`avE#1O8oM4i6wk|2N|n7y@X z;Jv4nlv3#*#5G`x00)65)3US2-16>rXCiOhc%=YiV)(YWSmDyf&VKxOXIIyA;B5o~ zK_aPtz4sNcmekbLd-&l+!iC%IxYIKL8XC)5R4}Cv20dC65#wMYn@-*YT zU0QyA8L25Z$2hUAxjjiFXg|&3aw| zf%N=*%YXniV0}jgUF#>vFcNcgq(5yKeYhV4%r)VC2#~hEp_OF zl9CdTVS|&CVGhB8fw0ZZ&Cu^nEI=I62m~C_{rUy|N8CVVGe@O1(?1*`00aE6=Nk~P zP&wk*GCiG7q1cR%kFO%-Kxz-h4gLL9`4eMSRy-d1`ewtt^RT=N^Ya^pI}d?$9;@~i2du3IJ#|4=wz;j1NkKsY*y$@?UZq&Diu-_MUie|qz~JEW z(vnjUj`)Ne~d!r>?Gn5pNxf(S{IMUS8g# z*w~*_A#|jJLt>MYQ&SYvZmZF)Teo<5c|qJFBCoS%snmhnRkI(uA4JCnu8m(YH^&9@ zsx||90jlG2m$rn70i&?$9DVpxhW|s<-<_q3js?UVlwlK=3OF!%}^xsQ&;RS}P9# literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160-members.html new file mode 100644 index 000000000..70a4643d6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160-members.html @@ -0,0 +1,108 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikin160 Member List
+
+
+ +

This is the complete list of members for IRDaikin160, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikin160private
begin()IRDaikin160
calibrate(void)IRDaikin160inline
checksum()IRDaikin160private
convertFan(const stdAc::fanspeed_t speed)IRDaikin160static
convertMode(const stdAc::opmode_t mode)IRDaikin160static
convertSwingV(const stdAc::swingv_t position)IRDaikin160static
getFan(void)IRDaikin160
getMode(void)IRDaikin160
getPower(void)IRDaikin160
getRaw()IRDaikin160
getSwingVertical(void)IRDaikin160
getTemp()IRDaikin160
IRDaikin160(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin160explicit
off(void)IRDaikin160
on(void)IRDaikin160
remote_stateIRDaikin160private
send(const uint16_t repeat=kDaikin160DefaultRepeat)IRDaikin160
setFan(const uint8_t fan)IRDaikin160
setMode(const uint8_t mode)IRDaikin160
setPower(const bool on)IRDaikin160
setRaw(const uint8_t new_code[])IRDaikin160
setSwingVertical(const uint8_t position)IRDaikin160
setTemp(const uint8_t temp)IRDaikin160
stateReset()IRDaikin160private
toCommon(void)IRDaikin160
toCommonSwingV(const uint8_t setting)IRDaikin160static
toString(void)IRDaikin160
validChecksum(uint8_t state[], const uint16_t length=kDaikin160StateLength)IRDaikin160static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160.html new file mode 100644 index 000000000..b69401604 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160.html @@ -0,0 +1,983 @@ + + + + + + + +IRremoteESP8266: IRDaikin160 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 160-bit A/C messages. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikin160:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikin160 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin160DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw ()
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setSwingVertical (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingVertical (void)
 Get the Vertical Swing mode of the A/C. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin160StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t setting)
 Convert a native vertical swing postion to it's common equivalent. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void checksum ()
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote_state [kDaikin160StateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Daikin 160-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikin160()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikin160::IRDaikin160 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDaikin160::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikin160::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin160::checksum ()
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin160::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin160::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin160::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin160::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin160::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRDaikin160::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint8_t * IRDaikin160::getRaw ()
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin160::getSwingVertical (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDaikin160::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRDaikin160::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRDaikin160::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikin160::send (const uint16_t repeat = kDaikin160DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikin160::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikin160::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRDaikin160::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDaikin160::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRDaikin160::setSwingVertical (const uint8_t position)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]positionThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikin160::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin160::stateReset ()
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikin160::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRDaikin160::toCommonSwingV (const uint8_t setting)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]settingA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRDaikin160::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRDaikin160::validChecksum (uint8_t state[],
const uint16_t length = kDaikin160StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikin160::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikin160::remote_state[kDaikin160StateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.map new file mode 100644 index 000000000..0a46ed86a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.md5 new file mode 100644 index 000000000..dadb00bba --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.md5 @@ -0,0 +1 @@ +fbc66f5a6991bf58f0872d9bbb55a5da \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin160__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4646db8e9ce3904ada8b7ffab6b72aa73ecf3fbc GIT binary patch literal 3302 zcmZWscQjnv8Xr-kMQ=kSdWn|kL3BnL3}Qq=^j;=g2T>wI2qGk-&Ts`$ z24gT0B@#rLYxMTcy>G4e{lV%MyVPOTcQH9N z=lW!_s>9lKY`aFs?tQ~>NxUy9iA z;SkqFNl_ITUgYzvNfeH!*qC!`iwu1I`Tdm@Z(A-lrS{Mq24i#yj-20I=zLu7jV&dWp z>+2bXgTw77KqkIA2v(=Hlh$m9Q!qdQ43}L1E&RXJco7oRPs4NebuH z(9kfjC3bc{eLg)t-cw~+Xw8*UT6zVPo{<4$w9qu7^QyicsWu;n+L&#vodq(phQWHe zljt=fHwCGvs0@vb-Bb%Fwa^Ji(qPqq@4(i9m10Edm^74LXU0u4_+1X`P1OkCc*UsKPZG0R?_0&91zGjt{mi7Xhii*lseSl6R(X3g|B&J>`9q1l--;5p>SH3)BK-C ze-mJWV_4`yXzIxplViZPV%I`%s+?mSx;amyTuRZ;Eo0J+FMYnNJSnwqxbrNVwTs@{ z<--Fpc-VFWPV7!0QuW5H{zD^%r_#(G6F$)+g5y)a=UN?AMzSf+3N)%(0(ECwl{ES6tignPdeMkS|D{?p4hg6U{5ekcNlHx zX4UfEUfnh%`p+ePMquiN1L08WM7T#x>TBJWYesgK9S8W$vkC6jarga{N9}mIyV`_( z-J0wtb{yvWQ||7wv61Kvsg(EBe+gwifDF}kF4!{Jrj{l;<;3EluOjElgk>5r|#+C>AK*zQiGyNl3ADEPhZPywo(FhM3ZN3@}I}` zj(o|6^Y|9vo%sJsfGpj3+f}Op?Qk6~P|-U0p7f0W#uJ5(1GfW9W}mS( zjkiOct!E}DvFi`%nun<`XAcQSdKSf+_Af0YTC@O+lb5n?rLU}bWtWu5 zYiVnz5CeGh8I(d-EE+==^bxD$;x>2g$Rs8v9u?U_{nBV_zZiAD`HLzLkHS(YVd2s0 zQ0CVv)u&zk{U)b6f|7I-_0VHI0auaa~AQ&_xM3GniuC*i`pb&i|Qhe9( z;X3va!D!FhO?Sgo@JcVjP1kY}#E;~pHX~8hv*e8PDVfS4*4~pX?x{N8(}~@C8#6h* z%LxYiV|0T#Y6|gAv^7~+C)$4(f+Ne*`8#}t)<4x1QIU|2XsZ|oj`<=?IIWct@SXoT z21h9*2UH_$frSO@Rn9H%Tv2!F++wtZn$7UaPz^FF&JJf=|X_dn1 z3(kupzq#&jl0ehb)7!&p^I?Obi`a_*aLgc(i-72hiHRwOui1fyyl!lDp6dWY{i?1m z^LVQhy}azvhZLHvE9%U^A+ae;yf8aEY@SQPz~|^4cxM7ebHtpW6&)S@ncN5d_~{d; zu<%IaJPW#Tr=mhEJv|)=iO*WCh88d4cwId9eiJ>sy-~TjeXa8ewN>7po;G%NfPv9D zIyyGDwl+m<%;;r~Ee_W}t3|J0=PD-l$-4=$WL$qq-PF=j zTudx^bkv$h!FlLI;OvC*N1&rn7I19xVo|_QI06F$wO3r)!=!~14z3Oi3=9>jWr>^T zZtslT+W(XQaBryiCNIW$i&}r@H zNZg92q~OE_GL3-*Q_7`I{Um@@UH$z1C(Sy}j@G%jxoxbiyJlMaiJcE`rKF_9=i0is zSixW%OMRK{r$@W$>gtq&$n&#PEDqNg`V+b`l;7JPzOH#%Mlm)qp_jBO!A?&8A&HKA z0dy(33NH0u6(>hWbpr$C0E1ss?da(E6{h*+%a@~ToteZ{sDJhMfgFNGS zeC+1_dSYrSeaHs=fvl>k>Rj~CVnZV%#IMmZaITGwjh?>#g(k0IH(WaR^z_`vf(#xx zkthD>gb&9QY4r!W*b3Y@1Fwn>L_6s4~-}M$37a1;Hk^~AAIUnyZ zj0eZ={no3-lm8UWqR8F`JaG4T7m{>zgE}WEi8{SpF>>>+gk?eUt5>2{T4b8Ny**u!mYZPgmpl5mB#z)QF5?+zU9`~*N?g+AQb*&%Olcg@Zg4(2HUh%&aYU5ZVd1O+k9Jpn1Oj1Eq@JCV!zBO))7Q$7MpwfCB$eSc5rHdaTt?kETnb{TkK8Z( z@bxM;H#c8qUxMXlg3FU-oiQRY|JN@c09QbLOj;>`qRPn1MsH#E)kD66($dnT(i6vg z3>hAyP@EAF5hrKITL7^4+ip2IIXNdBdY+t|z#H9Y9qR8k8n%Go4fm;lV+EQ({LGBm z?b|$FP5A&#FFgWwr=d-?Zh~u%gG7q_L4vc5(6WH%#o<`fgXt zju%jL;7b6-LPxas8+`E+yBB;;4#--k6nsTx<=FJ}pA`@k11sywM2&6yrj-pBAotUs zqi+Dwg8cmaYljh6mVf*pPdNqG3=+^1zrSI?4h|0G<>fv>L0-FSlgcV8h<>5S2G?G? z@LU{lCPh_M5-(6Fpu?e|r6sS`zGGEKg2w{4w~<0OpCXY{myK9%= + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikin176 Member List
+
+
+ +

This is the complete list of members for IRDaikin176, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikin176private
_saved_tempIRDaikin176private
begin()IRDaikin176
calibrate(void)IRDaikin176inline
checksum()IRDaikin176private
convertFan(const stdAc::fanspeed_t speed)IRDaikin176static
convertMode(const stdAc::opmode_t mode)IRDaikin176static
convertSwingH(const stdAc::swingh_t position)IRDaikin176static
getFan(void)IRDaikin176
getMode(void)IRDaikin176
getPower(void)IRDaikin176
getRaw()IRDaikin176
getSwingHorizontal(void)IRDaikin176
getTemp()IRDaikin176
IRDaikin176(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin176explicit
off(void)IRDaikin176
on(void)IRDaikin176
remote_stateIRDaikin176private
send(const uint16_t repeat=kDaikin176DefaultRepeat)IRDaikin176
setFan(const uint8_t fan)IRDaikin176
setMode(const uint8_t mode)IRDaikin176
setPower(const bool on)IRDaikin176
setRaw(const uint8_t new_code[])IRDaikin176
setSwingHorizontal(const uint8_t position)IRDaikin176
setTemp(const uint8_t temp)IRDaikin176
stateReset()IRDaikin176private
toCommon(void)IRDaikin176
toCommonFanSpeed(const uint8_t speed)IRDaikin176static
toCommonMode(const uint8_t mode)IRDaikin176static
toCommonSwingH(const uint8_t setting)IRDaikin176static
toString(void)IRDaikin176
validChecksum(uint8_t state[], const uint16_t length=kDaikin176StateLength)IRDaikin176static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176.html new file mode 100644 index 000000000..739f5c3a3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176.html @@ -0,0 +1,1083 @@ + + + + + + + +IRremoteESP8266: IRDaikin176 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 176-bit A/C messages. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikin176:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikin176 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin176DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw ()
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off.. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setSwingHorizontal (const uint8_t position)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingHorizontal (void)
 Get the Horizontal Swing mode of the A/C. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin176StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t setting)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void checksum ()
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote_state [kDaikin176StateLength]
 The state of the IR remote. More...
 
uint8_t _saved_temp
 
+

Detailed Description

+

Class for handling detailed Daikin 176-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikin176()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikin176::IRDaikin176 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDaikin176::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikin176::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin176::checksum ()
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin176::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin176::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin176::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a stdAc::swingh_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin176::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin176::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRDaikin176::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint8_t * IRDaikin176::getRaw ()
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin176::getSwingHorizontal (void )
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDaikin176::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRDaikin176::off (void )
+
+ +

Change the power setting to Off..

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRDaikin176::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikin176::send (const uint16_t repeat = kDaikin176DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikin176::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+
Note
1 for Min or 3 for Max
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikin176::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRDaikin176::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDaikin176::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRDaikin176::setSwingHorizontal (const uint8_t position)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]positionThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikin176::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin176::stateReset ()
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikin176::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRDaikin176::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRDaikin176::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRDaikin176::toCommonSwingH (const uint8_t setting)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]settingA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRDaikin176::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRDaikin176::validChecksum (uint8_t state[],
const uint16_t length = kDaikin176StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikin176::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ _saved_temp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikin176::_saved_temp
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikin176::remote_state[kDaikin176StateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.map new file mode 100644 index 000000000..f61dca56f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.md5 new file mode 100644 index 000000000..46c8fe910 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.md5 @@ -0,0 +1 @@ +e1b4fd7ddfe8c5ab5d5bb1cf9d344bc4 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin176__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..44469aecec9969597121cfc80b7b6396e9dce0ef GIT binary patch literal 3228 zcmYjUXH*m08V%)AlqLu&Eg&5Mr5G^+A|(_Rf`}kWm)=DPyha3ekTQ~akuAP~EOzRo>h^aY*> z7AD|5_Dntx7?|vD>*;`wPwu?t!ekJL&BQ?G*8RY&pV=XBGqahU+;y~GQHD9S1%_^C~9#|#}moXmI+IPu?KFTybtr_YH zY13_rEbqPh2gjR*EHZ7j>qtxUv#Ov)nX?nIV$U+<=L|G49*@VX$AJ~^o16RX zE}N`VxkT0(Mf#npn}Nx<1Sh+$+=ncp(Kt!N$Ruex!+b_*6m4PqN1sau%*rYoqrDOf zOt-=8pF9!2j6Zz(#{Vwqs|q^;fhf3}*_j}8L-73UFUK+cb=KsbXs$nTIOu~?OWn{= zwTQzlB&Ll&fXyA1-O$*WoRSh<;F<;XH=Jn++Hs<1VA%Tg%XVY(lir z6kUhJo0^(lBqS^z?(YOsUtUlS+#y^;y?F7NL`p6;ExZSZ=M~!Eo}rePUDVXogMPI# z_Yep|8NJhVVp{gMZ=Zft=W&aqqNSw;lD>3F?CRCja{N&Sl^Q%9vZ)@hFZySu|X##%N`Gs&~b5$B5v;P z2Ub#|_Y>p8@0Ju7x4Niok3RCYtF@$KVPku;G>~2LusZhDE3TX{%ERzu8Ui$sqkcLv zH#axjZ()7?j)Q|3u!hvPM<$OP3#$jKfJ#eC0p90lX9p$JrKP*4N17dCYuk-NLqofJ zd*}Mol|!j3h13AdU^ikWtP23kP)CQ+&d#o;rsfJjMpjl<(Z`S4EQ5}U{PAJJ#F-f| zxO~)(j7$Ruob1^Y7C6DS8;^IzuO*TZ0xV^8f z<;^6(G&Mm07LuZ(QB_q+mX?;P0qf^0D=Ta2>-U06^72Hqw6zV4j0)=N(f|;LhK6GE z(h!|5UbDPPO40&|&5by^zOzVZ>+3@o6-jp{f{D!FP|bhXB@R7x<7JSI*+2te81(WE}68vw<|! z_hO%mwU#|c{*)XXd{#3)CcJe+OEYxq87w|+uUFKQpm69Tv}Qv;!QL7JF24a4Y`j?7 zzD*;$81bvRrhtnO&r}0+4N*ViAACquv8z56Z3g#mKv6n5^pK9%uqlCczh&o+kwbZ` zs^)Uu$+GX;w+~|#)*y^O_O~I$Lk1qjjjgFXe9=F>uT4Q3Lh~=&Ca`z?;iQL64qW_h zR+HoQqr|svdG%G7@>zYUN;Q1T+QZ)wEFbga%HJW?VH)=gJW9L@TS`)e8!s~szp3+~ zY0WUahwcz;%Do;VezwWU#q9+a7rr|v_n zJqlZD{8=vYL)WRYZqlx}v4MrIPQ-Ws*+T#{&oG7iLC%2&ciUHA8*1qQ{XVMAoOyD% z*BHf-(B7g?%9OYG_k%igvW=G85HX1wytV=5L_5Bo=B#<3w%sjeKT+pNrS7hfI-*&5+GpF4x_Wv@X?b~G1qFq< z!rX9fKtyvuAzZwA)r<%h5V(||pReQS_`V^Wh6@B-qXUpp%!u1a-)R;WF8tv(y23*4 zqL`TWZz}avCP6Zq%N}q!`<0>hbG@l2d$ppYqj#?tW({+rM<2xH*QPRjE0jWAxNw0= z^~pL9zgkEW5fRZm4pB8?E7~wRXe|Zz^T)$p!o(n%@!l=_u@x0p6s&MqV>Sy@)8~ME zA`^G^P;@tRDbDtq{*oN8W>ppQl2kQg=i4LiAtFCU-HSW(e3;w0EaP*(8P6`+Z)so! z5nr#s%F3E>dKY}r-!Hgcgq#jQ{7()}K8Cpyovr2qMa(Mqd<3Uz5Y|G?YU50f!k(&HLaSxJlV2h@okDfOW3kwJ@fZdc zPR`A%cURr#rvCg-V(Cly{^(6T%f|cTx014Q$Q@!|9|nunv9Y(ee+%)9F_*YV$XpThd6kw13k*~}bLNbkO-t6#iTX8H zpM%B9=H_hj+Fv`=wQ|zv=%~X{>Lv5-ap&Bv-b>{bE`t{zlvuQS<7okU{+{mcn2L&5 z9q4mw6IE4J77ae4FwE;phpwkHVS7LVZWJ9(S2VU$C;T1!4 z5A@%&5!3Im*y#NHi__r;o*cqz`o6xtxj$4?RBV;f8}_C{diwj@353$WnwU9-#T6A_ z19Vja*$VL(`}zZH7$GAo`=z5J2B>-v6be=KUp+hD89$%yoFl5FlyuHI@K$b=TSY}? z`{d-~FKun8moFFQ6K_h2iD8z)@sE~0V)+FG8a)tCpUy=w3)}W2NeF6${;qS(x*3tP zu}@!XmOT8uzrQlU#>BuQWwf4TJef6KH4*B294#7TB&h7f2GHg)(~_N#kl?i#r%PEO9pk01ZuA>Qoi=~>wc92gjA+UgWwWMZlcCc6Qs zIwiWTSjh3kq0x<#U!QUF@Mr^gIyySm)YVlvba8k<1ge4K)XZ~^@1bs|$%#ryAsLuC zY*qN9GXEj~90S)c3S|)}f2Y1Qc`Ex?z_bH5J}v1R8y6NAqhw4AxcK-wS4f2iYB>e2 zz!|Ij*B)30uSh^VzhP~>nYF^hH8%0bEiKdg5IbUydT_E093F{8GQWHGPJML3zOuq= z3Yw9b`RVxRV7$S1UWo8zOkj$M)7jaX=iIqMYh89_pv)9A32NkF)2Sg?Xnm%ZK??of z9mM}lZ@IQ>F<@Shw+-#34pCyCe-l3)yYh=6-Z8<&*f_ VUg(G0!0!ggK-Wm8Ow0Dqe*w_}U8w*7 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2-members.html new file mode 100644 index 000000000..2dd3582dc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2-members.html @@ -0,0 +1,152 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikin2 Member List
+
+
+ +

This is the complete list of members for IRDaikin2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikin2private
begin()IRDaikin2
calibrate(void)IRDaikin2inline
checksum()IRDaikin2private
clearOnTimerFlag()IRDaikin2private
clearSleepTimerFlag()IRDaikin2private
convertFan(const stdAc::fanspeed_t speed)IRDaikin2static
convertMode(const stdAc::opmode_t mode)IRDaikin2static
convertSwingH(const stdAc::swingh_t position)IRDaikin2static
convertSwingV(const stdAc::swingv_t position)IRDaikin2static
disableOffTimer()IRDaikin2
disableOnTimer()IRDaikin2
disableSleepTimer()IRDaikin2
enableOffTimer(const uint16_t endtime)IRDaikin2
enableOnTimer(const uint16_t starttime)IRDaikin2
enableSleepTimer(const uint16_t sleeptime)IRDaikin2
getBeep()IRDaikin2
getClean()IRDaikin2
getCurrentTime()IRDaikin2
getEcono()IRDaikin2
getEye()IRDaikin2
getEyeAuto()IRDaikin2
getFan()IRDaikin2
getFreshAir()IRDaikin2
getFreshAirHigh()IRDaikin2
getLight()IRDaikin2
getMode()IRDaikin2
getMold()IRDaikin2
getOffTime()IRDaikin2
getOffTimerEnabled()IRDaikin2
getOnTime()IRDaikin2
getOnTimerEnabled()IRDaikin2
getPower()IRDaikin2
getPowerful()IRDaikin2
getPurify()IRDaikin2
getQuiet()IRDaikin2
getRaw()IRDaikin2
getSleepTime()IRDaikin2
getSleepTimerEnabled()IRDaikin2
getSwingHorizontal()IRDaikin2
getSwingVertical()IRDaikin2
getTemp()IRDaikin2
IRDaikin2(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin2explicit
off()IRDaikin2
on()IRDaikin2
remote_stateIRDaikin2private
send(const uint16_t repeat=kDaikin2DefaultRepeat)IRDaikin2
setBeep(const uint8_t beep)IRDaikin2
setClean(const bool on)IRDaikin2
setCurrentTime(const uint16_t time)IRDaikin2
setEcono(const bool on)IRDaikin2
setEye(const bool on)IRDaikin2
setEyeAuto(const bool on)IRDaikin2
setFan(const uint8_t fan)IRDaikin2
setFreshAir(const bool on)IRDaikin2
setFreshAirHigh(const bool on)IRDaikin2
setLight(const uint8_t light)IRDaikin2
setMode(const uint8_t mode)IRDaikin2
setMold(const bool on)IRDaikin2
setPower(const bool state)IRDaikin2
setPowerful(const bool on)IRDaikin2
setPurify(const bool on)IRDaikin2
setQuiet(const bool on)IRDaikin2
setRaw(const uint8_t new_code[])IRDaikin2
setSwingHorizontal(const uint8_t position)IRDaikin2
setSwingVertical(const uint8_t position)IRDaikin2
setTemp(const uint8_t temp)IRDaikin2
stateReset()IRDaikin2private
toCommon(void)IRDaikin2
toCommonSwingH(const uint8_t setting)IRDaikin2static
toCommonSwingV(const uint8_t setting)IRDaikin2static
toString()IRDaikin2
validChecksum(uint8_t state[], const uint16_t length=kDaikin2StateLength)IRDaikin2static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2.html new file mode 100644 index 000000000..788948d02 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2.html @@ -0,0 +1,2133 @@ + + + + + + + +IRremoteESP8266: IRDaikin2 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering analysis by sheppy99. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikin2:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikin2 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin2DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void on ()
 Change the power setting to On. More...
 
void off ()
 Change the power setting to Off. More...
 
void setPower (const bool state)
 Change the power setting. More...
 
bool getPower ()
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan ()
 Get the current fan speed setting. More...
 
uint8_t getMode ()
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
void setSwingVertical (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingVertical ()
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const uint8_t position)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingHorizontal ()
 Get the Horizontal Swing mode of the A/C. More...
 
bool getQuiet ()
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful ()
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono ()
 Get the Economical mode of the A/C. More...
 
void setEye (const bool on)
 Set the Eye (Sensor) mode of the A/C. More...
 
bool getEye ()
 Get the Eye (Sensor) mode status of the A/C. More...
 
void setEyeAuto (const bool on)
 Set the Automatic Eye (Sensor) mode of the A/C. More...
 
bool getEyeAuto ()
 Get the Automaitc Eye (Sensor) mode status of the A/C. More...
 
void setPurify (const bool on)
 Set the Purify (Filter) mode of the A/C. More...
 
bool getPurify ()
 Get the Purify (Filter) mode status of the A/C. More...
 
void setMold (const bool on)
 Set the Mould (filter) mode of the A/C. More...
 
bool getMold ()
 Get the Mould (filter) mode status of the A/C. More...
 
void enableOnTimer (const uint16_t starttime)
 Set the enable status & time of the On Timer. More...
 
void disableOnTimer ()
 Disable the On timer. More...
 
uint16_t getOnTime ()
 Get the On Timer time to be sent to the A/C unit. More...
 
bool getOnTimerEnabled ()
 Get the enable status of the On Timer. More...
 
void enableSleepTimer (const uint16_t sleeptime)
 Set the enable status & time of the Sleep Timer. More...
 
void disableSleepTimer ()
 Disable the sleep timer. More...
 
uint16_t getSleepTime ()
 Get the Sleep Timer time to be sent to the A/C unit. More...
 
bool getSleepTimerEnabled ()
 Get the Sleep timer enabled status of the A/C. More...
 
void enableOffTimer (const uint16_t endtime)
 Set the enable status & time of the Off Timer. More...
 
void disableOffTimer ()
 Disable the Off timer. More...
 
uint16_t getOffTime ()
 Get the Off Timer time to be sent to the A/C unit. More...
 
bool getOffTimerEnabled ()
 Get the enable status of the Off Timer. More...
 
void setCurrentTime (const uint16_t time)
 Set the clock on the A/C unit. More...
 
uint16_t getCurrentTime ()
 Get the clock time to be sent to the A/C unit. More...
 
void setBeep (const uint8_t beep)
 Set the Beep mode of the A/C. More...
 
uint8_t getBeep ()
 Get the Beep status of the A/C. More...
 
void setLight (const uint8_t light)
 Set the Light (LED) mode of the A/C. More...
 
uint8_t getLight ()
 Get the Light status of the A/C. More...
 
void setClean (const bool on)
 Set the Auto clean mode of the A/C. More...
 
bool getClean ()
 Get the Auto Clean mode status of the A/C. More...
 
void setFreshAir (const bool on)
 Set the Fresh Air mode of the A/C. More...
 
bool getFreshAir ()
 Get the Fresh Air mode status of the A/C. More...
 
void setFreshAirHigh (const bool on)
 Set the (High) Fresh Air mode of the A/C. More...
 
bool getFreshAirHigh ()
 Get the (High) Fresh Air mode status of the A/C. More...
 
uint8_t * getRaw ()
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString ()
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin2StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t setting)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t setting)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
+ + + + + + + + + + + + + +

+Private Member Functions

void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void checksum ()
 Calculate and set the checksum values for the internal state. More...
 
void clearOnTimerFlag ()
 Clear the On Timer flag. More...
 
void clearSleepTimerFlag ()
 Clear the sleep timer flag. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote_state [kDaikin2StateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering analysis by sheppy99.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikin2()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikin2::IRDaikin2 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDaikin2::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikin2::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin2::checksum ()
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ clearOnTimerFlag()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin2::clearOnTimerFlag ()
+
+private
+
+ +

Clear the On Timer flag.

+ +
+
+ +

◆ clearSleepTimerFlag()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin2::clearSleepTimerFlag ()
+
+private
+
+ +

Clear the sleep timer flag.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin2::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin2::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin2::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a stdAc::swingh_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin2::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ disableOffTimer()

+ +
+
+ + + + + + + +
void IRDaikin2::disableOffTimer ()
+
+ +

Disable the Off timer.

+ +
+
+ +

◆ disableOnTimer()

+ +
+
+ + + + + + + +
void IRDaikin2::disableOnTimer ()
+
+ +

Disable the On timer.

+ +
+
+ +

◆ disableSleepTimer()

+ +
+
+ + + + + + + +
void IRDaikin2::disableSleepTimer ()
+
+ +

Disable the sleep timer.

+ +
+
+ +

◆ enableOffTimer()

+ +
+
+ + + + + + + + +
void IRDaikin2::enableOffTimer (const uint16_t endtime)
+
+ +

Set the enable status & time of the Off Timer.

+
Parameters
+ + +
[in]endtimeThe number of minutes past midnight.
+
+
+ +
+
+ +

◆ enableOnTimer()

+ +
+
+ + + + + + + + +
void IRDaikin2::enableOnTimer (const uint16_t starttime)
+
+ +

Set the enable status & time of the On Timer.

+
Parameters
+ + +
[in]starttimeThe number of minutes past midnight.
+
+
+
Note
Timer location is shared with sleep timer.
+ +
+
+ +

◆ enableSleepTimer()

+ +
+
+ + + + + + + + +
void IRDaikin2::enableSleepTimer (const uint16_t sleeptime)
+
+ +

Set the enable status & time of the Sleep Timer.

+
Parameters
+ + +
[in]sleeptimeThe number of minutes past midnight.
+
+
+
Note
The Timer location is shared with On Timer.
+ +
+
+ +

◆ getBeep()

+ +
+
+ + + + + + + +
uint8_t IRDaikin2::getBeep ()
+
+ +

Get the Beep status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + +
bool IRDaikin2::getClean ()
+
+ +

Get the Auto Clean mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getCurrentTime()

+ +
+
+ + + + + + + +
uint16_t IRDaikin2::getCurrentTime ()
+
+ +

Get the clock time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + +
bool IRDaikin2::getEcono ()
+
+ +

Get the Economical mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getEye()

+ +
+
+ + + + + + + +
bool IRDaikin2::getEye ()
+
+ +

Get the Eye (Sensor) mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getEyeAuto()

+ +
+
+ + + + + + + +
bool IRDaikin2::getEyeAuto ()
+
+ +

Get the Automaitc Eye (Sensor) mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + +
uint8_t IRDaikin2::getFan ()
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getFreshAir()

+ +
+
+ + + + + + + +
bool IRDaikin2::getFreshAir ()
+
+ +

Get the Fresh Air mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFreshAirHigh()

+ +
+
+ + + + + + + +
bool IRDaikin2::getFreshAirHigh ()
+
+ +

Get the (High) Fresh Air mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + +
uint8_t IRDaikin2::getLight ()
+
+ +

Get the Light status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + +
uint8_t IRDaikin2::getMode ()
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getMold()

+ +
+
+ + + + + + + +
bool IRDaikin2::getMold ()
+
+ +

Get the Mould (filter) mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getOffTime()

+ +
+
+ + + + + + + +
uint16_t IRDaikin2::getOffTime ()
+
+ +

Get the Off Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOffTimerEnabled()

+ +
+
+ + + + + + + +
bool IRDaikin2::getOffTimerEnabled ()
+
+ +

Get the enable status of the Off Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getOnTime()

+ +
+
+ + + + + + + +
uint16_t IRDaikin2::getOnTime ()
+
+ +

Get the On Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOnTimerEnabled()

+ +
+
+ + + + + + + +
bool IRDaikin2::getOnTimerEnabled ()
+
+ +

Get the enable status of the On Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + +
bool IRDaikin2::getPower ()
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerful()

+ +
+
+ + + + + + + +
bool IRDaikin2::getPowerful ()
+
+ +

Get the Powerful (Turbo) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPurify()

+ +
+
+ + + + + + + +
bool IRDaikin2::getPurify ()
+
+ +

Get the Purify (Filter) mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + +
bool IRDaikin2::getQuiet ()
+
+ +

Get the Quiet mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint8_t * IRDaikin2::getRaw ()
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleepTime()

+ +
+
+ + + + + + + +
uint16_t IRDaikin2::getSleepTime ()
+
+ +

Get the Sleep Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getSleepTimerEnabled()

+ +
+
+ + + + + + + +
bool IRDaikin2::getSleepTimerEnabled ()
+
+ +

Get the Sleep timer enabled status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + +
uint8_t IRDaikin2::getSwingHorizontal ()
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + +
uint8_t IRDaikin2::getSwingVertical ()
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDaikin2::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + +
void IRDaikin2::off ()
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + +
void IRDaikin2::on ()
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikin2::send (const uint16_t repeat = kDaikin2DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setBeep()

+ +
+
+ + + + + + + + +
void IRDaikin2::setBeep (const uint8_t beep)
+
+ +

Set the Beep mode of the A/C.

+
Parameters
+ + +
[in]beeptrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + + +
void IRDaikin2::setClean (const bool on)
+
+ +

Set the Auto clean mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setCurrentTime()

+ +
+
+ + + + + + + + +
void IRDaikin2::setCurrentTime (const uint16_t numMins)
+
+ +

Set the clock on the A/C unit.

+
Parameters
+ + +
[in]numMinsNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRDaikin2::setEcono (const bool on)
+
+ +

Set the Economy mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setEye()

+ +
+
+ + + + + + + + +
void IRDaikin2::setEye (const bool on)
+
+ +

Set the Eye (Sensor) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setEyeAuto()

+ +
+
+ + + + + + + + +
void IRDaikin2::setEyeAuto (const bool on)
+
+ +

Set the Automatic Eye (Sensor) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikin2::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
+ +
+
+ +

◆ setFreshAir()

+ +
+
+ + + + + + + + +
void IRDaikin2::setFreshAir (const bool on)
+
+ +

Set the Fresh Air mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFreshAirHigh()

+ +
+
+ + + + + + + + +
void IRDaikin2::setFreshAirHigh (const bool on)
+
+ +

Set the (High) Fresh Air mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRDaikin2::setLight (const uint8_t light)
+
+ +

Set the Light (LED) mode of the A/C.

+
Parameters
+ + +
[in]lighttrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikin2::setMode (const uint8_t desired_mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]desired_modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setMold()

+ +
+
+ + + + + + + + +
void IRDaikin2::setMold (const bool on)
+
+ +

Set the Mould (filter) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRDaikin2::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerful()

+ +
+
+ + + + + + + + +
void IRDaikin2::setPowerful (const bool on)
+
+ +

Set the Powerful (Turbo) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPurify()

+ +
+
+ + + + + + + + +
void IRDaikin2::setPurify (const bool on)
+
+ +

Set the Purify (Filter) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRDaikin2::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDaikin2::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRDaikin2::setSwingHorizontal (const uint8_t position)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]positionThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRDaikin2::setSwingVertical (const uint8_t position)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]positionThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikin2::setTemp (const uint8_t desired)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]desiredThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin2::stateReset ()
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikin2::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRDaikin2::toCommonSwingH (const uint8_t setting)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]settingA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRDaikin2::toCommonSwingV (const uint8_t setting)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]settingA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRDaikin2::toString ()
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRDaikin2::validChecksum (uint8_t state[],
const uint16_t length = kDaikin2StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikin2::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikin2::remote_state[kDaikin2StateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216-members.html new file mode 100644 index 000000000..5ee15e07e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216-members.html @@ -0,0 +1,112 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikin216 Member List
+
+
+ +

This is the complete list of members for IRDaikin216, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikin216private
begin()IRDaikin216
calibrate(void)IRDaikin216inline
checksum()IRDaikin216private
convertFan(const stdAc::fanspeed_t speed)IRDaikin216static
convertMode(const stdAc::opmode_t mode)IRDaikin216static
getFan(void)IRDaikin216
getMode(void)IRDaikin216
getPower(void)IRDaikin216
getPowerful(void)IRDaikin216
getQuiet(void)IRDaikin216
getRaw()IRDaikin216
getSwingHorizontal(void)IRDaikin216
getSwingVertical(void)IRDaikin216
getTemp()IRDaikin216
IRDaikin216(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin216explicit
off(void)IRDaikin216
on(void)IRDaikin216
remote_stateIRDaikin216private
send(const uint16_t repeat=kDaikin216DefaultRepeat)IRDaikin216
setFan(const uint8_t fan)IRDaikin216
setMode(const uint8_t mode)IRDaikin216
setPower(const bool on)IRDaikin216
setPowerful(const bool on)IRDaikin216
setQuiet(const bool on)IRDaikin216
setRaw(const uint8_t new_code[])IRDaikin216
setSwingHorizontal(const bool on)IRDaikin216
setSwingVertical(const bool on)IRDaikin216
setTemp(const uint8_t temp)IRDaikin216
stateReset()IRDaikin216private
toCommon(void)IRDaikin216
toString(void)IRDaikin216
validChecksum(uint8_t state[], const uint16_t length=kDaikin216StateLength)IRDaikin216static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216.html new file mode 100644 index 000000000..d4e05e872 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216.html @@ -0,0 +1,1068 @@ + + + + + + + +IRremoteESP8266: IRDaikin216 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 216-bit A/C messages. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikin216:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikin216 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class Constructor. More...
 
void send (const uint16_t repeat=kDaikin216DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw ()
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const bool on)
 Set the Horizontal Swing mode of the A/C. More...
 
bool getSwingHorizontal (void)
 Get the Horizontal Swing mode of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet mode status of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
bool getPowerful (void)
 Get the Powerful (Turbo) mode of the A/C. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin216StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void checksum ()
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote_state [kDaikin216StateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Daikin 216-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikin216()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikin216::IRDaikin216 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class Constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDaikin216::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikin216::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin216::checksum ()
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin216::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin216::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin216::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin216::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRDaikin216::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerful()

+ +
+
+ + + + + + + + +
bool IRDaikin216::getPowerful (void )
+
+ +

Get the Powerful (Turbo) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRDaikin216::getQuiet (void )
+
+ +

Get the Quiet mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+
Note
This is a horrible hack till someone works out the quiet mode bit.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint8_t * IRDaikin216::getRaw ()
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
bool IRDaikin216::getSwingHorizontal (void )
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
bool IRDaikin216::getSwingVertical (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDaikin216::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRDaikin216::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRDaikin216::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikin216::send (const uint16_t repeat = kDaikin216DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikin216::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikin216::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRDaikin216::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerful()

+ +
+
+ + + + + + + + +
void IRDaikin216::setPowerful (const bool on)
+
+ +

Set the Powerful (Turbo) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRDaikin216::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
This is a horrible hack till someone works out the quiet mode bit.
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDaikin216::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRDaikin216::setSwingHorizontal (const bool on)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRDaikin216::setSwingVertical (const bool on)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikin216::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin216::stateReset ()
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikin216::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRDaikin216::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRDaikin216::validChecksum (uint8_t state[],
const uint16_t length = kDaikin216StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikin216::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikin216::remote_state[kDaikin216StateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.map new file mode 100644 index 000000000..a2be3b0a2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.md5 new file mode 100644 index 000000000..8b015e855 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.md5 @@ -0,0 +1 @@ +376e63c140c9b990fbd05013138184b0 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin216__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..40e2871efc17ef7d50bf67a62b4657900be91d65 GIT binary patch literal 3277 zcmZWs2UHW=77Zu?q)LfMF@O@lP?g>U1c5+6q$$0q^b$%aktRq-q=$};B2AhUk!BE4 zib@O8K{^QpNI<3h@&EUJS%1x%xoge3cka1opS|~)_?w10OlP>yfIuK7JzcF^z=#6w za5^yX#QTdE0|VGmUq=gc^5-gkSDFq2F+SAO(l8CmClrL<EKrhj0??9NBlixhO~3FK~!BvDE^lY!VfnSrS+^i>05{)}le& zfsbLv)H3mG#d;YL##x^Za-0imO~)>#ZEkubE>+!LCz={_EcfR`WoKs#)j_34Mn-)0 zR*l7evGR+Z=4S*)y#!uzF@hbsitf+}M5B=zAmp>tE^I>T=`OHr2^&pgj`fX=Dn5iH zu!oe#B`_`R?k9MSzm+)$jkd9mzyFW~aRflSCKq>FMb)+s>zLyuH6qTin)`kHcxTAMWULb8`os9PLjux@WfE*Rj+d9Wtg`aQ z+pYG+`XM!*Z&z5(=r;;VeT3v`Cqm+*qoch(NBpX7YC0Dj9PAciW|ryW>&qr=RJfUG z5fIP_!aZU*Hxh8;xv_$>a>e9OzM_f8M4dL$+rxt+qO839Y-VOAHEXt{o%t{W0|O2J z`ucjmL^`WwVsZ$wvZ_kEW_*`2>Fp%LO|?xTIgD4^R9ZDLhlht3h93tb5D1Wh-!dbp zu&{7_AhoJW9En8ct76OtX5YWRexw$%=K}gZIayv_-qqJvZq-^-Q}Z$rGs);4Z`1tt zZF*{I*V=ID&x6I3QF6$;!mW;z!r8Fj$;HL|)YQ~2?(Rb0WB`vM2%B!l(#?8#k?!52_j5;fDwsUke6G*k3=Xcy}_z6-&gNjGaqqwdvjYrZ1-rk=lpVHi{0A!%- z)hj_!QCB)dFeZsB9z-IMfa#>Q(xN*1E^2EV8+v+rhpA?i$8>Av^xMFz_xri#mXV1? zMNk0&fuNuuRw&d6*hQ&eu+r%~BiPc?a+^#Rl99;(VAY2Z249c#K&s#fx~J247i|2$ zN%VL5yTz9nMwXi#?>`cg3*wsln0hg*KTO>#AFX9g!aK56Ay)#}b2NnLsEoC*o|m@-_>{A1 zI*vmQkc=*0TNEq%I|7e&4lyg?;KrfnDQcI|#Hn(LKjch;UbE#@dvMzyjZQErHKbQo zRwnHZT}z};(5N3D&!%FrWnNGS1g5E}sReMo8BNFyA~cTUHYe&IeRVP2-K9_<9ml^a zTs%EFMMXus0U}}zU;@#sfY_Y-oF&ck zdHE&{=t>d$DRjJyv!gn}fcMgSl%qOwf&ctt_EU&yP&HG=H!f*iaTH~p)NiY5Yomst zRECV>ciH*)Jm0Brv6fd1V`$2Ua2T4uEkK0oFGxn%Qk<=S1bxtUk99!3AoeuhLQMl{ zroUAbzklZcVSD?mVV_<02BT%b<-fo1U!V%j)E~vm%E}(@e3l%GTdE#5_xGFgdAVz3 z{`dz`Dv)U1*47pxy!XK2tGyJRdO}M5bZGYkQLUmE)uaZFdODPC@S89pDIr0W)O&yC zG#E_DgOO!Pwi@aG4EKrQ!Yi{15fPEsXs+v@;<69E=}V>-6?xYZbf^RGO|AVRZ;&Vy zn1qC(jT(BB3#3%QY-D6)UTxjSZlv2Zrk1z?Ao=W{TU34 zyu7@llhe<&()nGV!knDG1Wx$J!9kd~crvj2x8dQ@z3AxE35kh%NF>4Uq^|CYZTL|D zM8aAZjh5@{>pKL*JW%#VqD84v!QmqNA|DFmPeP#Awr%$-;*LsE6 zox13cA9ce{jsj&>#l@Kb7XoZOMga6lkCgUVYzbDdNP2?^l- z(%RZoU@fuZBbHcD zFEcT{J4y8iq6t4F(YlXSo`1~?s;a8uO1`nPv!jbZ2+GT62k$PYW@KpD*c99e#zytj z#A7I%4#cUJ2gg5Gum&Ym`x}?@6B8LgvCMpeFj&l!C#=+`PW_yVVgVmgQ3#W&d~*Ei5d^nDG}Hs?HIg1_p$#UQHLbdL!k~eY$=pz{f}3m;*?A|K8d#3TVqFoQry9 zW(wJb4Y8TAinrU80s;c=O}7SEH~U0}{-!WBhXMvoBoc#ygHcPLIMdS8;}a4Dg@t3E zJre|qPntWqssADnji^b<6D(HO&u^D6TL2DEtgIA!<2C)M!F9NQ#;9}{C@GxR25uln z95Zk(P?)jLZviXq6c-oA4@5UOIB2^D0AgxkvHMjAirSvjSXf*%=6D1YSTw7GqN0Pd zbFW?akv1AliRi6wY+M?UpT+g|#x}Z-`;ym3Cm*X`ycp%(ag?>U=MOU~R9QU&T2h3q z?S((RLsL_FX6B>5y9=p07g`9|kSlk$gkxf3(+dg)j*otS-5_@kY}_|AWJaUW%`GjY zFV|UWLw}>mV3)%KQrmVn!zE$i;i;)V`J$(zE3T~c=v)*{&~$VZR7P*kEoIx?2ZVZ^ zJZ9Y*<{tr6e84;4BuZ93VPR^nuC8vD7T)h?-eFKElz@s#{@9qgoCjWAU!MUe!+Svg z*d)u~6u!r;(uUdh5)>3{s4jE3VQj8n z2$$`iTWzW6Tx;x6V!2bzIPuozd JTGRgFKLBqsI{E+r literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.map new file mode 100644 index 000000000..b57955f2c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.md5 new file mode 100644 index 000000000..73f0805f7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.md5 @@ -0,0 +1 @@ +3ef4da6c50362fb01d8d40a3983c3439 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a2b148e774f7449fb4f4e2ac0b56dc9dec73ea GIT binary patch literal 3012 zcmZve2T)Vn7KTHS-lZc&K@cg5z@;NfjZ~2?Js_b7QbR|np(+7{G~h~zAObf8L?j4E z7Xcx3r5Jh@5h6w8o_pWCd2`=;bLN~q`|N%8nOXn8*0<8FER5M%gjql!5Ifk!z#15R zfjfbT0eEh*Z<2t4!PC^(0Cf7-Roe1A4+LV30vp`0iNtJS#UGX|>C>|*C3_&O z4Dw`U!c%3RBWM*Mi+1q79Y$D@Yq_+kTl{GibNc<)bIPZ&^9%`0UC>ujst36H<)CHZ{i#PR-5wP&c=yh(4<4ll8uQRG-oU z8J=DO^OQ<~A0nh^6vywye(MrQQ|4If>+dHzPN5p?VJN&3Y}=WZmNr#Oy0W6WdTEjX zncTbJ=)f!y5*k`P5I^w*jh0K@QR83=w?Kd{f@$-mn5_`MmMLACP?Qk_Qr4p1#16bR zG8-Wd>Gp5bw$9#nC99~IcXV_lrHRKEVKA6n7URpC(Ng7j{DtIF0wH&)zYwA#e7NxV z`lb*j&x!1BV@ zmbr}$@5&&SJTX+PgNDt;6~f_6Boe7e3Bth0DK39#^MD32}Pa9!%*C_XNmf09KpYS zM%}!56P}aP?MYbmeS1J*)&04nujopG4@0GNbzOsm;Mv*Uo09|^JG&)?tB+q)dpS#Damx8K#(Ma#v`&Q3QgbKdAi zW=D0XbzGbdL(-!kvoV~+DKMk;w_~~eV-u>>^nlW{Q@Rf}XQ#(6;pFxbr zF?H)GB&od(2y~C-^%DaF19}e+kFc42kOIyLywQ%5w< z8S&`dy2TY1FQ;{H0}9R_D;rL;Q z)~0n~%86?(U$i&7`joS;t~m%u1STf%+8P0ZZY+ry5u{}Q)=yfYg;{9+XCQWh{1Ev8ygCK zKH0=B1xc|X6A3IX;~jq6czBM9SQ;A?dPQT=_%gVr zao;jj*_;&=o{Mf%n&|3@Iw? zFFU#jke*G^ccnt%#)zyeO|VW?Gmsd>=zYK9=yh4ZcVcgk*5!IcBH!b`zWP+;_Uhzf z{1kPfbXWUmwaoL=tNTYkUpf+#TU%SzLl)ty>+3wvElc=oYHBFQUt0wL2UAvu%PuG= zm|KdAiYfpGG_68N7r1xYrZf`FvZkC&|SU7ylC5WDZ zVZBu}c)s#BEPO&l#|^G5$R^0fAkWXL1>2UAm(P0hMl)`{^5`f!Ha3=_1$!zUx&E}` z5u0{-4o*y+(st*THRrkDdD%)42U}y_ln#jooJRi%lK9!Jq_(DJy!K7B1v4`B}pH$pzDZxDuvlmAO`U|$)6=u*LWTsM2F881OYQ65 zcm1*yT|2WNxazgllXo0@?XHv4^u*;9zT~vDyIA}6&=Kej@ZZ4N)&%!IRVb^d=$-Xo zlN&LO-XF7dGO3kNPFU$ncdH~ zl<$2I1cDg3`g@u~ofq?8)16n1fis#F4vgrxFJES1Fy}0=nkmiAT9(@1=+o2FBO@c( zUSNKACrZjnOQ(*ESie177U5TL>O9)t*bnB4#smNN>PTfjI5>EcpWpeVBPTQzg~bj4 z>H}zoEOck*7ZebD$$0MU_T@1w8Z9zBJPbvRuN0k8R8;(&aC$=8eJ`i|{eyDAEXnco z_4W(fDke@&nF|*ZU%ytbBNChAB7azn74~^~?yrxLPN<)pnvN?CJUbedzkehFaif6DahOn3$Lu@>)to#U+bkZH>iK@2iu}h(0e00CgjBJ&i2{ zDE}(i+1aC`qoAF3MsX`Ar(40nN?%(~bs0I%mEv%?xeyc@4K_FTrgWyibZadJl8%a` zwmqVgl9sl%vT6g6=-3$OQsU;WC?^M*uJ=6&Oi(8{y6yb@85>7`SwKKwgiK}}4P4sT zVAb>Y_itRXu&^*I(ZzOU3WP59axV{+%=rib?1%K^hyr$}P$)+;%ZQ7nOw7zQ^M@-X zJ^-x%oGS%WIs?~OSXd4KE*}8kI93Q%Cm?Y}MS_6PO|gg905-(_I$Y7-?Uhv5m^qxk z4~2ruuiM_n9Uqyy+1Mo4)?T5Zp{cL0|080{ zDa%L_=t=VP^8xLFs_+&f1X#ult65NAuQEM7ol4@=(9l?1TzrB=_U)~a)0}7Bg>sK^ z0LHjQL`)+hesghYOmJ+fs>%fV2i?QPvm9dDCIACbc#msHuAB2~Yw1;0atXf + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikin64 Member List
+
+
+ +

This is the complete list of members for IRDaikin64, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikin64private
begin()IRDaikin64
calcChecksum(const uint64_t state)IRDaikin64static
calibrate(void)IRDaikin64inline
checksum()IRDaikin64private
convertFan(const stdAc::fanspeed_t speed)IRDaikin64static
convertMode(const stdAc::opmode_t mode)IRDaikin64static
getClock(void)IRDaikin64
getFan(void)IRDaikin64
getMode(void)IRDaikin64
getOffTime(void)IRDaikin64
getOffTimeEnabled(void)IRDaikin64
getOnTime(void)IRDaikin64
getOnTimeEnabled(void)IRDaikin64
getPowerToggle(void)IRDaikin64
getQuiet(void)IRDaikin64
getRaw()IRDaikin64
getSleep(void)IRDaikin64
getSwingVertical(void)IRDaikin64
getTemp()IRDaikin64
getTurbo(void)IRDaikin64
IRDaikin64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin64explicit
remote_stateIRDaikin64private
send(const uint16_t repeat=kDaikin64DefaultRepeat)IRDaikin64
setClock(const uint16_t mins_since_midnight)IRDaikin64
setFan(const uint8_t fan)IRDaikin64
setMode(const uint8_t mode)IRDaikin64
setOffTime(const uint16_t mins_since_midnight)IRDaikin64
setOffTimeEnabled(const bool on)IRDaikin64
setOnTime(const uint16_t mins_since_midnight)IRDaikin64
setOnTimeEnabled(const bool on)IRDaikin64
setPowerToggle(const bool on)IRDaikin64
setQuiet(const bool on)IRDaikin64
setRaw(const uint64_t new_state)IRDaikin64
setSleep(const bool on)IRDaikin64
setSwingVertical(const bool on)IRDaikin64
setTemp(const uint8_t temp)IRDaikin64
setTurbo(const bool on)IRDaikin64
stateReset()IRDaikin64private
toCommon(const stdAc::state_t *prev=NULL)IRDaikin64
toCommonFanSpeed(const uint8_t speed)IRDaikin64static
toCommonMode(const uint8_t mode)IRDaikin64static
toString(void)IRDaikin64
validChecksum(const uint64_t state)IRDaikin64static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64.html new file mode 100644 index 000000000..b3a860c52 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64.html @@ -0,0 +1,1393 @@ + + + + + + + +IRremoteESP8266: IRDaikin64 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 64-bit A/C messages. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikin64:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikin64 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin64DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
uint64_t getRaw ()
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t new_state)
 Set the internal state from a valid code for this protocol. More...
 
void setPowerToggle (const bool on)
 Set the Power toggle setting of the A/C. More...
 
bool getPowerToggle (void)
 Get the Power toggle setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getSleep (void)
 Get the Sleep mode of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo (Powerful) mode status of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo (Powerful) mode of the A/C. More...
 
void setClock (const uint16_t mins_since_midnight)
 Set the clock on the A/C unit. More...
 
uint16_t getClock (void)
 Get the clock time to be sent to the A/C unit. More...
 
void setOnTimeEnabled (const bool on)
 Set the enable status of the On Timer. More...
 
bool getOnTimeEnabled (void)
 Get the enable status of the On Timer. More...
 
void setOnTime (const uint16_t mins_since_midnight)
 Set the On Timer time for the A/C unit. More...
 
uint16_t getOnTime (void)
 Get the On Timer time to be sent to the A/C unit. More...
 
void setOffTimeEnabled (const bool on)
 Set the enable status of the Off Timer. More...
 
bool getOffTimeEnabled (void)
 Get the enable status of the Off Timer. More...
 
void setOffTime (const uint16_t mins_since_midnight)
 Set the Off Timer time for the A/C unit. More...
 
uint16_t getOffTime (void)
 Get the Off Timer time to be sent to the A/C unit. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void checksum ()
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint64_t remote_state
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Daikin 64-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikin64()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikin64::IRDaikin64 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDaikin64::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin64::calcChecksum (const uint64_t state)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + +
[in]stateThe value to calc the checksum of.
+
+
+
Returns
The 4-bit checksum stored in a uint_8.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikin64::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin64::checksum ()
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin64::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikin64::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getClock()

+ +
+
+ + + + + + + + +
uint16_t IRDaikin64::getClock (void )
+
+ +

Get the clock time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin64::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRDaikin64::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getOffTime()

+ +
+
+ + + + + + + + +
uint16_t IRDaikin64::getOffTime (void )
+
+ +

Get the Off Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOffTimeEnabled()

+ +
+
+ + + + + + + + +
bool IRDaikin64::getOffTimeEnabled (void )
+
+ +

Get the enable status of the Off Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getOnTime()

+ +
+
+ + + + + + + + +
uint16_t IRDaikin64::getOnTime (void )
+
+ +

Get the On Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOnTimeEnabled()

+ +
+
+ + + + + + + + +
bool IRDaikin64::getOnTimeEnabled (void )
+
+ +

Get the enable status of the On Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerToggle()

+ +
+
+ + + + + + + + +
bool IRDaikin64::getPowerToggle (void )
+
+ +

Get the Power toggle setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRDaikin64::getQuiet (void )
+
+ +

Get the Quiet mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint64_t IRDaikin64::getRaw ()
+
+ +

Get a copy of the internal state as a valid code for this protocol.

+
Returns
A valid code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRDaikin64::getSleep (void )
+
+ +

Get the Sleep mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
bool IRDaikin64::getSwingVertical (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDaikin64::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRDaikin64::getTurbo (void )
+
+ +

Get the Turbo (Powerful) mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikin64::send (const uint16_t repeat = kDaikin64DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClock()

+ +
+
+ + + + + + + + +
void IRDaikin64::setClock (const uint16_t mins_since_midnight)
+
+ +

Set the clock on the A/C unit.

+
Parameters
+ + +
[in]mins_since_midnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikin64::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikin64::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setOffTime()

+ +
+
+ + + + + + + + +
void IRDaikin64::setOffTime (const uint16_t mins_since_midnight)
+
+ +

Set the Off Timer time for the A/C unit.

+
Parameters
+ + +
[in]mins_since_midnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setOffTimeEnabled()

+ +
+
+ + + + + + + + +
void IRDaikin64::setOffTimeEnabled (const bool on)
+
+ +

Set the enable status of the Off Timer.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setOnTime()

+ +
+
+ + + + + + + + +
void IRDaikin64::setOnTime (const uint16_t mins_since_midnight)
+
+ +

Set the On Timer time for the A/C unit.

+
Parameters
+ + +
[in]mins_since_midnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setOnTimeEnabled()

+ +
+
+ + + + + + + + +
void IRDaikin64::setOnTimeEnabled (const bool on)
+
+ +

Set the enable status of the On Timer.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerToggle()

+ +
+
+ + + + + + + + +
void IRDaikin64::setPowerToggle (const bool on)
+
+ +

Set the Power toggle setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRDaikin64::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDaikin64::setRaw (const uint64_t new_state)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_stateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRDaikin64::setSleep (const bool on)
+
+ +

Set the Sleep mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRDaikin64::setSwingVertical (const bool on)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikin64::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRDaikin64::setTurbo (const bool on)
+
+ +

Set the Turbo (Powerful) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + +
void IRDaikin64::stateReset ()
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikin64::toCommon (const stdAc::state_tprev = NULL)
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Parameters
+ + +
[in]prevPtr to a previous state.
+
+
+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRDaikin64::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRDaikin64::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRDaikin64::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRDaikin64::validChecksum (const uint64_t state)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]stateThe state to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikin64::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint64_t IRDaikin64::remote_state
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.map new file mode 100644 index 000000000..ed3f71001 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.md5 new file mode 100644 index 000000000..40836ffaa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.md5 @@ -0,0 +1 @@ +b2bb54fe62558d21dee90dc29baf242d \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikin64__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b66057e113bef90d50a81d4da26c623cae284898 GIT binary patch literal 3190 zcmZXX2T&918iu2SA{{|N6p$!Ik=_MCDFO!)DS{Mffgk~CBE2eL=!l@ei4cSYq!>yl zk?N5^CGL??wr}#{b%Rj-P!%V_kZ4ZV+^4>ER4L2AP|T}Pglzr z7~Oz9jNvqJoSrdg0fy5seH|^(@vkkrK0gHnViwcWy8FQY-BMxt84M3$yVT z6iYWZc^5bE6}1aR>*oS$-i&x3ugX-5)`ZtCX2BaAUuS0EXAe4qGi33PJKvc`vY%ur z@GSQM@!r-+5f=PY?kokP*9y{yZ|>1btZs-QuSiOExde#4tqFR-6?K+Vn4O*7E@lyf zEi8=X6oJ}(Lp`+@1SO+Tt_6!2Aw|W9=BuT?F}{!#cF3QR&OO((QnuOMhY8PfMEm;t zskc(kbYt|Q$rx>I?J~!<*HBt)PPQnc=1b=BPqSGLq(r_d#x7i0k*v79{CPpT%F4={ z=B440k#wQQhkjN_xZmKL3f7m*7d4EH&&B3=E)OgF?B_vH42+Cl$m9gQ6k)H0zUw}= z-rlkW1qJau(kCS)C1Efa;pud2P1rEOEBIiIq;>D!#Q6AKU0ntwE1&UC+s4q$^mHCo zRaO6)jK{5AT`Q>e?US{s{ZwlE3>js_6;)a)1!`|^*VWgb9P((y;&6#wYWwk-Dt?7O z^mKKz>+0S$A=$jQ7ECoXHDeMInjK{d5DmLCm-;_ikrFN`>gwv+jn)OYbZG|%t45q= z$;ruivC?>)Rno9mc%L?W_2!mXCjWM{0b0!(lb7dfd8Q9O_W5~EcJ`eSTMLWp!^6YG z@A$_8t@MpXDa2s6mJ5Ej-I~Edlvdu-0GgWIgdx z6JtGCebCPSevzVVXJ@CJg2L0?b+~+(t*!0W#@JsGC!Aefa|;U@6&0(Y`wJvV&tbiUVFK6iA)RaD5CmDrGN!w$8Lj5x#|;xItf zYW-GVa=Zvv*Ct094j!J?qLPL`U@$No4zH-Hdb&QP2Xk{n zG0}v>h34nyLkv4c?W=o0#>U3ZZf?^Zl8uh*Q*HhM0UUgMlL4w!STHhtuT=)CW z^{DvnZo{11+_kMOAt9kCB2nv+wRNqjnY+6LnM|fTbB2?XQ&U6Zg?!Przxl#M^tSUo z1`3;pmRt=|7@{GEIG3aM&jKL6$7E3H^L$BRXd*1a^hBb7x_jGV;Mb8jO+zjosq$}5 z(woiFrE_+sRvRT@jwef()^!vT>55p*D%0hxdP7OX?N(Wa6K91SE=mo)w>*L>8IW=O zpAyz2pU>mQ7AQkitfWGv_=@#IA5kcy()Cn<4|pFXvt~ieMc#x5d>&sMxfpWqgcYCF zbg2ErR&Pmjb}_>Hmgx~ zoWn{Z2KrmpL-bDCm^9zDG4WKK%XqP8!HyZ4)XS|a`LV7Pw_&lZ9%*D~X85C7aZ1Mp zkzjgyp`AKc9(3o+W&@W-Hp z=yA0$+5JOpcZ*y7ZeGdSpU-QU+(Oume%MoVWJC0NS8Oi;`_M$;mmT#oTct_oP}`Wrp}@GKf=%H@T(jSUl{Npm9ilsi4j zah{@xL;8;asQ{-kDVZ^Sd-W9n-Ckv8y3wQpBP;k?-U15ZtYUpn+T53g+ykcfQ6#U) zmNJ)bH*5l?&kv7`>@L@?EP8TQD`(; z$#*f`*~5dITjCMBgoMNdNg#~N&CP9MXKfNJE)IbRT)HF%h)o*~#}Y#Jt9HgB*oeSf z6vg?$1`{(gm-_Jm-Wh@5$jHd}GBEHk-9T6{l08Kja?Z=kYXV>tKopJ0sHlw0l#ch9 z^O7Z8%^hMvo0&Ka+{vkswyl(G+33Mv3zm{HJbaSGS+KQVOTrP3>Gd+9NN7H=mXcFa zH2wXR21;xniWnE+a4kbawWR5T5O5`{*GPsgM5Xtu9dI9_=kG!J0kTY?RHw<^OB6B5 zy(1m^99^+kbxb>%WT#87P-qkIu8Nb|&Zk_LKi>>K~SkAz5aorp@=&4;|yo z`BD9^gHD->sU}jDUXQNz=u2_{cBM9cC|T@t@Tn?34%xx^rD^&sibNU0)`l$~b&CvO zu~@bttUWy#46e!Se~$xX@!PtH;}|kp9i5W{wnEyQV$!Po*InFjM5P{+N$6c@AywMH_P(C_30#GFzdawgUM6%zsDA$6hxb%JCPwTZV_RVW_C8X&5ro}fKw|FPpB1ohu$lj zo6mqsM90TF0$=jvM?-zDK$v>rCs`imV#~@{HuZy7Dt^n)GD43Ic7xZNx$BOP_P@SU zP6^nUS)-LS7VhKm_zY=>)3-8N{rvp00vE0uo0zD)$sM45ul1AE)6=V0(Y;Mv=wUv6 zD(L63wo$6Pe2_^#6kAnwq27k=Gquw7y0|!&Ku8A~ni_G24Zt-_0S)*Y@R)%0HW3TF z6ANIXfzDK5vfOiAV|(#?)8>4yMSY;W1_O0yNZD`sa#mJW-B!Pq77#L=DPW%#eo#sq z5qPvkoxk+*^74ohI4S8HW_os(lY`^#g9ltz)$T&FvUsaQ7d16C5a4>g)a9uuV()!* z^5S>AvhU*H)eRs+Ft)X|8DyzuVD-}`rZ(qXIx}REfKLF8&yaV$z{0}P_w5^{r{@L5 z8IzqI4ixg&y8#f2*p9!r9qwvLzw- zaBHA$^$U{|n;q$|)y+-1vDNXWsi~>#0opfV_pj;FNnag~j}H9<1J|jpB|c(iK)BiR zCi%44NsTQpC+3I(mqbu~Ak!6%#A6nl@(y6kuaxbJMCS z-gN+17IqwppO1@;{pH?Qu7m?sNKQ_^tD$jncXu~6HT6|$Y9z%u*pZ)!Tf%XwH5r4& zQu_M(XoJ?)))&=+{qx->M!$xL#%fqtTm+IDpsRC0IUhZ`3}U))(~j2vv0h@}a>%-h z8(^tK5(yu&?@JvLILQCGz3sahcpDvdqzoi5u#gbFwviMMGlQU~w|7%>bCmkgP6VJ| z{Is%)$_7P8fP;&R2*eVgN^?GocqcLtjl#>zWvEmtz}GXvDKWF?u&e@;d}B+?LJ2<3 zCr)rU(DodgG(@6Wkh&YtgsJIiud&Z3p55Z}T&YPzqm$y|m_|oO<1fm-B%>6I6mN!x zhSqI#syI42cK7uW=P0>n+1O?eb~l_lOt_+eEK>F4`{YiHO!hX8_ zjhv#QtV^FL5cCF$EM{*upNcT`TcQFvuWs8pFDWKE`ii1rn&PN`(-X`2+OoZ?|DxM( z&`iC*4ZeL5nNO)!?Y;`$DE0h4zg+6Ml<9hwg8N^TU + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDaikinESP Member List
+
+
+ +

This is the complete list of members for IRDaikinESP, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDaikinESPprivate
begin(void)IRDaikinESP
calibrate(void)IRDaikinESPinline
checksum(void)IRDaikinESPprivate
convertFan(const stdAc::fanspeed_t speed)IRDaikinESPstatic
convertMode(const stdAc::opmode_t mode)IRDaikinESPstatic
disableOffTimer(void)IRDaikinESP
disableOnTimer(void)IRDaikinESP
enableOffTimer(const uint16_t endtime)IRDaikinESP
enableOnTimer(const uint16_t starttime)IRDaikinESP
getComfort(void)IRDaikinESP
getCurrentDay(void)IRDaikinESP
getCurrentTime(void)IRDaikinESP
getEcono(void)IRDaikinESP
getFan(void)IRDaikinESP
getMode(void)IRDaikinESP
getMold(void)IRDaikinESP
getOffTime(void)IRDaikinESP
getOffTimerEnabled(void)IRDaikinESP
getOnTime(void)IRDaikinESP
getOnTimerEnabled()IRDaikinESP
getPower(void)IRDaikinESP
getPowerful(void)IRDaikinESP
getQuiet(void)IRDaikinESP
getRaw(void)IRDaikinESP
getSensor(void)IRDaikinESP
getSwingHorizontal(void)IRDaikinESP
getSwingVertical(void)IRDaikinESP
getTemp()IRDaikinESP
getWeeklyTimerEnable(void)IRDaikinESP
IRDaikinESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikinESPexplicit
off(void)IRDaikinESP
on(void)IRDaikinESP
remoteIRDaikinESPprivate
send(const uint16_t repeat=kDaikinDefaultRepeat)IRDaikinESP
setComfort(const bool on)IRDaikinESP
setCurrentDay(const uint8_t day_of_week)IRDaikinESP
setCurrentTime(const uint16_t mins_since_midnight)IRDaikinESP
setEcono(const bool on)IRDaikinESP
setFan(const uint8_t fan)IRDaikinESP
setMode(const uint8_t mode)IRDaikinESP
setMold(const bool on)IRDaikinESP
setPower(const bool on)IRDaikinESP
setPowerful(const bool on)IRDaikinESP
setQuiet(const bool on)IRDaikinESP
setRaw(const uint8_t new_code[], const uint16_t length=kDaikinStateLength)IRDaikinESP
setSensor(const bool on)IRDaikinESP
setSwingHorizontal(const bool on)IRDaikinESP
setSwingVertical(const bool on)IRDaikinESP
setTemp(const uint8_t temp)IRDaikinESP
setWeeklyTimerEnable(const bool on)IRDaikinESP
stateReset(void)IRDaikinESPprivate
toCommon(void)IRDaikinESP
toCommonFanSpeed(const uint8_t speed)IRDaikinESPstatic
toCommonMode(const uint8_t mode)IRDaikinESPstatic
toString(void)IRDaikinESP
validChecksum(uint8_t state[], const uint16_t length=kDaikinStateLength)IRDaikinESPstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP.html new file mode 100644 index 000000000..a8aab02cd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP.html @@ -0,0 +1,1729 @@ + + + + + + + +IRremoteESP8266: IRDaikinESP Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Daikin 280-bit A/C messages. + More...

+ +

#include <ir_Daikin.h>

+
+Collaboration diagram for IRDaikinESP:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDaikinESP (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikinDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const bool on)
 Set the Horizontal Swing mode of the A/C. More...
 
bool getSwingHorizontal (void)
 Get the Horizontal Swing mode of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful (void)
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setSensor (const bool on)
 Set the Sensor mode of the A/C. More...
 
bool getSensor (void)
 Get the Sensor mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono (void)
 Get the Economical mode of the A/C. More...
 
void setMold (const bool on)
 Set the Mould mode of the A/C. More...
 
bool getMold (void)
 Get the Mould mode status of the A/C. More...
 
void setComfort (const bool on)
 Set the Comfort mode of the A/C. More...
 
bool getComfort (void)
 Get the Comfort mode of the A/C. More...
 
void enableOnTimer (const uint16_t starttime)
 Set the enable status & time of the On Timer. More...
 
void disableOnTimer (void)
 Clear and disable the On timer. More...
 
uint16_t getOnTime (void)
 Get the On Timer time to be sent to the A/C unit. More...
 
bool getOnTimerEnabled ()
 Get the enable status of the On Timer. More...
 
void enableOffTimer (const uint16_t endtime)
 Set the enable status & time of the Off Timer. More...
 
void disableOffTimer (void)
 Clear and disable the Off timer. More...
 
uint16_t getOffTime (void)
 Get the Off Timer time to be sent to the A/C unit. More...
 
bool getOffTimerEnabled (void)
 Get the enable status of the Off Timer. More...
 
void setCurrentTime (const uint16_t mins_since_midnight)
 Set the clock on the A/C unit. More...
 
uint16_t getCurrentTime (void)
 Get the clock time to be sent to the A/C unit. More...
 
void setCurrentDay (const uint8_t day_of_week)
 Set the current day of the week to be sent to the A/C unit. More...
 
uint8_t getCurrentDay (void)
 Get the current day of the week to be sent to the A/C unit. More...
 
void setWeeklyTimerEnable (const bool on)
 Set the enable status of the Weekly Timer. More...
 
bool getWeeklyTimerEnable (void)
 Get the enable status of the Weekly Timer. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kDaikinStateLength)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikinStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote [kDaikinStateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Daikin 280-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRDaikinESP()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDaikinESP::IRDaikinESP (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRDaikinESP::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDaikinESP::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRDaikinESP::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikinESP::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDaikinESP::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ disableOffTimer()

+ +
+
+ + + + + + + + +
void IRDaikinESP::disableOffTimer (void )
+
+ +

Clear and disable the Off timer.

+ +
+
+ +

◆ disableOnTimer()

+ +
+
+ + + + + + + + +
void IRDaikinESP::disableOnTimer (void )
+
+ +

Clear and disable the On timer.

+ +
+
+ +

◆ enableOffTimer()

+ +
+
+ + + + + + + + +
void IRDaikinESP::enableOffTimer (const uint16_t endtime)
+
+ +

Set the enable status & time of the Off Timer.

+
Parameters
+ + +
[in]endtimeThe number of minutes past midnight.
+
+
+ +
+
+ +

◆ enableOnTimer()

+ +
+
+ + + + + + + + +
void IRDaikinESP::enableOnTimer (const uint16_t starttime)
+
+ +

Set the enable status & time of the On Timer.

+
Parameters
+ + +
[in]starttimeThe number of minutes past midnight.
+
+
+ +
+
+ +

◆ getComfort()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getComfort (void )
+
+ +

Get the Comfort mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getCurrentDay()

+ +
+
+ + + + + + + + +
uint8_t IRDaikinESP::getCurrentDay (void )
+
+ +

Get the current day of the week to be sent to the A/C unit.

+
Returns
The numerical representation of the day of the week.
+
Note
1 is SUN, 2 is MON, ..., 7 is SAT
+ +
+
+ +

◆ getCurrentTime()

+ +
+
+ + + + + + + + +
uint16_t IRDaikinESP::getCurrentTime (void )
+
+ +

Get the clock time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getEcono (void )
+
+ +

Get the Economical mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRDaikinESP::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRDaikinESP::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getMold()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getMold (void )
+
+ +

Get the Mould mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getOffTime()

+ +
+
+ + + + + + + + +
uint16_t IRDaikinESP::getOffTime (void )
+
+ +

Get the Off Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOffTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getOffTimerEnabled (void )
+
+ +

Get the enable status of the Off Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getOnTime()

+ +
+
+ + + + + + + + +
uint16_t IRDaikinESP::getOnTime (void )
+
+ +

Get the On Timer time to be sent to the A/C unit.

+
Returns
The number of minutes past midnight.
+ +
+
+ +

◆ getOnTimerEnabled()

+ +
+
+ + + + + + + +
bool IRDaikinESP::getOnTimerEnabled ()
+
+ +

Get the enable status of the On Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerful()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getPowerful (void )
+
+ +

Get the Powerful (Turbo) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getQuiet (void )
+
+ +

Get the Quiet mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRDaikinESP::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSensor()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getSensor (void )
+
+ +

Get the Sensor mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getSwingHorizontal (void )
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getSwingVertical (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDaikinESP::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getWeeklyTimerEnable()

+ +
+
+ + + + + + + + +
bool IRDaikinESP::getWeeklyTimerEnable (void )
+
+ +

Get the enable status of the Weekly Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRDaikinESP::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRDaikinESP::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDaikinESP::send (const uint16_t repeat = kDaikinDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setComfort()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setComfort (const bool on)
+
+ +

Set the Comfort mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setCurrentDay()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setCurrentDay (const uint8_t day_of_week)
+
+ +

Set the current day of the week to be sent to the A/C unit.

+
Parameters
+ + +
[in]day_of_weekThe numerical representation of the day of the week.
+
+
+
Note
1 is SUN, 2 is MON, ..., 7 is SAT
+ +
+
+ +

◆ setCurrentTime()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setCurrentTime (const uint16_t mins_since_midnight)
+
+ +

Set the clock on the A/C unit.

+
Parameters
+ + +
[in]mins_since_midnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setEcono (const bool on)
+
+ +

Set the Economy mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setMold()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setMold (const bool on)
+
+ +

Set the Mould mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerful()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setPowerful (const bool on)
+
+ +

Set the Powerful (Turbo) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRDaikinESP::setRaw (const uint8_t new_code[],
const uint16_t length = kDaikinStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthLength of the code in bytes.
+
+
+ +
+
+ +

◆ setSensor()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setSensor (const bool on)
+
+ +

Set the Sensor mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setSwingHorizontal (const bool on)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setSwingVertical (const bool on)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setWeeklyTimerEnable()

+ +
+
+ + + + + + + + +
void IRDaikinESP::setWeeklyTimerEnable (const bool on)
+
+ +

Set the enable status of the Weekly Timer.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRDaikinESP::stateReset (void )
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDaikinESP::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRDaikinESP::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRDaikinESP::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRDaikinESP::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRDaikinESP::validChecksum (uint8_t state[],
const uint16_t length = kDaikinStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDaikinESP::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDaikinESP::remote[kDaikinStateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.map new file mode 100644 index 000000000..6ae75bb13 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 new file mode 100644 index 000000000..108e7de33 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 @@ -0,0 +1 @@ +68cef74e6daf013f3d7f49c1a7c4d7f5 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDaikinESP__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c21d84a3d16acdd9f876a6bd0f5045c3c04743 GIT binary patch literal 3212 zcmZ`+2{c>V8a{}c+7xk3SF46Ls-|9QZjd6V2C1pI)KJuvD6J`KC?(h2R8dn5z2&wl zE+uFx6@*el)l}21vF4c|t#^9Yee1oo-g@h-v-jC&?e*{d@Bjb5@7n}RH0lJeI4=MI zCrnKYF<>7EzERxAz;-xTkpy>#N9 zS-;Mb_Ruhz?$7iODe!<~NLeCgrXo7J#&)z|{-oq8gjb01Y&H~O3R}HAUvQ}N4cAkD zd2fs^faDfU5{E}{(U?mr1R#@ zn$*9reCoYWwjnQ0l<>2psfUz=@U15CK$*6 zHCVg!*)xM8OHz4x$Aqhv1XM9l0-U?O9gLGmn2b8gpN!i6YSr%XOJb{=AqrJeRh41U zcy~$ovDw)t$}UiXVQgF+#HsOKibYytA}wN#nn0mwhK7er%gRD*Y;5r1At4%qf`Wf7 zED*?KmB*QxisrW@qm87jDu+FErd3XW~4(go%1Ehh+rxmMXTbzSfqoKQ(bazVjqIU!!Z(b^Qr8>VRV!^TD( zHSrVO1(%b0^p5ZbOSMtWA~fF5k_)9Lh%3>g%2``tSO_Gs_d4#j=m+`z}t(az^XpFZ&e zrAPgOww9I>dh6w-Ka1!-+9}X#48ZLy z+5ogaZ*?+rWxTw+l9Q83B_$7(CnqNhk4EWq4&bJWC>VDs;Ust|7Z(@buj5>8MQ2l| z=jRh*W7(bR?{LP)$FuI&JEg9@J%s8Vu~es~rubnn4ytq7Y-bj|qk~5~9~zg=BU$f+ zSlTbeoNsGu>m3?mtodTGBBcRa?~2p80YL&pK9e^Ada5~JC&cpCUsINs{k+x0$EXn^ zp4DQ<92p^>riv4g|I zzKMxcYQ&zBzM^EZk&FQFi>hkT&{E*$jH&M4SWvo&Y+_nkLS3E4=H@1Du1iee*9IXP zHTOwxuVo8^L7$wI%*n|yxppl+H#hg%Jm$p!1x&Bl2M;pR(}8%Tl*hn#apc|Fn`y<| zQp;@*U1k2x_WMYhI_Qc`8IK4*2aejuP5C8f58My>uk@a32~otMqPX zEn($UD#`Lf)d~yHghO#ty|x!`uHhi@W`s5Y)tVC}0IU)YD+v???Og}BH7VkB=pLuc^(4eT_6NPnsx%TQC zJB)u(*124Q-K)a3TjJH=am7$wKDN7pqwl%SImaI*Wb-)moN&-`+qjb1B2Xc~QE|-v z)Y~&O{iM_MA+JKY*TW>U;@{o)(cS$g_p};u6pYd2fJs)%<~y-MhwN(*|06fSQ%_=q zIUeeGVdYT`$)esD74!}H5=d#q!jJltWMT)yEQU3Lchmuz;~e5_r9~nmw)LFaCqyd{ z9pyD10e4@~yLB(s(7x<8TGA6ln45yx6^^&dqTN0`y(A|mM-CAUihatqzCSh9nzRdb?IvFU4YZh=2cTu7rODVy zgzgb*D|99UwLW0yqBYSR9sBBotJnR@fe%>WQ*C*vVFwG(I|wj1b7g%UC&OB~!jtlq;^ zH%6iv_QY%=k&e}wYL0%X^*V+|)Blb|IfH0?d@9xlgaGb*WFV-uBr6#Nj%#~rY1@v&{h9jV5%l)%KBtEx)XN^x<0Jm7PQO}~}VzhgDEa8Ncron4vcP*HpEXrabpcWH6)_p5HhF~h^d zxBJUhVUoiCWQ;apv<{29d-pY!Zf_|}ZPAzr<(QqFjh%Hl-qrc0f4nh7Mn#2ROiYZm z`|N5K00aaC*w^}rVK5kSz<2`>BYFPDpB_ATJf7^<%Ii1sC#RH@lzO3#o?aBXs{7K> zx4?-WhGbOozze%8F9xQV8`IuCKCvAhNPBxx=g1wKmkzIe-fx^feVUt>7wO<2-b|;@ z3o*>O)x$K;pXULWRS{2-Q&vU=1So+3Bt`7_edc10`PbD|(|lD?wdEe7U(cK}}3aF>-Q}0A0o%Y~Mzl z$gU4l6Hghg!%FThk30a6&+$W3*hNjS$UF;6g*jJcnV)+w?@4Cn#sx?N zg>nWCXBhcXnuY^o=CYf`(CV5GwQqUn>TOBxBJiKx>1|3;x1}mzyCz?T!ckNMiyDi zvyBn0ZEWH>xS)R#Ef5BVhLC8zBc8GGaWIe4i9`-87W-oMGIy-TbC7?32m?Dik?ul0 zJ>Tz(i$2W#eFOPSH*arlu9K(ZkVX18ZixB#`eqaqK&wY|-Nkh7E$dra@>|RQWQ;=1 zzmTt%79{-G2?PQGl^bEQ@bTlgh6ZhGYwI(5dXgC#8C&5KocsBd;025<96r6h(65qX ze*NRMb1-ckoj?{d5ZtPiswzx^@y=T663N5E_GJS;e&Y>y%{~`P-g8$WSpN@Tf&#ohb+}8dC*zB~xmZ=v zZE-z+bB&ZjYPAL1ON)Qg8jeln@Vf28D_eRvIk}t)nsX<3y#P#&(1x#&H)H<=kM{ly literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc-members.html new file mode 100644 index 000000000..3ad6d4a3a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc-members.html @@ -0,0 +1,123 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRDelonghiAc Member List
+
+
+ +

This is the complete list of members for IRDelonghiAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRDelonghiAcprivate
_saved_tempIRDelonghiAcprivate
_saved_temp_unitsIRDelonghiAcprivate
begin()IRDelonghiAc
calcChecksum(const uint64_t state)IRDelonghiAcstatic
calibrate(void)IRDelonghiAcinline
checksum(void)IRDelonghiAcprivate
convertFan(const stdAc::fanspeed_t speed)IRDelonghiAc
convertMode(const stdAc::opmode_t mode)IRDelonghiAc
getBoost()IRDelonghiAc
getFan()IRDelonghiAc
getMode()IRDelonghiAc
getOffTimer(void)IRDelonghiAc
getOffTimerEnabled(void)IRDelonghiAc
getOnTimer(void)IRDelonghiAc
getOnTimerEnabled(void)IRDelonghiAc
getPower()IRDelonghiAc
getRaw()IRDelonghiAc
getSleep()IRDelonghiAc
getTemp()IRDelonghiAc
getTempUnit(void)IRDelonghiAc
IRDelonghiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDelonghiAcexplicit
off()IRDelonghiAc
on()IRDelonghiAc
remote_stateIRDelonghiAcprivate
send(const uint16_t repeat=kDelonghiAcDefaultRepeat)IRDelonghiAc
setBoost(const bool on)IRDelonghiAc
setFan(const uint8_t speed)IRDelonghiAc
setMode(const uint8_t mode)IRDelonghiAc
setOffTimer(const uint16_t nr_of_mins)IRDelonghiAc
setOffTimerEnabled(const bool on)IRDelonghiAc
setOnTimer(const uint16_t nr_of_mins)IRDelonghiAc
setOnTimerEnabled(const bool on)IRDelonghiAc
setPower(const bool on)IRDelonghiAc
setRaw(const uint64_t state)IRDelonghiAc
setSleep(const bool on)IRDelonghiAc
setTemp(const uint8_t temp, const bool fahrenheit=false, const bool force=false)IRDelonghiAc
setTempUnit(const bool celsius)IRDelonghiAc
stateReset()IRDelonghiAc
toCommon(void)IRDelonghiAc
toCommonFanSpeed(const uint8_t speed)IRDelonghiAcstatic
toCommonMode(const uint8_t mode)IRDelonghiAcstatic
toString()IRDelonghiAc
validChecksum(const uint64_t state)IRDelonghiAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc.html new file mode 100644 index 000000000..2657047f5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc.html @@ -0,0 +1,1370 @@ + + + + + + + +IRremoteESP8266: IRDelonghiAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Delonghi A/C messages. + More...

+ +

#include <ir_Delonghi.h>

+
+Collaboration diagram for IRDelonghiAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRDelonghiAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kDelonghiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower ()
 Get the value of the current power setting. More...
 
void on ()
 Change the power setting to On. More...
 
void off ()
 Change the power setting to Off. More...
 
void setTempUnit (const bool celsius)
 Change the temperature scale units. More...
 
bool getTempUnit (void)
 Get the temperature scale unit of measure currently in use. More...
 
void setTemp (const uint8_t temp, const bool fahrenheit=false, const bool force=false)
 Set the temperature. More...
 
uint8_t getTemp ()
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan ()
 Get the current native fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode ()
 Get the operating mode setting of the A/C. More...
 
void setBoost (const bool on)
 Set the Boost (Turbo) mode of the A/C. More...
 
bool getBoost ()
 Get the Boost (Turbo) mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getSleep ()
 Get the Sleep mode status of the A/C. More...
 
void setOnTimerEnabled (const bool on)
 Set the enable status of the On Timer. More...
 
bool getOnTimerEnabled (void)
 Get the enable status of the On Timer. More...
 
void setOnTimer (const uint16_t nr_of_mins)
 Set the On timer to activate in nr of minutes. More...
 
uint16_t getOnTimer (void)
 Get the On timer time. More...
 
void setOffTimerEnabled (const bool on)
 Set the enable status of the Off Timer. More...
 
bool getOffTimerEnabled (void)
 Get the enable status of the Off Timer. More...
 
void setOffTimer (const uint16_t nr_of_mins)
 Set the Off timer to activate in nr of minutes. More...
 
uint16_t getOffTimer (void)
 Get the Off timer time. More...
 
uint64_t getRaw ()
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t state)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString ()
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint64_t remote_state
 The state of the IR remote. More...
 
uint8_t _saved_temp
 The previously user requested temp value. More...
 
uint8_t _saved_temp_units
 The previously user requested temp units. More...
 
+

Detailed Description

+

Class for handling detailed Delonghi A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRDelonghiAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRDelonghiAc::IRDelonghiAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRDelonghiAc::begin ()
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRDelonghiAc::calcChecksum (const uint64_t state)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + +
[in]stateThe value to calc the checksum of.
+
+
+
Returns
A valid checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRDelonghiAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRDelonghiAc::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRDelonghiAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRDelonghiAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getBoost()

+ +
+
+ + + + + + + +
bool IRDelonghiAc::getBoost ()
+
+ +

Get the Boost (Turbo) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + +
uint8_t IRDelonghiAc::getFan ()
+
+ +

Get the current native fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + +
uint8_t IRDelonghiAc::getMode ()
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRDelonghiAc::getOffTimer (void )
+
+ +

Get the Off timer time.

+
Returns
Total nr of mins before the device turns off.
+ +
+
+ +

◆ getOffTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRDelonghiAc::getOffTimerEnabled (void )
+
+ +

Get the enable status of the Off Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRDelonghiAc::getOnTimer (void )
+
+ +

Get the On timer time.

+
Returns
Total nr of mins before the device turns on.
+ +
+
+ +

◆ getOnTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRDelonghiAc::getOnTimerEnabled (void )
+
+ +

Get the enable status of the On Timer.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + +
bool IRDelonghiAc::getPower ()
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + +
uint64_t IRDelonghiAc::getRaw ()
+
+ +

Get a copy of the internal state as a valid code for this protocol.

+
Returns
A valid code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + +
bool IRDelonghiAc::getSleep ()
+
+ +

Get the Sleep mode status of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + +
uint8_t IRDelonghiAc::getTemp ()
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in currently configured units/scale.
+ +
+
+ +

◆ getTempUnit()

+ +
+
+ + + + + + + + +
bool IRDelonghiAc::getTempUnit (void )
+
+ +

Get the temperature scale unit of measure currently in use.

+
Returns
true, is Fahrenheit. false, is Celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + +
void IRDelonghiAc::off ()
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + +
void IRDelonghiAc::on ()
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::send (const uint16_t repeat = kDelonghiAcDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setBoost()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setBoost (const bool on)
+
+ +

Set the Boost (Turbo) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired native setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired native operating mode.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setOffTimer (const uint16_t nr_of_mins)
+
+ +

Set the Off timer to activate in nr of minutes.

+
Parameters
+ + +
[in]nr_of_minsTotal nr of mins to wait before turning off the device
+
+
+
Note
Max 23 hrs and 59 minutes. i.e. 1439 mins.
+ +
+
+ +

◆ setOffTimerEnabled()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setOffTimerEnabled (const bool on)
+
+ +

Set the enable status of the Off Timer.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setOnTimer (const uint16_t nr_of_mins)
+
+ +

Set the On timer to activate in nr of minutes.

+
Parameters
+ + +
[in]nr_of_minsTotal nr of mins to wait before waking the device.
+
+
+
Note
Max 23 hrs and 59 minutes. i.e. 1439 mins.
+ +
+
+ +

◆ setOnTimerEnabled()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setOnTimerEnabled (const bool on)
+
+ +

Set the enable status of the On Timer.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setRaw (const uint64_t state)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]stateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setSleep (const bool on)
+
+ +

Set the Sleep mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRDelonghiAc::setTemp (const uint8_t degrees,
const bool fahrenheit = false,
const bool force = false 
)
+
+ +

Set the temperature.

+
Parameters
+ + + + +
[in]degreesThe temperature in degrees.
[in]fahrenheitUse Fahrenheit as the temperature scale.
[in]forceDo we ignore any sanity checks?
+
+
+ +
+
+ +

◆ setTempUnit()

+ +
+
+ + + + + + + + +
void IRDelonghiAc::setTempUnit (const bool fahrenheit)
+
+ +

Change the temperature scale units.

+
Parameters
+ + +
[in]fahrenheittrue, use Fahrenheit. false, use Celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + +
void IRDelonghiAc::stateReset ()
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRDelonghiAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRDelonghiAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRDelonghiAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRDelonghiAc::toString ()
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRDelonghiAc::validChecksum (const uint64_t state)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]stateThe state to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRDelonghiAc::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ _saved_temp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDelonghiAc::_saved_temp
+
+private
+
+ +

The previously user requested temp value.

+ +
+
+ +

◆ _saved_temp_units

+ +
+
+ + + + + +
+ + + + +
uint8_t IRDelonghiAc::_saved_temp_units
+
+private
+
+ +

The previously user requested temp units.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint64_t IRDelonghiAc::remote_state
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.map new file mode 100644 index 000000000..069782ed6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 new file mode 100644 index 000000000..58e961103 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 @@ -0,0 +1 @@ +e2babeacb4dc45c7ae998d66cca5b36e \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRDelonghiAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1a0cb0d9fe80411bc3a29c02488ee3d95721d8b8 GIT binary patch literal 3457 zcmYk92{=^UAIFCVW1ksiU$P{T5TO@Ynuugel6_E^24hY3WsnfwEFt@z^pa%kGscoV z`!e>i6=Mxq`(N+>{Xg&jxzD-3=Q+>0=bn4+@B90FPn3b47Bd4k0|*3S*1n4{0-_Jl zf*`cOT?9#s0s^h=JuL+2_t}-*Q1k{EDX)!CH}-i)c^9DjV41(YDUu_B;~C!o-eyrq zA*352B7EBc)4WTQ@8vxUF&D9K?AGOUIhXjtO*SNi6a$`T7i~oMR@i!`2kUKhdS?hJ z-f%gUxnh!NqT>XEnn`@_J0W(Bi{Amyo!86KcmFeUdGR=~XvQPcqjzW94k8FXKRs{n zN+(8Uyzq9}AmjxL5OA0$j>GRCTBN3(=e_0smQ9K2k!wE_(Pp~-1q1?_ZJxy5DKMIA z4riQQBZp(aAfc45n(GS4gsw#_u_@!5gLGdG^$xH2S%`zjYMzTgW)FT}qjcH<-S6ln zFlh8udFKiHsy=BZ&WMo6NV=u&)Uex;EaUye4g&VV7&{ji*F~&a(I9fF*6XgeHlga- z=o)1N`_zbDIT#o&?=lIAKyJ1R1eJepZEb}xFoYHrUCzzT#T;xuk^ifxhz^(l!o-9% z5W^yb2xaEgW5+cf%R&kY95OO8PzV@8PfsX$P&9TtGGcO91P%dHEB`*;QFLE`C|o{D z)YS=LrakAqG0hx-gu-A{AV)MB@${)^m!YXCBvvylG4cEdtA;d+n~si7^H9ly{-GgkXQvLYA|`my zga3xbZm|tk<#AWCq%g2#lOxcWb7$g}{P*u)^*j-{w2h)(DA!9jt`DPpG+4t%E_F@{UF{MqO=V`F1{R~I9m$Wi?5n?Xx!tGWnW zP(_8Wq@)Dn;o&D_?q0*IqM`y}VTnKpsq5%;`eaUw5r&EUp163ZhV>^gJEng%^pBJj z6Y? zIeR|ehI}YqFQ2FmRx_k<_Q-9}$gdoJ^Df|M*{+VGVa%=>2(xm|I^iWlrWyUo3zpJf zdIwSoJ%i70?ngfJkt)wMa}C%(6|fa`{P3gPFwA<>Y}O@-{!mjG?Y#(93z`c4NFwUj zrgsDVg=~BncmCSwq497+?1SUR=mSZNSG%27T=xn1m7VddcGPJt%utipV$aihwPd^mfQ^`zZlK1{n00>c!R zVb%BL76pxMGH=r?-TXI@4YIWP?z1Y%Wgc8sZF=E6XF#na^f?L`GOOKoH!RyIBoYbK zH!%r`%4(jxi0UwAyVh_Vx#fM#gWdia4v;0FAV6yK%(x4=r@SWv85;4WC9kVo-zb{I7tmJq7R{hU`djP4* z_53{vEz_JcG?=v zK?QPgaoOD8*K&8i&Mswze&~?hop|NJEQJy~Ug;n#BLfo@6ttU5w)}Ox)8||$pzH$$ zs_|_-J(lEamYu1pWN*65A|lyezObvF{t})ilef0o1uEV0_$41$TE_AzdE-eW9v%gk zmhsBtA1^OrXMb&xO&k4hzUEVEE1|f#=1xscUVPJmm+p?2$+WPr*qrp}LlPsHO=~@` zyo!#Nk?wDCl*`S}2Wx9<$KMtC+R>qIZcd8d13n`mC4~+^SE_DAXejk$-SfB}>pE}A zJqjsuf7*|AYirB2!S@ER9}4o;0Fwb&y^M>~LZQT8^Q*jCS#k9A@~U`ZW@Z-g!L>BX z#nBP}*=cZdy>3Gzub-**8-P-Peev(!F_jp<%20Yfe|l2!I9z6(I$c-P|M$th4d+r+ z+VrJ+$pG(j3JPdI1_lP8Dzn(!Tp^$!t6gOm2C#j*NA7SXFYepmVA!Wm*AtVIa~m4? z4h{}Xp6F#NNA0eTl2`ikOuwMHws&^M$<8y4d;p{rJy)O%3=HT-1C@`BlHw8)6{ulx z91dr**qK!P{{5%UzP`RljT|*3Qn0hD3kHXWN<8|=bY!hUPZr%w5Y~e7@x_jfnfh;bp1P9)N^KTQc^fX;PgvBTh_0t==B4HoHZJzFIvWVN)ks4vQK zGe7M~dy-T*jG9|pW3rxU68iq@=%})t4{}-TJj3{LNU*)=8~Q&oSk~9q-`)!NBYk6e zS>fxR!LBo)3ua(3z)v$R7#$fAl9y-aj-}Pp)AQLIcW@pFGHVO)$}tc_n3%9z1)X^D zss{4HqZTR_pP^8*WO7(=FbG#u6N2PC-XyXDc8oXyk3s;x#H5067#$!pB zGgk8~wS-tL?DImPp+A100NVr#2?;?T7TilYV|YtjTl45B2YWQl^YuxjR9gl1&4!JX zl$6M&OLMb?u$7Gsfy9}anYiR+b|7cw0snPZU!RUB4UIyWmfKJ9LeuTnzDT;5RE{zjW!+%a|DdT$^mb8ogEVlLzF~KRzA>m`DGE z#gx2T8xaw-pmI0|sJXd0+gLouSX>YuB^`9?@4ww~8Rxai?(64g`0!zPZEdX~=|t(B zmuLOqk5a&_D7wvq)8#kcSpho!R9Trb_`Te3-vx2!PQ?>z4(hX=;bf6LbI3#Z&xLvAiL zP#`>Uo4TaNl@o}5Yj8bQtmld$bRj8Nos<>DzJxk{ejrgW8V6@SsFFn&PFRhU)blNncXhTg= RF5pZB(!QgI_^4qM`X3Ujkt6^B literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc-members.html new file mode 100644 index 000000000..b71c6923c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc-members.html @@ -0,0 +1,117 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRElectraAc Member List
+
+
+ +

This is the complete list of members for IRElectraAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRElectraAcprivate
begin(void)IRElectraAc
calcChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)IRElectraAcstatic
calibrate(void)IRElectraAcinline
checksum(const uint16_t length=kElectraAcStateLength)IRElectraAcprivate
convertFan(const stdAc::fanspeed_t speed)IRElectraAc
convertMode(const stdAc::opmode_t mode)IRElectraAc
getClean(void)IRElectraAc
getFan(void)IRElectraAc
getLightToggle(void)IRElectraAc
getMode(void)IRElectraAc
getPower(void)IRElectraAc
getRaw(void)IRElectraAc
getSwingH(void)IRElectraAc
getSwingV(void)IRElectraAc
getTemp(void)IRElectraAc
getTurbo(void)IRElectraAc
IRElectraAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRElectraAcexplicit
off(void)IRElectraAc
on(void)IRElectraAc
remote_stateIRElectraAcprivate
send(const uint16_t repeat=kElectraAcMinRepeat)IRElectraAc
setClean(const bool on)IRElectraAc
setFan(const uint8_t speed)IRElectraAc
setLightToggle(const bool on)IRElectraAc
setMode(const uint8_t mode)IRElectraAc
setPower(const bool on)IRElectraAc
setRaw(const uint8_t new_code[], const uint16_t length=kElectraAcStateLength)IRElectraAc
setSwingH(const bool on)IRElectraAc
setSwingV(const bool on)IRElectraAc
setTemp(const uint8_t temp)IRElectraAc
setTurbo(const bool on)IRElectraAc
stateReset(void)IRElectraAc
toCommon(void)IRElectraAc
toCommonFanSpeed(const uint8_t speed)IRElectraAcstatic
toCommonMode(const uint8_t mode)IRElectraAcstatic
toString(void)IRElectraAc
validChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)IRElectraAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc.html new file mode 100644 index 000000000..60c60c249 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc.html @@ -0,0 +1,1242 @@ + + + + + + + +IRremoteESP8266: IRElectraAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Electra A/C messages. + More...

+ +

#include <ir_Electra.h>

+
+Collaboration diagram for IRElectraAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRElectraAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kElectraAcMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingV (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingH (const bool on)
 Set the Horizontal Swing mode of the A/C. More...
 
bool getSwingH (void)
 Get the Horizontal Swing mode of the A/C. More...
 
void setClean (const bool on)
 Set the Clean mode of the A/C. More...
 
bool getClean (void)
 Get the Clean mode of the A/C. More...
 
void setLightToggle (const bool on)
 Set the Light (LED) Toggle mode of the A/C. More...
 
bool getLightToggle (void)
 Get the Light (LED) Toggle mode of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo mode of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kElectraAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kElectraAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kElectraAcStateLength)
 Calculate the checksum for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (const uint16_t length=kElectraAcStateLength)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
uint8_t remote_state [kElectraAcStateLength]
 The state of the IR remote. More...
 
+

Detailed Description

+

Class for handling detailed Electra A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRElectraAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRElectraAc::IRElectraAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRElectraAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRElectraAc::calcChecksum (const uint8_t state[],
const uint16_t length = kElectraAcStateLength 
)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe value to calc the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
The calculated checksum stored in a uint_8.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRElectraAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRElectraAc::checksum (const uint16_t length = kElectraAcStateLength)
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+
Parameters
+ + +
[in]lengthThe length of the state array.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRElectraAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRElectraAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + + +
bool IRElectraAc::getClean (void )
+
+ +

Get the Clean mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRElectraAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getLightToggle()

+ +
+
+ + + + + + + + +
bool IRElectraAc::getLightToggle (void )
+
+ +

Get the Light (LED) Toggle mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRElectraAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRElectraAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRElectraAc::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingH()

+ +
+
+ + + + + + + + +
bool IRElectraAc::getSwingH (void )
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
bool IRElectraAc::getSwingV (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRElectraAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRElectraAc::getTurbo (void )
+
+ +

Get the Turbo mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRElectraAc::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRElectraAc::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRElectraAc::send (const uint16_t repeat = kElectraAcMinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + + +
void IRElectraAc::setClean (const bool on)
+
+ +

Set the Clean mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRElectraAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+
Note
0 is auto, 1-3 is the speed
+ +
+
+ +

◆ setLightToggle()

+ +
+
+ + + + + + + + +
void IRElectraAc::setLightToggle (const bool on)
+
+ +

Set the Light (LED) Toggle mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRElectraAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRElectraAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRElectraAc::setRaw (const uint8_t new_code[],
const uint16_t length = kElectraAcStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the code array.
+
+
+ +
+
+ +

◆ setSwingH()

+ +
+
+ + + + + + + + +
void IRElectraAc::setSwingH (const bool on)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRElectraAc::setSwingV (const bool on)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRElectraAc::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRElectraAc::setTurbo (const bool on)
+
+ +

Set the Turbo mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRElectraAc::stateReset (void )
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRElectraAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRElectraAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRElectraAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRElectraAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRElectraAc::validChecksum (const uint8_t state[],
const uint16_t length = kElectraAcStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe state to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRElectraAc::_irsend
+
+private
+
+ +

instance of the IR send class

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRElectraAc::remote_state[kElectraAcStateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.map new file mode 100644 index 000000000..2ca5c6051 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.md5 new file mode 100644 index 000000000..ec7416486 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.md5 @@ -0,0 +1 @@ +b6e5f96f14e5e22330cef83a09e5f30d \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRElectraAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e49f5d0ec77f1592c5866ed19cd0939087f865f4 GIT binary patch literal 3217 zcmZWs2{e>zAD>jp(x{u_+HPE;V#prGkiBG!Au$FavNQI5-(?+3$Yd$e*au@PF$@M- zCXua>aW%{|_T_u;ckcPV^PTU!=Y5}Z-v4u+=l}kn|8IE{jSO@yu=22iK%fhHx|$}y z=mFf}=b3@$;^h|yz`$&GUq=&k^7r+!qcRHwV%OHwR5uNHu~8JP&$-jt4Qse-tX?K3 zq{Ge!ah~YBc)w~wH%IjhQ=gf5xiiacw+*xN&00Up<0?#DCskebW!G-NYv63UcHc{N z+H-=dA_82;r(`A4wa&6aB;VHdKMUXC0Q;2pFOFIJIUR*&>gDZ0SCm8i5MA>_9-M+P zY8WkV-{v$m>98`D3x6&YK#^XZexefS&axe)q;sOab#c$d~rJMfN3 zB#J*Ocf8~G7k5)r6WlspYeyxbH<>FdE6aY(MJ^sA2DgbCtgQIZk~YmK3%_`4A}^9M@y2zw<&u{1?pkHZ#4_HW+BY)7VQy}o3$Z5p z&xcl4G~sYr+1W8ztfYW|fTp&#H-lm(7y3TxY*~5vB_5t6JYLynm9+e8ZQLbDL*sNt zMn(%BPaoCb$S5pSzRjx){>!p>;ECNxF;pz+u94A2(3LA!ghfStb~kM;EiHF9dpPa{ z{d#SA9Rf)s67MA?C%5`-@X%L=HLzrR`NByRo3K5R8JtIDU0p^?iy|Uy&w;s3&fd;0 zPbE;=%*^cj^0L=LcO=W#mD_^iy1u@R32A8p5A(0wf+v)fm8sJsl)eI=Aq0cjJW$|f z|1ddecDVa3U4v3pQ*$NaH5O}*W-u5m{{H@Q;c99TyFhI6*VGjJR6<*ulChbY2*~Sb zA0>A*lrO_{@xg-!_Fo`sPaGUl-wbgNG!H^O7G5~X@+2lD2|=Mnot>(n!^1WOI9$+}jPoa9_qq0goLlA-`%ox!va3=*pGnQhNfd=b zwY0T?@9pgD;I>!Nc=6c^-N3E`Lqlb4Z3UqR+iwP6VK9m)3g`0ja!g#@Z@>K(HSpvE znaovWpyT5sb2mZ#p{eOa!g`^M6PTZ$pF33>mH!@DOKg6`gwH*L9Rt=a=Fbs!AQ&B+Pt zw4EKNflLu$Vd2qB$O4#N0&7BGM5+cz&Suiq!z>g(&DdUz1#=S%wgb(fZw zs#~4IS(j}@&68{WHY`EYBAVf7BRKr(2<)W22`*S7FfMIU9G5|pP06mb{Re9C+2k1q zfje2Jky|<^6bhxEL~8bJdR1w-xP3xGdcQt`HY1(IA=v8bl)OCd`{v3nOck)+wysVc z+N$KZ{mBZe<*-riCGfO zU;;%kyZvpig4E8hoo|Q(!h^P%16Te`GcU2goU=7A*TZ$x^3Iwkd3;tBT3?c)wYhJb zgl}ENP)`gOfw+81|Gr|1O3xbakzvOnn{8ZNc=P!57km86>Xe@Tx8knqQoA1>8Fw3f zZ;3aEe@^!5;Qf})p8%7s&Kr&*G7&l`zUKoc!#y*1o}Z8p_NBBTvEhD|VN=l^pkfAimL&0VKw95p$(ErjeaFt3m=KFgm&kV^(9rWg?)#QOI^x966XPA^x~I#d*A9 zi$S)TSw*6z`1l5|9&V33#w@^Y^_e=3VYHU$BQW#T(@ab;Xf#?e{J8zc#>SPd1Eczi%zs=>|u78x0d!D0<-MhFBQs}@gn zUtiyZloa;GwY3{Vjtv*@CY0YtC&@jVN?0djldGz3UgG4GE!ZN}^BW)-Yw#^xEV|Eh z#hoTCEj8MNmd~X}Lz$*8CzO zBFzcCLcb1|;?|4Ia zX#|WGt`q9*?JcXUOuvckDWd-;4SWvHwuhOOmDQC$&e|SF6aLdaW9*uViOJ^HmY|@Z zdQn%vmJkR6fdm8xU*_c z-s`-(i2BV@1L`Gl$4YLevRo&H#%Q#a2#gp zej;7xF|T^>-aUZPoTlp?0BOxAQua47Hh!PRul%{r{v3UE#EClB(M}`Y5=XS>4WcC< z8XNyj%vxGn**Q6-VywVILPA1OXhe|nXr4I0_4SU^SB(vqhnbo=)tOs(6Dy!+R- z-tCQ<{M+`-Kb_*4EaB zilK#-C1I8lS!gujOVcwiZ*RNFDzopat66z@uPZpXbUZybTX3O@)z>8z6wLWMNCN|j z0D4vc{cAY@Y=jztXb(O1m^B_t$F;c(hdJe8@|d->i}&11qd zY)2e$NZPNwth`dV-j>kaXItLCv&Jh1Y+f@|**c?CukmHPsoH>`b{%aO?k9I; zDThn>d#|=u*VLreJjP`f7n453vgJ!Vu(r0ghR}x<)J|gWsjHtl2j=T0lg%ak*FK4C zQ|ApWEVvN}#ECrkzKq~bAdvINj~_jMj0y$?2NSI303j8*pIaMx;0H+F4+>=oZ4)La zA(2{KET95~vVg&k0P$IM1m&cqfoXL54GD>}3z6ppx{*?&WQC!4hc%c2o1iBO)jK_% zUlM+t|KbIoTt|C5AM&|kL_`FLo%u9#wCzVl@!^=SWmrTdm$&7V!18N-(bp2<%za#*1m;J=cq85!$$DVr|7#N&kX3j*T z73}zO9s4zK)6>&H5&9v5ythY1WRsjqmo;$z&w2m&Z}yqy){s3~Vv2?|IIcgKHXu4c zB-U$*XWkZ?*CRvf1N8_0;XDI1QbMcnw(j)FDVExy>BN;oJ>VY$q^D(|`R*<<>R$#{ BVk!Ut literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC-members.html new file mode 100644 index 000000000..2c328bcf2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC-members.html @@ -0,0 +1,135 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRFujitsuAC Member List
+
+
+ +

This is the complete list of members for IRFujitsuAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_cleanIRFujitsuACprivate
_cmdIRFujitsuACprivate
_fanSpeedIRFujitsuACprivate
_filterIRFujitsuACprivate
_irsendIRFujitsuACprivate
_modeIRFujitsuACprivate
_modelIRFujitsuACprivate
_outsideQuietIRFujitsuACprivate
_state_lengthIRFujitsuACprivate
_state_length_shortIRFujitsuACprivate
_swingModeIRFujitsuACprivate
_tempIRFujitsuACprivate
begin(void)IRFujitsuAC
buildFromState(const uint16_t length)IRFujitsuACprivate
buildState(void)IRFujitsuACprivate
calibrate(void)IRFujitsuACinline
convertFan(stdAc::fanspeed_t speed)IRFujitsuAC
convertMode(const stdAc::opmode_t mode)IRFujitsuAC
getClean(const bool raw=false)IRFujitsuAC
getCmd(const bool raw=false)IRFujitsuAC
getFanSpeed(void)IRFujitsuAC
getFilter(const bool raw=false)IRFujitsuAC
getMode(void)IRFujitsuAC
getModel(void)IRFujitsuAC
getOutsideQuiet(const bool raw=false)IRFujitsuAC
getPower(void)IRFujitsuAC
getRaw(void)IRFujitsuAC
getStateLength(void)IRFujitsuAC
getSwing(const bool raw=false)IRFujitsuAC
getTemp(void)IRFujitsuAC
IRFujitsuAC(const uint16_t pin, const fujitsu_ac_remote_model_t model=ARRAH2E, const bool inverted=false, const bool use_modulation=true)IRFujitsuACexplicit
off(void)IRFujitsuAC
on(void)IRFujitsuAC
remote_stateIRFujitsuACprivate
send(const uint16_t repeat=kFujitsuAcMinRepeat)IRFujitsuAC
setClean(const bool on)IRFujitsuAC
setCmd(const uint8_t cmd)IRFujitsuAC
setFanSpeed(const uint8_t fan)IRFujitsuAC
setFilter(const bool on)IRFujitsuAC
setMode(const uint8_t mode)IRFujitsuAC
setModel(const fujitsu_ac_remote_model_t model)IRFujitsuAC
setOutsideQuiet(const bool on)IRFujitsuAC
setPower(const bool on)IRFujitsuAC
setRaw(const uint8_t newState[], const uint16_t length)IRFujitsuAC
setSwing(const uint8_t mode)IRFujitsuAC
setTemp(const uint8_t temp)IRFujitsuAC
stateReset(void)IRFujitsuAC
stepHoriz(void)IRFujitsuAC
stepVert(void)IRFujitsuAC
toCommon(void)IRFujitsuAC
toCommonFanSpeed(const uint8_t speed)IRFujitsuACstatic
toCommonMode(const uint8_t mode)IRFujitsuACstatic
toggleSwingHoriz(const bool update=true)IRFujitsuAC
toggleSwingVert(const bool update=true)IRFujitsuAC
toString(void)IRFujitsuAC
validChecksum(uint8_t *state, const uint16_t length)IRFujitsuACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC.html new file mode 100644 index 000000000..3259fb80e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC.html @@ -0,0 +1,1707 @@ + + + + + + + +IRremoteESP8266: IRFujitsuAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Fujitsu A/C messages. + More...

+ +

#include <ir_Fujitsu.h>

+
+Collaboration diagram for IRFujitsuAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRFujitsuAC (const uint16_t pin, const fujitsu_ac_remote_model_t model=ARRAH2E, const bool inverted=false, const bool use_modulation=true)
 Class Constructor. More...
 
void setModel (const fujitsu_ac_remote_model_t model)
 Set the currently emulated model of the A/C. More...
 
fujitsu_ac_remote_model_t getModel (void)
 Get the currently emulated/detected model of the A/C. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kFujitsuAcMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void stepHoriz (void)
 Request the A/C to step the Horizontal Swing. More...
 
void toggleSwingHoriz (const bool update=true)
 Request the A/C to toggle the Horizontal Swing mode. More...
 
void stepVert (void)
 Request the A/C to step the Vertical Swing. More...
 
void toggleSwingVert (const bool update=true)
 Request the A/C to toggle the Vertical Swing mode. More...
 
void setCmd (const uint8_t cmd)
 Set the requested (special) command part for the A/C message. More...
 
uint8_t getCmd (const bool raw=false)
 Set the requested (special) command part for the A/C message. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFanSpeed (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFanSpeed (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwing (const uint8_t mode)
 Set the requested swing operation mode of the A/C unit. More...
 
uint8_t getSwing (const bool raw=false)
 Get the requested swing operation mode of the A/C unit. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
bool setRaw (const uint8_t newState[], const uint16_t length)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t getStateLength (void)
 Get the length (size) of the state code for the current configuration. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setClean (const bool on)
 Set the Clean mode of the A/C. More...
 
bool getClean (const bool raw=false)
 Get the Clean mode status of the A/C. More...
 
void setFilter (const bool on)
 Set the Filter mode status of the A/C. More...
 
bool getFilter (const bool raw=false)
 Get the Filter mode status of the A/C. More...
 
void setOutsideQuiet (const bool on)
 Set the Outside Quiet mode of the A/C. More...
 
bool getOutsideQuiet (const bool raw=false)
 Get the Outside Quiet mode status of the A/C. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t *state, const uint16_t length)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + +

+Private Member Functions

void buildState (void)
 (Re)Build the state from the currently configured settings. More...
 
void buildFromState (const uint16_t length)
 Build the internal state/config from the current (raw) A/C message. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kFujitsuAcStateLength]
 The state of the IR remote. More...
 
uint8_t _temp
 
uint8_t _fanSpeed
 
uint8_t _mode
 
uint8_t _swingMode
 
uint8_t _cmd
 
fujitsu_ac_remote_model_t _model
 
uint8_t _state_length
 
uint8_t _state_length_short
 
bool _outsideQuiet
 
bool _clean
 
bool _filter
 
+

Detailed Description

+

Class for handling detailed Fujitsu A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRFujitsuAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IRFujitsuAC::IRFujitsuAC (const uint16_t pin,
const fujitsu_ac_remote_model_t model = ARRAH2E,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class Constructor.

+
Parameters
+ + + + + +
[in]pinGPIO to be used when sending.
[in]modelThe enum for the model of A/C to be emulated.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ buildFromState()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRFujitsuAC::buildFromState (const uint16_t length)
+
+private
+
+ +

Build the internal state/config from the current (raw) A/C message.

+
Parameters
+ + +
[in]lengthSize of the current/used (raw) A/C message array.
+
+
+ +
+
+ +

◆ buildState()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRFujitsuAC::buildState (void )
+
+private
+
+ +

(Re)Build the state from the currently configured settings.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRFujitsuAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::convertFan (stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + + +
bool IRFujitsuAC::getClean (const bool raw = false)
+
+ +

Get the Clean mode status of the A/C.

+
Parameters
+ + +
[in]rawDo we get the result from base data?
+
+
+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getCmd()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::getCmd (const bool raw = false)
+
+ +

Set the requested (special) command part for the A/C message.

+
Parameters
+ + +
[in]rawDo we need to get it from first principles from the raw data?
+
+
+
Returns
The special command code.
+ +
+
+ +

◆ getFanSpeed()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::getFanSpeed (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getFilter()

+ +
+
+ + + + + + + + +
bool IRFujitsuAC::getFilter (const bool raw = false)
+
+ +

Get the Filter mode status of the A/C.

+
Parameters
+ + +
[in]rawDo we get the result from base data?
+
+
+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getModel()

+ +
+
+ + + + + + + + +
fujitsu_ac_remote_model_t IRFujitsuAC::getModel (void )
+
+ +

Get the currently emulated/detected model of the A/C.

+
Returns
The enum representing the model of A/C.
+ +
+
+ +

◆ getOutsideQuiet()

+ +
+
+ + + + + + + + +
bool IRFujitsuAC::getOutsideQuiet (const bool raw = false)
+
+ +

Get the Outside Quiet mode status of the A/C.

+
Parameters
+ + +
[in]rawDo we get the result from base data?
+
+
+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRFujitsuAC::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRFujitsuAC::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getStateLength()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::getStateLength (void )
+
+ +

Get the length (size) of the state code for the current configuration.

+
Returns
The length of the state array required for this config.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::getSwing (const bool raw = false)
+
+ +

Get the requested swing operation mode of the A/C unit.

+
Parameters
+ + +
[in]rawDo we need to get it from first principles from the raw data?
+
+
+
Returns
The contents of the swing state/mode.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRFujitsuAC::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::send (const uint16_t repeat = kFujitsuAcMinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setClean (const bool on)
+
+ +

Set the Clean mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setCmd()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setCmd (const uint8_t cmd)
+
+ +

Set the requested (special) command part for the A/C message.

+
Parameters
+ + +
[in]cmdThe special command code.
+
+
+ +
+
+ +

◆ setFanSpeed()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setFanSpeed (const uint8_t fanSpeed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanSpeedThe desired setting.
+
+
+ +
+
+ +

◆ setFilter()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setFilter (const bool on)
+
+ +

Set the Filter mode status of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setModel()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setModel (const fujitsu_ac_remote_model_t model)
+
+ +

Set the currently emulated model of the A/C.

+
Parameters
+ + +
[in]modelAn enum representing the model to support/emulate.
+
+
+ +
+
+ +

◆ setOutsideQuiet()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setOutsideQuiet (const bool on)
+
+ +

Set the Outside Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool IRFujitsuAC::setRaw (const uint8_t newState[],
const uint16_t length 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]newStateA valid code for this protocol.
[in]lengthSize of the newState array.
+
+
+
Returns
true, if successful; Otherwise false. (i.e. size check)
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setSwing (const uint8_t swingMode)
+
+ +

Set the requested swing operation mode of the A/C unit.

+
Parameters
+ + +
[in]swingModeThe swingMode code for the A/C. Vertical, Horizon, or Both. See constants for details.
+
+
+
Note
Not all models support all possible swing modes.
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ stepHoriz()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::stepHoriz (void )
+
+ +

Request the A/C to step the Horizontal Swing.

+ +
+
+ +

◆ stepVert()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::stepVert (void )
+
+ +

Request the A/C to step the Vertical Swing.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRFujitsuAC::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRFujitsuAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRFujitsuAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toggleSwingHoriz()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::toggleSwingHoriz (const bool update = true)
+
+ +

Request the A/C to toggle the Horizontal Swing mode.

+
Parameters
+ + +
[in]updateDo we need to update the general swing config?
+
+
+ +
+
+ +

◆ toggleSwingVert()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::toggleSwingVert (const bool update = true)
+
+ +

Request the A/C to toggle the Vertical Swing mode.

+
Parameters
+ + +
[in]updateDo we need to update the general swing config?
+
+
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRFujitsuAC::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRFujitsuAC::validChecksum (uint8_t * state,
const uint16_t length 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _clean

+ +
+
+ + + + + +
+ + + + +
bool IRFujitsuAC::_clean
+
+private
+
+ +
+
+ +

◆ _cmd

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_cmd
+
+private
+
+ +
+
+ +

◆ _fanSpeed

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_fanSpeed
+
+private
+
+ +
+
+ +

◆ _filter

+ +
+
+ + + + + +
+ + + + +
bool IRFujitsuAC::_filter
+
+private
+
+ +
+
+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRFujitsuAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _mode

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_mode
+
+private
+
+ +
+
+ +

◆ _model

+ +
+
+ + + + + +
+ + + + +
fujitsu_ac_remote_model_t IRFujitsuAC::_model
+
+private
+
+ +
+
+ +

◆ _outsideQuiet

+ +
+
+ + + + + +
+ + + + +
bool IRFujitsuAC::_outsideQuiet
+
+private
+
+ +
+
+ +

◆ _state_length

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_state_length
+
+private
+
+ +
+
+ +

◆ _state_length_short

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_state_length_short
+
+private
+
+ +
+
+ +

◆ _swingMode

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_swingMode
+
+private
+
+ +
+
+ +

◆ _temp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_temp
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::remote_state[kFujitsuAcStateLength]
+
+private
+
+ +

The state of the IR remote.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.map new file mode 100644 index 000000000..3099d5f4a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 new file mode 100644 index 000000000..cbcc342bb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 @@ -0,0 +1 @@ +338c5a3ac726e2794d93445b33b8db6c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRFujitsuAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..595272976a81a342ff5b8756322a7fe06f26700a GIT binary patch literal 3164 zcmY+H2{=^iAIA^bW9;tOhEa&Jcg5JkSjJBFtR=Z+85d*5QX)$wQ^b&nk|kS`1|tk( z>=AJhN%ox?%I<%<_xbE^eet+-x^E>x!tW3B#L^uEd;6j-q?Z7q& zJa4nHfY&MhXZv8oa>d*P2^{}A@;(%$0RSg23aM|8eYTo&+eTnkqJ8otp$JX;pb8bv zJXLRTmD=1`fO^s52jje+bCI*RL)nUID(RBxDStNoX_s7~?^`>w2VIZ>J&KkkdghBg zo0(b(U3@x)fAi5~)0T$zx3%3PeSbJS91|Ydx7Xl{nZx`Xo!?z)2)wOJdOphrXW|qo z+2BVoQde7NY&p|RR4ia^rsFQ7tP)W%V`Hx2j;P<28h4~J6y2Aq_9p6QhlYp0Z!He4 zm8H5i9v?-z)&1G_GN3lB`$SATERs`DP;jjx1EG;Z$BM3G{{1m!oIvZ0rD0^GmPU$U zcsQ{?-y*j2C6qi{VlUsY(Q=ZXs+n@4J(!J+t+|z3FFB}j*SMK2`Zx0Ip*S-$v*g`8 z5=m6_LLk!7QAp9PRx;FCH_^IFR8~?F=+isa)<|jHrO)p!N|hV} zmMagmAGF2B#xf$2$cu`EQ_|AR1SQY8`F0A$YyZcpsf7j7#)fCE?>U}d)@p`_GHkRa3#)Z}dTFw| zE0cDQiG?LKWd5V&>*cQWvrNDr0Rgi`qpKJ`0RajDpOPZ8-gK<1*F+=|07>8KEa*dH z#+cC1&<%QNX(>A}Ff=qf5WyhnT0Z>hnp?rREU{tps>k)~vY&7Kj#(LDAWcAkq~v4@ zIgYg|Y}t`QrCw=G;M!RwP67Zy(VY>v8y~+Zt8;X8REt>^d77QQyJu)%urpch+sg=W za&eLU)lVraqg$e0*)1*(eF%uM`>H`Elg}t97+t!=uX}tDa;x68oVq#PZtLlZr%;gR zJR8LvO9gp(c{k{EFf%T&!TDKgTy+8>r>3T$Vq!>eZhE~wsyLsC@jKStCxAM)l$I8Q zhV9|YP#DbE!9maiH!BE6nVg*597w$C=f?&~Ji!sqc=N9cBMe4eL{!wf#x;1ZN7(PY z$cX>@Kfc(>r(;1e9}@_P6%~q^7BT{Yf;ex5AnxY`R$zB`_l;}$NYiaS$1-OIaIAuY z)8o-UC(g*p>Em#kKB~eoRcVizPYOxO$+5%X@Q%Jd6L6FQyOK)*f7G}-pA$NhZdOoG zAbIv|cUtKW{I?^G+WPpdtx&+r-2l4GH*li{ySG@RGsF}bk?fnPeczjQCIQ?CGWaWC zhxb*3ZT8hY1F7a!{83h~?-K%nL~@<43aQeoNAR;5Rc` z@$kiVPZ-bs^F(x9g;R5qHr{V0%W4a+vrS{AFucpD@hT2S*5+v^`^^Y%=}2Z`zxM>k zl$bS;tZX|(SD?o8b^4F81IskTm{@YKeF!6X;w-%7pQbliJVNceNN z+CtiEMU~P^o)!Q4)KI;o9L@!?)^`H%MSQuc;2)?H5nO}%Emo;#|pQ5 zqt(}^N$ZXDUZ1dBixg=lr#=taddr833e`THd~bs$b#G}S5Knt@v@w79r9#qWIT$cXcGT2A@{E04i@9&dj> zW+7zkYT?@2+74>*GNtrhN^oP0LH@Vf`#0VqFz+>)FWmlYQ0{10?$|no{`MuPsf{+< z{b_iZDqFg|vO;;L8R8Z=U)i}tWkzI|r3B!tzLj<^WopZA4Ecn;AgT1iE?%*@voI5X zbU9&0hrY8pH|KkFZetFvrFFUX;zY~>COe$RpNLWex%2PRgPkNRkIQk)dv0<4-dN^O zouZ%;Hz&gKTQ@jfq=n0p{|BpoUP@l5zdN#z;}r2a#GU__WdFT6Gl4q9rG4d7&FDFTqCVZ!Ql*bb#*{YYa;h4H8pZ)tqLhpz~ zdS^(CN|m&E_|<7QdWkHh(Mg?W6zCPk`vR35CF{_ zh{?$KHRkbZ#pg7v#n*hp#GREezI#kyrn7N#KYz;!tc=y1?9NaKi982V?UCu}Uo{BG zTOL8d_~PO-MTGUm#XDrL=Io$GcEFj0QBe0EiJ8xhgn(im9$uY%1&S9r0oyO%*ior$ zYLWos+M#tTRbe-;?CkDZ%1{4cU}#tsy^o0keIE*i#@Ll0Z`^o2sM#2b5JzZfRYhzs zu@743Aeht5nCsjiz{1*E?jysVL2MLJj?n#!!rJs6wf^O8Qxqx-BV1ySfNu}(=zVcH z+G7=#RaAro2M2=%QhmJ$xZKpK)X zsb+Z*@zJI~KqY_i{N~NG#wI3HXboj;ZO+72m4L|Y?QK9=UkpH+n6&z+l6_R~Ol$a$ zzGaU10E_&&7C-8r(Ccd$5~5~iZf<+&(zM;d$L}={w!)T&$-dQ7BUM)iGkQBa$<58c zz`%fwz5QLVh9iu1_4FX!-NlE?T;j&Z-6#~wMVU13FYg0vN{5Pzi*wx_+!&IexIc59UU0~AtjGwZoLB@u;?=m3{=dGqM?4tt(wJYPEZV!yLCNl zt3LqbI!M!~dh;`~vaBT~B_4VtI?J@XftB`2%Sl6`j*d=k#I`)BVm!nMU7Q+zbbu@K zY=VI~)7lb$G9F@rF765?p{EQMwj)4i5-uL2LHYlW>sd5^H8`A{9jqJ}hoXJ|{ylH# zMtoBIl+;R2Xhi<{59qY@Kc#>%W1hi+B$U{;czl9QwsI(QXU`Swx%qiuh{

+ + + + + + +IRremoteESP8266: Member List + + + + + + + + + +

+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRGoodweatherAc Member List
+
+
+ +

This is the complete list of members for IRGoodweatherAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRGoodweatherAcprivate
begin(void)IRGoodweatherAc
calibrate(void)IRGoodweatherAcinline
convertFan(const stdAc::fanspeed_t speed)IRGoodweatherAc
convertMode(const stdAc::opmode_t mode)IRGoodweatherAc
convertSwingV(const stdAc::swingv_t swingv)IRGoodweatherAc
getCommand(void)IRGoodweatherAc
getFan(void)IRGoodweatherAc
getLight(void)IRGoodweatherAc
getMode()IRGoodweatherAc
getPower(void)IRGoodweatherAc
getRaw(void)IRGoodweatherAc
getSleep(void)IRGoodweatherAc
getSwing(void)IRGoodweatherAc
getTemp(void)IRGoodweatherAc
getTurbo(void)IRGoodweatherAc
IRGoodweatherAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRGoodweatherAcexplicit
off(void)IRGoodweatherAc
on(void)IRGoodweatherAc
remoteIRGoodweatherAcprivate
send(const uint16_t repeat=kGoodweatherMinRepeat)IRGoodweatherAc
setCommand(const uint8_t cmd)IRGoodweatherAc
setFan(const uint8_t speed)IRGoodweatherAc
setLight(const bool toggle)IRGoodweatherAc
setMode(const uint8_t mode)IRGoodweatherAc
setPower(const bool on)IRGoodweatherAc
setRaw(const uint64_t state)IRGoodweatherAc
setSleep(const bool toggle)IRGoodweatherAc
setSwing(const uint8_t speed)IRGoodweatherAc
setTemp(const uint8_t temp)IRGoodweatherAc
setTurbo(const bool toggle)IRGoodweatherAc
stateReset(void)IRGoodweatherAc
toCommon(void)IRGoodweatherAc
toCommonFanSpeed(const uint8_t speed)IRGoodweatherAcstatic
toCommonMode(const uint8_t mode)IRGoodweatherAcstatic
toString()IRGoodweatherAc
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc.html new file mode 100644 index 000000000..d1d4643d4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc.html @@ -0,0 +1,1119 @@ + + + + + + + +IRremoteESP8266: IRGoodweatherAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Goodweather A/C messages. + More...

+ +

#include <ir_Goodweather.h>

+
+Collaboration diagram for IRGoodweatherAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRGoodweatherAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kGoodweatherMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode ()
 Get the operating mode setting of the A/C. More...
 
void setSwing (const uint8_t speed)
 Set the Vertical Swing speed of the A/C. More...
 
uint8_t getSwing (void)
 Get the Vertical Swing speed of the A/C. More...
 
void setSleep (const bool toggle)
 Set the Sleep Toggle setting of the A/C. More...
 
bool getSleep (void)
 Get the Sleep Toggle setting of the A/C. More...
 
void setTurbo (const bool toggle)
 Set the Turbo Toggle setting of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo Toggle setting of the A/C. More...
 
void setLight (const bool toggle)
 Set the Light (LED) Toggle setting of the A/C. More...
 
bool getLight (void)
 Get the Light (LED) Toggle setting of the A/C. More...
 
void setCommand (const uint8_t cmd)
 Set the remote Command type/button pressed. More...
 
uint8_t getCommand (void)
 Get the Command type/button pressed from the current settings. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t state)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
uint8_t convertSwingV (const stdAc::swingv_t swingv)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString ()
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + +

+Static Public Member Functions

static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint64_t remote
 The state of the IR remote in IR code form. More...
 
+

Detailed Description

+

Class for handling detailed Goodweather A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRGoodweatherAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRGoodweatherAc::IRGoodweatherAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRGoodweatherAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRGoodweatherAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRGoodweatherAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + + + + +
uint8_t IRGoodweatherAc::convertSwingV (const stdAc::swingv_t swingv)
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]swingvThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getCommand()

+ +
+
+ + + + + + + + +
uint8_t IRGoodweatherAc::getCommand (void )
+
+ +

Get the Command type/button pressed from the current settings.

+
Returns
The command/button that was issued/pressed.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRGoodweatherAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + + +
bool IRGoodweatherAc::getLight (void )
+
+ +

Get the Light (LED) Toggle setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + +
uint8_t IRGoodweatherAc::getMode ()
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRGoodweatherAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint64_t IRGoodweatherAc::getRaw (void )
+
+ +

Get a copy of the internal state as a valid code for this protocol.

+
Returns
A valid code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRGoodweatherAc::getSleep (void )
+
+ +

Get the Sleep Toggle setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
uint8_t IRGoodweatherAc::getSwing (void )
+
+ +

Get the Vertical Swing speed of the A/C.

+
Returns
The native swing speed setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRGoodweatherAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRGoodweatherAc::getTurbo (void )
+
+ +

Get the Turbo Toggle setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::send (const uint16_t repeat = kGoodweatherMinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setCommand()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setCommand (const uint8_t cmd)
+
+ +

Set the remote Command type/button pressed.

+
Parameters
+ + +
[in]cmdThe command/button that was issued/pressed.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setLight (const bool toggle)
+
+ +

Set the Light (LED) Toggle setting of the A/C.

+
Parameters
+ + +
[in]toggletrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setRaw (const uint64_t state)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]stateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setSleep (const bool toggle)
+
+ +

Set the Sleep Toggle setting of the A/C.

+
Parameters
+ + +
[in]toggletrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setSwing (const uint8_t speed)
+
+ +

Set the Vertical Swing speed of the A/C.

+
Parameters
+ + +
[in]speedThe speed to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::setTurbo (const bool toggle)
+
+ +

Set the Turbo Toggle setting of the A/C.

+
Parameters
+ + +
[in]toggletrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRGoodweatherAc::stateReset (void )
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRGoodweatherAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRGoodweatherAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRGoodweatherAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + +
String IRGoodweatherAc::toString ()
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRGoodweatherAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote

+ +
+
+ + + + + +
+ + + + +
uint64_t IRGoodweatherAc::remote
+
+private
+
+ +

The state of the IR remote in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map new file mode 100644 index 000000000..660cc0842 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 new file mode 100644 index 000000000..960e5d2a0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 @@ -0,0 +1 @@ +bce379f76240220988c09046a0d5f283 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f6e66cbcbaa16378d20cb12863238be65e269d GIT binary patch literal 4102 zcmZu!1yqx3A0McIgj~T3GExMQMrz1_Q39hIX+#mFMB&mUNSDNDqy#opbw*`A&EdH3%5$1nboy4tEVlu$|t1VV#UQ`QG73cLd;$iU~E ze^4n{$ZR!Kl_6*6uiTd6BnX7I38}1L=#{lP>8oqFd)B==#|y?JEvlQnQ8Dwz+v%?xry6uFMsVs5f7Wiu!(UBPui{>dA-~=9+5@B)FZE zL7<{Oi@;7jKTg@WyzgtHCl{Zd{a|o@C1A?l8`rRM*H?}YnaFifL4jdTNZ#uxLichM zeIDI49!2ik71<3`BDeVYqjlsCKjQ6bpdZ3%?bq-Pb3(rp%uX^&a&v=ZefQFuVvMJE z7Kb0%*`+s87o2Z&tW7rIEQ2SsvZRLa+-Yw|v6xpp@f4_BsjGYn&p8br>+0(Vs~6@s zH{6w^%x}q6zmSYAO+^Z6W?l{(T2}cG#R1_7X(C6Xt3d`v5aPs%>-^Z}rO|%X? zF>)y_DdCishI)E>vaqmFT)sSgw7dMGskoRYnnAF0aFEv5*Y{{|wJ+hO>dfA+U$%;h zitp;`iUZG1S0=?#0zgwVd%mkOm%9RTBr+@#xAn)QLR9RW+^y58EtjdRQ_JGfE ztnis}Wfhgg)YR_Ehu!thf0LaY?cNj+h-qw;_I`tHJI(m`QCVGGJt8J%rgq$_U|PR6 zB7(xn$?5apAdjG6Y`J;e`vuWDDGcgItz+s=y&c)bi)uqdLu7*_heNIYzPz%smM$ix zqlx9^IAvdgNF?*`T2^ZZ#z2`c@YR} z(zoVyE+ zy?fYwWe%4a9v@E&4lg}FkbU9j(r789zP|o5oS2f5a=bfkZPDbR6%fe7!*jTPg;g4& zYha-C;K2=$da~6P-+h<0E{Re}`Vz9ZxHv9u?&q_;e@Z%k=hC62p_%=Xr<8TqjSPW6 zsKi1;jZ3>GCt0besCxVQ61aMPUWGy(Y7izSCMBh%yn=$LV$A5$W7GFz`M6NZ_KuF1 z-@e_aqob?$TxVlqVrnL?HOZ@A0D(Uqe1jXo7*xK0FNwigHhJh78Qoi- zYPo#*@(oeZs=JK16~n}l#z3v4j0|;U<%{Lb{R~5{iyDq?)M#7<=GELyfHv({>bhC~ zVkG#NGFsE!+Qi=P7KvAIKt3uX!(r^yF<>DKw+%I1?cet|1xc=`sCc|gFx1gRb8>R_ zkJX{>`N~0)J4!5~mMJW5qp@lZSH}a&l(ATXl5QSn zU|?uEzr%?#I_5LM`sF1)$Xn^iPO(6@x~O{_WaYUWiHiAJsHyh)`7)os;iq3>*H~+sCKMby`s+o-H;zn-%W4<|j>V=5Uyx z@kWz)1~X|q>?6eQLanW>pZ@+7yS05oDNJo(VBl*{5>FvNSa`M4L=+nTT24vM$q_z0I5<{)_)A9UDj&W7p+%hgtXkK@mLiO9 zS9f>cU{3PO6t>iF$F(9b80>Jp_^({<=R4z_hI}7#{6oXS0LiFZTC(!;^2R_Vq5#=? z=N5kbs^93bdi3q&*e$m(%%*lkUc*+)PDN)~UIQq`PR*4XF74ZyYR4NL?zURzaOqX< zSkB1{_vAS|taTipDX1c62S}H&&MOc4b_`U^@o%m9pVIsdv|eTMsonyq;$FO+%vAt0 z!{if~#Gkc5*CILoKN3N4HLNwc)^zNo&(+Fyo9F-G^}Ger)hu-E8dW^~c?AS!04L0$ z3yqqRP7rvHfe%Yj6k~{!W$QEBgN^AhdiLfAqZO7-T=Ft(UQ%XFYGVwn{Z^`uzOTZ= zVU3FuO6xkP^z_4bw-g{Yo4>lWv>Azp|3>5JmREvC+w`a1!8f>d;|n1o&fmpFMMe89 z!}5Vpy_zfjJQ+DZm=m9w$*iZRx3yhuKS*lh>>L{%O_ju>GZ)HeCE_(%sFA9ML{4{x zQW=_<47d1t%E-#5i$A3k5)x8R9xLh3x|{Uwod{57^S5m?Gmj*nO=((Kun4yv*hcSM z#?=>Ph&&)oPfzzdJK1mE`Klpc-D=SalalxFkbKs5A_=;&%(ObJrbe8Oo_>+ghWPQ` z*|DPPJ2f&<%JnCtqoZTxM;-Pa(PfW_Ha9n?XJGgQ+6!U8xE7mXuUl-IR~U zoAIu$ON@++fQM(EqEINmy$So7nHh+P`+{zMe*U}aYB7vu!O+H#D*N-(V{aB#RwkHB z*6|eLWQU#^=E8ONE>jRL6PA>frKzq?DeJTIa}aUHB`KNWPuzR(^eIwHiw22AW=TB{ zURrV>qk$@GYEn-&d6IJo3B?T;>lEl?7N%O@;K0pCOQmQ-z7!!#b)f$ICKZondr>mP zmFhCm|2naYA zJ~$jc*Ps63Ei$RzXP1wSjcu#SvDOU8<424^F}kG0c4uLzKSP3wnK|?9C~#_pXegZ> z2QtfmQol!N^(Q$u7~I_4x5^V4g{?G=jQ#{c_-%GECZkXZuV34|Abu^>cuHuM{ZaSK z{%~uSMcQ4>WqWHYAB~OxaD%*f@xt}5zfc!4l9EDz4+3%yDZ5`8oS)BWjJ48oaNu)s zaS<@9i3sDbGAX;S@c8j9;2!KiXe@GmY3zZ=SA+JaeByrN=ohp$|TPEZIrt*HNz``6*&&F$?A9Kh;C((`<+u!Mh#Wmfg^Y3!KK zc>P-5%8CtGz?E;6A+7$ztsl?Ym`(!I@+TB)J=d*1#V{$^*l;jQI&sL!u>n_*8?Z|H zrQ96meHs%(4R&uLas#fR-R1|b($gye|2OL!X>V^|F!UtmJ)zkqYSUDl@M+_76ncEL>!t#q^6>J z*d9c3|Nh7sTmnkt?d`oaFXgdvKaL$CL>OtSsYwQ;RSEKkpPXDA!O-8haU*tc`XoHV zc^mei^CD<&bXnP>(GnxS-BA;2R_SZNAAuMkw}pjM!|ONp_qz#%oUAMs+lLQd9);G` z)O?(nFbyDtu^v=aiMmT?4|y;%GdCcD-pKkwM;2FCwY0Ub0GCL8T?7J@L(=J+Jm~$l zvs3t;J9p&$+wp6L&d&TH`@H1GgyI*jt~OK6-kRy6q2L*R z(9s10N&?jI=+UDuZGmUutz$hsms_l!iL|Qg>0N~Yn}~1nTu)d9tqxXwQ&Zlv-_XvX z_8&hofh4W0tZZy<=4qq~xi62!g89Sd*|YejCO8B<5dgE5xCUQYU1c8iA?`V+2%3Ka zUe;@^VSeFD-UZ+NH54o`sQK0%RHYpAv0F1UGVxnmAOiSelw=zPWkd>W{ivy|)mb zorR8{9U-PIJ`&K_FaR;RlN|#;fB(hrwWULQpai0>Kjp{DOqJ~HxVyT#{0?VR$!ck! z;uOG}p3fax*>!a=AoR&OO8)JtG1nDrZ8<|jLl@kog)AFC=HH7(mzUow9=?I31Md31 zsp)1nd*C}@u|rxL-4}z+%2lxAnL7@6xZ5c-%tX4iXL^y%F4Pf=O@MP zw?Q(FwJvUK%-Gp+ud1rjEa^*QAa1!GA8dlZxxywx5roAGJC2p*0g?dbI5;Hae69k9 zfec=`-gYL(D((I=7B*!AhznEzXY-TI;Jc%PgV!v|BqBQcCI?4*t`I*z|2c^g_f}^M zZnCqp*O-+npmR?b25`98!|i!77rfM1g{207v$3(U6dW$*Hm3=auj1+|vOJEpA3^Jp zVRK}>MJFaEE?&HNon=?9x8TUB7m&in?yj?V3$WN;-rfl*DP-+Hx;8g9Y``p}`9>xk zkGE)UZq_X6NmD`G($do6=HyhgIO4os>$PbMM1i?Hq3bF1+=l%tr2kC2|M>6v@Ha$9 zsSkn_@n1)J)>H`S=$sa+_ySB$OSEqQWfc8?i7@$!q;x8WOxW24TT(8c=6x%AFxW$o M_q3HO6m5e41NUhA00000 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC-members.html new file mode 100644 index 000000000..7c4b5e991 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC-members.html @@ -0,0 +1,135 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRGreeAC Member List
+
+
+ +

This is the complete list of members for IRGreeAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRGreeACprivate
_modelIRGreeACprivate
begin(void)IRGreeAC
calibrate(void)IRGreeACinline
checksum(const uint16_t length=kGreeStateLength)IRGreeACprivate
convertFan(const stdAc::fanspeed_t speed)IRGreeAC
convertMode(const stdAc::opmode_t mode)IRGreeAC
convertSwingV(const stdAc::swingv_t swingv)IRGreeAC
fixup(void)IRGreeACprivate
getDisplayTempSource(void)IRGreeAC
getFan(void)IRGreeAC
getIFeel(void)IRGreeAC
getLight(void)IRGreeAC
getMode(void)IRGreeAC
getModel(void)IRGreeAC
getPower(void)IRGreeAC
getRaw(void)IRGreeAC
getSleep(void)IRGreeAC
getSwingVerticalAuto(void)IRGreeAC
getSwingVerticalPosition(void)IRGreeAC
getTemp(void)IRGreeAC
getTimer(void)IRGreeAC
getTimerEnabled(void)IRGreeACprivate
getTurbo(void)IRGreeAC
getUseFahrenheit(void)IRGreeAC
getWiFi(void)IRGreeAC
getXFan(void)IRGreeAC
IRGreeAC(const uint16_t pin, const gree_ac_remote_model_t model=gree_ac_remote_model_t::YAW1F, const bool inverted=false, const bool use_modulation=true)IRGreeACexplicit
off(void)IRGreeAC
on(void)IRGreeAC
remote_stateIRGreeACprivate
send(const uint16_t repeat=kGreeDefaultRepeat)IRGreeAC
setDisplayTempSource(const uint8_t mode)IRGreeAC
setFan(const uint8_t speed)IRGreeAC
setIFeel(const bool on)IRGreeAC
setLight(const bool on)IRGreeAC
setMode(const uint8_t new_mode)IRGreeAC
setModel(const gree_ac_remote_model_t model)IRGreeAC
setPower(const bool on)IRGreeAC
setRaw(const uint8_t new_code[])IRGreeAC
setSleep(const bool on)IRGreeAC
setSwingVertical(const bool automatic, const uint8_t position)IRGreeAC
setTemp(const uint8_t temp, const bool fahrenheit=false)IRGreeAC
setTimer(const uint16_t minutes)IRGreeAC
setTimerEnabled(const bool on)IRGreeACprivate
setTurbo(const bool on)IRGreeAC
setUseFahrenheit(const bool on)IRGreeAC
setWiFi(const bool on)IRGreeAC
setXFan(const bool on)IRGreeAC
stateReset(void)IRGreeAC
toCommon(void)IRGreeAC
toCommonFanSpeed(const uint8_t speed)IRGreeACstatic
toCommonMode(const uint8_t mode)IRGreeACstatic
toCommonSwingV(const uint8_t pos)IRGreeACstatic
toString(void)IRGreeAC
validChecksum(const uint8_t state[], const uint16_t length=kGreeStateLength)IRGreeACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC.html new file mode 100644 index 000000000..caaba0c2d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC.html @@ -0,0 +1,1751 @@ + + + + + + + +IRremoteESP8266: IRGreeAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Gree A/C messages. + More...

+ +

#include <ir_Gree.h>

+
+Collaboration diagram for IRGreeAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRGreeAC (const uint16_t pin, const gree_ac_remote_model_t model=gree_ac_remote_model_t::YAW1F, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kGreeDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setModel (const gree_ac_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
gree_ac_remote_model_t getModel (void)
 Get/Detect the model of the A/C. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp, const bool fahrenheit=false)
 Set the temp. in degrees. More...
 
uint8_t getTemp (void)
 Get the set temperature. More...
 
void setUseFahrenheit (const bool on)
 Set the default temperature units to use. More...
 
bool getUseFahrenheit (void)
 Get the default temperature units in use. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t new_mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setLight (const bool on)
 Set the Light (LED) setting of the A/C. More...
 
bool getLight (void)
 Get the Light (LED) setting of the A/C. More...
 
void setXFan (const bool on)
 Set the XFan (Mould) setting of the A/C. More...
 
bool getXFan (void)
 Get the XFan (Mould) setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo setting of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo setting of the A/C. More...
 
void setIFeel (const bool on)
 Set the IFeel setting of the A/C. More...
 
bool getIFeel (void)
 Get the IFeel setting of the A/C. More...
 
void setWiFi (const bool on)
 Set the Wifi (enabled) setting of the A/C. More...
 
bool getWiFi (void)
 Get the Wifi (enabled) setting of the A/C. More...
 
void setSwingVertical (const bool automatic, const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVerticalAuto (void)
 Get the Vertical Swing Automatic mode setting of the A/C. More...
 
uint8_t getSwingVerticalPosition (void)
 Get the Vertical Swing position setting of the A/C. More...
 
uint16_t getTimer (void)
 Get the timer time value from the A/C. More...
 
void setTimer (const uint16_t minutes)
 Set the A/C's timer to turn off in X many minutes. More...
 
void setDisplayTempSource (const uint8_t mode)
 Set temperature display mode. i.e. Internal, External temperature sensing. More...
 
uint8_t getDisplayTempSource (void)
 Get the temperature display mode. i.e. Internal, External temperature sensing. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
uint8_t convertSwingV (const stdAc::swingv_t swingv)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kGreeStateLength)
 Verify the checksum is valid for a given state. More...
 
+ + + + + + + + + + + + + +

+Private Member Functions

void checksum (const uint16_t length=kGreeStateLength)
 Calculate and set the checksum values for the internal state. More...
 
void fixup (void)
 Fix up the internal state so it is correct. More...
 
void setTimerEnabled (const bool on)
 Set the timer enable setting of the A/C. More...
 
bool getTimerEnabled (void)
 Get the timer enabled setting of the A/C. More...
 
+ + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kGreeStateLength]
 The state in native IR code form. More...
 
gree_ac_remote_model_t _model
 
+

Detailed Description

+

Class for handling detailed Gree A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRGreeAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IRGreeAC::IRGreeAC (const uint16_t pin,
const gree_ac_remote_model_t model = gree_ac_remote_model_t::YAW1F,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + + +
[in]pinGPIO to be used when sending.
[in]modelThe enum of the model to be emulated.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRGreeAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRGreeAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRGreeAC::checksum (const uint16_t length = kGreeStateLength)
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+
Parameters
+ + +
[in]lengthThe size/length of the state array to fix the checksum of.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::convertSwingV (const stdAc::swingv_t swingv)
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]swingvThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ fixup()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRGreeAC::fixup (void )
+
+private
+
+ +

Fix up the internal state so it is correct.

+
Note
Internal use only.
+ +
+
+ +

◆ getDisplayTempSource()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::getDisplayTempSource (void )
+
+ +

Get the temperature display mode. i.e. Internal, External temperature sensing.

+
Returns
The current temp source being displayed.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getIFeel()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getIFeel (void )
+
+ +

Get the IFeel setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getLight (void )
+
+ +

Get the Light (LED) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getModel()

+ +
+
+ + + + + + + + +
gree_ac_remote_model_t IRGreeAC::getModel (void )
+
+ +

Get/Detect the model of the A/C.

+
Returns
The enum of the compatible model.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/814
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRGreeAC::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVerticalAuto()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getSwingVerticalAuto (void )
+
+ +

Get the Vertical Swing Automatic mode setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVerticalPosition()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::getSwingVerticalPosition (void )
+
+ +

Get the Vertical Swing position setting of the A/C.

+
Returns
The native position/mode.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRGreeAC::getTemp (void )
+
+ +

Get the set temperature.

+
Returns
The temperature in degrees in the current units (C/F) set.
+ +
+
+ +

◆ getTimer()

+ +
+
+ + + + + + + + +
uint16_t IRGreeAC::getTimer (void )
+
+ +

Get the timer time value from the A/C.

+
Returns
The number of minutes the timer is set for.
+ +
+
+ +

◆ getTimerEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRGreeAC::getTimerEnabled (void )
+
+private
+
+ +

Get the timer enabled setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getTurbo (void )
+
+ +

Get the Turbo setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getUseFahrenheit()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getUseFahrenheit (void )
+
+ +

Get the default temperature units in use.

+
Returns
true is Fahrenheit, false is Celsius.
+ +
+
+ +

◆ getWiFi()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getWiFi (void )
+
+ +

Get the Wifi (enabled) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getXFan()

+ +
+
+ + + + + + + + +
bool IRGreeAC::getXFan (void )
+
+ +

Get the XFan (Mould) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRGreeAC::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRGreeAC::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRGreeAC::send (const uint16_t repeat = kGreeDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setDisplayTempSource()

+ +
+
+ + + + + + + + +
void IRGreeAC::setDisplayTempSource (const uint8_t mode)
+
+ +

Set temperature display mode. i.e. Internal, External temperature sensing.

+
Parameters
+ + +
[in]modeThe desired temp source to display.
+
+
+
Note
In order for the A/C unit properly accept these settings. You must cycle (send) in the following order: kGreeDisplayTempOff(0) -> kGreeDisplayTempSet(1) -> kGreeDisplayTempInside(2) ->kGreeDisplayTempOutside(3) -> kGreeDisplayTempOff(0). The unit will no behave correctly if the changes of this setting are sent out of order.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1118#issuecomment-628242152
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRGreeAC::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting. 0 is auto, 1-3 is the speed.
+
+
+ +
+
+ +

◆ setIFeel()

+ +
+
+ + + + + + + + +
void IRGreeAC::setIFeel (const bool on)
+
+ +

Set the IFeel setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRGreeAC::setLight (const bool on)
+
+ +

Set the Light (LED) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRGreeAC::setMode (const uint8_t new_mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]new_modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setModel()

+ +
+
+ + + + + + + + +
void IRGreeAC::setModel (const gree_ac_remote_model_t model)
+
+ +

Set the model of the A/C to emulate.

+
Parameters
+ + +
[in]modelThe enum of the appropriate model.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRGreeAC::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/814
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRGreeAC::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRGreeAC::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRGreeAC::setSwingVertical (const bool automatic,
const uint8_t position 
)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + + +
[in]automaticDo we use the automatic setting?
[in]positionThe position/mode to set the vanes to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRGreeAC::setTemp (const uint8_t temp,
const bool fahrenheit = false 
)
+
+ +

Set the temp. in degrees.

+
Parameters
+ + + +
[in]tempDesired temperature in Degrees.
[in]fahrenheitUse units of Fahrenheit and set that as units used. false is Celsius (Default), true is Fahrenheit.
+
+
+
Note
The unit actually works in Celsius with a special optional "extra degree" when sending Fahrenheit.
+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + +
void IRGreeAC::setTimer (const uint16_t minutes)
+
+ +

Set the A/C's timer to turn off in X many minutes.

+
Parameters
+ + +
[in]minutesThe number of minutes the timer should be set for.
+
+
+
Note
Stores time internally in 30 min units. e.g. 5 mins means 0 (& Off), 95 mins is 90 mins (& On). Max is 24 hours.
+ +
+
+ +

◆ setTimerEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRGreeAC::setTimerEnabled (const bool on)
+
+private
+
+ +

Set the timer enable setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRGreeAC::setTurbo (const bool on)
+
+ +

Set the Turbo setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setUseFahrenheit()

+ +
+
+ + + + + + + + +
void IRGreeAC::setUseFahrenheit (const bool on)
+
+ +

Set the default temperature units to use.

+
Parameters
+ + +
[in]onUse Fahrenheit as the units. true is Fahrenheit, false is Celsius.
+
+
+ +
+
+ +

◆ setWiFi()

+ +
+
+ + + + + + + + +
void IRGreeAC::setWiFi (const bool on)
+
+ +

Set the Wifi (enabled) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setXFan()

+ +
+
+ + + + + + + + +
void IRGreeAC::setXFan (const bool on)
+
+ +

Set the XFan (Mould) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRGreeAC::stateReset (void )
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRGreeAC::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRGreeAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRGreeAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRGreeAC::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]posThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRGreeAC::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRGreeAC::validChecksum (const uint8_t state[],
const uint16_t length = kGreeStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRGreeAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _model

+ +
+
+ + + + + +
+ + + + +
gree_ac_remote_model_t IRGreeAC::_model
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRGreeAC::remote_state[kGreeStateLength]
+
+private
+
+ +

The state in native IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.map new file mode 100644 index 000000000..71a32c740 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.md5 new file mode 100644 index 000000000..4d1a33b48 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.md5 @@ -0,0 +1 @@ +cef6b5570dcbcd982fca1b3f3abc0c0f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRGreeAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c78390eebc51ee81105020d674027ec02a9bc1c0 GIT binary patch literal 3146 zcmZ8kcT`i^_6~!9Qbv$~AVn!A5R|4uNa#g~KvaejjR8cYH>C&(iawfj22|jMA{szI zgAhO<^b#R7DM1hhAp?Sh7J8`f&YSnvZ@u5T>)!p(Ugz%feP{3QJ8?JA=0f~u_(33$ z5X!>T28f=(8*!W$_$~@9)&qgp#nRjqboAHrx}hi?1QIwxnHt%KW-sMDzF{}p_%ttC zf~PZIS;YMk(WFO4?=nw_#53uOlFH}QMFhPeF`hw%U>H84l`W^Qr9>21%PDVJiaD4xco%F2J~p;^K*zg{^fAn-YusU z>WIIx@$qLd3W4oilOi5gNf6X8mr&?34?uHas<}8$!d3bwMej?l|pP<$AG`6yQj%3D4;AYrL@UP{PAz578dAjCk=W|JB4dFOj|_b zwn@Xowo$?x8yg>kS@vmZY41u)Dee}(#+gVj-@)O=8XqI$-vk`)hXwC8KHghhUvKN} zO=6TftPfo`D83&V8A&QEWU^QZMMY2z4UIcB0Y(>3^7G59s3fee2I%VQVyb;4q1SV5 zyO9XQ^SHQ{wzkNpPeIADdI)VPB)7Ej;FmAL91ce*-Z&sY9V8?qL@Fu@T%9t)69{2* zIgjAsJ0I(;Y-~;?B_-L~**#!0&0eWFq3_(0wlB5InOpBSfI^|MeSK)4^3X%h9EY-Z zK||wr>PjQAun=P-dWJRa2ufPWGTMkX)<;BR6#+3 zS8a>4u%DkFGsEdg)(r5U2>>pdj1O(9n15e7wBzkG?;4xVXY%i9S_7lk}#z z7zJVu7Fc?5ihnCQcCL;}EvmvjRf56(Iifj48kOrq;c&Qi8m+>;U-qiGITwK4pR3bt zuCA`a($YNwYW2eW_T3WB=|Z3x!4(=I1}l&zI}VL7D?JxKYCB!JNH4 ziWdWBV`DSFyi9XePtD5G;lt`&lD>MXIavlNapsK6(cyva*66)ZJpPoJSVzP5q@|yq zYDY&$4VB7$?=(+$h8h$G<5yEt3t1dBdiYRNRaNyCsa^aIWic(E9s4|d!k$(_{}(5~>XsI9;zg{wzL zw%;%#?w_Cgqy(i2LiuR9@jKjiqmv_qG$-84oo;AdMWB*q8;;YQQepfOu;mGpT-!9O z4D#S+!ifhslSl^4;{r9XY>kvQyr1&q1&{i4)kUs9j%1nJTgdf7dl*Wn;4#MkVbxNl zVSX*Mul{N3)j>m+*e)@48nUD?B4Tte4$?)w95J4fzCN>3R3g8kPWpWqGno+Vy5L6p z5wX#4bUCm)5!*7CmM<%iaP))5Y^p6DB5$O8`Tj7vAf+aS_-I)EK7mcL80YtUH$N9~ zSQ`DIDrFQ2#wxh0?1Y>AHJ<*5mZkGM0eR7lG?jT{@i8DR(DXKH{rHkTiuW=qWX3)n z-K&Di&(8-=`6x2cQ^AazPSfXd^RH6EJ2(-o8g3T z8&t+ZI?B%( z-mR37l@(_&81j00xEupjRkW#@*@?)Ob5Hh`wApl(vgcwd_Rj|fZdU0xII8vK>Zw>k z(mVV5#2pxkH9s4y&F-w(Vj%(h|{O{j9F9s^0 z#>U1LY9b*y75={{nH!dUEp3vy@^iSpu8u1573u`E@OdpQ@lpmo-y{}8aTAh}k?|TV zCX-c{fobMhHusJ6TSR;vgY?__lk0Wj=GKS;R2?r6&iitgZk>ydF_HT~Du{Rl-90$E z@fnN7GD^v;*qIsEJsyOB1)+v$?h%WW{J*~VOMk4>j#;P_zYR%U^G(|N^&UFaeh}bf zi_$cXOw=&~_&5P%{8wE5X0H+__H7S!COK*(Pm%k782xKO&-1-Sholq!b`nWfpX{^E z3GJE}FKjLg=4@84XlEC;_&$!^+SPs)A0JO^9G;$vOc>I0DNpEIelW2RAO-%uaX_Ne z>BM+OO>jv`$tcCW-6c_kx1|Uoa@WsZtm#d$w7an z^y_!m1+!=u9h{u{0UY5Ghq{pTxbv2;gu&qUAHBqZpFtFnZzQm|_}b5+ytJ&WF460{ z8u|5&jk&F@#tRDz>crmpAjHTA>}Oh%ls`vrY^>RhU=tp$`|{;WX=F%ZQ7%6I(D}FN$;m%<*nf)By}i6f zYXhPB`ua0-bAgMa8jcYM!B!Aa;Mi%Utlaj={oK;g5nWRQUt3?-kPzJAaO9$#S0)=w z&CMyk<66OvIp|n)kpc{MEvNc^x45y1NpWfETVND#Yy`EowkjzpO>O)f%Cv&W;^*ZC z2L~|~t|!!AO}JD%lt};RF(4nZ^sNKfzo(~XOMm}K3DHa<(K0CLvRcDNT3upZ-dSw5 zPx+>k78fxuy~pj6Q^diQ_%|PY#xy~yj`bGq?sGyXHME)SaiTtd)V&-Wv}tW?3)@@z zZh6_S z@#v7Csi}#n3sNSN$@M$Tgvw8!h6V>U@9P-)`>O%&U;#f;=F|^JbP=St=4SX-yIU-E zXD1ZUBnb(LbK2S&{rY=}FI60vGc!>|bEEDb33&W4SXD$s#MIRE1{Q0H$M4qEk$XQ6 z4GeG@8XLDp1&4%$Xu{!ePY(AFViqb#_kG z&gH(Xug}iRl-R)QO-@eQ+S&>W3#;Fk`TFCCy|s1qCb*IFLke(2ke+b{Gp%MCE<{Z$n>m7MvvDZ}{NSgf*=((95Ex_tygD2qZIOOnzCme6^?JO+}Jlbe~H z9hjU%U%SRXFficry)mb{T5B@m=m5o{_w<;SeWeh#{j_{Wn*m?=JTcLAx;6T@S7!~L zWT&R4o(M(&+`Dw}0}c#?seO1JXb`{~KJy)~W^W8#U#Cg=Pc1K_F__T{N67R`)6< + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRHaierAC Member List
+
+
+ +

This is the complete list of members for IRHaierAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRHaierACprivate
begin(void)IRHaierAC
calibrate(void)IRHaierACinline
cancelTimers(void)IRHaierAC
checksum(void)IRHaierACprivate
convertFan(const stdAc::fanspeed_t speed)IRHaierAC
convertMode(const stdAc::opmode_t mode)IRHaierAC
convertSwingV(const stdAc::swingv_t position)IRHaierAC
getCommand(void)IRHaierAC
getCurrTime(void)IRHaierAC
getFan(void)IRHaierAC
getHealth(void)IRHaierAC
getMode(void)IRHaierAC
getOffTimer(void)IRHaierAC
getOnTimer(void)IRHaierAC
getRaw(void)IRHaierAC
getSleep(void)IRHaierAC
getSwing(void)IRHaierAC
getTemp(void)IRHaierAC
getTime(const uint8_t ptr[])IRHaierACprivatestatic
IRHaierAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHaierACexplicit
remote_stateIRHaierACprivate
send(const uint16_t repeat=kHaierAcDefaultRepeat)IRHaierAC
setCommand(const uint8_t command)IRHaierAC
setCurrTime(const uint16_t mins)IRHaierAC
setFan(const uint8_t speed)IRHaierAC
setHealth(const bool on)IRHaierAC
setMode(const uint8_t mode)IRHaierAC
setOffTimer(const uint16_t mins)IRHaierAC
setOnTimer(const uint16_t mins)IRHaierAC
setRaw(const uint8_t new_code[])IRHaierAC
setSleep(const bool on)IRHaierAC
setSwing(const uint8_t state)IRHaierAC
setTemp(const uint8_t temp)IRHaierAC
setTime(uint8_t ptr[], const uint16_t nr_mins)IRHaierACprivatestatic
stateReset(void)IRHaierACprivate
toCommon(void)IRHaierAC
toCommonFanSpeed(const uint8_t speed)IRHaierACstatic
toCommonMode(const uint8_t mode)IRHaierACstatic
toCommonSwingV(const uint8_t pos)IRHaierACstatic
toString(void)IRHaierAC
validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)IRHaierACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC.html new file mode 100644 index 000000000..cd27c878e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC.html @@ -0,0 +1,1370 @@ + + + + + + + +IRremoteESP8266: IRHaierAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Haier A/C messages. + More...

+ +

#include <ir_Haier.h>

+
+Collaboration diagram for IRHaierAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRHaierAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kHaierAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setCommand (const uint8_t command)
 Set the Command/Button setting of the A/C. More...
 
uint8_t getCommand (void)
 Get the Command/Button setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getHealth (void)
 Get the Health (filter) setting of the A/C. More...
 
void setHealth (const bool on)
 Set the Health (filter) setting of the A/C. More...
 
int16_t getOnTimer (void)
 Get the On Timer value/setting of the A/C. More...
 
void setOnTimer (const uint16_t mins)
 Set & enable the On Timer. More...
 
int16_t getOffTimer (void)
 Get the Off Timer value/setting of the A/C. More...
 
void setOffTimer (const uint16_t mins)
 Set & enable the Off Timer. More...
 
void cancelTimers (void)
 Cancel/disable the On & Off timers. More...
 
uint16_t getCurrTime (void)
 Get the clock value of the A/C. More...
 
void setCurrTime (const uint16_t mins)
 Set the clock value for the A/C. More...
 
uint8_t getSwing (void)
 Get the Vertical Swing position setting of the A/C. More...
 
void setSwing (const uint8_t state)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kHaierACStateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Static Private Member Functions

static uint16_t getTime (const uint8_t ptr[])
 Get the Time value at the given pointer. More...
 
static void setTime (uint8_t ptr[], const uint16_t nr_mins)
 Set the Time value at the given pointer. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kHaierACStateLength]
 The state in native code form. More...
 
+

Detailed Description

+

Class for handling detailed Haier A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRHaierAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRHaierAC::IRHaierAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRHaierAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRHaierAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ cancelTimers()

+ +
+
+ + + + + + + + +
void IRHaierAC::cancelTimers (void )
+
+ +

Cancel/disable the On & Off timers.

+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHaierAC::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::convertSwingV (const stdAc::swingv_t position)
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getCommand()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::getCommand (void )
+
+ +

Get the Command/Button setting of the A/C.

+
Returns
The value of the command/button that was pressed.
+ +
+
+ +

◆ getCurrTime()

+ +
+
+ + + + + + + + +
uint16_t IRHaierAC::getCurrTime (void )
+
+ +

Get the clock value of the A/C.

+
Returns
The clock time, in Nr of minutes past midnight.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getHealth()

+ +
+
+ + + + + + + + +
bool IRHaierAC::getHealth (void )
+
+ +

Get the Health (filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
int16_t IRHaierAC::getOffTimer (void )
+
+ +

Get the Off Timer value/setting of the A/C.

+
Returns
Nr of minutes the timer is set to. -1 is Off/not set etc.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
int16_t IRHaierAC::getOnTimer (void )
+
+ +

Get the On Timer value/setting of the A/C.

+
Returns
Nr of minutes the timer is set to. -1 is Off/not set etc.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRHaierAC::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRHaierAC::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::getSwing (void )
+
+ +

Get the Vertical Swing position setting of the A/C.

+
Returns
The native swing mode.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRHaierAC::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTime()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRHaierAC::getTime (const uint8_t ptr[])
+
+staticprivate
+
+ +

Get the Time value at the given pointer.

+
Parameters
+ + +
[in]ptrA Ptr to a location in the internal state to get the time.
+
+
+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRHaierAC::send (const uint16_t repeat = kHaierAcDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setCommand()

+ +
+
+ + + + + + + + +
void IRHaierAC::setCommand (const uint8_t command)
+
+ +

Set the Command/Button setting of the A/C.

+
Parameters
+ + +
[in]commandThe value of the command/button that was pressed.
+
+
+ +
+
+ +

◆ setCurrTime()

+ +
+
+ + + + + + + + +
void IRHaierAC::setCurrTime (const uint16_t nr_mins)
+
+ +

Set the clock value for the A/C.

+
Parameters
+ + +
[in]nr_minsThe clock time, in Nr of minutes past midnight.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRHaierAC::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setHealth()

+ +
+
+ + + + + + + + +
void IRHaierAC::setHealth (const bool on)
+
+ +

Set the Health (filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRHaierAC::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRHaierAC::setOffTimer (const uint16_t nr_mins)
+
+ +

Set & enable the Off Timer.

+
Parameters
+ + +
[in]nr_minsThe time expressed in total number of minutes.
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRHaierAC::setOnTimer (const uint16_t nr_mins)
+
+ +

Set & enable the On Timer.

+
Parameters
+ + +
[in]nr_minsThe time expressed in total number of minutes.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRHaierAC::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRHaierAC::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRHaierAC::setSwing (const uint8_t cmd)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]cmdThe mode to set the vanes to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRHaierAC::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTime()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRHaierAC::setTime (uint8_t ptr[],
const uint16_t nr_mins 
)
+
+staticprivate
+
+ +

Set the Time value at the given pointer.

+
Parameters
+ + + +
[out]ptrA Ptr to a location in the internal state to set the time.
[in]nr_minsThe time expressed in total number of minutes.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHaierAC::stateReset (void )
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRHaierAC::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRHaierAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRHaierAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRHaierAC::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]posThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRHaierAC::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRHaierAC::validChecksum (uint8_t state[],
const uint16_t length = kHaierACStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRHaierAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHaierAC::remote_state[kHaierACStateLength]
+
+private
+
+ +

The state in native code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02-members.html new file mode 100644 index 000000000..2cd4356de --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02-members.html @@ -0,0 +1,118 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRHaierACYRW02 Member List
+
+
+ +

This is the complete list of members for IRHaierACYRW02, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRHaierACYRW02private
begin(void)IRHaierACYRW02
calibrate(void)IRHaierACYRW02inline
checksum(void)IRHaierACYRW02private
convertFan(const stdAc::fanspeed_t speed)IRHaierACYRW02
convertMode(const stdAc::opmode_t mode)IRHaierACYRW02
convertSwingV(const stdAc::swingv_t position)IRHaierACYRW02
getButton(void)IRHaierACYRW02
getFan(void)IRHaierACYRW02
getHealth(void)IRHaierACYRW02
getMode(void)IRHaierACYRW02
getPower(void)IRHaierACYRW02
getRaw(void)IRHaierACYRW02
getSleep(void)IRHaierACYRW02
getSwing(void)IRHaierACYRW02
getTemp(void)IRHaierACYRW02
getTurbo(void)IRHaierACYRW02
IRHaierACYRW02(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHaierACYRW02explicit
off(void)IRHaierACYRW02
on(void)IRHaierACYRW02
remote_stateIRHaierACYRW02private
send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat)IRHaierACYRW02
setButton(const uint8_t button)IRHaierACYRW02
setFan(const uint8_t speed)IRHaierACYRW02
setHealth(const bool on)IRHaierACYRW02
setMode(const uint8_t mode)IRHaierACYRW02
setPower(const bool on)IRHaierACYRW02
setRaw(const uint8_t new_code[])IRHaierACYRW02
setSleep(const bool on)IRHaierACYRW02
setSwing(const uint8_t pos)IRHaierACYRW02
setTemp(const uint8_t temp)IRHaierACYRW02
setTurbo(const uint8_t speed)IRHaierACYRW02
stateReset(void)IRHaierACYRW02private
toCommon(void)IRHaierACYRW02
toCommonFanSpeed(const uint8_t speed)IRHaierACYRW02static
toCommonMode(const uint8_t mode)IRHaierACYRW02static
toCommonSwingV(const uint8_t pos)IRHaierACYRW02static
toString(void)IRHaierACYRW02
validChecksum(uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)IRHaierACYRW02static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02.html new file mode 100644 index 000000000..0bde44c52 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02.html @@ -0,0 +1,1252 @@ + + + + + + + +IRremoteESP8266: IRHaierACYRW02 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Haier ACYRW02 A/C messages. + More...

+ +

#include <ir_Haier.h>

+
+Collaboration diagram for IRHaierACYRW02:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRHaierACYRW02 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setButton (const uint8_t button)
 Set the Button/Command setting of the A/C. More...
 
uint8_t getButton (void)
 Get the Button/Command setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getHealth (void)
 Get the Health (filter) setting of the A/C. More...
 
void setHealth (const bool on)
 Set the Health (filter) setting of the A/C. More...
 
uint8_t getTurbo (void)
 Get the Turbo setting of the A/C. More...
 
void setTurbo (const uint8_t speed)
 Set the Turbo setting of the A/C. More...
 
uint8_t getSwing (void)
 Get the Vertical Swing position setting of the A/C. More...
 
void setSwing (const uint8_t pos)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
+ + + + + + + +

+Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kHaierACYRW02StateLength]
 The state in native form. More...
 
+

Detailed Description

+

Class for handling detailed Haier ACYRW02 A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRHaierACYRW02()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRHaierACYRW02::IRHaierACYRW02 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRHaierACYRW02::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHaierACYRW02::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::convertSwingV (const stdAc::swingv_t position)
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getButton()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::getButton (void )
+
+ +

Get the Button/Command setting of the A/C.

+
Returns
The value of the button/command that was pressed.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getHealth()

+ +
+
+ + + + + + + + +
bool IRHaierACYRW02::getHealth (void )
+
+ +

Get the Health (filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRHaierACYRW02::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRHaierACYRW02::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRHaierACYRW02::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::getSwing (void )
+
+ +

Get the Vertical Swing position setting of the A/C.

+
Returns
The native position/mode.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
uint8_t IRHaierACYRW02::getTurbo (void )
+
+ +

Get the Turbo setting of the A/C.

+
Returns
The current turbo speed setting.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::send (const uint16_t repeat = kHaierAcYrw02DefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setButton()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setButton (const uint8_t button)
+
+ +

Set the Button/Command setting of the A/C.

+
Parameters
+ + +
[in]buttonThe value of the button/command that was pressed.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setHealth()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setHealth (const bool on)
+
+ +

Set the Health (filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setRaw (const uint8_t new_code[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setSwing (const uint8_t pos)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]posThe position/mode to set the vanes to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setTemp (const uint8_t celsius)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]celsiusThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRHaierACYRW02::setTurbo (const uint8_t speed)
+
+ +

Set the Turbo setting of the A/C.

+
Parameters
+ + +
[in]speedThe desired turbo speed setting.
+
+
+
Note
Valid speeds are kHaierAcYrw02TurboOff, kHaierAcYrw02TurboLow, & kHaierAcYrw02TurboHigh.
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHaierACYRW02::stateReset (void )
+
+private
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRHaierACYRW02::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRHaierACYRW02::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRHaierACYRW02::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRHaierACYRW02::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]posThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRHaierACYRW02::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRHaierACYRW02::validChecksum (uint8_t state[],
const uint16_t length = kHaierACYRW02StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRHaierACYRW02::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHaierACYRW02::remote_state[kHaierACYRW02StateLength]
+
+private
+
+ +

The state in native form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map new file mode 100644 index 000000000..02f95a3ca --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 new file mode 100644 index 000000000..cb292bd5a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 @@ -0,0 +1 @@ +cb076b246ab80c7206b22b94a46f6e24 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2075e7a09e203a551ee397c1e785d8788b9ea9ea GIT binary patch literal 4003 zcmZvfc{r5c-^WLavNdGMT2xfBXNyT8OIZdr*~M71jL9;#qR5i$%UGhaj9r8*W9v&M zOBidG89PzPJ{Wn9-|y*<=X$=^eSPk8UH5&ibKmEj&*%Mqod~#|CNl#M0|WwL*49!t z1Z^CMz>{>~zM6cV2pT$@dz$Ky!=vk6LtX*|a@ts1{q}vIH_Ie{`2DRz!rFpR$T8`Z z4!9s!foIp-aLKe8$A5OPg2!Ii=%g_v+_>Uo$>tC%DPi25^FA4Sg-2KQ#0$1NqGIkH zaK@xcX}4F8&Ob4#tr6PaJ(!Bwu$v>ZdJpy>?H#^*+;r&KfAbVAj(6zMybuD_if0fG z6~E<2X@_bT{*6?gx}ZHWo2avHSR5ms$s3! z^)i*U?d@^zI~@~xJ-`82LvpV{qVoiAlYWlbhVWXA43?juQvhEq&)W%6-;s8Ww`qeWoKsTETFMYbQ>e z_@}SWkosqTRm`#|KVJ(ny);}`pQJ%qz!Pckqp^<9T8#!axv@}EgcN}5_&Af(AUJG!_WZyp&* zeY(HRDj*OIri-dyqZ=6+ftc5Mo(giv^wm&QSRE|ll1Gte*XKGrevXZfUJcw??57Xf z+w*%B8ChOgIl#L*J>5r&bcV(Rgr_m_Da3yNZoIy+u}j_PNt$~0>{-D6a`l^=PkAIH zB!qQRZdq9HM@L7eq@;kW+?==jZ1$(jKa+ z9+Q=ot*NP*{Q2{qmX;PqJnge%h-9~w|3zV8Ha@=BammBkY2qiOhB|Eo@M3YBlYfiu z|F&L}rHEm4HsKBN(Dt&F6!G20heK;fgH_=zWME;D`(FP| zC-c$FA>SooYu*w0Xx?I$pm*=i2X{BYH1;E^q-r+RWC;j%Ny^+aszY$a`%Wp-^^|;m z-wDJq9)_5Q{cw?(s8J!cfl#HYDE0$STIh8$2fM%rIZthkd!hNv*uY|3`5HOXGB~up z@-FQ|+j`sZ(O4`Z;uH@gL=PUY$5~yp%2RW7=AzobtFZ@|U6CTXjFqMZKAz*)XR-Lo zp|8*?p+kHjXG=)XcqIeveI(U3+%zs7ftHZ{c9P$Gzacp-UWu--!>1ie%EQgF3?CNa zRn#CUn|*Ni;yJ_;T13tBZ9PgrJUatUo+6m!u#1<7RExRU*lCMlFCQX?N>B z$N0)f*6TM+1~P+KH>0Pu2SF(*PL~y~Vw}FULuC^%IWrbXrMF}KwK8*M9X2PXcXHb3 zK2IJl=gAk(>M$R?@$bjK{Zm*difXnAGSN?VsGO~)@Kd@Dm<~rKyC$*wUgH$0OBjdv z$I|NmKi1isXdmj6rrQ_%`WLi!Q{iT|;TH#IS9A<@Lw`v1lKA_-LcM~ytODXdIjCWY z$XTv3(&TJ=La6wA&33UPoivcI3B<@fnbi`ya3NIzEd;WvIS=3k3Dd}@cqIf|?@eRz1{!eL=QvcV+{@U5!)_{I?OP${t{V;ZV+UD8r9GBXFO`_Wy zzvQcU^R9KfSO^_6PwV$`UbkDr%XN`umOlwxeq2vdYRN`}+ErEZUIE&qEx)yy6I0Zx`|Ffx%#F zo13j;W9f<>^X|XCmwV?qv2k*?t&s3au+`TI>49bNr=yl;163yD|*6 zyIehyXbpO6CkP+q48-#WzY=EU;`#Fs6bc3KAiuECaMZ!Up~B`115PJZ6%L1{%cF3m zrFx`}$GEXi>iv28A~0A6Ej^2*T?ack@bKxJz_&K7lb@$r!q(Q-1Z8EbzED7?jqNcM z5{2sdGykz8ps!H0lo`g)#%xLTDJM`mpTM2~z-ri==Gie*FOa0zb z5g?dy^o+*Gii(kscAd0l7*eB>jJ&)Eu#PB=jSnk%e5|a`^YTP2EiLP}N1a>0d?8Y8 zy7n;+TU%QJ)HT9!dioil{Oal<Iln6R=JwGcRuZI80VH3BUy~xgQfvDvX@hCdX?% z*f}_8%D}{wm6glN%9`8TPgz-6b-z`anA^z`BMAtVAUc6VMrmYQ0~WH#{1bfo=6SF~ zNJ4bE_p)i@{)*CE6sqW8u;}4Py{}9}M1+EZ0+fRzm#hAQX0#-VtjxlHBLs`(f*iq2 z+iUKWv@|v-wE2iywjY+7zpt!J1ldw$R+OI3OG87WuBln^?7+`5@W3mSg@5$%*r%aL z@W#Z%1Ts52`+GJ)U)pV4;nk~GHC{hC-6hnsHKLA9&VNf!#A1JbBLI~1@bCaUVU~gM z_Ll3px$lDS?BgJDX3fsp+D$Ye2`oUvfI*_FbTFMe3 zl}=~$RSrDyokR{2xjGD>($v&c*Bixzmax;H3dRD!z3TpKS5{fNxVnPf6_JriQ29d%2BJl?qgn~_$!}}vWl@nR4!1+T;q2^8$8@&& zOC(p)C<7xS@o|+Oe+#Jig!p(>9UUehAE#}((>A{@sDt@~vOUAaMIhlZO0Wz>(Vdge zb8|1*+uKuj7v2I%s2U*;4JD&z+RCk4=m2|x!OZJ@;=lodhsU%D*0tE5N3(hC_~g>k z-P^ZmfWLytC5u~h06E(QNtQI+7_ci{US4i%YwPKkn&#}>01_b~F)^f}p<%t}H=tsp z2M_LOXoNmd9%u#F3QPiIcR_KnEg_n}rmjxfvG+U#NQt(tu3cxc*lFcky}{??^wQ;+ zLEXk((7XYQ%E;hHHSP-k94cuc5W1b_xyREBu z>)bgU4kry5g0n?eR~PN!F*Er&7y{BPP0Z{Q9B7WQ@mZrhJv&mJm$8XSRed9l(bP<0 zWo6|)0x>;5k7Me0y#D&E)QgUeyK_GI?ZqY)DS%eMzai(lQbF3Ull@m|cDfNWGc#92 zMUmUTMmowJG(}EX5T^-|Kt8~Nciy|5!-@D{`K|dmt=TVTfxQo~i!J}|-T(D-=M8)X z4pn)npmwNn+-)tQippIzkU8{BLu_^Aa)EG6#KplQ-Z~1M=bt{T$LHu#RFFSXlJ9au SkAYJ+MEj1Oda3H87ykoKu-#bz literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.map new file mode 100644 index 000000000..18c05ac08 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.md5 new file mode 100644 index 000000000..55ab50d1a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.md5 @@ -0,0 +1 @@ +92ecbd6eeb437ac717bd50570ccc4754 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHaierAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd0aef1ecd41ac268030bb20275a4fc36a94316 GIT binary patch literal 3157 zcmZ8k2UJtb77a=hDH2qgQbZwiQ4r}$M+r@;^bP_EML`JVsVF5BX`vI5CK5psTENh& zp{OW4YCu90B$QBuME-qmz4zDpf8BNO+?hEuXYQQYd!L(NW@5m>Ccp*)fjEo|buEC> z54dAknStlZf%+4mV0OD}pbI+w>v~0~$N+)Z*^G2=TRtxMS%@&R`u4kBOHkC}rO%xg zf`jt{qX%zJ?OuDMlAeCc-UUvA|Zajz#T zH#M^N_+8H$&1q*~lBXE-c6BXaj#$Q{^yWUUsiQC>gSoDh`te!P(DHhponH-QEcVQa z=j;~(v0;pfwIv=#vFTU1@1S&VnwD=PCbtU8@K+TGI=w6|`Dh+7Q28H=eJ%u_=0Iz0xaJOBnzf2oD8yKGG3oACJB;Ke)9 zv@HVy28YWalRaoO+9s9S?V}hx-^oOX{QO$4w5*I941O9H$Fj3DwD4!Gdqj9tl!kr@ zHy0Pzc{vBe=;+pf(9jb%Gcg+*u+WX^gmPa-X66%tziHtX78VEJk@7wP0gHuUv#!U# z=@ErZO*f^aq#&}gi{E>YgJ>;uf4`y3d1UM0GCF2>@8^`SkB^9)TuMbzL}Jy<4>#=me$r5W@hb08VLX9kp*qzr#U%%+&nzjt5s7q58oJ?msJE&5n(UgUoGgB&4LJ znM4Ex1$Va>`chBdQdCw>^=kvA<>#wat1es~5lz8VjbqBo#V=jDWN2#Y?cxIZ10S-C zjX92PfX&=-aS;(zhLJ1K(I;LtHw%D-g@x(jp1n!@4y}>7d3gd+bSEdLL(+BcVa8V# z6>-hYs?*ccFEWpgj_eU(5=lD!%^wR?Li&e?%iq3DG}WS8qJ_D+JCsS0I^p3eqN1XV zEG(llGs$SQu!)IDU0t0>EZ=rQe0W?3c zKYzl6f9re$jZU|#bz@3MNC39N{aUUe6k6ZmWWpYo!SpgSQ#UM3xh0IU)WIU$Jvy54 z{{2;08$A?@#r6}4T{ANm`96f_XvJu{y1G6N4^IQ^0Vmbf)$WtlFqm9nVd25ik-MTm z0uqT^s)n-t)Z*;%1IA`Y_aY|q zHlNC&miRn+^oYE;2-TC}alf_jkwlprJJYxJ0{uW-c8xrc(cRl?0(4!PYhal;SXMUt zMV362A%r5k&KtjF>f*lnJLa3EFnoDFY-4Fev}ljBFRy>*>F4o)`R`h)pyb4ocRG+6+++-2{)3={m9ikdh4`PW=OVA;CO*WtZ&oHBi^!NAkC;SE9zPYGEmp?nF_(YO-?xO6 zVXAwb@}f7i9mWG)Ygwh(;Il2-lAc!d`ilX~?1HW0uYQfgem6Y~`F#^*G4@L=z*ZlB zH!QE%+$u6;*2hqys$_}nr+ z#GZfa;ScFP;|Y|vKn4Ya|&edGw@B5?}Uimf}*7n2WT0TC$PvhQK z`MN9bRp{E-WcLpao&`|a=~l}s8f%LWE{jh|IiH-I{2Gh30QfBBinC=A75g@&J|Q)` zfZwJt&BN2n>&GZ(-ZW7G9H4T7`PuE`Df0{jl-Sad)})ybt*gt(&CP8qa~>cygTTP6 zySuv)!8HJfY&0#T1i_al$xb%Ula=t?wob~lX2B^ zw{ACR^{en6XP3C4yr1g-1njR0)$#I!NK_}cIsLCF{i|mGgqDgezZWz1-uyCvG1_Jq z*IvA*HnlLM;wZB*iZrjpAWqd>STpcnTw3C6P0&kEtr|5}==;{U5tOulonc%5BHGHr z;@bT*H*h8jm0nb&S={`^8CT8&$mM?>fWcshj7(h^-woG0`fKp1299SPx7^%bYepSX zeL)V6j$2z>u3axUFo4>9RkblPG!%hAdg?+JwKoNSa+@FLJ>o?~$to%;vj1{BCEEY-<0W6FNkrlyETl(vz8#+lw(0>bF--G!1=%`ZF|7c?R=m1iG6V>*3)j;wePB@2PL z&<}TSs;S{%GpZ>URJ1KDz#v|Er_$nL*Y0~IvbA{_8ZA;|DjSEpo|~I{aCn%~JXp`j z#Ke)mOeS}0>`&`hTAr0KDd01=4hgwVirT-(!X@+-*QUNd9m1Ea|F)_Mf3(rU5TBGp zo<&f;t<^U)SeTo4tktw}wolgkO*93Gji~Ri11j!f$*6H$x(}S67slBr6c$d>eBkGY4_;&g?azdf;-@e*H7p|H z;$F6PIy%qf)+Rp~fu28quBfE61)OBATxSalZ66;vC+cgEw=PaNf_;0HbXJ!ij{L?l# zICzCZ5f0J7O(dN;p{%Uz;NWnuJMOF!IM@D$hzJj_b?aekfRjud9WQ#}azmDf(@-dV zXHq{!UQS+~h3^uZh=>R%V<2|GLwi)Q!GA*A+?-oDhF06U0i+#R98OYJ_Tr8vlsTUc zNl8rX^uG~8UHPmqzO}cvG~tcDA}021b2AV?lU`up<}oHCFE6pf#bv4?0At^na#1bx zjDP^JZel!9STi!G>~1z^K4pD<5J=o4ArKIAO^I;iCIhdWgNUf;lRn{?f}|w&>6sb3 z*2rHu`@YxM5&hTYA)L+NJGqUaLc!h#R+wiF{3n2n^h|WCwOyY6 E2RUCXivR!s literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc-members.html new file mode 100644 index 000000000..9ef04b870 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc-members.html @@ -0,0 +1,112 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRHitachiAc Member List
+
+
+ +

This is the complete list of members for IRHitachiAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRHitachiAcprivate
_previoustempIRHitachiAcprivate
begin(void)IRHitachiAc
calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)IRHitachiAcstatic
calibrate(void)IRHitachiAcinline
checksum(const uint16_t length=kHitachiAcStateLength)IRHitachiAcprivate
convertFan(const stdAc::fanspeed_t speed)IRHitachiAc
convertMode(const stdAc::opmode_t mode)IRHitachiAc
getFan(void)IRHitachiAc
getMode(void)IRHitachiAc
getPower(void)IRHitachiAc
getRaw(void)IRHitachiAc
getSwingHorizontal(void)IRHitachiAc
getSwingVertical(void)IRHitachiAc
getTemp(void)IRHitachiAc
IRHitachiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAcexplicit
off(void)IRHitachiAc
on(void)IRHitachiAc
remote_stateIRHitachiAcprivate
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc
setFan(const uint8_t speed)IRHitachiAc
setMode(const uint8_t mode)IRHitachiAc
setPower(const bool on)IRHitachiAc
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAcStateLength)IRHitachiAc
setSwingHorizontal(const bool on)IRHitachiAc
setSwingVertical(const bool on)IRHitachiAc
setTemp(const uint8_t temp)IRHitachiAc
stateReset(void)IRHitachiAc
toCommon(void)IRHitachiAc
toCommonFanSpeed(const uint8_t speed)IRHitachiAcstatic
toCommonMode(const uint8_t mode)IRHitachiAcstatic
toString(void)IRHitachiAc
validChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)IRHitachiAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc.html new file mode 100644 index 000000000..dacce3479 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc.html @@ -0,0 +1,1107 @@ + + + + + + + +IRremoteESP8266: IRHitachiAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Hitachi 224-bit A/C messages. + More...

+ +

#include <ir_Hitachi.h>

+
+Collaboration diagram for IRHitachiAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRHitachiAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing setting of the A/C. More...
 
bool getSwingVertical (void)
 Get the Vertical Swing setting of the A/C. More...
 
void setSwingHorizontal (const bool on)
 Set the Horizontal Swing setting of the A/C. More...
 
bool getSwingHorizontal (void)
 Get the Horizontal Swing setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
 Calculate the checksum for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (const uint16_t length=kHitachiAcStateLength)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kHitachiAcStateLength]
 The state in native code. More...
 
uint8_t _previoustemp
 
+

Detailed Description

+

Class for handling detailed Hitachi 224-bit A/C messages.

+
See also
https://github.com/ToniA/arduino-heatpumpir/blob/master/HitachiHeatpumpIR.cpp
+

Constructor & Destructor Documentation

+ +

◆ IRHitachiAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRHitachiAc::IRHitachiAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRHitachiAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRHitachiAc::calcChecksum (const uint8_t state[],
const uint16_t length = kHitachiAcStateLength 
)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe value to calc the checksum of.
[in]lengthThe size/length of the state.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRHitachiAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc::checksum (const uint16_t length = kHitachiAcStateLength)
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+
Parameters
+ + +
[in]lengthThe size/length of the state.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRHitachiAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRHitachiAc::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
bool IRHitachiAc::getSwingHorizontal (void )
+
+ +

Get the Horizontal Swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
bool IRHitachiAc::getSwingVertical (void )
+
+ +

Get the Vertical Swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRHitachiAc::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRHitachiAc::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRHitachiAc::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRHitachiAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRHitachiAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRHitachiAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRHitachiAc::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAcStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRHitachiAc::setSwingHorizontal (const bool on)
+
+ +

Set the Horizontal Swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRHitachiAc::setSwingVertical (const bool on)
+
+ +

Set the Vertical Swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRHitachiAc::setTemp (const uint8_t celsius)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]celsiusThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRHitachiAc::stateReset (void )
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRHitachiAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRHitachiAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRHitachiAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRHitachiAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRHitachiAc::validChecksum (const uint8_t state[],
const uint16_t length = kHitachiAcStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRHitachiAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _previoustemp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHitachiAc::_previoustemp
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHitachiAc::remote_state[kHitachiAcStateLength]
+
+private
+
+ +

The state in native code.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1-members.html new file mode 100644 index 000000000..dc9801cec --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1-members.html @@ -0,0 +1,123 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRHitachiAc1 Member List
+
+
+ +

This is the complete list of members for IRHitachiAc1, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRHitachiAc1private
begin(void)IRHitachiAc1
calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1static
calibrate(void)IRHitachiAc1inline
checksum(const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1private
convertFan(const stdAc::fanspeed_t speed)IRHitachiAc1
convertMode(const stdAc::opmode_t mode)IRHitachiAc1
getFan(void)IRHitachiAc1
getMode(void)IRHitachiAc1
getModel(void)IRHitachiAc1
getOffTimer(void)IRHitachiAc1
getOnTimer(void)IRHitachiAc1
getPower(void)IRHitachiAc1
getPowerToggle(void)IRHitachiAc1
getRaw(void)IRHitachiAc1
getSleep(void)IRHitachiAc1
getSwingH(void)IRHitachiAc1
getSwingToggle(void)IRHitachiAc1
getSwingV(void)IRHitachiAc1
getTemp(void)IRHitachiAc1
IRHitachiAc1(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc1explicit
off(void)IRHitachiAc1
on(void)IRHitachiAc1
remote_stateIRHitachiAc1private
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc1
setFan(const uint8_t speed, const bool force=false)IRHitachiAc1
setMode(const uint8_t mode)IRHitachiAc1
setModel(const hitachi_ac1_remote_model_t model)IRHitachiAc1
setOffTimer(const uint16_t mins)IRHitachiAc1
setOnTimer(const uint16_t mins)IRHitachiAc1
setPower(const bool on)IRHitachiAc1
setPowerToggle(const bool on)IRHitachiAc1
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1
setSleep(const uint8_t mode)IRHitachiAc1
setSwingH(const bool on)IRHitachiAc1
setSwingToggle(const bool toggle)IRHitachiAc1
setSwingV(const bool on)IRHitachiAc1
setTemp(const uint8_t temp)IRHitachiAc1
stateReset(void)IRHitachiAc1
toCommon(void)IRHitachiAc1
toCommonFanSpeed(const uint8_t speed)IRHitachiAc1static
toCommonMode(const uint8_t mode)IRHitachiAc1static
toString(void)IRHitachiAc1
validChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1.html new file mode 100644 index 000000000..227b908d6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1.html @@ -0,0 +1,1414 @@ + + + + + + + +IRremoteESP8266: IRHitachiAc1 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Hitachi 104-bit A/C messages. + More...

+ +

#include <ir_Hitachi.h>

+
+Collaboration diagram for IRHitachiAc1:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRHitachiAc1 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setModel (const hitachi_ac1_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
hitachi_ac1_remote_model_t getModel (void)
 Get/Detect the model of the A/C. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setPowerToggle (const bool on)
 Change the power toggle setting. More...
 
bool getPowerToggle (void)
 Get the value of the current power toggle setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed, const bool force=false)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingToggle (const bool toggle)
 Set the Swing toggle setting of the A/C. More...
 
bool getSwingToggle (void)
 Get the Swing Toggle setting of the A/C. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing setting of the A/C. More...
 
bool getSwingV (void)
 Get the Vertical Swing setting of the A/C. More...
 
void setSwingH (const bool on)
 Set the Horizontal Swing setting of the A/C. More...
 
bool getSwingH (void)
 Get the Horizontal Swing setting of the A/C. More...
 
void setSleep (const uint8_t mode)
 Set the Sleep setting of the A/C. More...
 
uint8_t getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setOnTimer (const uint16_t mins)
 Set the On Timer time. More...
 
uint16_t getOnTimer (void)
 Get the On Timer vtime of the A/C. More...
 
void setOffTimer (const uint16_t mins)
 Set the Off Timer time. More...
 
uint16_t getOffTimer (void)
 Get the Off Timer vtime of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc1StateLength)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
 Calculate the checksum for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (const uint16_t length=kHitachiAc1StateLength)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kHitachiAc1StateLength]
 The state in native code. More...
 
+

Detailed Description

+

Class for handling detailed Hitachi 104-bit A/C messages.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1056
+

Constructor & Destructor Documentation

+ +

◆ IRHitachiAc1()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRHitachiAc1::IRHitachiAc1 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRHitachiAc1::calcChecksum (const uint8_t state[],
const uint16_t length = kHitachiAc1StateLength 
)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe value to calc the checksum of.
[in]lengthThe size/length of the state.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRHitachiAc1::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc1::checksum (const uint16_t length = kHitachiAc1StateLength)
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+
Parameters
+ + +
[in]lengthThe size/length of the state.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc1::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc1::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc1::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc1::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getModel()

+ +
+
+ + + + + + + + +
hitachi_ac1_remote_model_t IRHitachiAc1::getModel (void )
+
+ +

Get/Detect the model of the A/C.

+
Returns
The enum of the compatible model.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRHitachiAc1::getOffTimer (void )
+
+ +

Get the Off Timer vtime of the A/C.

+
Returns
Nr of minutes the timer is set to.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRHitachiAc1::getOnTimer (void )
+
+ +

Get the On Timer vtime of the A/C.

+
Returns
Nr of minutes the timer is set to.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRHitachiAc1::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerToggle()

+ +
+
+ + + + + + + + +
bool IRHitachiAc1::getPowerToggle (void )
+
+ +

Get the value of the current power toggle setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRHitachiAc1::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc1::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
The currently configured sleep mode.
+
Note
Sleep modes only available in Auto & Cool modes, otherwise it's off.
+ +
+
+ +

◆ getSwingH()

+ +
+
+ + + + + + + + +
bool IRHitachiAc1::getSwingH (void )
+
+ +

Get the Horizontal Swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingToggle()

+ +
+
+ + + + + + + + +
bool IRHitachiAc1::getSwingToggle (void )
+
+ +

Get the Swing Toggle setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
bool IRHitachiAc1::getSwingV (void )
+
+ +

Get the Vertical Swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc1::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRHitachiAc1::setFan (const uint8_t speed,
const bool force = false 
)
+
+ +

Set the speed of the fan.

+
Parameters
+ + + +
[in]speedThe desired setting.
[in]forceDo we allow setting the speed regardless of restrictions?
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setModel()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setModel (const hitachi_ac1_remote_model_t model)
+
+ +

Set the model of the A/C to emulate.

+
Parameters
+ + +
[in]modelThe enum of the appropriate model.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setOffTimer (const uint16_t mins)
+
+ +

Set the Off Timer time.

+
Parameters
+ + +
[in]minsThe time expressed in total number of minutes.
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setOnTimer (const uint16_t mins)
+
+ +

Set the On Timer time.

+
Parameters
+ + +
[in]minsThe time expressed in total number of minutes.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerToggle()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setPowerToggle (const bool on)
+
+ +

Change the power toggle setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRHitachiAc1::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc1StateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setSleep (const uint8_t mode)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]modeThe mode of sleep to set the A/C to.
+
+
+
Note
Sleep modes only available in Auto & Cool modes, otherwise it's off.
+ +
+
+ +

◆ setSwingH()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setSwingH (const bool on)
+
+ +

Set the Horizontal Swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingToggle()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setSwingToggle (const bool toggle)
+
+ +

Set the Swing toggle setting of the A/C.

+
Parameters
+ + +
[in]toggletrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setSwingV (const bool on)
+
+ +

Set the Vertical Swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::setTemp (const uint8_t celsius)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]celsiusThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRHitachiAc1::stateReset (void )
+
+ +

Reset the internal state to a fixed known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRHitachiAc1::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRHitachiAc1::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRHitachiAc1::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRHitachiAc1::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRHitachiAc1::validChecksum (const uint8_t state[],
const uint16_t length = kHitachiAc1StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRHitachiAc1::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHitachiAc1::remote_state[kHitachiAc1StateLength]
+
+private
+
+ +

The state in native code.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.map new file mode 100644 index 000000000..09fed2d72 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 new file mode 100644 index 000000000..74b080a45 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 @@ -0,0 +1 @@ +887e1bb9117f6436abfa2cfbb296e5b6 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc1__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa4b63449446dea973d1bb5b232765499b6ca87 GIT binary patch literal 3046 zcmZ9O2UHW=7KX!B5osbNh$spOs1z?Ph)5^`(hLDakSZ;qH$lM&3WQ#Qpdd8{kcc86 zktS7waH&ChZxUK4Qer{~^2T@9U3a~=X3d;Av(C)y+54aG-*Ir*EiU#m>>v<`%Rpbp z3>X7}{V5wOaD>_|E&v0olhG|5(Bbdxbpt*P1megx(9yaRoU@*TGUgu+uYOizS$%qSl@fybMj>!HJ?fD=m&_VTtx!1_v~#p zQMi627S9JylrwzmatW7;LmNgnePc&u8UUGI}vvk7d9Ke#8;kLFGFNFW?<;ZHb#F&PmG3%DQFg+1O;` z&4qX*?kLp5+?<@mt~TtNVMA^Y^eH77q)Bd#I%Br>mawQlZ*I0x(A+vcK62V@bh3B^}$;t+iz9gr}OAPu{?`*Z7FK|EO@9z&993D>1$Y{?~N4fd>E=@g}ah+)l zWk7(~28V`BEiAr9aR|mHCrc_T3uJV?Dcc!CVm}5^?pj-0|JB{?vbRlsoB(_L_&T4Y z@$1IMyow5i`1ttA$KAxX<#dkdF|$u@-^8A0XHOtS`tZj^f;C@cWKg=iA=zx4octPx z%m+=O$`A;`bvd%S=&eFcvN zT|@np0VyJT2YpN0l7!o-lo8cO8##@KDJeV$JFRhiEX%8_`9S5Ho139s1^M}j(8+x# zW4843g1$jXK;ppMvp|7uh0SXnVn}X@+91RN#`&3yeie6UC z>{&#$ad2=H5D00*!*?6H5d@(CuY#|yc-eW*o;9|&7m13BVgl(us~Uh#5>_#Da3HNu zRQq4g4GapJ3#er~c@o)?D&gYlYHDMXFy*tfzu6=O>hTJ9JroE)%_sEPxrs;Z8zKZNcr@Z~+(Hu$X%Lqn(4!D6qO#@vH_nqtVd%WN-~ zNnoH7ARIIrosyPz^X^?R3k%E5c-N0sH6c5a!1D_W3sW*P-4}3E8hQ?erWg{MXSGOQ zUi%-}zvKjz4orTWz?J%hzn@T|BpFa63akoZ9$!c9MFo=1oB* z{@z~oAE1ZW{puLSFF%rpqdBNbQ`NToQcN^YN{ABcVO)TN>jL!pY|B$Mzh9z$Q(#+q z6>(tYbn>n?g}bU?&wUne`snS{?<<4a=SFgsEM}U?{A~EwTcccON9xpb({cK;yKCP( zV>RlyaVM@ly0hV7>46IxejmDM$F^D$U|HACURgc0xV-{HzaP0>&tVOlDI`#ZNe1 zFRTsL9))_uE1aNz`O~jH3uYVF^uo1Xhk`j_Rg#%%ly%uJ@_+!c`t`;$-s_TX8Uwnw zzBjxdp!9H$lLBi+#cA{D?Z}M};#}vEUpeUhOS)U%dlQJ`h>giwr={Lp#uH=XL^duif%fEcd{a|X^WB+> zPE7jNeBEXvpPiju{^!ru3uN*N1z%JYUs!n2kuaun>sCxKb;wfJ%d5oidM@Kv3z7J> zBTY&diNs&Jbcsh)RJ4U0a6%MqRenEQ-^hqB3dGeY>LbsS?6F6$?kd8gRqqoMA0@RpwK*{47rs^ zy{f7zg;2(>WBZD_n+s;}cV2q?PR)Oa)VqQcZ?!p|v>VqJGGt&ZkJvha`}kfv&Q9PR z39I%9*0f)b>g?>?w#_eiW^$*t5p9x#YefG~0e}fqba$}SC}%vVW5B)U7&dr3;KN2b z-rP?Z>L1PE{kK+s-$!r#u1F1g>(rh9&h~E``R9KEJcTHQX6)|t6%|P)pV!!kv*jd) z?ZTuejMu*EIUUQ}^zRrxFnGB7$A+MuEI0vFm=)1x!l(5eA94fpEl&n))Fc>oeElQ* z-aXY(u_(d&3Yn}jv^dYVSAW~y??|uiMhV)_{`Fiu59U1h<1ub*Y|QGzU2Kwut)A{O zgG$+3F2FFlvyCNpB{!D)ZMG`n{#_p>^v%zm7cEW>MG$7N)_nn={RhyweCzAe3=4xQBD(wDe`;yb_L;2t zGW@|N6B>Hm!ong48k)7YvvlMKb;KbJi#2g^xhNqa!4C#+lQSHC3cJ0F0ZbC;L86Z8-KtBrKA|KcBcG5W-9BO~Ya@k-{e{mtKwVWM&HLiNGo z?9$SRZ|?N&odP26-Mjb(6s>=B^sS{g2FkePhjjDR(9l41zmi}6`Q^(O#!_B5j#YT8 z%cHV?e7tkOL}LnHUr~|T+S)4mRgsrih65Ir*il3!6_hMh)js&{sE-BO>{ z_v$N$4rMogJH)=yJfI zy12N&ZETFZyw=K{&tLObvt$FP5>Z!a6;4)_GzO@?TE_3<>;9I$I#!Pk$3yfyng@{n7-YV zE+*s + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRHitachiAc3 Member List
+
+
+ +

This is the complete list of members for IRHitachiAc3, including all inherited members.

+ + + + + + + + + + + + + +
_irsendIRHitachiAc3private
begin(void)IRHitachiAc3
calibrate(void)IRHitachiAc3inline
getMode(void)IRHitachiAc3
getRaw(void)IRHitachiAc3
hasInvertedStates(const uint8_t state[], const uint16_t length)IRHitachiAc3static
IRHitachiAc3(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc3explicit
remote_stateIRHitachiAc3private
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc3
setInvertedStates(const uint16_t length=kHitachiAc3StateLength)IRHitachiAc3private
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc3StateLength)IRHitachiAc3
stateReset(void)IRHitachiAc3
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3.html new file mode 100644 index 000000000..c19681754 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3.html @@ -0,0 +1,498 @@ + + + + + + + +IRremoteESP8266: IRHitachiAc3 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages. + More...

+ +

#include <ir_Hitachi.h>

+
+Collaboration diagram for IRHitachiAc3:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRHitachiAc3 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
uint8_t getMode (void)
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc3StateLength)
 Set the internal state from a valid code for this protocol. More...
 
+ + + + +

+Static Public Member Functions

static bool hasInvertedStates (const uint8_t state[], const uint16_t length)
 Check if every second byte of the state, after the fixed header is inverted to the previous byte. More...
 
+ + + + +

+Private Member Functions

void setInvertedStates (const uint16_t length=kHitachiAc3StateLength)
 Invert every second byte of the internal state, after the fixed header. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kHitachiAc3StateLength]
 The state in native code. More...
 
+

Detailed Description

+

Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRHitachiAc3()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRHitachiAc3::IRHitachiAc3 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRHitachiAc3::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRHitachiAc3::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc3::getMode (void )
+
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRHitachiAc3::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ hasInvertedStates()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRHitachiAc3::hasInvertedStates (const uint8_t state[],
const uint16_t length 
)
+
+static
+
+ +

Check if every second byte of the state, after the fixed header is inverted to the previous byte.

+
Parameters
+ + + +
[in]stateThe state array to be checked.
[in]lengthThe size of the state array.
+
+
+
Note
This is this protocols integrity check.
+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRHitachiAc3::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
+
+ +
+
+ +

◆ setInvertedStates()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc3::setInvertedStates (const uint16_t length = kHitachiAc3StateLength)
+
+private
+
+ +

Invert every second byte of the internal state, after the fixed header.

+
Parameters
+ + +
[in]lengthThe size of the state array.
+
+
+
Note
This is this protocols integrity check.
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRHitachiAc3::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc3StateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRHitachiAc3::stateReset (void )
+
+ +

Reset the internal state to a fixed known good state.

+
Note
Reset to auto fan, cooling, 23° Celsius
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRHitachiAc3::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHitachiAc3::remote_state[kHitachiAc3StateLength]
+
+private
+
+ +

The state in native code.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344-members.html new file mode 100644 index 000000000..29331de19 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344-members.html @@ -0,0 +1,118 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRHitachiAc344 Member List
+
+
+ +

This is the complete list of members for IRHitachiAc344, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRHitachiAc424private
_previoustempIRHitachiAc424private
_toString(void)IRHitachiAc424private
begin(void)IRHitachiAc424
calibrate(void)IRHitachiAc424inline
convertFan(const stdAc::fanspeed_t speed)IRHitachiAc424
convertMode(const stdAc::opmode_t mode)IRHitachiAc424
convertSwingH(const stdAc::swingh_t position)IRHitachiAc344static
getButton(void)IRHitachiAc424
getFan(void)IRHitachiAc424
getMode(void)IRHitachiAc424
getPower(void)IRHitachiAc424
getRaw(void)IRHitachiAc424
getSwingH(void)IRHitachiAc344
getSwingV(void)IRHitachiAc344
getSwingVToggle(void)IRHitachiAc424
getTemp(void)IRHitachiAc424
IRHitachiAc344(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc344explicit
IRHitachiAc424(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc424explicit
off(void)IRHitachiAc424
on(void)IRHitachiAc424
remote_stateIRHitachiAc424private
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc344virtual
setButton(const uint8_t button)IRHitachiAc424
setFan(const uint8_t speed)IRHitachiAc424
setInvertedStates(void)IRHitachiAc424private
setMode(const uint8_t mode)IRHitachiAc424
setPower(const bool on)IRHitachiAc424
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc344StateLength)IRHitachiAc344virtual
setSwingH(const uint8_t position)IRHitachiAc344
setSwingV(const bool on)IRHitachiAc344
setSwingVToggle(const bool on)IRHitachiAc424
setTemp(const uint8_t temp, bool setPrevious=true)IRHitachiAc424
stateReset(void)IRHitachiAc344virtual
toCommon(void)IRHitachiAc344virtual
toCommonFanSpeed(const uint8_t speed)IRHitachiAc424static
toCommonMode(const uint8_t mode)IRHitachiAc424static
toCommonSwingH(const uint8_t pos)IRHitachiAc344static
toString(void)IRHitachiAc344
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344.html new file mode 100644 index 000000000..9e46d328c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344.html @@ -0,0 +1,607 @@ + + + + + + + +IRremoteESP8266: IRHitachiAc344 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
IRHitachiAc344 Class Reference
+
+
+ +

Class for handling detailed Hitachi 344-bit A/C messages. + More...

+ +

#include <ir_Hitachi.h>

+
+Inheritance diagram for IRHitachiAc344:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for IRHitachiAc344:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRHitachiAc344 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor for handling detailed Hitachi_AC344 43 byte A/C messages. More...
 
void stateReset (void)
 Reset the internal state to auto fan, cooling, 23° Celsius. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc344StateLength)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 Create and send the IR message to the A/C. More...
 
void setSwingV (const bool on)
 Control the vertical swing setting. More...
 
bool getSwingV (void)
 Get the current vertical swing setting. More...
 
void setSwingH (const uint8_t position)
 Control the horizontal swing setting. More...
 
uint8_t getSwingH (void)
 Get the current horizontal swing setting. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
- Public Member Functions inherited from IRHitachiAc424
 IRHitachiAc424 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp, bool setPrevious=true)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
uint8_t getButton (void)
 Get the Button/Command setting of the A/C. More...
 
void setButton (const uint8_t button)
 Set the Button/Command pressed setting of the A/C. More...
 
void setSwingVToggle (const bool on)
 Set the Vertical Swing toggle setting of the A/C. More...
 
bool getSwingVToggle (void)
 Get the Vertical Swing toggle setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a standard A/C horizontal swing into its native setting. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
- Static Public Member Functions inherited from IRHitachiAc424
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+

Detailed Description

+

Class for handling detailed Hitachi 344-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRHitachiAc344()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRHitachiAc344::IRHitachiAc344 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor for handling detailed Hitachi_AC344 43 byte A/C messages.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRHitachiAc344::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a standard A/C horizontal swing into its native setting.

+
Parameters
+ + +
[in]positionA stdAc::swingh_t position to convert.
+
+
+
Returns
The equivilent native horizontal swing position.
+ +
+
+ +

◆ getSwingH()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc344::getSwingH (void )
+
+ +

Get the current horizontal swing setting.

+
Returns
The current position horizontal swing is set to.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
bool IRHitachiAc344::getSwingV (void )
+
+ +

Get the current vertical swing setting.

+
Returns
True, if the setting is on. False, it is off.
+ +
+
+ +

◆ send()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc344::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
+
+virtual
+
+ +

Create and send the IR message to the A/C.

+
Parameters
+ + +
[in]repeatNr. of times to repeat the message.
+
+
+ +

Reimplemented from IRHitachiAc424.

+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRHitachiAc344::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc344StateLength 
)
+
+virtual
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthSize (in bytes) of the code for this protocol.
+
+
+ +

Reimplemented from IRHitachiAc424.

+ +
+
+ +

◆ setSwingH()

+ +
+
+ + + + + + + + +
void IRHitachiAc344::setSwingH (const uint8_t position)
+
+ +

Control the horizontal swing setting.

+
Parameters
+ + +
[in]positionThe position to set the horizontal swing to.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRHitachiAc344::setSwingV (const bool on)
+
+ +

Control the vertical swing setting.

+
Parameters
+ + +
[in]onTrue, turns on the feature. False, turns off the feature.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc344::stateReset (void )
+
+virtual
+
+ +

Reset the internal state to auto fan, cooling, 23° Celsius.

+ +

Reimplemented from IRHitachiAc424.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::state_t IRHitachiAc344::toCommon (void )
+
+virtual
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +

Reimplemented from IRHitachiAc424.

+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRHitachiAc344::toCommonSwingH (const uint8_t pos)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRHitachiAc344::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.map new file mode 100644 index 000000000..10cf25d5a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 new file mode 100644 index 000000000..0f6757465 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 @@ -0,0 +1 @@ +bc686b22e4ddf734f61a87c2609dac47 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba11bc4899b99824a53dc0e9d2191e99fba6556 GIT binary patch literal 5244 zcmb7IcUY6jzRuF5gP?%4P*gesN^eRP5JW@}X;K8GMFc``%1Uob@2E>?0@6z;N^b!H z>4wk)1c>wwce3Z6J?Gqe|GCMN@@2ls%rn1v+l1@uY0^-#QbHgQ8m;?k2H-OUy!yz= zzA5XcpAEwy`wUYQ$cUwuRDS=ZKq3H<`id zp>)vBT{{0>+aPT%Epg;EgpQWhqpaD%4~y(7FaP;xYHUJ6LZGXlpkTj?cI17okmVRE zwb!r31{Du7rJPyF-dlaIw13Fyv%)Sd2yAR3BGO=U?mFf=q2gUu-L@bDa- z?hK+_#yARfNIvQfW-EqAM6`-g>t)K!rCxNh!Dewdoid9i7HJput{4tCVWi)Ygt)jk zHHX|4IyyQP6%`r(<0_k@m7z~ZXna6ddpM)3rziIO1aE(^iH=#y%gYN137Os89O#bc z)zZ&d2xI#H0s${_9eW)8srq!g&Fe2B;9PuZ^RCf@_W zyZ&c;|p zqc?~i*?$fC?XziZ%;~8g10y5Hj;g9^Pk;X+Sk(uaGVxmrT{hLvuF1LcGe!O$5kZ+~ zFeP;7&TjG^%{7S-A>&eg3yaNEV}1SaqWF?e?uBvOd& zXCmI--eyQRO$JKC!$T5|Uc zJ_{9-@GP#Z1(BN@lw#piNIdi6Wc5ujBrGPT)1ms0#KiUx3dUc*em&n_?AgVQ$A*NE z)VQFv@iR@qIKC)ejVMBcm#;4)2L}oav@+9l;yjx4#~-areJR(#5Zv6{YHDg#SX0M9 zMD{oSqhn-DreTDh77_Oy2J#Q_cgdqk{u>jJ^=eArlAk-&S+g1(L8_s&Y0oaIPqSIb z>S!y|$H*!JFL}syM9bOvF3)&D7#^OL^@x1iW%GDI7c%M4QeF9KKA)fTGBm2SI@ArS zo^^sIwx>1w3V&kNf{@vnBdyG^k;|u3+w@IhVImeLt49i=Tw+!;<>)1uov%O}LeL0( zDfJ=El!E%Fj_}F{OFx47PiGa@kUD(gS2B;k*3+@+afJPh5_F!5;gN15T(Xfnc1R9z zw7jjr{NnDTebIHxE$=klo91@f2pP}C*$xX$lP~kT)+Vfcqhi+Y;5X?{1{nF%lnQ}2 z!^N!pbL^QC^vsct1^tDHZ=$lKNqi+{GH$p?CnQfkwc1Rnps;APXBx7ObrBCAXbN#7 zyO!4c>w##+JaJjjC@&qZ~O+m$Q63}uMHl!eiw}lw}xA_Q@wL-p(qy>WSnBi z_xoJWR+d#e0jHQWdWkEaZ^f>TG=NW*jP~l-@_sobVFg_8P2k(q2U>aocsNb&Q7^8Ix4EipwWnw zlyt52cdE7DnJx4K0s?yNDrIZ13k#o=&JS%omU^#Vg+j|3o0^i)F2>pdk}f}GByBpW z3GgTI!0FkU>7CAf)OC98!lp>dA2aHtD8UhZuK9%pjuFq^T%2@*ss`Kk)|Tt3Up{Sv zXpY3xchtL_koWHySXm>`F7`Xis3@p%_VBPlS1xX8Y01mmTN0VgcFDYqO5K#ELDV-4 z{)W&o_$8m`S}tyTiRn%JMzk#*VcUO&&D=d*rg49e1IWX5KXAu!AX9c(vWmEyTlM8X zZut*n0O=ul?PM;{HI|f)j?%l=yg@R64RC}r%F#@!{tG~VDHPBVjplQW&d|De0IbEh z{{=I`pS@9Rk6tsUdt_$T|Lxr+)XT_MpP^^djDklHf&|(vDU*KGzYjtH2wi;*W+L$BPA@1`muswVe5tE4FYRyT9$uNpwByjMPidYx?4W(Ys#T8(pA;cqKq3agGJh5k~45+j8JH-6^ql)x^ngDC)(mxtt8ZKvzUwXTATCpvl9wh zS_BN!OwFl~+TDF$)S}UAddajHy-yERgFmmJpy2sTqc`B8Uq{%ST4N86UYFX0)YR_V zg9>fwl8(=+qLnX>24l+kU{|2fL8@DgcON~vjP%4We+?#9)6~SkkH#DhR0&i5TV99O zx1~2L0?&7H60)*TWdVCa)NNc`T#%r+IC|=~uh!)R<@NJx9E*LkHLq@MZT)L+FVC_i zpg%`B2Qa!!a*l#`#gKR&o1AUq#rcVsk57fqo&zNn6^`@_zGhnOaFv3BVs8eYt>~M2 z=M@8xG=*PZiTg98W9gKC`08f}VxDbqk{6HmX26=mtym6EPHG)Y0mf);I-|G+1Ss+n z7cP^ouCDUu)xkGd@y#cqY*J3o`;tXs-c;HTE>D!(*xK6aKYiMrDsI!=+xtcsQ|HPn zWb`@r^XI6rFmk)WY_x6HPp~*%=SNsqH#c5E!HC)!A05*fLw~7^==_|3bmgg_ zKA;@;@t8q?ca9O12*xSe!(3WZUq3D)JbVaI{~_`R3Znt`)o30pVxH)id3a7u?b~n*%ZDL{J;UDViSn8BMW=2NpB-q@OmO{9z z0-+WV6l_JIXxhY9FfGdVgV{H3+*nH9^FLZjIo*H-+Kd)Gsr7qUY*b?1^T&;KG;+MW zWH}L52v@eHW)TbWz>US{{nriLlV z7vIDTL>rJ;F|KBMgWwZ@?@*!I0>x(!jYh1=!`E5B&_HHwSjapv{?ZU|Z##huO`H8> zK~Z^ygs7C2TkKL`(X^|fK(4u@q>}S=Qr_&XjT$-QHj(({%0VT!({H%W*v;wMTP`jx z>`H!5KXZS!YzzboUK2xlH+*~d9*+x)KjB%H&)(vW3Ez#4{qi{I;j)as{ z+-X9rqOy{Ln%W7Db{zX`1&qetGP1s2+;v{9OY?j3nCH>FD6dW^p*lIXXI4N9bWsl+7;638XGW!Dvb9I^)a zRs-Mna=qcKv;c<5fxMn;wMa0vZuU{7l$|c|lghB(n*YR~_q5>$)Yuq1`AW)N$g)YX zJ&s#7Ro2ZeRI=B}ci-=xE^3d;nT*;iPAh@4PCdL7<$cbi9J8w?f7)X9Y{8{e{GYE64F>WCU(Xk`3t@Xk{JQ4|?3! zk&o!uM&}Dec5sPo6oiXNQ(f%WX6l zJmvH91E+#TR?RY{=%;HqoWCHaT#TKj_robf)(9>HJ7CTwe`5GfdVxPr#%K3VULGd( zyTp#{3$Eee3Y_^sATKjB)x{}xi`MB8b}lh^qGp3}9d7!m&sj>ouyDY8;&sE_MQqB> zsPT(Cl8AJJh_YtE8_F$>3#?;WGH5q>Q1OoL_;=;gEhlx}tHXOUJxcx!^2;W|OfjJ4 z*WAor%}`Pgv0>2Bjx^+p9ctueZM&bIXE(iW!oT^$f7R~)(lmnY_@@N@yQ}Y!aDF`A;xG~%91Qw0 zu(S6Qq-dtemmq}_5`XOB#^n*lWfrJJfyeA4JJ>!)%*?C_rrxxdXwcr?PS3(}-@?M8GNslKxxsDMpL);8h-tbO zX5X7AAZ%I_)!N#+UsS3pkmrSOI`Eng=L4dkS=sA?Y0jcxycw67*>4JKQU_6@tohiX zX|Kk4S_6#9Hqp8v@)yUs<7cu!q@!-j1&_%k*v}U&$7{uli;G|0ENK%F6Ng7dk<8|$ zSn!C6#f3BSF>rDcre2l5^t8mtsN|WtmzT_k4<8!Ok8ys$1jHIS(B@gS|WCxNee8+1QifL?G3 z3Ko6C^pqsmY9N(4KOhkAqoSyRR{)t7Hd;A{Pg~kV9qDDwk9ubk~s;VknQe6WB6lz(9Iqmdt+3n_ytt!xq>}Wk`K2StF z%o)&x`nNB{D(iWB%U+`6ye=!72K*Z_Jp;qXq?5_PfX=YXypY4yhk@GG);wU)T|B16 zf&+Y6TwdPp6)J;>d8`>O4`lU~1)e!Jc;W+0_g>i9Re*9q-qWxxA6|P7Y%Mh)6X@BB zrs0z(qs13SeZWT%i397*B>eQNG{#R=MTH1hiP?Bf&Y^6NC$$67YqZ3uau`NQ3O4fq zaaJ&;@M6!W&)PwphP`?(W>i#!Rh*o3C~%D=Nro zX`4%q-@bcCK}q?ss3<}=L#q7wHzFygiMu8y*9iL+~k}7Q;U-Pd_Is*z(InU znOQ+$;XMI$a0;_BR>Ec(aC8HB4-glAo88zzeTr4;bu4S@1VLsMSPT;r6VNg$kHGZC z^J+q>#2`_uk`dsjgOZYxMat>vr@d$n`Q#fq$-jVS0viQ7kfS`<8O^q}yStd}yJ*rl6z4f{k>OpFa#3X0SZn zr$;-4#e1l*MN({BW_NnH^(?I;l6e7#>-(r4Nlr({$H#Yx;4#LVY`SPWV>nD<&Bet+ zz=*8>tgq}j2DMJOsmsI79bEW0pW*7&-$xy8fC~`es@Iu^JJ%H59C2eM{ppfA&F7o* zfF8h_TP^peO`YmtJVfM@|F=Z{Mf0z!=<3UH`|9IHW% + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 new file mode 100644 index 000000000..5ccb815dc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 @@ -0,0 +1 @@ +35cefb94d2f36be1ad5c9d511cbdbb17 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..85a663aa2ea2b6f2ee6de9c2abe4cdcaa64985c5 GIT binary patch literal 3189 zcmb`Ki91wnAIA@Q%g$qZh{=)|X+%hiWki%=YJ{?+EHhF`BYR_)LXt;9)?qZ3G(5;M zLnOPwSi+;2u{N@dn32ZTdwSpNdES5Ez0Y;-`?{~|ocsFS_xb+5pWlhMzH~uMSWXxK z05PP6nGHC`fVYnzKiFHVqJM(JUU#btX28#1SKhm#6aWxCiZnB^3(j87iLkSsgT5yi zxW*h(mfUw-w6ijWL{x~fEoo_S6OwC^vL~vgo)$Awk!ATCx_IlHHTtUY#B@^0xYFnB zzVX>~y%UGl;F3h{?*ebNRi`gRiK#6yRupUfvM`hFu#ln^R(TLTjNMWd7RaP&&NK>` zUyd}{lSYBQ-xf)Wl62T>>MASfM&?Zx5yJKH++vE;15qRjB`PTBs=x@scFwI$PfyF@ zzG{=|>KruFz0SW;gT=Q^XDqNP9xDlw1reS~0{>mdq2VdXDqUJyImT zMFoXieWo?a2dko@V!eNu$y9_w>pf^`aQm_YE<>|_sAQz1RE2GQ@99Aq1)T|8dYO}x zbJOg|{_t}~4Gl)0wc&dfU;1Z><5O(B9XLGaL0MWdnq5?dV z!&OMn#{8G4$2KL~(+OIF(GC^vk4y~0x0Y*Z>00#OUeb}*`T2Z+ijyaAVVKNs-#-h*Vm_OxoD0Z&7ZMUudv{C<0x95Voyf?@s1I7X zSv9u0y4sPX=sB(L^?G=Le63c&2=C7xr=(Pefj#(D2Qgu5>(PUG#l;qIV#?&CEB+3# z1Eqd4>tfS0$SLh5W)p$2z+$DRrkW?o%0hVDA#_1Of%+5b0}c%E_xHc0s^M5U+nIcr z8|>pF3E=Vgw+rz7!e}%-WP?30R1zB-Yg3X5b1h#Uh2jXGs-h$Oe0{0m zJJejBK3^n}sN5UZ)h8Pk7PdHAE+Z&#r`pL2@{m9vApX_nzFO%)TUuTging$@nE(2f zFA{p{o`a*K(biHGgmeA+^{;$J9!bxh-BF#Lo$Z|S1!I?tNl2i9yPdDi>C5!?_I3&9 zdEoJz*kw{tk(!zs!6+n+u^PqO#8lp1C@ISA?(1VOE%kJDY1avjG>Qn3S|9GCe)ri3~n>;_YeVb1(ty%WrrvAbNUwTokG5rmby?X}(WDfU4k! zi3xciG%RdmY3v;CqLr1^#fzz3*v7`j%~|MoeH4b!<>T)^Uge3lwCsKtvLX5jRLsuW z9F3cR(AT$oKAU~U@2|Uo=g#f%v&=S*2)}h}zQ+4=IG9sSyPI%0+)6ol-nOB#QVO^c zx@r!qyfgfIF3n#MZFAOAfdMC_GfP`kGibgYi1oR4K^@@v%zKZA=Zu*jA5M*O(8v)9fMTp4Vy|vy7K_B3rP<;9& zyNo4t5F<6|mi=D4ke_x|P-D-bKSg8S>qvr=xCj~L9I_*Zl6 z32nb1?EbW4Gg~X4&tJI04fgj(!L|qwwzQ>aX_uWob-FtaVBqi%gPuo4(zJDaYYV>| z<*03}-mj!?c7OYJofGIGDy>mKBnE_Le|%azjJ=Y2gZar6B9eC5#`pI0&#e72E;?4a zux1+%QPJ^|@)f17t!JXoUo9*efX>+Jd|fu4)O|z?x3?dm0RWMISUBCJLLqJ?I<3=I z`dXm5sY?G0`m&`hB&}Xh{kQCwS#wS46>H*u{8@Hj>r=Nw$aSpoh{Esa))Hp*}UHe4q-rN)*YZ> z=w`A%vj4%?s!rh2UzcrdF>FoL!!hhPUTBHk9m=}m-l62=7caOx7C{#y9@{eIQ|HY7 zzWkYV~9F9=&tdM;=pYzE^-Z*4+fW+>uk_2`YN+S;Ii z05KsUO5n0widH(UX^UO|<3}*LNY`;(2^DBBpK7U^YAF=$Q0J3xV!-}fi_W)>iH-H6 zIO{)8OWO;mAOiyfg$4K}B$BGVM)}WzR@K?r2~q~6tCyEoR#w&?etsbD^=nHd$>5NX zgtqAyFJ24|4#wBg48k_KS-8gA-rn-k(y(NUmwLWxrAXc5$E_V5dEM~xehK7rl$F&C zhgaoEAJITKj$5OY3SRwc0>B$G`H|_=5Zc)2KBT2P6~3-PbFat^VN>Gb;;2+A7|Zwd z_2JP`8ENUhtWy$z>A7_RR1}|#j7+c1o;`cy<>k2xqtKIg z{{k(vex(r%-N3xJySw{btTEGj`HEdLF{o* zT@g>rhz$)5sc?H8xXobJOB7xjuT))Kt%lBhL7U^gS{<~~;ya7OX@Ld9w{I_BuFTI{ zNX)BWBiYIy-aQp0gBp+!F0&|Me%Ypk+Zqp{8*)VDZ{NM!)7v}eOR*hQ5&SSV_JH%H*Tcg@ z_z|(Hs;a5U*w8Q=8JCziQFnhP`d=dc?aYuBqlcRULyY)d1_RVG6_g@v&gmM|daSFf zq_otEeD#{6V~O3-C&b*)H6#?8Ra0}a!eMD?Nfan6E92wiizn|QN1*wwB z*}^(E1pfvcfB=7DyPks&m6d5KDiY%LcDA>lr=&2!iigKxNr;Kfu~-IY&O87a{o}{+ zjuG&PuvqNXt0Q1wfNN!4{>vZdT+Ga3EJ?46i;v&ZQb^k1(2e))+sEOBo;p=qS62t3 zKVWgh1B-p*RQ&|`xjv{IOaU7ksiY1s9L_V1nv=P<=1U$ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 new file mode 100644 index 000000000..49092288c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 @@ -0,0 +1 @@ +83b1a000783b5409d1f40cfaae3aa3e3 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc3__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f721b1bcda174f0244b7b19279679ecb0c70d95a GIT binary patch literal 3209 zcmZWs2{>EZ+KzJ2&?Bu7RiRGJrRJfOv>|P^iW+LDM$;%RLa8BUHP1s(a|k^gHP1B_ zMNO@lC^aRD2CaDxclX}=pZovM|LkY)wV(B@z1FwZ`+e{G?g)L|JLkZ>U=Rp&PW!Hw z0noYvw?8X0@YHy+xBxWF&+gyR0-gT4a+(VgK_GSwZLM2I_{_CTZyhN4q!m$xEDU5K z32TX2EGQB3#R-s6-twnXVsYGs!a~Uqr;@XAgDhT}^crz+Nv)y~jwWCn#r+nAGxLY$=5|B$tFPbp8AC%*QQY%XDz-<) zkT^d6NHm5ni+K)7%}ENwF>DT(!}&omOPsTc}k`Mp{HIyZAe!aoFE1I((d6NtpvT(RTbDJQ#wrELG$mKH>Re}8aDi1Y5MncJ6= z$93Jky&nb!IFyx@pJB1}_>J5KpSHl?noduSv~J&~&}hBK2U`alT>@j@OiC>Tm6W(m zOiYNLix+!)dy8L|$8}dXd(6ssNp)RaB7yKBUD1A&JL}CGA%6d3 z=k)Y+F==U=0iyaN^+jjw_t$J6zZgKdxP*Z{hkjzDZBJn1A|fNfZuRIg7_ch}+0q|g zTlV@jH$!-Bty0Y=E4i~kux|96oXZuyNA7N(9v*cdEqnVSTRXc80n5wF`Y8fx?m8d} zfFV{xM9}K~5QMpul$Dj$(b<`hkrCBnb*6Q8Hk*F5SA}V3Mk0}>jqXw{$D3@RrGadg z)~Tt-%@yggSY~C%uX7(l*k~u}>gr> zAv|exANu0(Pd@Q8yg$I!4D4(1`OFQd`goS5)v9DllKNq85kHO%_@VVquEQ*&5`IbQBlz@ z@STHY9W@dtEiH{F<~Ep(&8)#y+|kjo*t8<>`pZRqef`!~j4Uslof&>iuQM?-S3c_m z-%wZY`SeLhQIShjv_Q5~LR@@)yyP(x6BFdprTh2pMGAA^D5i&h#Q6A#1jj3*2zRu= zV>||beT+x`Px@nE$j|gMFI#+@5}$9xj)Q7yYQ|aRB|I{0NMds`1GZIs#XE4*Kl5rz z4!UMHK@-07rw*BCxqsT?oJqC$r?qLh-IkCu2C*#jGKNzo7jXjc7vE>eveV~Ne}b>k zml{e&Dpb;8llX~%T*I3MgZPf8E3T5U`60X0GDGIxoK@PFbpl^=Dt~Vra$2dDjLZ)q zBK*#6n2-gb46s=H#>uhj!H>N^1h=f2Vv;9I-4(BnPPnDSzEo%3%E`dXS7$e(^p>7X z30q?nu2vs}*^6C)PqT+?b(NZ_3)qv)NHNKwB%7sEh{!EX)E?_&TgC_A=Ap?j5-H_; zh7J=CEyki{dtLY0$oU6goa%6l?yTFjU*FukAgY@Qq0{NP z@86?UR8=Fh{SLLacXuNvC(RSGvPw#`BV*T^>Gr3#19TiY=Xh8Y;2qn5fQn0d727}iV^Yg@vdlx_?aq_SMR#ae6?qsgV1sJYX%0K#Q zK2Fu@w%JW|UbNHuzlZ@cu}axU^FbKN;S!8X|5r)}j!__Yq zB9e}%9QsB^9RRUE(AE82x_Nszb&otgej9@kM4TSWgWB5K-V_vUb#UtG+jYD&)s@`?a4i7XIV?%9j@l) zW`~(3&taD;eDcb|f)=1mk-5>H#aV6arJG7lGdh}@j8nC^D}VeESY53Ea&d714&gFD z*9!|)k&%%+U(dJODr|PbEaNjXbu29Srs|xQcGp_GM(V1o*Zb9eLO40wf9YD)(#byK z=-8O7_pZZ?-w|$dYATGbF94O6l8PxWm$9(0Sl`|j5)lbKJUn#vm(Ig%muoI6H8tmoTo5PwSkNbH`Olv}FDx#~dHk?=E%liBrk|gNveS$eAgFje zUf^v z-mb2l9vR^!*uzB|Te7#SJx2j5b@GIPlt7E0GYb5O?2;l1va$() zR-GJg>4CxEiAE1;VEJX&2Fwb(bq+6_Ls3z2b*e57(El1c@7*spue>$AS6o#W0d=J9 z0un}Bdi9EQ`_e{HWhJ4%U-z}NrN*14hK6*&2*`Fu#m0(ANJRel;Rs;b-QE54=S(w} zKZ$nB^q7~nxcD*j+$CFkd+PdpJLk;ooB&g6jXimy@;RHhxOh@>vh(r2^YF-sY?=-T z@9BwA%Bc4_*bK(92?FR@0S3m%#H47%CfoNm3f1|JA|4qS7RFN6a-s@{!vQ=Ws36LR zPxWCi7=b_#laR=5Y4JxMxp;WoDI*ts0CE6=oLgOu&da;vf4sr+=bwMl4grpnL^q}C zX&eMc!K8tuHBqSF0M(?%J~1(23CPZ#jo$=p&$gGkSM$lM4Ionh^Z^odUh0Rds;Y`f zN_I?7XB7~=?9R;gTAG$%Fk^3xw|91&7rGP9u8Cg1o;FgT$H~Qo0?HGOMi*PQ5Tzd1 zmb-kr=e{~|3ypUO=G1A>o_QfEYXc+Q(Q z!DO^I?(RX7(_vyX$Nv+mf174mJL<75T|?L~10#hp_u)boMQ=+4^I>mcyY2sW7kmN3 fVWq-pO2-JJ%FNaFzI8P4ZvoOq>1vfCp9cOD-GW)B literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424-members.html new file mode 100644 index 000000000..468c48f73 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424-members.html @@ -0,0 +1,112 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRHitachiAc424 Member List
+
+
+ +

This is the complete list of members for IRHitachiAc424, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRHitachiAc424private
_previoustempIRHitachiAc424private
_toString(void)IRHitachiAc424private
begin(void)IRHitachiAc424
calibrate(void)IRHitachiAc424inline
convertFan(const stdAc::fanspeed_t speed)IRHitachiAc424
convertMode(const stdAc::opmode_t mode)IRHitachiAc424
getButton(void)IRHitachiAc424
getFan(void)IRHitachiAc424
getMode(void)IRHitachiAc424
getPower(void)IRHitachiAc424
getRaw(void)IRHitachiAc424
getSwingVToggle(void)IRHitachiAc424
getTemp(void)IRHitachiAc424
IRHitachiAc344 classIRHitachiAc424friend
IRHitachiAc424(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc424explicit
off(void)IRHitachiAc424
on(void)IRHitachiAc424
remote_stateIRHitachiAc424private
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc424virtual
setButton(const uint8_t button)IRHitachiAc424
setFan(const uint8_t speed)IRHitachiAc424
setInvertedStates(void)IRHitachiAc424private
setMode(const uint8_t mode)IRHitachiAc424
setPower(const bool on)IRHitachiAc424
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc424StateLength)IRHitachiAc424virtual
setSwingVToggle(const bool on)IRHitachiAc424
setTemp(const uint8_t temp, bool setPrevious=true)IRHitachiAc424
stateReset(void)IRHitachiAc424virtual
toCommon(void)IRHitachiAc424virtual
toCommonFanSpeed(const uint8_t speed)IRHitachiAc424static
toCommonMode(const uint8_t mode)IRHitachiAc424static
toString(void)IRHitachiAc424
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424.html new file mode 100644 index 000000000..ecdf66cef --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424.html @@ -0,0 +1,1125 @@ + + + + + + + +IRremoteESP8266: IRHitachiAc424 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Hitachi 53-byte/424-bit A/C messages. + More...

+ +

#include <ir_Hitachi.h>

+
+Inheritance diagram for IRHitachiAc424:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for IRHitachiAc424:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRHitachiAc424 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
virtual void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
virtual void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp, bool setPrevious=true)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
uint8_t getButton (void)
 Get the Button/Command setting of the A/C. More...
 
void setButton (const uint8_t button)
 Set the Button/Command pressed setting of the A/C. More...
 
void setSwingVToggle (const bool on)
 Set the Vertical Swing toggle setting of the A/C. More...
 
bool getSwingVToggle (void)
 Get the Vertical Swing toggle setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
virtual void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc424StateLength)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
virtual stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + +

+Static Public Member Functions

static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + +

+Private Member Functions

void setInvertedStates (void)
 Update the internal consistency check for the protocol. More...
 
String _toString (void)
 Convert the internal state into a human readable string for the settings that are common to protocols of this nature. More...
 
+ + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kHitachiAc424StateLength]
 The state in native code. More...
 
uint8_t _previoustemp
 
+ + + +

+Friends

class IRHitachiAc344
 
+

Detailed Description

+

Class for handling detailed Hitachi 53-byte/424-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRHitachiAc424()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRHitachiAc424::IRHitachiAc424 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _toString()

+ +
+
+ + + + + +
+ + + + + + + + +
String IRHitachiAc424::_toString (void )
+
+private
+
+ +

Convert the internal state into a human readable string for the settings that are common to protocols of this nature.

+
Returns
A string containing the common settings in human-readable form.
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRHitachiAc424::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc424::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc424::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getButton()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc424::getButton (void )
+
+ +

Get the Button/Command setting of the A/C.

+
Returns
The value of the button/command that was pressed.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc424::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc424::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRHitachiAc424::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRHitachiAc424::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingVToggle()

+ +
+
+ + + + + + + + +
bool IRHitachiAc424::getSwingVToggle (void )
+
+ +

Get the Vertical Swing toggle setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRHitachiAc424::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc424::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
+
+virtual
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +

Reimplemented in IRHitachiAc344.

+ +
+
+ +

◆ setButton()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::setButton (const uint8_t button)
+
+ +

Set the Button/Command pressed setting of the A/C.

+
Parameters
+ + +
[in]buttonThe value of the button/command that was pressed.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setInvertedStates()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc424::setInvertedStates (void )
+
+private
+
+ +

Update the internal consistency check for the protocol.

+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRHitachiAc424::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc424StateLength 
)
+
+virtual
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
+
+
+ +

Reimplemented in IRHitachiAc344.

+ +
+
+ +

◆ setSwingVToggle()

+ +
+
+ + + + + + + + +
void IRHitachiAc424::setSwingVToggle (const bool on)
+
+ +

Set the Vertical Swing toggle setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
The remote does not keep state of the vertical swing. A byte is sent indicating the swing button is pressed on the remote
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRHitachiAc424::setTemp (const uint8_t celsius,
bool setPrevious = true 
)
+
+ +

Set the temperature.

+
Parameters
+ + + +
[in]celsiusThe temperature in degrees celsius.
[in]setPrevioustrue, remember this if we change mode. false, don't.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRHitachiAc424::stateReset (void )
+
+virtual
+
+ +

Reset the internal state to a fixed known good state.

+
Note
Reset to auto fan, cooling, 23° Celsius
+ +

Reimplemented in IRHitachiAc344.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::state_t IRHitachiAc424::toCommon (void )
+
+virtual
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +

Reimplemented in IRHitachiAc344.

+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRHitachiAc424::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRHitachiAc424::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRHitachiAc424::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+

Friends And Related Function Documentation

+ +

◆ IRHitachiAc344

+ +
+
+ + + + + +
+ + + + +
friend class IRHitachiAc344
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRHitachiAc424::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _previoustemp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHitachiAc424::_previoustemp
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRHitachiAc424::remote_state[kHitachiAc424StateLength]
+
+private
+
+ +

The state in native code.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.map new file mode 100644 index 000000000..7cbfa51cc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 new file mode 100644 index 000000000..1ac39cb1f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 @@ -0,0 +1 @@ +e27758fabb1539bba026d03c86a2d75d \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb4db79f7cf88a57187fa918a7b8b9560601024 GIT binary patch literal 3350 zcmZWs2UHVT7mlb@DI(IPi4f^nkN^@udX*wbmloI%0@4EPTDsYbi2>^ zfZH;!@s!Y7z7gU2q6HhQG|TzeW@xGh1>5>b;uhgwq^G zs_PVQeyHr|*<`lUVw$JuehtxXgdPT?_E{$%e>$5@_tF$0hvoF`*D0eOx{_;<+V|6J z*d>o!T2`3!+ofW8gxTW07)!*p4XiK~m}hy0vt2SpB1_*LId>mtcvRdMgak{+#>T=j zJV;4N>|A162{iYEv<^^uYN}VbP(fEmhxMgzjdwa!f39N4Bzc23!QS4{F|pP2O;J(j zij9*#FqWglV{L6+w=?WK_OaEo$+O}cmD)OB1?@T5S+;mz9t||e%5HkKsHi9t z5+akBn0UCqkPE{OT@6dr8Qk95^4wh+y|2LkLL7?hJ~`a(V`F1$8Xw2?=NW~3U$pib zt@I}wo0v$ds|&ijyL)?B0FSlm%N7x|Na+t>&KB_$_kLDAaF!zFnn(jQjPqcn`j zE#Uy(3m2|lz51rS{P*j=y(*!LcV}j1f@)maq8g5Noih}j4SjsB00x-nYE#tn)C0zD zh@rk)o0^%8Rt1RolS>20VaPC8u25cxabAhy9Dh&aSSDuY2*g{kuanayr}F+au6^euU1?pH(u*gM(n5dv5;z2u z1iR=fqj{jP&6!pfH`)9-bD!cO=(F(d z*}%X6l&uxX`}ovpWYdX0ghwg2cLg0C9n;d&D<18@y+mexw!#i z@0$KnHZn58*cA{I{JgVFt{7i!)57%(%PbGO0oa40QK%nqn`J0W=c122=xdZZ##(J! zMn>@VyhXO9Y-MHTUoJ{do;=A^e<)>QV!|gNFdL-4w?lSMOis=#EnRCsaf)eWF5shH zKtkq&HfIbFY9atEi1KlLK>f*YJga{L{%zJa6WGL6}~|}dpL2z zPDBQmdAOG{S1V&_p!eE4Xc>nmG@viWN~Dmcr8GaV=1V*b1mka0qLh~={kgOE=|0&f zV3%7LePbFB;gEt5hECcFp>4+F6gS5e&Eg)V_E6-d1d_a^9G6Qg)ecC<|JwMdksw8&dl96r#R1^edPr(e2<^cCZJ zos(Xb@Um9lMZL}FqSB`>xj>wab`rlL~sPHQ~{hh4bV7xwAzrR+yuCefXSq2kBek0nURrtai?{AMgf7y`G-EHorapQ*F z*)wMdD8}wP=W67;3$m7kHA-!yOl4Ci$4LJPZn>+D?K*Zd8^oX=Yr#mQN&93GTF81f$i;k`%1x-JZQ&hY+ zJw2@`?8UI;Wz8SN+u_Di;lNG`m|o)XNb_Gabjj<|wa@MO`1rgJCmdN^v4KJ*i@i-& zo?c#w7)&cQxWc1_SxQPu9erG23A^mLKT;eB<9tFr5e!K4?ZJeCo-O6%uQa5j=FE0AY zSmC>Ub5YM)rX#-Xau@eh@oa8x0xXvMbnycV?l0!0Jl_=3)XeA83}1QB9LI*BkSYyw zH;?F3w;-SHhli`#7Fu4pbqh=F!rI!|{S9cl_+LjY@NHMa6tUY0$;mCA6(9W+TA$%o zxS@x?&&+sgAMbg+x0mne=m06W{KZo|Wa{lL4WwIdU*CZZLzVcJCIR1bk-}KX66zFPr0j>4;?&~e;>%E|cyenqkhR5@h?D3O z6p#kZTwFwfQljlJ-wez2Ew~0OFMnB45p#URxDM+U1Z5~VHV+j$I94HqVq#+W`1ylZ zMpO+k!e>9FK#z@`oP;GMCFkbnKX`ZWZf$J|bLu+L12&LHo4ALmIbQHOUKuBm8M^9uTk&JmbQ3o+uH!ApsGBA+({rh*rg&vWH z!Z*_`@zn$?Al>03X4qsb{`k8A#Spv>I~QJ?bHtz%krWN)bAlipbMxoJ$gR1KbC)#u z9%J2OvVc9?y1H64#vBRnSOYgECT!x-8>c{kV0gDZ7pmKA6ZyW_KihB=Fj5}-_%R5N zK8}RL;cGS8k&%&y$BgypqaCs$e2O=KKVfe#V!k`8WeR=LlXOvjZypyYs2!~?CMJfN z9JqUgd<|je;216UI8CKe+Y0vI72=tYCp1Z5&j<8%G)oFbo5<7ruM7tQW>Ri;ePpJ z2X|EZCC%^~2djwEXR%Cwh0=JF1(am~u6*&4&w!fZL*zDWca6fKqoV^-!X^W`S*Wo> zF+WWT3e5$IIbKmwL^m{ej@5toy`-Gn68`9-fPn42dj>8p*=lIOK=T}p^jlNW7ajw; zn2N==1GWmP2R$H;L!XBWalLjZb2G=OVSxAow!QHk5m^n0a4U>B9jZYaE)fX}3j^nG z?Cuss(bo=v3IcEn;ipLq2ID$>5UjmFcVWHYg>)|uAiEENx?V*3(6hV}f3e*IE< zdU}AmT#=NF1>&-~x%m$YeYnI~NYzt6Zy%4x$NlzOMZkDf{8Cv}RR#cqSM_+7Hj4C6 zX(1o$1`jV$99q=PvB0UR0ySvOA*I!^#6CDUI8!66NUgCYm&Ctn_M=|^KRu26GO;7N zMOhmcaCOeRp1!sR&aH(nS!)Y + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 new file mode 100644 index 000000000..8cc016c00 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 @@ -0,0 +1 @@ +83321b013f1eecd9a72546893407d4cc \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..df924b19fb3ac8606ffe1d78368ca87723f58820 GIT binary patch literal 3162 zcmcJRc{r5s8pq#k*~QPk_G74wW$?3P8_Lp%5s{)S6Dh)s5wgr6St4SZ8QY{n5(a4) zdk9I$mMvr*gnsrt=k1*9ob%85_uTLGKF{^s*K$jIH55F0-Q9NZ5 zA&7_w=9nA_qXQWTv+NV@I3x9wO)Y=7B*T9NPkrDpr>&hxrBI}#q^ueaV!3IKV_&|M z-d~^d__^pd6DxzefIz50A51m#!LQdRNu$t`+K--N*-TD~orrWditg*UU~TQ^<8v=S zWUJ9lorNjVQUN=@xBVdR)-Hkr$1rNzKj3fiC6S}=}xHal$^~#2wC2Dce%d6_$ zyT4Rak{r7}ex#!(n*?;Pu{7@q%BHZlttN=5I$n*0v=$0f8oL|(pqcCFmAyS1ey{9v`Mxw*Mw@SPq6@eGc~jaK+rSy>7D z_I~;DeQxfSD1W?3K|ukkjQ;$&QGuPXh=}SlKjlD)SKq#U6A%!9aZ8AczlCH=n;GuS z=luHh%i3_4r418l1OUN5>$cI7$?@@%tHH7$?ur>uPVTF}rKCM5u$belQw^YC;EH%bnAn2qUDY-x!ia&ig^(!RGl(%UO5$a((Uxeq7|4p(m? z+X(wSf1`_{M@~(hnwnZ0@h(B+^)esly@VlXazyEbY`iu)d9}(vud0G*G23Siw^DXW z_2US9(lhki*a0*K)85e$Iu(CPnEG9gmjc$EHTH4U~c)dr5@ME*So*o+~ zr~RGjWM*J$dV1mW%*>2ucDOK5db2I*)2C1E?FbnenPyu8fuKlyR9*h}VqwY3a5zUP9Zq_TCRt`#3}ZVQt;b$j1A+)ju3EHnX+u9rbHCY?HwY3JDGL z_um~VjcjxkrM}cCu$h1Mjz*)L#hMjgx%{AYy&KL4q@|^~!bBq@Be~Xx?`qMEc!qT; zU8ju|2zUOFGls3Vgy9{|(TBxYtp1vv+cofs=C<3mF`huag(z`@}mN0g|HO#T+C z<4=UG0>R$F0lqs!urqma$PBK{1g% zqo~Nq%Uc1NP+U@A21-#aoGN6fK)jA5m{>x@y4u>9n3#eywt(+`Oc>GafVj@^QKBE;x63KVuT|9FC`vbmn=g#^2`v>bg*LVB#20Bz5?hdroo=ThS`_lz~s7dZ1cFb;t z^F<@jk|iZ2)>c+|a!9=2qA^o@1p9w<3|zz=H)cbm^0iKnDo_cdBO|0bp3E<|Hy|9+ zp@|FgW_MenxnEqOAA}D@Al<3q8#|A3uk))gn%q5HSG+xe(enKs=LjT5>F*Sf`Sk;_Iwv-_^OmnA@-|@DB{^ z>X90b#&+zi)YPY^HyqvYyLAhxa#V72zl@(j`ZMLUXkx?BOAmE5Pnm+OtF6nU<;BH= zn;{09{E`idB8 zRfwSN&mJY1a8!P9IK-O&R83bm&+ZLJQ#5xfglMrjKi|I=*nW z0;=x=5t*YC*$*3CuUGeHlZ5XChF-<&)l>ixiHYKX(Y0Y;b8Qq9dDhb4^}k5Kl6s8) z!oRWb|5#W)Ve20p)T^fCy+^T@UOkqyf;s~_BydLxzpS$fiWpt`b*jyWXzpeghS@i` z@Fye2KT-EPU-HSTQwgeIQtMW8?SF@f+1S_!2?=#M9pOp^#Uyzdl%Vk!WHs()*yrYE zIVGhcDz(d9+|T(jw6t!~Ns#u=OzoSZU;FxQBEI>9jB@wzNP&Pz?F`@FS{|YO7@>LpW)zFD-IXgV zV>OjUMN7}x^N|z_1j44kj`QIZC^dKP+==nFex|>$vQm$RVlf?Mqp;b@$&~c;c(=4k zNM?c&pB%Uc+}x=>@d2g;$_8*kMkd)!^g$y#2M4IsIruSm@XMi4CbjRn?N--rmVcx8|`H_s*uKrs!xEt<1WR&Bcw4 zfRIPFi**(j7N9aD8YWfI?T4<`r_Fm3PCq6XN1Zy_!qv_q-1GHtp^0A&9`hKqes9 z_6#Bwi^U4W=e~M12Ud5k`feD`!GUb4AR#U7+<-GMuo+zF%TJcl(^69_^Bz<&%=TN$ zzXLLYS6crgs!Ux&qhV)?OV^jG(6X}=eDB_7l9b+Sa!4I+du8ktGV3bMi|Ce7MITVA z)ixbZ7#h0jb^9f0!B$B)VNY6w`tq#*3_DFrUHxrsZIJ*{Il6>?Txoe8*9 zU}wew3ZXJ6^Q3}deRFg3$BW62AG5Nuj@5;d#gWX+%rwVkSxrQ0(VI6f#d*27ayU~V z>149GCU&}&2QUf>+MZf%ImWeOHN2elqUUyn--L=F=fZ?mo}sv=ShW!J zimNDzNYvET#d4xQeX^iAcB0B)-0Q2WVjw&M zYfQcBS6e0eXGkCl!xr+$?;L$xTqX)G=Y!XfsNUH^ju?wM1A4$KX>4o+4=Bupr6D&e zCvelN!C=o&kC|pOK4EHVy1u>+M1245TIUSc(Yft|i8`sMs7Q5bK>qxrxVX6g0xj5z zyP1iJX&iran39qLvJwPJS(zFf4p-y_*!lS20rO9)=(KRAeP_?o;idDjyt53(L|y3M z8y;pRCaQCtMfie-h6anVKG-!W2^W@^6Aa}+x2~ZfuKSq*{ODjk8~^K?v$G1(Lir4C zvWXRVkL@-vH`nqR=^y=V-fv$y|5o_rg@tsm69rl9KNHu`fWLiv{zpjz@<(oLPE-^V z7E@S%j8o5LLrMp2R5;MfOnnG87k_DM*VNRQo0_s7KQ05uWwlM;4+**D>3K>)q4y4r zMpLc*``q2TOBtHpf}E^L(N(e_e*jl__51(; literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.map new file mode 100644 index 000000000..dcb9d35cc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 new file mode 100644 index 000000000..16865578f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 @@ -0,0 +1 @@ +aeb4ec71968654b70565a578d510a768 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRHitachiAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3f092bb9a7e947787625a7b3fed71304a58484a2 GIT binary patch literal 3005 zcmZWrXH*m077kuTdJ(uNEl)r?0R*H-Cjlwa1O%msG^wG5CJ@C?G$3H;9cdz6P%upx8W}?r`z{3CnftU?$KrMh34%|pO zTHs0I$UOuW+WSWOP|)eGtFWyc0|GGy7(lfxLvvU19vX9w3Owr27LzbEyQ`DhSvsNj zhXU-vba7%Mx``e27UoHhyb(W=U5L_1=B4=Dl4$%flDSRN^fW{d3lwU66JHu!`q{UG0`KJ*BPwR|fP_1A>9w`DZoSP-Ta1@)QA|E*aO`BbZPB{A`Zjk1N zfPlDZ_l+iU0r+Is`&>V9;8`3 zrg_KBq4}a#YHDgT)~46o!a{Ijow5?wI`47upKQF*ySu@hu%hDP?!h7^Eg-u5?Bs^=Lns=VjGfYzwuUJpPQwYtw1#>z}W@T`M9a^kfQoN*r_w z<986RO~PYD8-iEvaKcDUQ&G1@kyLUy6bfZyW9#gSVN{8vHey$L5_xB5XW0YR+>V7}4E6Q(prPU6l$@NetHhT2JJk_K8@Od+%Wa}4P#TpQ{<^aAedvau zxw&~sNy*P3)nPS9XctvdS}Ny14dvnC5tETAfA#8taZ(tx znOaf6zFQ~d&}suzylwQ`(&lHOr1)pg7!WN4@84-?Xr@OUk^E-Xfq@MmsFznIwvXf& z-`T09hzts99K#|iv26_vw?HpTOJNEM3Upd_?Gd&_2U}ZlkpJA5G$$~IZKgS{bS>Mx z-bR)uadu&0#!nd(A0K~jZL+P(u_J$M%*MLL4o_%sr%^_psDT>XdM)7LBF34WZ@oqz zczRlVWo2QpM&>JcTmY%7t2Z__0w+BHf9T>;(!#n|v|$()skS@jygcz9)6=6Dyz-;8 zMu{hpPcH{`R3Me z_jxZ@=v%c%g@ykK2n-aLlA0Z!C zm)Pqz^Hru}_WeS>keFEf$B)pmn>ju2e8$I`;NV+j#x$!F2~Zd;B{TDepPwv&KyYz$ zn_gSftil=^8aDgS(59rM2#bnhQc_5Ly1e`~?eT(+^z@f|Hki>ap?~woB0n}|Qz0R> z+$l)BpCIYCyL5VZDT5Vz?o~yFzkYr9eDI75=eY=QQp*q6?M~7eP_W`L zt~=%Dh;|bsW5FXFt}6aq6U~MF{ne_~(3e$Flde_~z#gM9tF@)5r4}za=i}In0nCsfYZ% zXJfX~?41SrZ3=nAc0{~R8&+jdx@Nb(hZU$dCP8NHz3QE-DWrBH^O>pzZ@V_-ZIEzv z5n~wh`Rf~5vY|~AXB}gDgs9gKw=ee(9dtI)J$KMPjuP*u)a6r1o?8Pqr{7v%9|=@< zX8S%yO24h+jNh@oo^$q}|r0@k&>B zN;7w_QqIh!f23zn_U}eOz+9@lt7-|Rr{z)kM=x?WD&)eag-frzvEb4lJUp*g=r zw2H!^oJ&uc%~CRM_3u&@hi8TYsj$nL>AxilJ0wBoK2@N))U!7~CE>!~BGc@R=#_1pdY-uZiIK(y}rOE2~d?Q%F+_iwoe0^~b7?Pe<5w{C;-Qq)XX$og5#k{~kA@PR;-!L`BJy3Xqpji7(9zC=~1P02(+Ydwx3=FDl>Z1#gCkO32d**lVejTc~6*iNo z^Z*VAuj{K=M%Hw#bQ4#CuZv*lVdk0Y4|iXE3Ev}zc=-5SxpE~2g*uBkjsr*0JsKpJ z)YqpR9YwhH<>Ft$&>%5DyQw=A@5$CI08nQ3_Pts1?lyJzXh3nSU=dBtg7|nkLnEVK z65q1c&MW)W1Uxr4C*|1A=jiC@5Kg`#AtCX(ug|)P)vBP>o{R36b|2kpjKIU=COIHowYn zaB-dMM9Z{)uCZ^ayHl-3T`c}>33wSA9o?FIxJFYKM7H>4f?l<4u^kc z>@QdZWq+$*lkm=m*D-R3D{!Ij6AtIDmES`4V$jz?AQT_&E*HIjZ|jqvAHF31voEMa zLqp?Ru1es*@ssH2p@Kt^woBggf*3sN(|uA5x5Hvn`|H=wP$-ns@PfodR4*d~!~J9G zPUE|G0Y5t*n`eYHMLephfn4+X0oBu^b#-;+yB?eX`0zB~*>v>uAIL!gFh4}bLgGeOO@rb^@ zzVo#lxtv}|HC(J``En%TjqBJ-FpGei^6P*<1_xCTOPpwK84*cIbaFD=2mpD&P;K70 z(2qC4MIn%yDGgpFUtvMP=+;&>AiScoQbva>~#PD literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC-members.html new file mode 100644 index 000000000..9ecc5c43f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC-members.html @@ -0,0 +1,121 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRKelvinatorAC Member List
+
+
+ +

This is the complete list of members for IRKelvinatorAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRKelvinatorACprivate
begin(void)IRKelvinatorAC
calcBlockChecksum(const uint8_t *block, const uint16_t length=kKelvinatorStateLength/2)IRKelvinatorACstatic
calibrate(void)IRKelvinatorACinline
checksum(const uint16_t length=kKelvinatorStateLength)IRKelvinatorACprivate
convertMode(const stdAc::opmode_t mode)IRKelvinatorAC
fixup(void)IRKelvinatorACprivate
getFan(void)IRKelvinatorAC
getIonFilter(void)IRKelvinatorAC
getLight(void)IRKelvinatorAC
getMode(void)IRKelvinatorAC
getPower(void)IRKelvinatorAC
getQuiet(void)IRKelvinatorAC
getRaw(void)IRKelvinatorAC
getSwingHorizontal(void)IRKelvinatorAC
getSwingVertical(void)IRKelvinatorAC
getTemp(void)IRKelvinatorAC
getTurbo(void)IRKelvinatorAC
getXFan(void)IRKelvinatorAC
IRKelvinatorAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRKelvinatorACexplicit
off(void)IRKelvinatorAC
on(void)IRKelvinatorAC
remote_stateIRKelvinatorACprivate
send(const uint16_t repeat=kKelvinatorDefaultRepeat)IRKelvinatorAC
setFan(const uint8_t speed)IRKelvinatorAC
setIonFilter(const bool on)IRKelvinatorAC
setLight(const bool on)IRKelvinatorAC
setMode(const uint8_t mode)IRKelvinatorAC
setPower(const bool on)IRKelvinatorAC
setQuiet(const bool on)IRKelvinatorAC
setRaw(const uint8_t new_code[])IRKelvinatorAC
setSwingHorizontal(const bool on)IRKelvinatorAC
setSwingVertical(const bool on)IRKelvinatorAC
setTemp(const uint8_t degrees)IRKelvinatorAC
setTurbo(const bool on)IRKelvinatorAC
setXFan(const bool on)IRKelvinatorAC
stateReset(void)IRKelvinatorAC
toCommon(void)IRKelvinatorAC
toCommonFanSpeed(const uint8_t speed)IRKelvinatorACstatic
toCommonMode(const uint8_t mode)IRKelvinatorACstatic
toString(void)IRKelvinatorAC
validChecksum(const uint8_t state[], const uint16_t length=kKelvinatorStateLength)IRKelvinatorACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC.html new file mode 100644 index 000000000..1eb7ab15c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC.html @@ -0,0 +1,1340 @@ + + + + + + + +IRremoteESP8266: IRKelvinatorAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Kelvinator A/C messages. + More...

+ +

#include <ir_Kelvinator.h>

+
+Collaboration diagram for IRKelvinatorAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRKelvinatorAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internals of the object to a known good state. More...
 
void send (const uint16_t repeat=kKelvinatorDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the internal state to have the power on. More...
 
void off (void)
 Set the internal state to have the power off. More...
 
void setPower (const bool on)
 Set the internal state to have the desired power. More...
 
bool getPower (void)
 Get the power setting from the internal state. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature setting. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode (void)
 Get the current operation mode setting. More...
 
void setSwingVertical (const bool on)
 Control the current vertical swing setting. More...
 
bool getSwingVertical (void)
 Is the vertical swing setting on? More...
 
void setSwingHorizontal (const bool on)
 Control the current horizontal swing setting. More...
 
bool getSwingHorizontal (void)
 Is the horizontal swing setting on? More...
 
void setQuiet (const bool on)
 Control the current Quiet setting. More...
 
bool getQuiet (void)
 Is the Quiet setting on? More...
 
void setIonFilter (const bool on)
 Control the current Ion Filter setting. More...
 
bool getIonFilter (void)
 Is the Ion Filter setting on? More...
 
void setLight (const bool on)
 Control the current Light setting. i.e. The LED display on the A/C unit that shows the basic settings. More...
 
bool getLight (void)
 Is the Light (Display) setting on? More...
 
void setXFan (const bool on)
 Control the current XFan setting. This setting will cause the unit blow air after power off to dry out the A/C device. More...
 
bool getXFan (void)
 Is the XFan setting on? More...
 
void setTurbo (const bool on)
 Control the current Turbo setting. More...
 
bool getTurbo (void)
 Is the Turbo setting on? More...
 
uint8_t * getRaw (void)
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint8_t new_code[])
 Set the raw state of the object. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode (stdAc::opmode_t) into it a native mode. More...
 
stdAc::state_t toCommon (void)
 Convert the internal A/C object state to it's stdAc::state_t equivalent. More...
 
String toString (void)
 Convert the internal settings into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcBlockChecksum (const uint8_t *block, const uint16_t length=kKelvinatorStateLength/2)
 Calculate the checksum for a given block of state. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kKelvinatorStateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed to it's stdAc::fanspeed_t equivalent. More...
 
+ + + + + + + +

+Private Member Functions

void checksum (const uint16_t length=kKelvinatorStateLength)
 Calculate the checksum for the internal state. More...
 
void fixup (void)
 Fix up any odd conditions for the current state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kKelvinatorStateLength]
 The state in IR code form. More...
 
+

Detailed Description

+

Class for handling detailed Kelvinator A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRKelvinatorAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRKelvinatorAC::IRKelvinatorAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcBlockChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRKelvinatorAC::calcBlockChecksum (const uint8_t * block,
const uint16_t length = kKelvinatorStateLength / 2 
)
+
+static
+
+ +

Calculate the checksum for a given block of state.

+
Parameters
+ + + +
[in]blockA pointer to a block to calc the checksum of.
[in]lengthLength of the block array to checksum.
+
+
+
Returns
The calculated checksum value.
+
Note
Many Bothans died to bring us this information.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRKelvinatorAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRKelvinatorAC::checksum (const uint16_t length = kKelvinatorStateLength)
+
+private
+
+ +

Calculate the checksum for the internal state.

+
Parameters
+ + +
[in]lengthLength of the internal state to checksum.
+
+
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRKelvinatorAC::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a standard A/C mode (stdAc::opmode_t) into it a native mode.

+
Parameters
+ + +
[in]modeA stdAc::opmode_t operation mode.
+
+
+
Returns
The native mode equivilant.
+ +
+
+ +

◆ fixup()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRKelvinatorAC::fixup (void )
+
+private
+
+ +

Fix up any odd conditions for the current state.

+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRKelvinatorAC::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getIonFilter()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getIonFilter (void )
+
+ +

Is the Ion Filter setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getLight (void )
+
+ +

Is the Light (Display) setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRKelvinatorAC::getMode (void )
+
+ +

Get the current operation mode setting.

+
Returns
The current operation mode.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getPower (void )
+
+ +

Get the power setting from the internal state.

+
Returns
A boolean indicating if the power setting.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getQuiet (void )
+
+ +

Is the Quiet setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRKelvinatorAC::getRaw (void )
+
+ +

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

+
Returns
A PTR to the internal state.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getSwingHorizontal (void )
+
+ +

Is the horizontal swing setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getSwingVertical (void )
+
+ +

Is the vertical swing setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRKelvinatorAC::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
Get current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getTurbo (void )
+
+ +

Is the Turbo setting on?

+
Returns
The current value.
+ +
+
+ +

◆ getXFan()

+ +
+
+ + + + + + + + +
bool IRKelvinatorAC::getXFan (void )
+
+ +

Is the XFan setting on?

+
Returns
The current value.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::off (void )
+
+ +

Set the internal state to have the power off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::on (void )
+
+ +

Set the internal state to have the power on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::send (const uint16_t repeat = kKelvinatorDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speed0 is auto, 1-5 is the speed
+
+
+ +
+
+ +

◆ setIonFilter()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setIonFilter (const bool on)
+
+ +

Control the current Ion Filter setting.

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setLight (const bool on)
+
+ +

Control the current Light setting. i.e. The LED display on the A/C unit that shows the basic settings.

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setMode (const uint8_t mode)
+
+ +

Set the desired operation mode.

+
Parameters
+ + +
[in]modeThe desired operation mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setPower (const bool on)
+
+ +

Set the internal state to have the desired power.

+
Parameters
+ + +
[in]onThe desired power state.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setQuiet (const bool on)
+
+ +

Control the current Quiet setting.

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setRaw (const uint8_t new_code[])
+
+ +

Set the raw state of the object.

+
Parameters
+ + +
[in]new_codeThe raw state from the native IR message.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setSwingHorizontal (const bool on)
+
+ +

Control the current horizontal swing setting.

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setSwingVertical (const bool on)
+
+ +

Control the current vertical swing setting.

+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setTemp (const uint8_t degrees)
+
+ +

Set the temperature setting.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setTurbo (const bool on)
+
+ +

Control the current Turbo setting.

+
Note
Turbo mode is turned off if the fan speed is changed.
+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ setXFan()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::setXFan (const bool on)
+
+ +

Control the current XFan setting. This setting will cause the unit blow air after power off to dry out the A/C device.

+
Note
XFan mode is only valid in Cool or Dry mode.
+
Parameters
+ + +
[in]onThe desired setting.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRKelvinatorAC::stateReset (void )
+
+ +

Reset the internals of the object to a known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRKelvinatorAC::toCommon (void )
+
+ +

Convert the internal A/C object state to it's stdAc::state_t equivalent.

+
Returns
A stdAc::state_t containing the current settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRKelvinatorAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed to it's stdAc::fanspeed_t equivalent.

+
Parameters
+ + +
[in]speedA native fan speed value.
+
+
+
Returns
The stdAc::fanspeed_t equivilant.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRKelvinatorAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode to it's stdAc::opmode_t equivalent.

+
Parameters
+ + +
[in]modeA native operating mode value.
+
+
+
Returns
The stdAc::opmode_t equivilant.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRKelvinatorAC::toString (void )
+
+ +

Convert the internal settings into a human readable string.

+
Returns
A String.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRKelvinatorAC::validChecksum (const uint8_t state[],
const uint16_t length = kKelvinatorStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
+
+
+
Returns
A boolean indicating if it is valid.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRKelvinatorAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRKelvinatorAC::remote_state[kKelvinatorStateLength]
+
+private
+
+ +

The state in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map new file mode 100644 index 000000000..40f1acb8c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 new file mode 100644 index 000000000..5fe2723e9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 @@ -0,0 +1 @@ +bb0276d1879b23e51b948f404eb3a682 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e06512959fbeb287bc910895091ed10d6fdbb38a GIT binary patch literal 3684 zcmYLM2RM~)*gxcNlbKQ?luh=Yk<3Cx_I6~(3E2++I7e1ej_ufcZ?gAR_Kd8ILvpNx z@A2>YzVCXk^N#De-{*bq=e~dAAf9QfQjju|LLd+dwI|BD;2H#e0mOvh+#``L2`+?| z8mh{W%c~=;DJK>Jp}eK0toYn3X(!o7lU{YPTRxl>zb{-I9%MP9e}5tjTW09c*rL~u zrznfOm+(ZBz9{UUqN%j1LwtHGLzlR0zM|@C!?N$(3}s{JD&*8_w9~0!3md1*95oL^ zlw17K^)|V?crO3wOB|?)NlI5pH!p7cqfp7y=jp`v2x!8))E$V}XV_F&VpyY}P(KMQ zHoP@7Fz_?@y4*+~PPn`F&5A*p<-ZTAMIA_r&6#@4@10?q3pS-awp-@snS6YF9%#n5{7c60z46zt*KO_Xw;q~9A|oS@&(2~~ zQ%lyO?nr*Da+qA+*@*}azV;}Tay69M|Jgw}61jJD)ZN+|WYPXUCO-Zc#y#5wW2F8* zF;VU?$xo+Z@n>TcVr^$v;kK&&_4F4HH#hfGxeeLb5k`NQgp%?B2S+F^hqmj^jHrx^ z%*fWEh=@pTx9`d7myWJ3U1MWSSJ#IJYl9h^^dHjFSn547+Ro1WYHDiR(-rG^6Lo`B zjBl1&@b+uh{Cs_ty}W9t<)+D$_V&L1+Giy5_A<7mO=?S(% zsF2{`VDHA9oE)#q^P_QGU!OW&7#xltlbFZ@(b3gKuYn;lg->yDvM-zPuU%6yH(#Qcx`F~^YqF%otU^0SYIziN=jNG7) zba%V2_R-6oZ3~OavakeJR*DQIONW9`uu+-S)t~XM5t`fBsJwe8sYG1C$HKCdjx{zh z$;-=2udIBoC47^7N4Ex>{VfdAGCCR)$D>a}OWU3-?J41plK{(lATIu;!4qRCgvu=_ z$VgAe6BifH)=KQcogDNI4P}G*K_}5SnMRF5eRGQxg9!!wab9h0ZJazj?dA`u=;;sX zUQc6T+|&?Wqv{VcGlm|Rg~3dj@^ie@=jWPeFB*O2L|)h)z#JKWzqbzkdZZ~m5>kuI2=CGgA-Qy zrd$59|5tMH{b(6ET>=^|d<0z(0T(_AxX&cc6&I7irD;d5l_YVnvqN7u?{RLE`YceD40iXIX-9oafj_VF@sEE=f&K0`Sk*O=rJbVK+*M3 zwSSw2SC>FPavu8m0m0AA=g_4HEQoW{21&$j-?+OQ_defdD`pXa7|EAM|` zzr9tr;#DVjq3@y>ceHfd(Wb~;!ugd6Tm`{$w9%e;`o004WZmzrKH|%DVsBZ`bMshT zprR5@HvY#AqkUw$_61#y3CaDAOjB znEk)X{H+OlkE$|hh4ZM7tEZ!nQCE_JhCw4Sd%1Kpi^>SsaZXTG7I8}87gKM<@v&FY zJXDzXHC|qkgb%iGg1?fh{63&h8ImJUA~w}X>%jz3%@i3_imcD?LGeXcVarT{AL-eL z=yG-=+4A8&6`J3G5Kr+@5q%*+HXPPYUsoSgXlPgWUp^z}J} zgoQi%;&{ea4!xW94iD)GgB9l*-|01;tR-50&(&$O7Rp<#tE)p47V_%o>9L_RGX4cX zg+ifJO2mQ|Z3Kc26TE;HSl!&+J3&{ca%Q{H-VlI4HI)!3#yvYRSg&MuIW7 zl+*e`%Z!%N)dtyUj8MWVTV`|#b`(^}3Z3@Jp8QtPo2GdZ&DtX1{P6s8{L%byf4`pU z&XLQ(`tan?s7J?g!!?8>2|LgppbsopvY`O~4=B2i+&QJpimGlWSnjiO4%DldteO%QnKr|J67JC88UOP$(xC7nfnfDAz_QtCw*m)G$X&x%Blow;XQoQH7s?fIwqo zZnvXlcsE-J^`8L`qwk&4dJgUY-3_#T7R^MqNLt(W15aq7~3)a z&I^rd%E|D8VzHKByIs_{bbDHTW zGO8JH?CS2OrKS!_O=Xrp|3f?C73+iD?)|;m51fYBnH9BCDIjnh4rfqqO;TK3JT*0S zC30>5lA&bY{bpMXpMZK&-;8)n$s`qm<|Jp5`p%2_HD17LQvd0TnLkR@VPd3eD`34C zd=BXCz1eCfwtM%kRA!>sq+lV;=iO?Ye$VhQhq$=DmWGCg)z6+732Et?U$bRa-3FCV z>P5dJCOJ8|j*gDpRhOAcpseI$-@Z+kT3qXnWYTk)k;XK(N8fwowN+Hp)6>Jk&rb($aFk@vf}*r|4*^kFl})SS%q67Z+l>!tPs@gTC!RyrP?1 zxi=2@8BTuwwQ+qjzs#+3_R2(JAeG~St*Xp^$}pG+$lbQv_^a=&jM1=?l9E@-BVcOn zWGNMEYxeWAqwb-h$Vsz+WT1^V8a@G<5&}XQc~_QH*HsTvpN$r7`5?9MENoLR1Myj)#FV{Q;3`S# zEvbtOMm3VkTVC9G&U~dSqR^~4g~8Md&&bH=s(8DQhqS^X3&yd%);HX1OG~K&{m)NP z<8>tW2mreP*BA=iQ|{*aaH`$W?mY0(b8~a99v*AQ`zz$P#kLW@4j!iT$tXtMl_e%6 zwZtqmeV?2Z?>8$o$8%pFx)0V)#=yVy^JfQ$M?^$qrKLeKMtfHKzr1Sj;Pb>(<8IZV zIggKzqvPXyhUG7DBgIRK04gC=Q?s*HPELcV0T;ck!9;_RoAV9ggu!^Ry#xxE7w5Nt ze+M|pK%?PfW4a!@bG<;?jQnOKJ$LT}q970%Sy{oGupEIiz5xdUO_4Z1ZH z=%cT%@AsTw&qY55u;Dj&4O+mfo3k~TYr#*MCEY>*gvB&4GgUkpk0V&QxJUv8t-4D6 z&OCk}9FR~@*qr{^beyY=0mu{y5MLsJV)xaQl<*Z572UY%Xv>}FrA`mGCJSFw#M@h` zZ2>j=>n*_f|CH?qo&%9qf#Js?6^(GWL0fXZ9bplTjI7}i>j7589onlmKrGZ(O5%7V egFQLnl4#?di?yNllXLL55u&D|tz4{R4*wsY0V5g! literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc-members.html new file mode 100644 index 000000000..63a5286d7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc-members.html @@ -0,0 +1,113 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRLgAc Member List
+
+
+ +

This is the complete list of members for IRLgAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRLgAcprivate
_protocolIRLgAcprivate
_setTemp(const uint8_t value)IRLgAcprivate
_tempIRLgAcprivate
begin(void)IRLgAc
calcChecksum(const uint32_t state)IRLgAcstatic
calibrate(void)IRLgAcinline
checksum(void)IRLgAcprivate
convertFan(const stdAc::fanspeed_t speed)IRLgAcstatic
convertMode(const stdAc::opmode_t mode)IRLgAc
getFan(void)IRLgAc
getMode(void)IRLgAc
getModel(void)IRLgAc
getPower(void)IRLgAc
getRaw(void)IRLgAc
getTemp(void)IRLgAc
IRLgAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRLgAcexplicit
isValidLgAc(void)IRLgAc
off(void)IRLgAc
on(void)IRLgAc
remote_stateIRLgAcprivate
send(const uint16_t repeat=kLgDefaultRepeat)IRLgAc
setFan(const uint8_t speed)IRLgAc
setMode(const uint8_t mode)IRLgAc
setModel(const lg_ac_remote_model_t model)IRLgAc
setPower(const bool on)IRLgAc
setRaw(const uint32_t new_code)IRLgAc
setTemp(const uint8_t degrees)IRLgAc
stateReset(void)IRLgAc
toCommon(void)IRLgAc
toCommonFanSpeed(const uint8_t speed)IRLgAcstatic
toCommonMode(const uint8_t mode)IRLgAcstatic
toString(void)IRLgAc
validChecksum(const uint32_t state)IRLgAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc.html new file mode 100644 index 000000000..a65b6eeaf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc.html @@ -0,0 +1,1108 @@ + + + + + + + +IRremoteESP8266: IRLgAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed LG A/C messages. + More...

+ +

#include <ir_LG.h>

+
+Collaboration diagram for IRLgAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRLgAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internals of the object to a known good state. More...
 
bool isValidLgAc (void)
 Check if the internal state looks like a valud LG A/C message. More...
 
void send (const uint16_t repeat=kLgDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
uint32_t getRaw (void)
 Get a copy of the internal state/code for this protocol. More...
 
void setRaw (const uint32_t new_code)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
void setModel (const lg_ac_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
lg_ac_remote_model_t getModel (void)
 Get the model of the A/C. More...
 
+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcChecksum (const uint32_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint32_t state)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
+ + + + + + + +

+Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
void _setTemp (const uint8_t value)
 Set the temperature. More...
 
+ + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint32_t remote_state
 The state of the IR remote in IR code form. More...
 
uint8_t _temp
 
decode_type_t _protocol
 
+

Detailed Description

+

Class for handling detailed LG A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRLgAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRLgAc::IRLgAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _setTemp()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRLgAc::_setTemp (const uint8_t value)
+
+private
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]valueThe native temperature.
+
+
+
Note
Internal use only.
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRLgAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRLgAc::calcChecksum (const uint32_t state)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + +
[in]stateThe value to calc the checksum of.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRLgAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRLgAc::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRLgAc::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRLgAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRLgAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRLgAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getModel()

+ +
+
+ + + + + + + + +
lg_ac_remote_model_t IRLgAc::getModel (void )
+
+ +

Get the model of the A/C.

+
Returns
The enum of the compatible model.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRLgAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint32_t IRLgAc::getRaw (void )
+
+ +

Get a copy of the internal state/code for this protocol.

+
Returns
The code for this protocol based on the current internal state.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRLgAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ isValidLgAc()

+ +
+
+ + + + + + + + +
bool IRLgAc::isValidLgAc (void )
+
+ +

Check if the internal state looks like a valud LG A/C message.

+
Returns
true, the internal state is a valid LG A/C mesg. Otherwise, false.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRLgAc::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRLgAc::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRLgAc::send (const uint16_t repeat = kLgDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRLgAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRLgAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setModel()

+ +
+
+ + + + + + + + +
void IRLgAc::setModel (const lg_ac_remote_model_t model)
+
+ +

Set the model of the A/C to emulate.

+
Parameters
+ + +
[in]modelThe enum of the appropriate model.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRLgAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRLgAc::setRaw (const uint32_t new_code)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRLgAc::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRLgAc::stateReset (void )
+
+ +

Reset the internals of the object to a known good state.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRLgAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRLgAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRLgAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRLgAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRLgAc::validChecksum (const uint32_t state)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]stateThe value to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRLgAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _protocol

+ +
+
+ + + + + +
+ + + + +
decode_type_t IRLgAc::_protocol
+
+private
+
+ +
+
+ +

◆ _temp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRLgAc::_temp
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint32_t IRLgAc::remote_state
+
+private
+
+ +

The state of the IR remote in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.map new file mode 100644 index 000000000..37558d8ac --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.md5 new file mode 100644 index 000000000..0626aca74 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.md5 @@ -0,0 +1 @@ +56fb7c83360ef1487cea622f026510d6 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRLgAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3fabc33867e7704974b05da754ddbc8f565ffaa7 GIT binary patch literal 2873 zcmY*bc{r5q8h?iw#)uh9$dD{Cm@*=XvW~H4`%221y(qF}n@o0*C459Alr2nA_$*^W zlMuy(l4a~M*|#z|Z|9uvT;I8#=XsyMp7*-1`?uYRmga^$2vGz806fM22UiM z1N@>yXu;sc;bLlt2ljuj!j{qu06=^<#_OIBdC1Hsnq>?frco>)p$EGK*@{rp$8(My z@;j=ae8hbSuGfn?AlVHcd2w|6M^s*dx)c?f>C?KT(c)y@3z4kDmU|{a_3|ta=;F^&a zC+_PNHcUIzGLEY-`DaJW?5xMq*QRU&wn#=x>+qw9wM6H+`X;upurR-^rAyQk5m{bW zuj&Q_)E0&gJ3vy^17?#84^a@$9GYxa&e)=L4#|>Em;vrjV@a*8T7F`jEshqNf|^fb z0p%$aL|$HgxbA93uLkYrggUR5mR87ORlVQ0L3u;B8Gm>%Yr*md~El<@TBy%}Ko}#$Yf2fXQTHFqpPe;}OwRs&2%u-MO-g3Px&IZ*Q!1c}Ji2 ze)5-kU)Rakv2WkLCDE_VY@fc#fGQ{`^bZZikB-_mZ;yqCYzz>BgVmawn+vVWE$!@* zTxls>4n4y0W)m9=1JhhxeQq=FvShTi$34UWN>7e*^dOzS`h|Y&n3ViTV#Xqs;14<~AN8@9IgLokA&Ye5* zS&E8^Np9}$=N59xr9#k!0}Ds8yPvz#cx|ylfDRrHt*EFVyLSt9baqa%w#RA9lzm=c zerX8`#Kgs|@igY;p?~d6Ap?VgR_Bli1VcMKJe(cq@la6}<%u8?ufH-R5D*u7vI#2+ z7#t3jm6bI=Ki@Xw6xmzaJ>zfR;0L*W{W{oqf{TlknXJI;_IAm1qr#y@UHJ1$)Bd|9 zyS;g*kkZo9{R@E+xtFViN_FMc478Zs#Zd9ikgv+bz`8>K?R$cuYXLz`6 zlthY@ptXE^QmNLT)(#HL9`z;MzAC3?4T@Nb~SaI%%Du_g~A0a0T1UjAQ=QXy(%M~sBuRiWXb(7UW4;jDad!@@GzwotmqRZ6uJ^ zaMSYCh?96V$qNeBsLObB_GTVkukcw=?^v1_6tfuTEFSsp+-XRhMo&X!>+)#fLlOom zqOsiGzqzDzkwMk{Iv++)!$8a4TR67Z(%_jv)kEm8Z+>+u&y)GEJEo*_xm&q>5I)Bh z1exbUi9~dt7}7IN4pSt?10zW%RZlYS!m+k|xZU?PxT3PCrz)T~fl%Neng4M;LfzN? zu}|S4%pj!@%B%+Qmz?Bf$N&H+2!Tp!{qq}`A^5V5_ zUHtyjZ~1PY)zHX=a&l%k-QJB&PEF0QtG~gAL?Zon*W6vy@{9ulROB(3iS53(Z;yc7 z#8=s5Oio^T5xVZdk4Bqfg}5VI$z#+o*r9QPmc_X z#RB~xy`iDOc&-dpMQV?1HPJZE3;KW@7e-NWYN%7)IKlLSu7wm9o4k*GW2|RiA-o}@ z{(j3!xY3>$+?DjZz7&>FVq#+dwU>J`k{bEEwVr(i{#vOP{A)(9*Uk7DYZu$55^mm4 zyLwb7IU^<^7?;Ar^!Xu*4wAn~)JVIfOHjt>^v-Q_+2f(1p&M*OW4s;goG?BdW+wd4 z{{K!LFPQ4yIWFb}X(kS8SjQG-w@f{wO3*w&<*Onsu>Dg(AZ&b0KhX^FlYYD z!QM~@uB)%lZc}wRHaAx^K7VKg%(l?5Fezzib}`!7q3~J&v`DM-=VR*XRHtWVCVwtd z;>~2+S5|No3p+cs$NPtgsoK9ph(uzr|2bKK*1a{;>FH^m&d)EsC%=DBxiuEb859(x z_NBYK`|)`ND=Vuz6%`721B1!>@!J7L55y9k+1}@C(&{1cyyAM7E{z1Rlw5s%m2QkR zC*DJ!(o@Kil97Q*5I53$wW6b=EfuoTy4(N~z4GGJ$0w$H+;osX7pv{5pQ`Nm4j<+P zJ+`E@lw0%ZdK6skg06>$?57$hWHgmT{JAx`vpQwl9HK09-&1pFadTyB>&>%EwL5ib zX{bEnx5dTB0}EuAPDEZ{tlpi>Ou>!KO>m~Hb>`!cwFx$4h-Gq^61cs4~`lOtA-s?>CAdA9QL#DueLl?^xn&{kpoIP*s2 z%KExK=;Y=FXA)OeJ@@79yu2`D5$orc#wijU(GW1G;*k=w_4O}bLI5z+uBRlWq{LmW z0yn|Z62+LBS{?Cx^th=B4Mtm8Wu-niDot^3-&bc6e0pY;<%KB`nNYWs_9X`UBC`)m7Kd54A$r)_L)@?l8EQ##+#hj*dn~M&!l2e<6wl zCzh8}@89SDd_^6mCTjA3atpntH2=Y9Do{>Q(X@a4%U7dKRm&BFdk=6b^ m1%k?KU`O3}mZdDe&p!QJHNgb;?Ik!11I7mC_-Z}psDA;p$xw&@ literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC-members.html new file mode 100644 index 000000000..59046578a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC-members.html @@ -0,0 +1,115 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRMideaAC Member List
+
+
+ +

This is the complete list of members for IRMideaAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRMideaACprivate
_SwingVToggleIRMideaACprivate
begin(void)IRMideaAC
calcChecksum(const uint64_t state)IRMideaACprivatestatic
calibrate(void)IRMideaACinline
checksum(void)IRMideaACprivate
convertFan(const stdAc::fanspeed_t speed)IRMideaAC
convertMode(const stdAc::opmode_t mode)IRMideaAC
getFan(void)IRMideaAC
getMode(void)IRMideaAC
getPower(void)IRMideaAC
getRaw(void)IRMideaAC
getSleep(void)IRMideaAC
getSwingVToggle(void)IRMideaAC
getTemp(const bool useCelsius=false)IRMideaAC
getUseCelsius(void)IRMideaAC
IRMideaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMideaACexplicit
isSwingVToggle(void)IRMideaAC
off(void)IRMideaAC
on(void)IRMideaAC
remote_stateIRMideaACprivate
send(const uint16_t repeat=kMideaMinRepeat)IRMideaAC
setFan(const uint8_t fan)IRMideaAC
setMode(const uint8_t mode)IRMideaAC
setPower(const bool on)IRMideaAC
setRaw(const uint64_t newState)IRMideaAC
setSleep(const bool on)IRMideaAC
setSwingVToggle(const bool on)IRMideaAC
setTemp(const uint8_t temp, const bool useCelsius=false)IRMideaAC
setUseCelsius(const bool celsius)IRMideaAC
stateReset(void)IRMideaAC
toCommon(const stdAc::state_t *prev=NULL)IRMideaAC
toCommonFanSpeed(const uint8_t speed)IRMideaACstatic
toCommonMode(const uint8_t mode)IRMideaACstatic
toString(void)IRMideaAC
validChecksum(const uint64_t state)IRMideaACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC.html new file mode 100644 index 000000000..15c9dde37 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC.html @@ -0,0 +1,1169 @@ + + + + + + + +IRremoteESP8266: IRMideaAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Midea A/C messages. + More...

+ +

#include <ir_Midea.h>

+
+Collaboration diagram for IRMideaAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRMideaAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMideaMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
bool getUseCelsius (void)
 Is the device currently using Celsius or the Fahrenheit temp scale? More...
 
void setUseCelsius (const bool celsius)
 Set the A/C unit to use Celsius natively. More...
 
void setTemp (const uint8_t temp, const bool useCelsius=false)
 Set the temperature. More...
 
uint8_t getTemp (const bool useCelsius=false)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setRaw (const uint64_t newState)
 Set the internal state from a valid code for this protocol. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state/code for this protocol. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
bool isSwingVToggle (void)
 Is the current state a vertical swing toggle message? More...
 
void setSwingVToggle (const bool on)
 Set the A/C to toggle the vertical swing toggle for the next send. More...
 
bool getSwingVToggle (void)
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate & set the checksum for the current internal state of the remote. More...
 
+ + + + +

+Static Private Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
+ + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint64_t remote_state
 The state of the IR remote in IR code form. More...
 
bool _SwingVToggle
 
+

Detailed Description

+

Class for handling detailed Midea A/C messages.

+
Warning
Consider this very alpha code.
+

Constructor & Destructor Documentation

+ +

◆ IRMideaAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRMideaAC::IRMideaAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRMideaAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMideaAC::calcChecksum (const uint64_t state)
+
+staticprivate
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + +
[in]stateThe value to calc the checksum of.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRMideaAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRMideaAC::checksum (void )
+
+private
+
+ +

Calculate & set the checksum for the current internal state of the remote.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRMideaAC::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRMideaAC::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRMideaAC::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRMideaAC::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRMideaAC::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint64_t IRMideaAC::getRaw (void )
+
+ +

Get a copy of the internal state/code for this protocol.

+
Returns
The code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRMideaAC::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVToggle()

+ +
+
+ + + + + + + + +
bool IRMideaAC::getSwingVToggle (void )
+
+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRMideaAC::getTemp (const bool celsius = false)
+
+ +

Get the current temperature setting.

+
Parameters
+ + +
[in]celsiustrue, the results are in Celsius. false, in Fahrenheit.
+
+
+
Returns
The current setting for temp. in the requested units/scale.
+ +
+
+ +

◆ getUseCelsius()

+ +
+
+ + + + + + + + +
bool IRMideaAC::getUseCelsius (void )
+
+ +

Is the device currently using Celsius or the Fahrenheit temp scale?

+
Returns
true, the A/C unit uses Celsius natively, false, is Fahrenheit.
+ +
+
+ +

◆ isSwingVToggle()

+ +
+
+ + + + + + + + +
bool IRMideaAC::isSwingVToggle (void )
+
+ +

Is the current state a vertical swing toggle message?

+
Returns
true, it is. false, it isn't.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRMideaAC::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRMideaAC::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRMideaAC::send (const uint16_t repeat = kMideaMinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRMideaAC::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting. 1-3 set the speed, 0 for auto.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRMideaAC::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRMideaAC::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRMideaAC::setRaw (const uint64_t newState)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]newStateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRMideaAC::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVToggle()

+ +
+
+ + + + + + + + +
void IRMideaAC::setSwingVToggle (const bool on)
+
+ +

Set the A/C to toggle the vertical swing toggle for the next send.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRMideaAC::setTemp (const uint8_t temp,
const bool useCelsius = false 
)
+
+ +

Set the temperature.

+
Parameters
+ + + +
[in]tempThe temperature in degrees celsius.
[in]useCelsiustrue, use the Celsius temp scale. false, is Fahrenheit
+
+
+ +
+
+ +

◆ setUseCelsius()

+ +
+
+ + + + + + + + +
void IRMideaAC::setUseCelsius (const bool on)
+
+ +

Set the A/C unit to use Celsius natively.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRMideaAC::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRMideaAC::toCommon (const stdAc::state_tprev = NULL)
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Parameters
+ + +
[in]prevA Ptr to the previous state.
+
+
+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRMideaAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRMideaAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRMideaAC::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRMideaAC::validChecksum (const uint64_t state)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]stateThe state to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRMideaAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _SwingVToggle

+ +
+
+ + + + + +
+ + + + +
bool IRMideaAC::_SwingVToggle
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint64_t IRMideaAC::remote_state
+
+private
+
+ +

The state of the IR remote in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.map new file mode 100644 index 000000000..7a5ecc57e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.md5 new file mode 100644 index 000000000..c12aeb84b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.md5 @@ -0,0 +1 @@ +7a6c2ec0b798d60bf8731cf20896a6a1 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMideaAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..47fc1c6e93d49676bfb333e0a28a893eb1445a67 GIT binary patch literal 3328 zcmY*c2{=?;AHOJuWNc;0E)ue53xkX`+t@N>Y^llqCcKuy3`2?}*|&^+i56RAH1>Us z?3ygeAnVxj-Jag>d!O&Q=iKw0=iYnH@0|bn|9-z4V`idvmVuiA0D!Xw`Z@@(^#to9 z2rYPDSiI2&Hnh%0dOE<#?<=RVFcAP4-y7&?Sq5g1Ged7!*zmVEacDVsu4G`TE<-mY zxm`5Ri>eB<@hP2oCm^FYC8xbOl|hu1n=?@Ad?mBfSuJzRFXpSC%L?HcJ>+Aq45|RL z{7U|eb~yyzW%Rc>x_BUK3Ch1_9SgNQ^zYigXdJX&w=^}|m_0Kb+^@c8AIGds$YJ0J zrX$Gki$2v(QDATy5^EVnoGwSc??S*;PUE2b)yOXy`F(sUal}{fSY}SnyD?vj;Ki0- zhw_aoR}56Dm;rq>x;X!F-pipOgmd$>s?;j%ze8aSf*Hk=7LwR?&w=OIpaYjo^ ziGRG((}{ ztE&}zGOuxTc6Q2eG9Jmnjy7njJtt|C3?sL<{Tg;Y+l6$)kw|VeH8p|cZgVTE$m7Gk zNx$^oPY9duGH>Cot&h)Ll#uAY%MF~QYJ{q)1Z|6DSD1-K*VHK0`IFNOY{_KuDd79^ z^4!w*ogg7*2xWmtBzD@MLR$;>c6L|*onlMYI(rk~Sw)4EMq_pLOF%$fT|IF|RJ*`2 zwqyJeG9W++kGQPpIdQ7d0SZ8vnA&o$NM=KADeA$Bk7Hwf zw-$|8r#~cTOD7rn9#MQ16chx&{T>_~9Js3hVPJ@ejXe_-9IOSAJ3I4la-UB2GN5UFwH=M zKDMPr$JNy}r>>5R`zh_yr%&}wOrlH*(|vB`=H}jf<4P|lFF!auOcSY1m3qSsQywD6 zW6ceCj8{^DuOIG`iQUpojJamfwYADU87gdWI9yCZ0uvt(4Z~gHy1x3}jB2@S1s zBGQ7>5T>U?5kJJQTxkVk$HL9c5Tg?T2G`wdV%Vt|rdMevk9~GIQ0P+%&kgQK88rJR zyg4LMR}kzdCn*rc!ktF;voBTMykiB_2L5~{5-XpcknS+2Ot`A!Qp4#{1(lqz9i1uL z*AoOBy?^Ll)1xl+w|<|Z5G=3ip=q#c#Y~OQrpJ{QT8tj)D)+v8pUI2;MHTLZ%^^?a zG!m=CO@zzybkIt1PcX~$Y4N*H6EP2qUi#Y7ip+`ecYOGK&!vRDmUWIYx z0+O-X)P850JfIbN-5nF{frESZjz16PRmDnXqZMACe3k(m-70aNZ{98jPDm=clN8F2 z0H1?d=;8Ls4_LE*TuZ%~ow~{GKXisQ$YcJ)ZN4QIzcluVvCDUUeODWECCyt76)=tf{leMlr2=cs7$OFu8+vNU;c#kV=)G-Z3( zw94a)Tu+KD4eWS3k#rXCHd@8z(X*f)&;iz-F1B;$;Jd3|h^9CkjtvHb{WbsTw4AD{ zq1RNc*3{Hg$Ntt*jCH99hqS{*6&01EO^`S)N=e0uu`|diE9-0gqPVcKuxM=usiU&= zFA6ms?_S{I<`#;KjBFVjOXg&x)rJUybSF|=T#PR*jqOErtqAG95oZ1=VZU z_QOZ&KYWmN|19}-Y-=xkq^-r+P2j3O-Z)H{3E%doS+qRcR^|dFI{AvDS=^7At3JnP zdwF^;^sn$8gK07@Jy6(ET+&_~VZn>GIQ>6S`6mh)h7(C&P3$kPy$j&9ZZAgeAKFEc zc_WN{N`yU2Ky~;hW&Y$(w8eCqQ-7f>&v|Qg#Q#0{-7yjI?3yvP5Kp4)jG@RZ-4=N& zTa|ew_C9@m32I!@joYl$G&GkSHU{ZFw>eZ8ll10x8Ch!8UG|i-w&lMhe}L`wJ-Bsi zn)IC0T0m6PZKzvy^wET6_@C2~p^HSJ_??}dWt5j2){QS23>tAjq-X?SXIRWhE`u+e{M;FouSP3EiE4( zpR)fdC+yK!#jTf+Q4d2y!;R^HSuN4T`B59xRRiyP_p}WR=s~q($~3`&EG&uo$aDGf z<-~_;6ZU2P`22!`R}~dZ=gyr2MgAH9>hFC22riA2MP&*3> zXn+3vSyWc0VBmfCE&<2?Fq%Nn{4HtV*WF!Q8!fk9xyL^TlwXsj#fhHOa57A=Gi2}+uM1<*qovw z2#7E6}dXXKh>k7t^PS>CQz(p4N1yO;Az#1 zU`*#55UGY3?Ae2E~n$6v_zo~}Q~%gakS`0?7@+L{&= zild_thaOPd%x!FN6B9^}nFg*)CK-fO`8!X#ib_g8l~|R|t*kr--NV=A!MqSq^DbD5 zkJefhyst`ox4HROOG}HUkYEzz}(UjT^z~hTL%m1wGu%n$6{h)gaYIAjZbH!3B$u|p!W*d(T8X~ zcyM)heKtNPM?hnCp*y+CdsZX5)j3*6h_b&w4_bi~CGV^+hYRS+&If6rR1XaenIRAn zgXY6Zjkw6jTrfY-Xmp}@|LiRP)>41_E_o8f5C+=3)tSb0Q_w55J{K{n^qf=_OEO&c zQ&qTnRS*W_7Zw&C`0giwC4fHC%gc+h)erNfY&dB=x_+Go;H0Ms+t}~{$r&u5@dP6b zuG(>LZTct(JSyh)_D>ED4la#bBof^?#=wLHhteH$FeTo}4y7%(j#ZisVUtT`l&~(7 zF--1sWscG5=UECa5#hR<+rQ-{2CRH$6sV;XD76`)5UT~S9kcw;SBDKzIh{u z&(E*2lUEcK6{XG3&ksD_8M|cvGR;l04fTKK(a9?r q>i3NW|F!ci=Lqxk$ + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRMitsubishi112 Member List
+
+
+ +

This is the complete list of members for IRMitsubishi112, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRMitsubishi112private
begin(void)IRMitsubishi112
calibrate(void)IRMitsubishi112inline
checksum(void)IRMitsubishi112private
convertFan(const stdAc::fanspeed_t speed)IRMitsubishi112static
convertMode(const stdAc::opmode_t mode)IRMitsubishi112static
convertSwingH(const stdAc::swingh_t position)IRMitsubishi112static
convertSwingV(const stdAc::swingv_t position)IRMitsubishi112static
getFan(void)IRMitsubishi112
getMode(void)IRMitsubishi112
getPower(void)IRMitsubishi112
getQuiet(void)IRMitsubishi112
getRaw(void)IRMitsubishi112
getSwingH(void)IRMitsubishi112
getSwingV(void)IRMitsubishi112
getTemp(void)IRMitsubishi112
IRMitsubishi112(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishi112explicit
off(void)IRMitsubishi112
on(void)IRMitsubishi112
remote_stateIRMitsubishi112private
send(const uint16_t repeat=kMitsubishi112MinRepeat)IRMitsubishi112
setFan(const uint8_t speed)IRMitsubishi112
setMode(const uint8_t mode)IRMitsubishi112
setPower(const bool on)IRMitsubishi112
setQuiet(const bool on)IRMitsubishi112
setRaw(const uint8_t *data)IRMitsubishi112
setSwingH(const uint8_t position)IRMitsubishi112
setSwingV(const uint8_t position)IRMitsubishi112
setTemp(const uint8_t degrees)IRMitsubishi112
stateReset(void)IRMitsubishi112
toCommon(void)IRMitsubishi112
toCommonFanSpeed(const uint8_t speed)IRMitsubishi112static
toCommonMode(const uint8_t mode)IRMitsubishi112static
toCommonSwingH(const uint8_t pos)IRMitsubishi112static
toCommonSwingV(const uint8_t pos)IRMitsubishi112static
toString(void)IRMitsubishi112
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112.html new file mode 100644 index 000000000..601d1e36a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112.html @@ -0,0 +1,1185 @@ + + + + + + + +IRremoteESP8266: IRMitsubishi112 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

#include <ir_Mitsubishi.h>

+
+Collaboration diagram for IRMitsubishi112:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRMitsubishi112 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishi112MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to off. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingV (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingV (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingH (const uint8_t position)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingH (void)
 Get the Horizontal Swing mode of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate the checksum for the current internal state of the remote. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kMitsubishi112StateLength]
 The state in code form. More...
 
+

Constructor & Destructor Documentation

+ +

◆ IRMitsubishi112()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRMitsubishi112::IRMitsubishi112 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRMitsubishi112::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRMitsubishi112::checksum (void )
+
+private
+
+ +

Calculate the checksum for the current internal state of the remote.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishi112::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishi112::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishi112::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a stdAc::swingh_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishi112::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi112::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi112::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRMitsubishi112::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRMitsubishi112::getQuiet (void )
+
+ +

Get the Quiet mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+
Note
There is no true quiet setting on this A/C.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRMitsubishi112::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingH()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi112::getSwingH (void )
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi112::getSwingV (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi112::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::on (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::send (const uint16_t repeat = kMitsubishi112MinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
There is no true quiet setting on this A/C.
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setRaw (const uint8_t * data)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]dataA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingH()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setSwingH (const uint8_t position)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]positionThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setSwingV (const uint8_t position)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]positionThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRMitsubishi112::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRMitsubishi112::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRMitsubishi112::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRMitsubishi112::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRMitsubishi112::toCommonSwingH (const uint8_t pos)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRMitsubishi112::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRMitsubishi112::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRMitsubishi112::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRMitsubishi112::remote_state[kMitsubishi112StateLength]
+
+private
+
+ +

The state in code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.map new file mode 100644 index 000000000..b03481d27 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 new file mode 100644 index 000000000..40fbd03d5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 @@ -0,0 +1 @@ +648b0b04c461ef09d8fa8c3efa7d7090 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi112__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a75dab94b76a33c3e6843c32ff5e78447e511dfb GIT binary patch literal 3407 zcmZu!2{e@5|9>nQ$r6nv3|U@;jID?yYm`0NDyb2&WC>-ml`Ui^ujRFjb!-{?(%8qE zEw2nQ*_RN7jBWg`_nhB*{=akn=ef^w&$-Wi?)~2H^7(w8a3h18Obpx%5Ck#l>S&sP zJ{;Tu^mO3)bz`Ona){tC>RqGOow!xsxKUrHW1?oat#`6{H z4cQpG!oI02Q!eTGyMG$N9WoEXJjz^#QKAd*{R3frMWkQGw_(?Tt12pf%w1fl3-f%= z9a4c7*BMT;Y6=Lv5fj#o{fl_&9Ttmi?cxuR^ghoaBq_TGGx?U6L~-m>v^*Rt?T3*MQy; zSB%zp@uHTPckL|LO+HV9jg|Ga0_mlOYwDb$8!wELlam$()4-ZWSj=oo=V{1hR8`4K zcMeTWMU7d%VhRrruk+ojAU@H5IwB>Ex_|%v=Kku3pgG0+4W8kd&Gv(QDKp`?v*=^ir3ZGKN`kpDZ0D3~k$(4=l? z$l|>|5fTJr`L&^|r>Ci*LDO{bL-~+$utCqrsOju1>8XTh9!P%ZAO7i+-hDip9h^W% zN2i5&=_*4AwSj?w5!O`Emn?n#_;5>i%C7Pe2PP{kFvV(MYfyFY^XJdo`Ba-o7!2k; z-_7b@Z&hknR#vt)ONi8VsjjM$hDu6HqcRId9aGZMc$z6-eEi2${<>AB*fK@G8m z)2^(n5OFA2XjquBrDgaFk`GKgi9tw6Xvndei<|q6K|xSV3=1YFCoVBD7zE2fp8M}F zUj(mQ;ZSfT!Pok}ed9M&J(4#uF&P>iJymTL1#BFpC-?XdhcHA`{gu${I&UxhTYhxfuHS>rD`Yu#6C&E$)Qu1Li&9S&B&kfVbu?O!02jNux(@Fv*t!cC zi@`BFF0ONdCCzsQ8*Px^_nSFOnW5Oe1_mx&zw+EPdCuz5hju#4C;j$XE?uu$Mjw`NUgtI{kWl^&+TQox}lmOBf-XpcN)P6FpSR=2LAlOdOXgyho*M_!4U}S; zPxMer=lh`j+@IE+6Bd3trtJ7~+(PGr{1I7s-h9KWX8iG?LinL5(gH?~2F(-ZrtgRH zh^&w{L&P^pC=88xZa_rhb0c%BU4gD54UCeAuh?*uv^+2Fhv8L@-AkLcpQEM8rQTy{ zWB!kzA58{s9%IJ^!=5oMPu?HdzPFcIzGp*oz~2~XFXuP2o8GwDYt~l8qA*V}`o96v zJbMCaF)efx1NXZ=g&4SHJpF4-vr_|r=dzmy2xfkExc??qh%NQCz4?UhzP@vfjFq_W zNU})p%18l0stxe+RLM1mt@3nNbGO zzq{&JMez13pYxoLDMyFfCsn>SUO674O6k_Vd2`&g`KWVkeSI8zr+_##bha3aeFO^R za36=mNy^H`V@DmoeET*?^4-#}vF%~YA9dXO?d$7HOp&uEPETLx>+ZJ6$jHzu7?J7Z zy4U1;H8L_11rS3o&jdF#G}J7ge>7#J!+5y5v1BGK;=2HMBpe=hU`5x_zS>PU@n)v#456185?L8ZJlTW5TQ<>ja znj`VVMeDjEt)>Adu42y||j<O_OrYTedK`hSTL zSncr@&`CsZ@2yCuJ~q9S*php-%nJ((BbWeOEy47h?EY-Ne%kchTu@>n+`plw2Eg?4 zGCdNB?C9!3?R+0aZ(vJHwa{oK3+XSA`3=DM8qZ~g#apW;+WjA78ZB>K7^~A~KSdpFig9Tl(Dmd`x!s z>wx3b%T8{TLm&T!;^H$iGc#OVwf?XW2{`}-6UxMM zmYqE$IG8qF`NfYi7nQ=263O7uP;lH+TT6psrs9OW+sPs&ew8f0Uu`YwCnhHYp&@Bi zrQ>?O%RRQoR_x-%)_bn_kaMC27ZepOTs`N0e%vL!a&U4QQJ$=-shLeMysqZ$eTABu zI?DuW1Wp7L3F$@YlP6DzO@7K?*vQH%qCZUm$Q^aTxaHCps(uJnf8MV(EbMtH8mh?WU*1ev%$f^5HveC=YB|bPgn9{Fv0#k z-!$)Wm70cz3X+kLQFNPz&}g)@(-+Bv+I~2JKp^ieWyYnYDL-;ay(H}J?yjS&tM>3A ze??{GPXgz|>2T4Ez^Et+tASvg4Zy1I-rlw-9)(TvT+DG^7-N5m9PD0=v)Z#~Qu_x7 zGaDN*b#;mfotBw$_R+(h=H_D$zpoD92Z>quUAeZcATcQ^ZGZpk-W#N-`sYgq7L9hQ zqH#LH#5#AOiHQlf?d4(jF`%ScSyT@LmzS3hNC=)#CMW~_{i5&o@XhZ2enR{ow_{UN zdyl(7l6^lC1^IIx-;BpkIZU*-qb4aEqsd%}xBdVP*srhDL5k6>H;_ejGK#?&=9iXG zo}Pa@__(=AgEY=I68q5z?6+4hHQNfy2T3h}M6$TJxNsp5AqEBQo14-=yiZOJtEi9#rC>uj+&f32 z2Y4CxF@>D|>L_j2kzg-)rMENw-2kzT`AE@{mZRm&ZrD zdtLs*qM|}_a_2nid4XwKdV23j1&HY{3BtdA{TdWjnaRw;0)rA06Q^gw_?wnIfXWn0x&_@(SEp`{1`3iiQq31U98<|~<_vJbvKf^` zmDj4-%a<>+3JY~yDT(!xh8-u22Ywg+2QB{*Gg*z+?uf>sn4!Pe@xcMtf9Y + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRMitsubishi136 Member List
+
+
+ +

This is the complete list of members for IRMitsubishi136, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRMitsubishi136private
begin(void)IRMitsubishi136
calibrate(void)IRMitsubishi136inline
checksum(void)IRMitsubishi136private
convertFan(const stdAc::fanspeed_t speed)IRMitsubishi136static
convertMode(const stdAc::opmode_t mode)IRMitsubishi136static
convertSwingV(const stdAc::swingv_t position)IRMitsubishi136static
getFan(void)IRMitsubishi136
getMode(void)IRMitsubishi136
getPower(void)IRMitsubishi136
getQuiet(void)IRMitsubishi136
getRaw(void)IRMitsubishi136
getSwingV(void)IRMitsubishi136
getTemp(void)IRMitsubishi136
IRMitsubishi136(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishi136explicit
off(void)IRMitsubishi136
on(void)IRMitsubishi136
remote_stateIRMitsubishi136private
send(const uint16_t repeat=kMitsubishi136MinRepeat)IRMitsubishi136
setFan(const uint8_t speed)IRMitsubishi136
setMode(const uint8_t mode)IRMitsubishi136
setPower(const bool on)IRMitsubishi136
setQuiet(const bool on)IRMitsubishi136
setRaw(const uint8_t *data)IRMitsubishi136
setSwingV(const uint8_t position)IRMitsubishi136
setTemp(const uint8_t degrees)IRMitsubishi136
stateReset(void)IRMitsubishi136
toCommon(void)IRMitsubishi136
toCommonFanSpeed(const uint8_t speed)IRMitsubishi136static
toCommonMode(const uint8_t mode)IRMitsubishi136static
toCommonSwingV(const uint8_t pos)IRMitsubishi136static
toString(void)IRMitsubishi136
validChecksum(const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)IRMitsubishi136static
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136.html new file mode 100644 index 000000000..456227963 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136.html @@ -0,0 +1,1108 @@ + + + + + + + +IRremoteESP8266: IRMitsubishi136 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Mitsubishi 136-bit A/C messages. + More...

+ +

#include <ir_Mitsubishi.h>

+
+Collaboration diagram for IRMitsubishi136:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRMitsubishi136 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishi136MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingV (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingV (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate the checksum for the current internal state of the remote. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kMitsubishi136StateLength]
 The state in code form. More...
 
+

Detailed Description

+

Class for handling detailed Mitsubishi 136-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRMitsubishi136()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRMitsubishi136::IRMitsubishi136 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRMitsubishi136::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRMitsubishi136::checksum (void )
+
+private
+
+ +

Calculate the checksum for the current internal state of the remote.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishi136::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishi136::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishi136::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi136::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi136::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRMitsubishi136::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRMitsubishi136::getQuiet (void )
+
+ +

Get the Quiet mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRMitsubishi136::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi136::getSwingV (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishi136::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::send (const uint16_t repeat = kMitsubishi136MinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::setQuiet (const bool on)
+
+ +

Set the Quiet mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::setRaw (const uint8_t * data)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]dataA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::setSwingV (const uint8_t position)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]positionThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRMitsubishi136::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRMitsubishi136::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRMitsubishi136::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRMitsubishi136::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRMitsubishi136::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRMitsubishi136::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRMitsubishi136::validChecksum (const uint8_t * data,
const uint16_t len = kMitsubishi136StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]dataThe array to verify the checksum of.
[in]lenThe length of the data array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRMitsubishi136::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRMitsubishi136::remote_state[kMitsubishi136StateLength]
+
+private
+
+ +

The state in code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.map new file mode 100644 index 000000000..3775846f8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 new file mode 100644 index 000000000..213574ee0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 @@ -0,0 +1 @@ +de5d5156a942dd05dd10b0b63147e763 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishi136__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..23af714aeb5cf0043042232b08859e4ac655bdeb GIT binary patch literal 3648 zcmZ`+2{@Ep8=g|MF({uJL=2KKN|tPctb>e@Fk{UY5+eKZMajNQ_BCszF$@OTLJ?zV zXvmhbuh|AOB>(ICzW=)Z|GNJFdaw6A=Y6l|Ip@63eV*sOPn4m7HtQ+KDG&(6iqz3C z0@^6x4n4sPJV#f5kb#ETPET6{bZ~g(HY>M6HIxGoT|vG7NITzOz1>t zJDGC)L@z2r!%+C9;498c940=#-bcvs7nQpMSDWVMrLsFdM4dG!x@8oSK-sTE#l*yH z`*M}z;q79)ijQLpwG$NHoq0MygOa7BqSQuBGt;rN6IAs5 zS@h;j^sOw}%D^4>8Rg2#%5z*?>+N8bwNC!ft6tMO1qB5aX0UFBywKnBU0q$6datKn zznabV<)Jnumi*sfKv3%ThV&VdH?=>FEq)2Hp6K;BH~!teO3SZ zh6a+nynMG;c&ot9B2^C&xc!z))Ya9sSCxgtbt_d3!*&)1w9P}8zgBKEtTvay@a5&H zN9wDqO$L{?qy*B^(!@z%J_RU~m!_s>*0x^hK$k*J`K{H;Quq*7IuDC!3gE(-l16G= zuVs-z$C#N3zz?NLTKCe|r~H4`&)s-5dj`ZUX?5&$-5m%R% z%6^SiIiWy{OG{!B62*7%R;Hv#Ha?ft@fCJUIFuX|6r^+OR&iZjItszi$iP!wx=5s{ zH0u!CUD|?vjzY@2cM8nli?LZ*JSizDp9pSS{Vp|cRv3GG#%MH&T6Q=J~@8+G7MH! zULJo|)PS9fOH*Av+y$*3$>y*z-Swff)A;u7KU-~VX1Y`OD$=%xiq(%+*mrRPSbwd& z$1+fIt9^7dE91ITf9*qSBO@an6snU%I$h^uqyRwc*qa@N$4ly^!fb(goTW1ZUBo3M zSg~CnKEG5y2?mSG$`0l>4BA4?AICS$3=9lJ#m9FbyFFjcqK{|K5ToD|*b`ub|46y0 z#1n5cbdKE-gi1)un0>kHb=9D}*f+pE*kcQHAwAAdpEnp|u?#Ww%CF8`S_ zbA#2>z>6i=N=Cqw(Ft)MjCzE16ol5w3}%Wkc4SmL#-NXY@7ih8(i%GM4YXiZ$4#6N zJ|Y59JJQM}59UZ7rPWjGE*%j-+v|qb_r_(4u-u*D)zAs!36))+FcyKO9^|#_eZur` zNAj{?I+9OsPxI2^u`V_fI<9JeJ(dANz-hd@sfn;cj>C1b@!-sx> z^;}5&f@xGE7q@`J(BPBpYD0+WI&U4?9u+K{nkA(vU%oHax$yh+SW=Ii!!sr7kc-vu z{j}o8l&dIF7lb@4zM2_cemYBG1%;zR(;kpU)D^B@mOe&^LY3-GXE}Q z`MQU|A&%DCD23#Nv@6dK_sQU+s;@CrNOV1lKn>dhA8Im65Vl6ylO-zdn!!a{PaG9R{5RSgUJMfa>H5={+sb(4dGgB@Z% z3X%vgRECsh?scbljFlC9X)D107kzz4reuHod1Ce2dSU7GBop;P0Lt|eQdifgM3EE@ z{;9?5z6=!*P-WCtsnAt}-c_DO5`JesGcD6BquN!P(Kkqv845mE92^|F!@=cNO}Yoa z_eaNibHE5^Hr+tLg$CuzKXi>KV)EW*;eQ^wRwLjZK@<)+q}BNZ>(b`klE2^n z8_IvXqK{j!Phr0vQeaej-2WT)`5w}3IQEL6g++It%E9t;i|n?VsdoD255a(Q4UUG) ztdI`?U*epIycJLhiCfH=?U}-Ltc<%dpH*a`l|oLhBYRduJj%$>(4$uKCU=b^In#75 z=Fwjq`OlnQqo*Ys-?xUdxhW(f@~kvBpnFkS)F4~n+O?#LimMLItv25ob9tTZ?cw`-JK~!vzt+^t zWVzuO9TSstFJHb~sXYD0f;f>o8gQ_`GhF+SALQ=tK0P;wmXL$Q0h|(!6-6Co=jH90 z{1|iLs!bT7ceu)FxH(u6U=uon!NJdu^6>Cz_~KfdYu}qKf9~A5#FP|GGqdwNvTlYQ zum`gCpV$cm!rNH~C#UN`KQLwH1t%xx<;$0C+MluF;CYf7b#LEJ z+W1}nXwGZ#i;oY|!6%+m9e}h0i2Dozf#8+* znrtwZ&t)}9`=agEBGqk_829uvH^FmCD>^1-v@tGq0JmSTT8vW+%$rpUTy=<; zYdFcuIs@z_CqUxHUR2Jc)BPY2$lBVPYBChaR82!e_T1duo-8@Audi>&{?^c*`>MfX z6;VK6Ix;q9&c|sr?{ANq4goQlUi;Cmp`kJM$ai_x5xrZ4#D1;w6dENyIE;6(UfPvV z!1~^n_M6wQEB!;w%`?c=2??mOl>)lo^8q z+861c2j8lfWBvU7Ir#X<+}1&A#>QCk#74kad5D5!{e1UyUI0S zFrpqS-}Z}Wpip3wl3IW7?@?T8z>Q7m>E~r1jA%GIiU2#=ZJ2Pp$*M1!OB^^7e3+QX zlbZ-K_FwL7dwLpaV4zhxaLwbps-Tb%4zcncCyFd8DKWxeV)OF&AGYih$w=|BfMn`K z4b`;1zTWLyqj?6~$&*KHCYpnlXrI-4(yxWTcySH@d3|HUjy6vzDk}P1*ol)&BntY5ptLH(>Cs0jwPki;(PA&N^!)W(hQhtbLt*!q=^bAIbsve= b;(c(kPie7|8HNuy5`vJL1{&ozZJzuKlwcKU literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC-members.html new file mode 100644 index 000000000..3696a31d2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC-members.html @@ -0,0 +1,123 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRMitsubishiAC Member List
+
+
+ +

This is the complete list of members for IRMitsubishiAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRMitsubishiACprivate
begin(void)IRMitsubishiAC
calculateChecksum(const uint8_t *data)IRMitsubishiACprivatestatic
calibrate(void)IRMitsubishiACinline
checksum(void)IRMitsubishiACprivate
convertFan(const stdAc::fanspeed_t speed)IRMitsubishiACstatic
convertMode(const stdAc::opmode_t mode)IRMitsubishiACstatic
convertSwingH(const stdAc::swingh_t position)IRMitsubishiACstatic
convertSwingV(const stdAc::swingv_t position)IRMitsubishiACstatic
getClock(void)IRMitsubishiAC
getFan(void)IRMitsubishiAC
getMode(void)IRMitsubishiAC
getPower(void)IRMitsubishiAC
getRaw(void)IRMitsubishiAC
getStartClock(void)IRMitsubishiAC
getStopClock(void)IRMitsubishiAC
getTemp(void)IRMitsubishiAC
getTimer(void)IRMitsubishiAC
getVane(void)IRMitsubishiAC
getWideVane(void)IRMitsubishiAC
IRMitsubishiAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishiACexplicit
off(void)IRMitsubishiAC
on(void)IRMitsubishiAC
remote_stateIRMitsubishiACprivate
send(const uint16_t repeat=kMitsubishiACMinRepeat)IRMitsubishiAC
setClock(const uint8_t clock)IRMitsubishiAC
setFan(const uint8_t speed)IRMitsubishiAC
setMode(const uint8_t mode)IRMitsubishiAC
setPower(const bool on)IRMitsubishiAC
setRaw(const uint8_t *data)IRMitsubishiAC
setStartClock(const uint8_t clock)IRMitsubishiAC
setStopClock(const uint8_t clock)IRMitsubishiAC
setTemp(const uint8_t degrees)IRMitsubishiAC
setTimer(const uint8_t timer)IRMitsubishiAC
setVane(const uint8_t position)IRMitsubishiAC
setWideVane(const uint8_t position)IRMitsubishiAC
stateReset(void)IRMitsubishiAC
toCommon(void)IRMitsubishiAC
toCommonFanSpeed(const uint8_t speed)IRMitsubishiACstatic
toCommonMode(const uint8_t mode)IRMitsubishiACstatic
toCommonSwingH(const uint8_t pos)IRMitsubishiACstatic
toCommonSwingV(const uint8_t pos)IRMitsubishiACstatic
toString(void)IRMitsubishiAC
validChecksum(const uint8_t *data)IRMitsubishiACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC.html new file mode 100644 index 000000000..92707fd32 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC.html @@ -0,0 +1,1437 @@ + + + + + + + +IRremoteESP8266: IRMitsubishiAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done at: https://github.com/r45635/HVAC-IR-Control. + More...

+ +

#include <ir_Mitsubishi.h>

+
+Collaboration diagram for IRMitsubishiAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRMitsubishiAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishiACMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setVane (const uint8_t position)
 Set the requested vane (Vertical Swing) operation mode of the a/c unit. More...
 
void setWideVane (const uint8_t position)
 Set the requested wide-vane (Horizontal Swing) operation mode of the a/c. More...
 
uint8_t getVane (void)
 Get the Vane (Vertical Swing) mode of the A/C. More...
 
uint8_t getWideVane (void)
 Get the Wide Vane (Horizontal Swing) mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t getClock (void)
 Get the clock time of the A/C unit. More...
 
void setClock (const uint8_t clock)
 Set the clock time on the A/C unit. More...
 
uint8_t getStartClock (void)
 Get the desired start time of the A/C unit. More...
 
void setStartClock (const uint8_t clock)
 Set the desired start time of the A/C unit. More...
 
uint8_t getStopClock (void)
 Get the desired stop time of the A/C unit. More...
 
void setStopClock (const uint8_t clock)
 Set the desired stop time of the A/C unit. More...
 
uint8_t getTimer (void)
 Get the timers active setting of the A/C. More...
 
void setTimer (const uint8_t timer)
 Set the timers active setting of the A/C. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t *data)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + +

+Static Private Member Functions

static uint8_t calculateChecksum (const uint8_t *data)
 Calculate the checksum for a given state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kMitsubishiACStateLength]
 The state in code form. More...
 
+

Detailed Description

+

Class for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done at: https://github.com/r45635/HVAC-IR-Control.

+
Warning
Consider this very alpha code. Seems to work, but not validated.
+

Constructor & Destructor Documentation

+ +

◆ IRMitsubishiAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRMitsubishiAC::IRMitsubishiAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+
Warning
Consider this very alpha code. Seems to work, but not validated.
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calculateChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiAC::calculateChecksum (const uint8_t * data)
+
+staticprivate
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + +
[in]dataThe value to calc the checksum of.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRMitsubishiAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRMitsubishiAC::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiAC::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiAC::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiAC::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a stdAc::swingh_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiAC::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getClock()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getClock (void )
+
+ +

Get the clock time of the A/C unit.

+
Returns
Nr. of 10 minute increments past midnight.
+
Note
1 = 1/6 hour (10 minutes). e.g. 4pm = 48.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRMitsubishiAC::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRMitsubishiAC::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getStartClock()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getStartClock (void )
+
+ +

Get the desired start time of the A/C unit.

+
Returns
Nr. of 10 minute increments past midnight.
+
Note
1 = 1/6 hour (10 minutes). e.g. 4pm = 48.
+ +
+
+ +

◆ getStopClock()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getStopClock (void )
+
+ +

Get the desired stop time of the A/C unit.

+
Returns
Nr. of 10 minute increments past midnight.
+
Note
1 = 1/6 hour (10 minutes). e.g. 10pm = 132.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTimer()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getTimer (void )
+
+ +

Get the timers active setting of the A/C.

+
Returns
The current timers enabled.
+
Note
Possible values: kMitsubishiAcNoTimer, kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, kMitsubishiAcStartStopTimer
+ +
+
+ +

◆ getVane()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getVane (void )
+
+ +

Get the Vane (Vertical Swing) mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getWideVane()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiAC::getWideVane (void )
+
+ +

Get the Wide Vane (Horizontal Swing) mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::send (const uint16_t repeat = kMitsubishiACMinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClock()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setClock (const uint8_t clock)
+
+ +

Set the clock time on the A/C unit.

+
Parameters
+ + +
[in]clockNr. of 10 minute increments past midnight.
+
+
+
Note
1 = 1/6 hour (10 minutes). e.g. 6am = 36.
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting. 0 is auto, 1-5 is speed, 6 is silent.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setRaw (const uint8_t * data)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]dataA valid code for this protocol.
+
+
+ +
+
+ +

◆ setStartClock()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setStartClock (const uint8_t clock)
+
+ +

Set the desired start time of the A/C unit.

+
Parameters
+ + +
[in]clockNr. of 10 minute increments past midnight.
+
+
+
Note
1 = 1/6 hour (10 minutes). e.g. 8pm = 120.
+ +
+
+ +

◆ setStopClock()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setStopClock (const uint8_t clock)
+
+ +

Set the desired stop time of the A/C unit.

+
Parameters
+ + +
[in]clockNr. of 10 minute increments past midnight.
+
+
+
Note
1 = 1/6 hour (10 minutes). e.g. 10pm = 132.
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setTimer (const uint8_t timer)
+
+ +

Set the timers active setting of the A/C.

+
Parameters
+ + +
[in]timerThe timer code indicating which ones are active.
+
+
+
Note
Possible values: kMitsubishiAcNoTimer, kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, kMitsubishiAcStartStopTimer
+ +
+
+ +

◆ setVane()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setVane (const uint8_t position)
+
+ +

Set the requested vane (Vertical Swing) operation mode of the a/c unit.

+
Parameters
+ + +
[in]positionThe position/mode to set the vane to.
+
+
+ +
+
+ +

◆ setWideVane()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::setWideVane (const uint8_t position)
+
+ +

Set the requested wide-vane (Horizontal Swing) operation mode of the a/c.

+
Parameters
+ + +
[in]positionThe position/mode to set the wide vane to.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRMitsubishiAC::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRMitsubishiAC::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRMitsubishiAC::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRMitsubishiAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRMitsubishiAC::toCommonSwingH (const uint8_t pos)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRMitsubishiAC::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRMitsubishiAC::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRMitsubishiAC::validChecksum (const uint8_t * data)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]dataThe array to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRMitsubishiAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRMitsubishiAC::remote_state[kMitsubishiACStateLength]
+
+private
+
+ +

The state in code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map new file mode 100644 index 000000000..627b45a20 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 new file mode 100644 index 000000000..2eda9cf87 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 @@ -0,0 +1 @@ +c5704e67d45afe4844036674d82d8c46 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1362a2285ddc2abb140a7b2c6ea01b2ce0588c GIT binary patch literal 3489 zcmYLM1z1!|8$Qy)!qVMJNG&Kzmo(BM60)Sor5mJ{u7#zfTP~NBS_vs(X+dB`q?8U7 zq?VNW5BLA?f1fkw%yZ_MnR8~o_kF*2;`DXZ$w`?>0RSM^)KD=5>j>~hkPv~-k&hk( zU`1r}NL>ZEy1t4!%F@7|#+oWhM*exfz6I+Wt+5mD?kIVZC%1KUeedd0Z5=vjm9->oU)w;jLzWlf+-noA(23ougz0MdkRwgC4NX` zi74eLe58LNa7WI_*f`!4lhEL`p-VtajQrABt{(m2gI1mb0zN`*pWycXf?h{Q=k*uP zpD8y0<7$&I4CZ0|Fl9a`iA|>B6vU1;D$Jdh2xGwbmx+^;Ac2zNix*|nr6!3O#THYB z=-pj++2gNX_7mZpij)MBl9F9hQw)~Dhv~6&qj0ncWMyb@5U_>h=jZ$X{!x~amzR)} z!(2a{U3Mk&)g^%aFL58j*I~sElO50Y5^|)AO!4Gx>+% zVUJ(4_fJkvI3GNq=S_>N#q}{*E`F3)PyyGUnwD1Yv7(kBOO%?G6-!7)UsO{=(bv}} z>A5=ib{qG~hC4nf>BZjOo^c1CkWj*NJG(3${KeW++y`jK0v~+_d;$qUq z9Nc#Z;Nl+UzIk?fTJN_IoC(|6-nIv_bjxgge0;z@PEISsV|h|NKphH2 zQFTNHJQhed?sySTHxhTNXYjsqV4w^wDdExfH?k5e39!4rkHMCx*E>y#5D*dBO#G$O z5_EbOSo}Fz1ppEf5+PL5Zu7EVTRiZ|$;pGxYHDiEH`;bOSpZQ{Q6OKJSY2Hmy*58T z-!yNLn@wZQxU{?+-rg?zd1`7UO;3IaM@LGiTOb=(St(F$iYBTueiII_jVUYR+uGV1 zpP9MYpEdKSSYLa#psh{j_t_bCetvZ0k4CfHtvT&-euPUw)9NTXVAhO%|YsXkt}RGxU4X zhfQy3T3XuJr=bR2Z#Z^(!tbMZ#2PDj0~kjO6_R>;Rj{+iXT!GB2UAZ|PWRLx*+i;U zw!D;w6sy|qyqf|w1@BM;3#Q@kYf_LFsH{JOi9I#kFpXYv0D(iucj`7)tfn+1aZOH? z{9A~~`s_Ov#;tqt7OCa8*@$#BC9M3;WKbi$*=)QL76CnAKkoElhvBBqi13|N6V@bkhZ(}bGCiI;B{j)AE&vv$I+O}=z z=;)lStU{j{8#jP7=nQdo7DC3xT7k-Ncy!dTQHUrYBp?ti!45WWEG>15JZtF!No1<4 zOX20?^BmM8v3?U!9g#?+t&59GbxjS5kcem=>py8rt050LENh!lhgvlJlv|17;^T|a z8_Vb(9>`+Bj~gQZDRsUvBkeC0oRh_Ed!@sQU0vAq$f#~2`_09*)SdFz#5Pht%ehN#b42%Dxno)*5Gxa) znw$$Dwgh>2RNEhxg{|t*M3zhtFsc5-i~q$VZ?$LKvjSRL0VaYhDsY0ZZ7y-kmOH*o z_rh0u6xIHX+TVGHgzr?unYl2mWDktQ*u7+f|F-_0Z5T~?$boDRKhn(_WZU^UZp`L0 zcYLv+?zp8%WOz7U{iAGSmIuytc~ZW;M5Tr=&tOrHR(a5Ex$g$Qs?^%HTCR|P5nDQe zI5q~nR<)xSguw>pI|2tRcu$>(?#5#jCI3#TSB)=m_OH^@Keo8&l$p{*fBtOr>eZ`} zxTC)L%sA~K2RB&zE}pEcY;s0Me_2&k)eYcoHpJD{RYOY)Gu!C&asDwVU|_se)YSG* z&EC-K$sN+t3z>v+gq(zpDfsUendX`|yQ+d!r~%5qj^rM!Ju~89aWBAJKiS<<%B#^qW()R}(8r7gV`yOv}s5MaESIMn;i?gBtCZ zzc+&*y;P4fgp>>nQf6e+wW4?)WlUFAGa<#IKYcQ+HgBd7NdI8-^2rmrPZJYM+uJC7 zVv3^jauQg_0X2v_15;Bep8M11;#_G%lq@V{N|ZwVf)EM{H8(d{&9irSi$_J7FUAT~ zy}jS|`CcB6|NdE3`?{%#-mT-1{-LsRN=^j?Pfy*>?sk*&On6RCj>lYKwJ_k|=!hB3m!V=}ic4gX zSYGZ!(zuefTnxio+_`+Wro+B`F-BiWCWx)BuiJcU_3>ZNezCZ{O_8ll1cSkx=i8a8 zp4JvDS}sUGfJSs%b%EKHSc$UE`-dU=Ip|r6^%u`}-V+0P^1;lVot^e2g{Y0SOw0ZV zsC;a7wNUw_Bde@GrF1?;35xXea^hAA>Snp;qi zOioUYe)A%`NjG0QO4z(<@nmm>gp91GGx%&*U5}BTf#DVx*Nvm2Bmey&K9A+zo1I%A zG#p%9*p5Gor90DKTNW;HaoVM&B}wn^l%AfR;7VNU;h^mi5D;+3t?QH<3H0{%el-Zh zt$&Q@=#XP&WfetS1__xrLFSrV(2guvEOz(!I3^+jAKdXpFmK1l$ICbh%FDCM%gciq zE;cSsNly>j+S=Oh(p*(V#+*o0TwL6a;y|3IK&hpv2f^J~sJy7p_!v!wLL!yT%$NfL z0+Mrckz)#1tizeGnEd>gm#dyq;o;$Rh^vsVtv+N>h4Wpu3y-8eB!lf(ft+N}iD*Dz z;L@*Oi7hRXRsB!k?f&(B-shmb!>41n82o4w0dqsc@S`JN*~^m^d)%bseGvAi zP0}(ld~%ML3eF)p$-`^YjZO?Xxw!^rX42czVq#*Fe%q|COG1{2NEh5Y znsZy(UFsnrAyEtnkiH@uw7ZM8?Dvnk%E+Kc{=vYI=`nXz(p25esH~}Z6U8cp*J$?9 z^6YqLql^>^g$kLy9b7*a`D;x+A}x)EnuaE&urO(9$r`x^foMI{qHTV=SJ%=4CL&6D`fD{hIXmka8oFs} zYO2pq%P%C0a^$`T4LB+w5w6*0N85wEf{J2=369$8VCRNgF9Ww8~LXPga zh#i`3h}J57sIQ;g7Zey6NI*bP)Y8HT)CHY-wqISIIXFA3I64a0*x2mOI@NZAU+V7e zHg1+-N5Zh6!{HPYOKGj!C{GdD@{pey&vY2%|64Y%Pa>#)H1zt#6@#iwVHf9SqqjDB z=gIR*tCX>kG6kEZYe(=6#ar^fvkSXo@w93()6zKtpuK!_F!ylN0X%a7nyR`gH4m-A F{{uV9qMrZ& literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html new file mode 100644 index 000000000..b8ea4cc00 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html @@ -0,0 +1,129 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRMitsubishiHeavy152Ac Member List
+
+
+ +

This is the complete list of members for IRMitsubishiHeavy152Ac, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRMitsubishiHeavy152Acprivate
begin(void)IRMitsubishiHeavy152Ac
calibrate(void)IRMitsubishiHeavy152Acinline
checksum(void)IRMitsubishiHeavy152Acprivate
checkZmsSig(const uint8_t *state)IRMitsubishiHeavy152Acstatic
convertFan(const stdAc::fanspeed_t speed)IRMitsubishiHeavy152Acstatic
convertMode(const stdAc::opmode_t mode)IRMitsubishiHeavy152Acstatic
convertSwingH(const stdAc::swingh_t position)IRMitsubishiHeavy152Acstatic
convertSwingV(const stdAc::swingv_t position)IRMitsubishiHeavy152Acstatic
get3D(void)IRMitsubishiHeavy152Ac
getClean(void)IRMitsubishiHeavy152Ac
getEcono(void)IRMitsubishiHeavy152Ac
getFan(void)IRMitsubishiHeavy152Ac
getFilter(void)IRMitsubishiHeavy152Ac
getMode(void)IRMitsubishiHeavy152Ac
getNight(void)IRMitsubishiHeavy152Ac
getPower(void)IRMitsubishiHeavy152Ac
getRaw(void)IRMitsubishiHeavy152Ac
getSilent(void)IRMitsubishiHeavy152Ac
getSwingHorizontal(void)IRMitsubishiHeavy152Ac
getSwingVertical(void)IRMitsubishiHeavy152Ac
getTemp(void)IRMitsubishiHeavy152Ac
getTurbo(void)IRMitsubishiHeavy152Ac
IRMitsubishiHeavy152Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishiHeavy152Acexplicit
off(void)IRMitsubishiHeavy152Ac
on(void)IRMitsubishiHeavy152Ac
remote_stateIRMitsubishiHeavy152Acprivate
send(const uint16_t repeat=kMitsubishiHeavy152MinRepeat)IRMitsubishiHeavy152Ac
set3D(const bool on)IRMitsubishiHeavy152Ac
setClean(const bool on)IRMitsubishiHeavy152Ac
setEcono(const bool on)IRMitsubishiHeavy152Ac
setFan(const uint8_t fan)IRMitsubishiHeavy152Ac
setFilter(const bool on)IRMitsubishiHeavy152Ac
setMode(const uint8_t mode)IRMitsubishiHeavy152Ac
setNight(const bool on)IRMitsubishiHeavy152Ac
setPower(const bool on)IRMitsubishiHeavy152Ac
setRaw(const uint8_t *data)IRMitsubishiHeavy152Ac
setSilent(const bool on)IRMitsubishiHeavy152Ac
setSwingHorizontal(const uint8_t pos)IRMitsubishiHeavy152Ac
setSwingVertical(const uint8_t pos)IRMitsubishiHeavy152Ac
setTemp(const uint8_t temp)IRMitsubishiHeavy152Ac
setTurbo(const bool on)IRMitsubishiHeavy152Ac
stateReset(void)IRMitsubishiHeavy152Ac
toCommon(void)IRMitsubishiHeavy152Ac
toCommonFanSpeed(const uint8_t speed)IRMitsubishiHeavy152Acstatic
toCommonMode(const uint8_t mode)IRMitsubishiHeavy152Acstatic
toCommonSwingH(const uint8_t pos)IRMitsubishiHeavy152Acstatic
toCommonSwingV(const uint8_t pos)IRMitsubishiHeavy152Acstatic
toString(void)IRMitsubishiHeavy152Ac
validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy152StateLength)IRMitsubishiHeavy152Acstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html new file mode 100644 index 000000000..061206339 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html @@ -0,0 +1,1593 @@ + + + + + + + +IRremoteESP8266: IRMitsubishiHeavy152Ac Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Mitsubishi Heavy 152-bit A/C messages. + More...

+ +

#include <ir_MitsubishiHeavy.h>

+
+Collaboration diagram for IRMitsubishiHeavy152Ac:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRMitsubishiHeavy152Ac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const uint8_t pos)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingVertical (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const uint8_t pos)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingHorizontal (void)
 Get the Horizontal Swing mode of the A/C. More...
 
void setNight (const bool on)
 Set the Night (Sleep) mode of the A/C. More...
 
bool getNight (void)
 Get the Night (Sleep) mode of the A/C. More...
 
void set3D (const bool on)
 Set the 3D mode of the A/C. More...
 
bool get3D (void)
 Get the 3D mode of the A/C. More...
 
void setSilent (const bool on)
 Set the Silent (Quiet) mode of the A/C. More...
 
bool getSilent (void)
 Get the Silent (Quiet) mode of the A/C. More...
 
void setFilter (const bool on)
 Set the Filter mode of the A/C. More...
 
bool getFilter (void)
 Get the Filter mode of the A/C. More...
 
void setClean (const bool on)
 Set the Clean mode of the A/C. More...
 
bool getClean (void)
 Get the Clean mode of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo mode of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economical mode of the A/C. More...
 
bool getEcono (void)
 Get the Economical mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool checkZmsSig (const uint8_t *state)
 Verify the given state has a ZM-S signature. More...
 
static bool validChecksum (const uint8_t *state, const uint16_t length=kMitsubishiHeavy152StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does has inverted byte pairs. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kMitsubishiHeavy152StateLength]
 State in code form. More...
 
+

Detailed Description

+

Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRMitsubishiHeavy152Ac()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRMitsubishiHeavy152Ac::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::checksum (void )
+
+private
+
+ +

Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does has inverted byte pairs.

+ +
+
+ +

◆ checkZmsSig()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::checkZmsSig (const uint8_t * state)
+
+static
+
+ +

Verify the given state has a ZM-S signature.

+
Parameters
+ + +
[in]stateA ptr to a state to be checked.
+
+
+
Returns
true, the check passed. Otherwise, false.
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a stdAc::swingh_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ get3D()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::get3D (void )
+
+ +

Get the 3D mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::getClean (void )
+
+ +

Get the Clean mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::getEcono (void )
+
+ +

Get the Economical mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getFilter()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::getFilter (void )
+
+ +

Get the Filter mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getNight()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::getNight (void )
+
+ +

Get the Night (Sleep) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRMitsubishiHeavy152Ac::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSilent()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::getSilent (void )
+
+ +

Get the Silent (Quiet) mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::getSwingHorizontal (void )
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::getSwingVertical (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy152Ac::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy152Ac::getTurbo (void )
+
+ +

Get the Turbo mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::send (const uint16_t repeat = kMitsubishiHeavy152MinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ set3D()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::set3D (const bool on)
+
+ +

Set the 3D mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setClean (const bool on)
+
+ +

Set the Clean mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setEcono (const bool on)
+
+ +

Set the Economical mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setFilter()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setFilter (const bool on)
+
+ +

Set the Filter mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setNight()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setNight (const bool on)
+
+ +

Set the Night (Sleep) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setRaw (const uint8_t * data)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]dataA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSilent()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setSilent (const bool on)
+
+ +

Set the Silent (Quiet) mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setSwingHorizontal (const uint8_t pos)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]posThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setSwingVertical (const uint8_t pos)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]posThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::setTurbo (const bool on)
+
+ +

Set the Turbo mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy152Ac::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRMitsubishiHeavy152Ac::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRMitsubishiHeavy152Ac::toCommonFanSpeed (const uint8_t spd)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]spdThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRMitsubishiHeavy152Ac::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRMitsubishiHeavy152Ac::toCommonSwingH (const uint8_t pos)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRMitsubishiHeavy152Ac::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRMitsubishiHeavy152Ac::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRMitsubishiHeavy152Ac::validChecksum (const uint8_t * state,
const uint16_t length = kMitsubishiHeavy152StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false. Note: Technically it has no checksum, but does has inverted byte pairs.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRMitsubishiHeavy152Ac::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRMitsubishiHeavy152Ac::remote_state[kMitsubishiHeavy152StateLength]
+
+private
+
+ +

State in code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map new file mode 100644 index 000000000..d1dc4b52e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 new file mode 100644 index 000000000..df1c2c463 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 @@ -0,0 +1 @@ +6ea04c88e8883bfc89458f5de25fdcea \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4f52ae4b57e643d31c0e8bae7fbbee9c0f8432 GIT binary patch literal 4959 zcmZWt2RzjO|G&PpZ=jlK>0*hM-y^#`ipKVOoBizGeI@g9|UBsPX-%2*qy{~?*0{P#s7g_gpx{=Q9xe@ z%EOo!KqD*K@t)Bj%Fmw75+x-ZL)v19_WPn`ET^57wv#AdoMM1xpm-lePu(bA8X< zQ5NQ>y_0sAEkZI;lG^r3zV8`}po8_=&hGBPhB&JBSZ1*_MbGyHxRb+e4ExsBmSW)6 z2LfD~;rMv>tFeVei7)#*jy?os*kTScdw$-&th+B$zi_bOERJqTE}UUnz?Pv^v-L_u zOhj%@acQY$;h>?VOB9(Vi9J! zd%66yDp!=0IJ69l%F5vV@3k~FH9d|G1IxM@ccHC);ZI#%14+ZC{mVYjz+vT&b)(7buMfsKI5}hDw=2>gs32Ov~pn z$RlvDvRx&V@$>T+CB(dZiLR)4ZHJBD#3@YAEH6VnJS4UA46_`kn?s(CRz-Go-Mf1A zs#(S3GuCPvG#4(|b-d0Q9c&F$*P zYv3MEMQ?JEN4e-TCoSdo-d_Ei{u@@c&G&S5nQx0oNSGG-`uGT6ym)ct@FzCG^t1bP z`R9@0VUaK+6O#h)1n}YE!~D;S^Yg-CM#je8Hr?lhV`5@iPy($A8j+LR(C`k8 zzCtLo1Vy5PY;0_RJyp02i+*WpGOzRCBa_Jxs|Ft$2rDbAuh7K6z#GI!xhHuGUV{`8 z5+b>Ca&kf}EG&e@#M*j$drK$V+VW~yYp35x{z2QeMO|WL)$#O{LhcXd3@xjxtJ^y` zY<*|7nOR)K4iy_aySbfq=fZ^xE(nAn)AuzNCMKVeP3<@~bz|ep!^6WXvf(X#V%_o# zciDo{^75{MvfB?9=uLbHOuD8M|GS;j-Qd9kO-oBoZf@>RpFTa7 zY#$#GWn9N(xwyG$sHtcAb$H>}cy4|H0b6%>dY=uh;GiHz28OVtq|4nY*RM%SGa?YH z!5m^zQi<*D+RDnx07U?&e}26uA(XV(>m0FZ3hq2%T&;SGd=sGXJvnMNt45!$I${~# zzlu<&zWfgpDEaRHi-^jQF-w$x4)jmM8DvRXRh9IcH*Y?Pp*6557?0h{oWuLZ2ntnN zAy_uQxcL3*O{|(UD)QP$wHNWPu{Z^}j~cYU-O;>fZz67ZiWFuqTk1#+;0;&3D5c4i z7P_uD?Pl_)Gkt~ud$EKC+5kpMx@0cIw;u#@BidcHsU6pTu}qhvkDr!9w5N#TRj+rZ zsCHyGmP5AO>2Z>z(+85pt%X8Np3k9wYMEr7ep_rrg!;9pwWwYjy$oUPBE`YGy4D$f zT67+alqe>ih8Hi$RDnv|Z1EihZ%n{Vok|*@q*8u$ zX@k4sZDFIugKk5$#>i#Lwwy|ZjM_ZC_?$I_*HB42teNY<4 z7!}>OjaP$NS!EL7e{Ol9r!6jTbR4_`Q&7Q?jifFAvlKm65?2A0NL&3c7diUeEq36zV%3PftZf z)gH&L;pg{x?2)12^G6tLOUv_0J1hXvfWn2Tai-j2cf6IU^dpfv4EBDSr21&1KPCuy zxVITwU0uC3>X;+4zP{dtJl^Jo_o3ChVlE54O-W%9kdT0x*L&qFAw4`Q00Gc!w3G`g z!ymicL$^5>mJ4%Cl$4Z)j;*Y%lZ^}YMfCLay4q2k%s?Q%JIRX1z840XYumvH=0Hd&KQ>%zln8Asx(RPBW}aP9B`Ww?4}b+vJC)~%8C z%KZHN^XRv!sUHWygP6cBeUCSPV#UU5-A%_=S5}yAi-?IC$HvAo-7YREF&g*w^4iy8 zvzIB(@$mJ1c;e^pFT}_9{NYCvAmg~!$P1l#Jk`uVzAmJ$t`0r8+_&swW?|vAJ|+jS zSGqGhKmXy_)y|IMwyy34I2`_CbTqvtI3VDZ*6d{2;+($a9+)%(6O*Qa0fTm4BE8z- z>tf?VBT#VA6c!ei2d1XmKkO1FcNMQ`$DxahV^&sNj}@$u;!7x== zQ%lRx*f_l9@fAVA0{WDaT`1druJd5Q?9$TR+qWSJs{6vX{MN3Bh|mNd^d?&SOINp() zA8C=w_gd1aJii>ZWjs=IL*t4q!<~O6gMYhZp1}>(Nn+<=^9liiIKKzP5NjnH1)&!R+3D@AaRM; zba?8THKzleS}S~(jijZe_rLF1NW7|R;;A271S9~KBOoezuL-&T#~D&uR_5vH$)~KG z$!hbge@zP5kHbP&@>xpCl0iC3im&^_7&d8p>S%gilS1NXHTG#ws!eD*=<(svQSg&X z8!Lp(;3|w|&et2dsW%qt7qf#O-!Q83Uev$Hr3eX&j6A24z$1r1f|v${!4xufRz6}t zXgGg6G*oqSbJMEM;|wrlL0ERr-1k?NH8paby0Y-fSK2&7*>~It7FgP$Uz$WMNz&%+YG-7GV37i_ZjZ+{h z;wS38J8`&&?$+vIy{u$VW~jct!}w>{`NhR*u*zzzSZr&qMs%7Sg2ma{x#_cb?ciz# z6u9qMDyqD}<*GN+5wwhYQ17fCz%3n=j8AvCntZ%&#&~Dy;HpdtU2^} zJ0}CRY4>#eGo8D;JBXz0H@*15Ju%JuT~D(mn)hCST5RpFVvNnrN7v~-)z_y_Hu_)Y z;n4@m0mN$&D4mLt4JJCbrY0FYj5cXn2!=SNJ}dv3b$@$c>Zipw+=b>3q2U0 zmJa&kL?|`aaC5s6yt9^DS{k=I6`W9m7;BunaPz-@ zy-7-H+b6Adc6H71p6pRUz;>>J2n}Lo@e$m?VQyg|vbtJkun<;QQqr|XcSS{o8x$cF zM7=3*)adAFPnuMCMTMl_#st*Zc#wM$hsQ6*2xUuVq=4M}C2+fsKwoJH zNOepsELHGs7Dh%!HW>%nlfy+dVtq4l5Mg^43T+t~VMQX5Q^79yy=NuJ^nS&#?uuuq~vnO39Ix32?+^XISTiKY6Ax<415s@F)<>chJ)Iu|Xb4Weg z^8nYISJ~4nEG$e;sazKq57_Dy3S7=l-CL{1L)esjgn>Sb0wui%|5Cn0^)2B~C zJEIz$2M7dh2M58RrsM3Kugqd5uM-nnX4|4iD{Lti@i||A3O;mk5k1)-`P!3R3qr1e znb}LwzdrKG-h2{l=v9p=a1`=lPPGG$V`5^WqPA8CGa}2R!b3zi0n$Z{Lbm zJAD4p6f-wFtA6(`H4hKZ?l87&7vbU(+Ghp=#>%ucD<^Tka7uql48_hBnFl0Kebi^C-k59e6F&Vb-l8&U``ezCv5U);RvY?i)1 z>}ZNZGz^*~DCIoB&!ojCBow{SotpIST`W*Y(0vDq_Hox^pQf4S;At#&@$*mQv{_Tj z=qNj&<8uls4-bze!Xq0Sd=wq0S*;s4UU{2VUS9sghYv*=PzYZ2KpaeIf)Wx5UNk&9md>+iyaDd4b3%(mS;=w9_MmV#aU7GNu?0Er^3_T2>rKF$?KLhfk zpnhft5qS~}^xetDWp1V=d>*jRG|PWr6%lnqqUjG~XJ;pu>a#R78qGUt6A++iS?eYM zRIWcyry4PG17t$8Y6rTSnwmH^sTb2n8~#6j{D5Rl>z>Z#eSHQz$U{%CaJ!vl#@j%X zfp;^pvi_W#YyE}Gz{&eJ1Ox_#5Y3td1O=l)4t6SoNG>a@tDgS;i>Y4^1;Q!mT0u5E zb#OXPd5@!gU+n}Q92jit!LH4DkB^VR%M2N>`Mb(0Dvcxkx6XiredUAd%ZUIwk?B zkD$5SFl+~he;-KT0j!r=H>NZN?^b~&f_Xe(Hj=eRUI-cICUi;n-o2|}SiCsP zgB}|jqo$#mtr>aLhR4HJy@ISp_$F$}_Avdcg2%dsOdw^10ZxDrKirV1I^viCooiVn z5)+!5RDecoY;rF~w|ujF;;Cb9Zf=o^78$+I`2WM-#-6j$NbRdTv`mw&l7MlHmoL{8 zX;JHS%1uTr@kiTH_iO$0S_p(cu`A?qZ<_v-tV86b66TGb&9Gwd#tZ`0($_4%^Z3Po E0TJ4;3IG5A literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html new file mode 100644 index 000000000..e974689c6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html @@ -0,0 +1,122 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRMitsubishiHeavy88Ac Member List
+
+
+ +

This is the complete list of members for IRMitsubishiHeavy88Ac, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRMitsubishiHeavy88Acprivate
begin(void)IRMitsubishiHeavy88Ac
calibrate(void)IRMitsubishiHeavy88Acinline
checksum(void)IRMitsubishiHeavy88Acprivate
checkZjsSig(const uint8_t *state)IRMitsubishiHeavy88Acstatic
convertFan(const stdAc::fanspeed_t speed)IRMitsubishiHeavy88Acstatic
convertMode(const stdAc::opmode_t mode)IRMitsubishiHeavy88Acstatic
convertSwingH(const stdAc::swingh_t position)IRMitsubishiHeavy88Acstatic
convertSwingV(const stdAc::swingv_t position)IRMitsubishiHeavy88Acstatic
get3D(void)IRMitsubishiHeavy88Ac
getClean(void)IRMitsubishiHeavy88Ac
getEcono(void)IRMitsubishiHeavy88Ac
getFan(void)IRMitsubishiHeavy88Ac
getMode(void)IRMitsubishiHeavy88Ac
getPower(void)IRMitsubishiHeavy88Ac
getRaw(void)IRMitsubishiHeavy88Ac
getSwingHorizontal(void)IRMitsubishiHeavy88Ac
getSwingVertical(void)IRMitsubishiHeavy88Ac
getTemp(void)IRMitsubishiHeavy88Ac
getTurbo(void)IRMitsubishiHeavy88Ac
IRMitsubishiHeavy88Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishiHeavy88Acexplicit
off(void)IRMitsubishiHeavy88Ac
on(void)IRMitsubishiHeavy88Ac
remote_stateIRMitsubishiHeavy88Acprivate
send(const uint16_t repeat=kMitsubishiHeavy88MinRepeat)IRMitsubishiHeavy88Ac
set3D(const bool on)IRMitsubishiHeavy88Ac
setClean(const bool on)IRMitsubishiHeavy88Ac
setEcono(const bool on)IRMitsubishiHeavy88Ac
setFan(const uint8_t fan)IRMitsubishiHeavy88Ac
setMode(const uint8_t mode)IRMitsubishiHeavy88Ac
setPower(const bool on)IRMitsubishiHeavy88Ac
setRaw(const uint8_t *data)IRMitsubishiHeavy88Ac
setSwingHorizontal(const uint8_t pos)IRMitsubishiHeavy88Ac
setSwingVertical(const uint8_t pos)IRMitsubishiHeavy88Ac
setTemp(const uint8_t temp)IRMitsubishiHeavy88Ac
setTurbo(const bool on)IRMitsubishiHeavy88Ac
stateReset(void)IRMitsubishiHeavy88Ac
toCommon(void)IRMitsubishiHeavy88Ac
toCommonFanSpeed(const uint8_t speed)IRMitsubishiHeavy88Acstatic
toCommonSwingH(const uint8_t pos)IRMitsubishiHeavy88Acstatic
toCommonSwingV(const uint8_t pos)IRMitsubishiHeavy88Acstatic
toString(void)IRMitsubishiHeavy88Ac
validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy88StateLength)IRMitsubishiHeavy88Acstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html new file mode 100644 index 000000000..2831dc0bd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html @@ -0,0 +1,1396 @@ + + + + + + + +IRremoteESP8266: IRMitsubishiHeavy88Ac Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Mitsubishi Heavy 88-bit A/C messages. + More...

+ +

#include <ir_MitsubishiHeavy.h>

+
+Collaboration diagram for IRMitsubishiHeavy88Ac:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRMitsubishiHeavy88Ac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const uint8_t pos)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingVertical (void)
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const uint8_t pos)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingHorizontal (void)
 Get the Horizontal Swing mode of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo mode of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economical mode of the A/C. More...
 
bool getEcono (void)
 Get the Economical mode of the A/C. More...
 
void set3D (const bool on)
 Set the 3D mode of the A/C. More...
 
bool get3D (void)
 Get the 3D mode of the A/C. More...
 
void setClean (const bool on)
 Set the Clean mode of the A/C. More...
 
bool getClean (void)
 Get the Clean mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool checkZjsSig (const uint8_t *state)
 Verify the given state has a ZJ-S signature. More...
 
static bool validChecksum (const uint8_t *state, const uint16_t length=kMitsubishiHeavy88StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does has inverted byte pairs. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kMitsubishiHeavy88StateLength]
 State in code form. More...
 
+

Detailed Description

+

Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRMitsubishiHeavy88Ac()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRMitsubishiHeavy88Ac::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::checksum (void )
+
+private
+
+ +

Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does has inverted byte pairs.

+ +
+
+ +

◆ checkZjsSig()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRMitsubishiHeavy88Ac::checkZjsSig (const uint8_t * state)
+
+static
+
+ +

Verify the given state has a ZJ-S signature.

+
Parameters
+ + +
[in]stateA ptr to a state to be checked.
+
+
+
Returns
true, the check passed. Otherwise, false.
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a stdAc::swingh_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a stdAc::swingv_t enum into it's native setting.

+
Parameters
+ + +
[in]positionThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ get3D()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy88Ac::get3D (void )
+
+ +

Get the 3D mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy88Ac::getClean (void )
+
+ +

Get the Clean mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy88Ac::getEcono (void )
+
+ +

Get the Economical mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy88Ac::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRMitsubishiHeavy88Ac::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::getSwingHorizontal (void )
+
+ +

Get the Horizontal Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::getSwingVertical (void )
+
+ +

Get the Vertical Swing mode of the A/C.

+
Returns
The native position/mode setting.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRMitsubishiHeavy88Ac::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRMitsubishiHeavy88Ac::getTurbo (void )
+
+ +

Get the Turbo mode of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::send (const uint16_t repeat = kMitsubishiHeavy88MinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ set3D()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::set3D (const bool on)
+
+ +

Set the 3D mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setClean (const bool on)
+
+ +

Set the Clean mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setEcono (const bool on)
+
+ +

Set the Economical mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setRaw (const uint8_t * data)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]dataA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setSwingHorizontal (const uint8_t pos)
+
+ +

Set the Horizontal Swing mode of the A/C.

+
Parameters
+ + +
[in]posThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setSwingVertical (const uint8_t pos)
+
+ +

Set the Vertical Swing mode of the A/C.

+
Parameters
+ + +
[in]posThe position/mode to set the swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::setTurbo (const bool on)
+
+ +

Set the Turbo mode of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRMitsubishiHeavy88Ac::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRMitsubishiHeavy88Ac::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRMitsubishiHeavy88Ac::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRMitsubishiHeavy88Ac::toCommonSwingH (const uint8_t pos)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRMitsubishiHeavy88Ac::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRMitsubishiHeavy88Ac::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRMitsubishiHeavy88Ac::validChecksum (const uint8_t * state,
const uint16_t length = kMitsubishiHeavy88StateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false. Note: Technically it has no checksum, but does has inverted byte pairs.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRMitsubishiHeavy88Ac::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRMitsubishiHeavy88Ac::remote_state[kMitsubishiHeavy88StateLength]
+
+private
+
+ +

State in code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map new file mode 100644 index 000000000..924baf61e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 new file mode 100644 index 000000000..c159b188d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 @@ -0,0 +1 @@ +efa3e5f38fe575e86f5114c55d9276b8 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c50dbc0c424de71e43dc99b07d9d6a661880c908 GIT binary patch literal 4835 zcmZ{o2UJtrwuS*kP_Q6XN3MeR26e)rr7?2XW z6zL+p_a1tO0C#cDedoL}-gwDK_Q=X!d$01(Z~k**v^7;OUSPgJLPBy;O;t%39P!|T zraT9}ix+Uez~P*=hKdr&$>}?_A~TkRiJ8Wj{N{$Ff`BgJ>0e^pg{0+4j z=vk}j7Ed=1@*qoLPC}4%SUy$w^;#jmkcc#@{LHcAo#MDRZ=}m2WgEmgU=<`}&rqwUls`Z??;J_x8$^QR8*H-?EK=425t?O7?ZyN_|jIck?*!m6;`o zPj&qF>hi6(#l=%~zmzAD|vzdZByell42lz6m? z_O=YJjk;=8b^gnjFRC$h!BmV!l>yQi3?|@UAv0P?gDH^mP!OCy_a!s=Ub^o3D*D7E zxe|HkMRw-Q`q~!Wo)L>gMLjNCvO7SFEbYd15gN$LrWE{Tufb6-l$c zeuWAOMpYdxyO@^yypFd(z5DuAVE;B4n*O6lu6t`%mBbB=prD{I45kKA)Vx`~-D~1F z@I5#r4lPGA|hfZCnwKszxUmo zRReRE=pfy{<+o-3B{lVqbKlZ-OlWAR$HCSD3fa@!s~!k0z^jEb5{QY9kC#I~dzN45 zxnxjUQCbQogTAQYcw}g(5!l_|&sQ8D7pEHdSe%)n$TTo6DG8R%Nm5c06ZJVcIXTC{9>lh`@JiVAS`<|Smc64rNmkl_N5G|gJw(nd zvr9)`zixf15fd5tc!w~M@PLPmjO>}4+hlDpm1@l6O)!o#(UPu{N-{Ds_6S5w=EC;D zb@-3hsxOZieEt1n-@a|gc$iq?HgkdEGGuyxE+w<9j2Sl&S#SLjhojBu39qVBpkff< z;OECQH>*G3p{1v%udA#3Ju(6tH$oJ>&(9ap)zuYYj+)>06BQLD#tZb(kZ?))262Jx_j&I2JgUR=cQ_~^TkP%Lg`i_Ouw3%Tun(C=*`$8 zZ618yV@|5z7b48e%+xhD$~qFq@w52^Jd3J7lHYELKD6hfQux8yZB6a(JFIi+#tDZT z&`Oqt<$1R_rGOxWmR;-{VFgEWefI6aNVPNBxBA@Hmy1Bbr+j#{N}B z2Np5(i&}+U1CCy%Iv2QVop~P}3UgZdk87lp9o;RsX#+^(^}Ew2IHQYA)e!j%QKYU< zAD$+3!_B~TC)Fnnaha2# z_;ovgQSgcEgiMN_i9a-Z2a`VpHt>q9Nq10ei{x09>hX&!A#tE3XAn)}&{3Vqo+Rj8 zpm@7EqXY+8Zt|#U-8+sV^zI8WyP%_qKXC49nfR*g7gJZoi6#8pF&b1d1 zr;nnA?mq=hL2myLk`kZF^bgc7!3N<^aPMZbg@|^Mo*w+_u{QxlgQePq_(Cc1BK8+A zUIfe#GG#J1yiIGxeh%U{f8A?kcwt^N1m?=wFQRR3zA}GR`D}shsSJ=zC4Q1TQ0Pm~ zrQY?Q?8mPPY#KMPXyS|Ip<-Glrm)aZiiwGdfQ=^J4dU|h^5=|cB78gqz=e~Xa zo;mSYR7?y+Rb5L<1ixO!v+-)u(u>NUlM|DdRFVxrK#02b(L_)ZU|MRy|h z%?rP_$ZKMs`z+9AC z9fYG}+>nO4dWda*y>qL`%<8J}2`dwms(}H+!otGKkdW_=1EQKqGUU~z?sFt-o12P% z=N>Pw*+1zT9~98$D?b|>RgMSR+AapRw`)?LI|G40B$g3Hete8hzrxaP{ftw$J>+&y z(hSwi{D~;q*coyW^WSk?Tv|F$NmmuXz-Q6cOLF51|I&e6q=`mnU5LoLnJf4DJ zl50TAz@V(IenB~nrovoHSviF5?cxs573pm2yB9zQIyyST$lVdgp&wBnKCsHc{HwZ; zdQDtt=;)O6_37m0<-Zyig@67GH8nGH$vPnr90!MnbaHy^i;O{93UzZ0iIk#gZLed@ zV^jV>$#W{>rn3GM4W|a;-|!fM zA2oUH@ES^&QQyC6Rg7!56Z32olKtz~|AF3r8(hP`C1I9uvXLe7Aj~EMy#8NG7K^#c zaZI-4*^o~H93 zA47%EzFU9T`^v7>cz)|JH#YXG;JI63!zLe)u)Wl0fqO{6{nrcqJ(ZJfT*^`83yRC5 zuE_Jn9r@?|-P}ZjgM+!O15|_~bVuIeXL8}Vb7(XgWR>YTkZedw%E~6^=2Y(8Bg4uc zWVJcmxN$>OLxW33#yB~zZ)tx)3*DS>%f{#AXm@5o){BsTZ4<+r%)!HRE=t*5mciurSmt-Mt){6tTSLKKZsV-}dvLIs{dkQ+^Mlm$0Y|%y=_V*Iub6Ff91CI<=fCTG zyb)jZ>h4Tm>r2v;a6 zDV=RtGOdenTv*orm(oUr3-;T7*+V) z2IKx}R1l=4aJ2P)>asY)9VaKj4!KQg&@NzB7DvmgXE^fcdjSD*fP;~d z)BrCtJK)I4$r%+xeKp!4+H91gG`(d$J` zH5XQn6YIJ|fJ1zzX#xTQPOa!fZE)d_A8zZD^(+VqDHKu4rZIX3P*EE6J(36nzR=Lz zHyBLGLx#`Uh2jTR+L#k7g@D7JZuVPWQ6w; z%+1X`n#I2^2#<(>7g&?~?+~m;%Y7XO3)L=-whfm1ig|i^5?8#dxOjOffG$B+m_bRp zj6MLj;O6Fb?9YEbIca^o-+?Aun@_{)>gg$ZdKL{^=;+V@SG;#{AnLth3Kr4nxO#Va zNX6csZ*0Han3 zw3IyU;>pg=?*DE}1)SuAccQ`Qqa};t!qEe2c>m_cMp#(bowUxsrs_JS3>ew(BA;u} z(wU}G8n7=4t}b9&vX;@{?&Z}`Ur+As?X8T3v~_>c11mC>STl)%-XWwwGS*{Bbd9+^7Xz^=VIqfxuwEOIxsxlVQ$Hng0s3@>8!M(i(z-%^HoE#WJ0@m(+ z_~3X_2}+iCw`|T;?YFtiFD_0#r+}oEmk0cwdYB;cytVbg@m8inXK!zaaW0R91VfQA zEK5EQG`+gwtR6lok|D&`hnAjEah+wY6uZ$j(pqPeU;-jxL%_HUv1?hrg4N zJMfj#ImoE*9NX~72tOYm2bhBy-s_h0a0%%U6&2M}1j2e{xKv_0{_WdOo%Y~$ni>5; zr?RC510aM$AK>S~u3%AHTsx~{F1Yl0+_Q;$K#^dd)640Ze)XWmNpN;;*1cchsxeAx zYUcqr>^hQRr-%g>g7$~Qa`G1W;!?-Y+S)wnW67x7bOA`D&KG^c2%b?`_#0|jP*AXZ zt(FRuHpz#pRqT?Ik{cTv(<4lQ6cC?4pf^1Og9e}uK#IaIk{ld?AZD?jK5<5~N(U*Y z)zqg;aymIV1ppn%ZFlQMvPfQye z<(d**DlwpUUms&mPqU!~GB_n=%*i6uOS*k!VL=U$3h%v|k(rrkaaj1Yi%(FHTVDP+ zbA~;6QL*o)9SCUesIP%{92(k0S25k|d^{IZHv2*0MyLaGZW)ZM{U&ySiP7Ad`Yi(`KCnPj$SatA5ZcMUhZf;J@ zrXdnFRa#Oaf;{lpSstROF7sTXq^5q{_Wm{$3O&t!TMJz-jf+d@`}x375I+BvFSu` xQ1iQLaRcABK=!{%8md>a + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRNeoclimaAc Member List
+
+
+ +

This is the complete list of members for IRNeoclimaAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRNeoclimaAcprivate
begin(void)IRNeoclimaAc
calcChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcstatic
calibrate(void)IRNeoclimaAcinline
checksum(const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcprivate
convertFan(const stdAc::fanspeed_t speed)IRNeoclimaAc
convertMode(const stdAc::opmode_t mode)IRNeoclimaAc
get8CHeat(void)IRNeoclimaAc
getButton(void)IRNeoclimaAc
getEye(void)IRNeoclimaAc
getFan(void)IRNeoclimaAc
getFollow(void)IRNeoclimaAc
getFresh(void)IRNeoclimaAc
getHold(void)IRNeoclimaAc
getIon(void)IRNeoclimaAc
getLight(void)IRNeoclimaAc
getMode(void)IRNeoclimaAc
getPower(void)IRNeoclimaAc
getRaw(void)IRNeoclimaAc
getSleep(void)IRNeoclimaAc
getSwingH(void)IRNeoclimaAc
getSwingV(void)IRNeoclimaAc
getTemp(void)IRNeoclimaAc
getTurbo(void)IRNeoclimaAc
IRNeoclimaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRNeoclimaAcexplicit
off(void)IRNeoclimaAc
on(void)IRNeoclimaAc
remote_stateIRNeoclimaAcprivate
send(const uint16_t repeat=kNeoclimaMinRepeat)IRNeoclimaAc
set8CHeat(const bool on)IRNeoclimaAc
setButton(const uint8_t button)IRNeoclimaAc
setEye(const bool on)IRNeoclimaAc
setFan(const uint8_t speed)IRNeoclimaAc
setFresh(const bool on)IRNeoclimaAc
setHold(const bool on)IRNeoclimaAc
setIon(const bool on)IRNeoclimaAc
setLight(const bool on)IRNeoclimaAc
setMode(const uint8_t mode)IRNeoclimaAc
setPower(const bool on)IRNeoclimaAc
setRaw(const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAc
setSleep(const bool on)IRNeoclimaAc
setSwingH(const bool on)IRNeoclimaAc
setSwingV(const bool on)IRNeoclimaAc
setTemp(const uint8_t temp)IRNeoclimaAc
setTurbo(const bool on)IRNeoclimaAc
stateReset(void)IRNeoclimaAc
toCommon(void)IRNeoclimaAc
toCommonFanSpeed(const uint8_t speed)IRNeoclimaAcstatic
toCommonMode(const uint8_t mode)IRNeoclimaAcstatic
toString(void)IRNeoclimaAc
validChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc.html new file mode 100644 index 000000000..4cec65c07 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc.html @@ -0,0 +1,1584 @@ + + + + + + + +IRremoteESP8266: IRNeoclimaAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Neoclima A/C messages. + More...

+ +

#include <ir_Neoclima.h>

+
+Collaboration diagram for IRNeoclimaAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRNeoclimaAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kNeoclimaMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setButton (const uint8_t button)
 Set the Button/Command pressed setting of the A/C. More...
 
uint8_t getButton (void)
 Get the Button/Command setting of the A/C. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setSwingV (const bool on)
 Set the vertical swing setting of the A/C. More...
 
bool getSwingV (void)
 Get the vertical swing setting of the A/C. More...
 
void setSwingH (const bool on)
 Set the horizontal swing setting of the A/C. More...
 
bool getSwingH (void)
 Get the horizontal swing (Air Flow) setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo setting of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo setting of the A/C. More...
 
void setFresh (const bool on)
 Set the Fresh (air) setting of the A/C. More...
 
bool getFresh (void)
 Get the Frsh (air) setting of the A/C. More...
 
void setHold (const bool on)
 Set the Hold setting of the A/C. More...
 
bool getHold (void)
 Get the Hold setting of the A/C. More...
 
void setIon (const bool on)
 Set the Ion (filter) setting of the A/C. More...
 
bool getIon (void)
 Get the Ion (filter) setting of the A/C. More...
 
void setLight (const bool on)
 Set the Light(LED display) setting of the A/C. More...
 
bool getLight (void)
 Get the Light (LED display) setting of the A/C. More...
 
void set8CHeat (const bool on)
 Set the 8°C Heat setting of the A/C. More...
 
bool get8CHeat (void)
 Get the 8°C Heat setting of the A/C. More...
 
void setEye (const bool on)
 Set the Eye (Sensor) setting of the A/C. More...
 
bool getEye (void)
 Get the Eye (Sensor) setting of the A/C. More...
 
bool getFollow (void)
 Get the Follow Me setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)
 Set the internal state from a valid code for this protocol. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
 Calculate the checksum for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (const uint16_t length=kNeoclimaStateLength)
 Calculate & update the checksum for the internal state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kNeoclimaStateLength]
 State of the remote in code. More...
 
+

Detailed Description

+

Class for handling detailed Neoclima A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRNeoclimaAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRNeoclimaAc::IRNeoclimaAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRNeoclimaAc::calcChecksum (const uint8_t state[],
const uint16_t length = kNeoclimaStateLength 
)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe array to calc the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRNeoclimaAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRNeoclimaAc::checksum (const uint16_t length = kNeoclimaStateLength)
+
+private
+
+ +

Calculate & update the checksum for the internal state.

+
Parameters
+ + +
[in]lengthThe length/size of the internal state.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRNeoclimaAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRNeoclimaAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ get8CHeat()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::get8CHeat (void )
+
+ +

Get the 8°C Heat setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getButton()

+ +
+
+ + + + + + + + +
uint8_t IRNeoclimaAc::getButton (void )
+
+ +

Get the Button/Command setting of the A/C.

+
Returns
The value of the button/command that was pressed.
+ +
+
+ +

◆ getEye()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getEye (void )
+
+ +

Get the Eye (Sensor) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRNeoclimaAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getFollow()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getFollow (void )
+
+ +

Get the Follow Me setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFresh()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getFresh (void )
+
+ +

Get the Frsh (air) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getHold()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getHold (void )
+
+ +

Get the Hold setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getIon()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getIon (void )
+
+ +

Get the Ion (filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getLight (void )
+
+ +

Get the Light (LED display) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRNeoclimaAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRNeoclimaAc::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingH()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getSwingH (void )
+
+ +

Get the horizontal swing (Air Flow) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingV()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getSwingV (void )
+
+ +

Get the vertical swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRNeoclimaAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRNeoclimaAc::getTurbo (void )
+
+ +

Get the Turbo setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::send (const uint16_t repeat = kNeoclimaMinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ set8CHeat()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::set8CHeat (const bool on)
+
+ +

Set the 8°C Heat setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
This feature maintains the room temperature steadily at 8°C and prevents the room from freezing by activating the heating operation automatically when nobody is at home over a longer period during severe winter.
+ +
+
+ +

◆ setButton()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setButton (const uint8_t button)
+
+ +

Set the Button/Command pressed setting of the A/C.

+
Parameters
+ + +
[in]buttonThe value of the button/command that was pressed.
+
+
+ +
+
+ +

◆ setEye()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setEye (const bool on)
+
+ +

Set the Eye (Sensor) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting. 0-3, 0 is auto, 1-3 is the speed
+
+
+ +
+
+ +

◆ setFresh()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setFresh (const bool on)
+
+ +

Set the Fresh (air) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setHold()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setHold (const bool on)
+
+ +

Set the Hold setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setIon()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setIon (const bool on)
+
+ +

Set the Ion (filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setLight (const bool on)
+
+ +

Set the Light(LED display) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRNeoclimaAc::setRaw (const uint8_t new_code[],
const uint16_t length = kNeoclimaStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length/size of the new_code array.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingH()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setSwingH (const bool on)
+
+ +

Set the horizontal swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingV()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setSwingV (const bool on)
+
+ +

Set the vertical swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::setTurbo (const bool on)
+
+ +

Set the Turbo setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRNeoclimaAc::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRNeoclimaAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRNeoclimaAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRNeoclimaAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRNeoclimaAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRNeoclimaAc::validChecksum (const uint8_t state[],
const uint16_t length = kNeoclimaStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRNeoclimaAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRNeoclimaAc::remote_state[kNeoclimaStateLength]
+
+private
+
+ +

State of the remote in code.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map new file mode 100644 index 000000000..57358d833 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 new file mode 100644 index 000000000..fe697a810 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 @@ -0,0 +1 @@ +1e6ee18f808b645d10f6652b3a78aca2 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9515ee73a64712d49d10e556d7f305e6ba48bf2d GIT binary patch literal 3405 zcmZu!cQhRB8Xt9cwUA)-nh2sLL|r7TPLzmlk*HsY5~BA`5G{xvEkunF5}j3}C3@M7 zs2{t!AXs;DzjNOD}SreL7}0DxLU9ccir0pJ-7B?o8W zxKdhhA%Co;h6FDE90jdqsbD0r2J*h4PYyoUUz>iKqp!XDA&RwSg{W_4g{zHD5=JfwCyp-Y$g$`U!y&R}elGHa2B$PM znVq}4%^um8>RSJ8PKz?jPRQU$Q_g{gq|Mq_+-dFwE+x_&<+j!f&z&I>i-?4k zQSs&6$#ffZqy5~Ke#@A`a+Oy{MJ2M}$X&^*fgiiVXHr*vX>M@Ps^;Q}1IhuH73 zyTk0^;UV-|CXuAi-ObAj9Y#jEdvT17XDW2r>!-|*!Qq@~mBhrvLOyHak1Ja|Hnb0X@NV>3|b4 z5sRjf=I84?+}uR=^;y`pdDnIo4Gq}u-@jj_q=ZRf15!EZv>rU@eaS37HaiBKkIBwvJ;i^*_O=@9>Rutb z=jZQ#>cy8DtA71z(Ale3wEJkd)$VF|csMDb|9-N#zCIP;$`G;qIkdI82?f4kvB6ju zo`{5xI&tRfZdFE<%@&DXTT`93cZdLD5)yqQqo|e^L_~D-a@8kHSNX#-0I;;Q1OO{5 zD?-;O2E#F3ZK>?-Epw1d27~bEPcw9_m|Yv z(sJKkkipH=gdF=6_mlfuhJxvj=In)?&7=VzKR+HRDL5L9Zt^|g3%WQm4%qF4Y~XM`{rymFzH3zE zBwy{t&o3_O0!}@OOH1Dt6_NP0a`Yu}swpWEzf@h8-=d(P=t{Yv^(s9*l0XQ0XDCQd zPY)d%Ebm^6B>Y(!#dAy$$q=^skNN z#%E?S`S|+U9Bodj>*z$**B=BRcyC($2{E;SFl>U&wr7?t7YnP&SJV+4tj92@av2xV>3 zvE0e!%}9U69%=RhB_9Vo7Y?_BD1N%rv9!P~o9H1MF-?Uz+Rk)JyVsl#%V*peVR36% z$1EN-pm;qUsELu+McyuOFr;j?sv=HDvlzETycYrBD^au>UAfT4%(+<;ajA#EN5Mwf4pBd_R*qM(PRV*qda4GS!r@ zU!W0~wR>he{#J!wSeQZXWwiYq7Lg?gDjb@|M$=mDkCGh^;4Oc5MN-ziz?%t~H&StM zaLjyi&3Cze#DH*};JtVDE511J46T8`#>}kI=!zW?jgE+*<>ch_INZ>`BP**pk|(dl z#?C&F%&QjDY0U+K;JTDl23CQaJG7^#hc;bPr5e?$i3z?8yvo9&3Bvp`h(I8$%+x)x z_3_E1XJDWc6%~CfnGNHP5VHK7cKybUWUUO52@Tr(<9sOHl2;c{KS~ zL+0J5Q^i}SPYtl<-#8`8MdiB6pynEzLlL@kjVTiugV{H6+^Xbv^#l+S!;nHJg>w&3 z9)gbo&Tiek`>5q!6_9QzJFMp$@tx{_%1@!FU(p$BkT7EtL!9nCBy!6&hCR&j|HooD z><+q_CptcR4*nl5;et-A^xjW8K6}Q<%h)+Kous3*ktPw#7VG8vYt~_DechpX{}*hT zA~FofoDz*)euDgYlDXk-at1QD_XcUx@-<>7er_ z^zXw%Pk#Eia_G}<&WoQJ+}+*7CK?<@Il%CE=XfRS23~}K01SNW$?1AN9ULC5t8f}I zYW#vS78zF4PGGUGpEa{Vq|hq4{pcX->Fs@dNw^4`ayiPnIWjV$uCCqz+EIZ)IW5zP z0}p$ac2sY#>crF(X0QJa6BUSAGzcm&1mflC!8-5Fn-B~J1BBc%uC@kU&C%5r0w9q{ zu3NV#LCgX`D=LXy?nOa!GqbX?vPq*e^Br;V+fRC5x_jB#+H#4ABqptbmZNH7!Zea2 zLsDV@b9HsCG_5BG{Z>^)h3wEz9@N`CjQ`G_%seQwV{>y9iOWCm_=K4mla{?+Rz{h{ zxw*L?OG}}kVZv+LehYs7{8>mLW1t6NS{Xzm#gcHc*T>oE&IX#W@F3`RuU@~7%9Zo( zvd%o=Yz_MTci9FWkM2!i)kmRdf`fzU85w_0rJ8aE9@0fcMd_KD#ktHk7Phx@g8pz$ z04LCd`2_^-o0>BJvGx6xfwRQ+@^YA|sp-j5G^dy=2C=fX_O`4HBImu`)95lkwy^LL ztY5qjD+`OBv2k>gB7q5Vg##HF*oyWydi2OS=)1W@-L}gV~ z^8NjNu8bk!L5VkYa%Q6K=le~^J6l`fVDo{)ES^*US1wQFRAMi;Ty zL-MKn`}fq#`GEl#2vJ7M_o=C=Dw62#=qpclFs&PZ|J|9u`XrSx-*=60bldvS@}|7_VvtgQPfI1bZTXPb;zVWNPeoy zJi4}4tf{G~;KPTMoo_Jicje`s+lyc5XlXlkrZJdA%P%kP^QCt7_4QTUrreiXSX^Wu z7#NtTcetXergn3IPhOt==;-KNpZcX89QDB#rm3k}VD#Qbg2jF9D>I16$F{bl&)2?o zg1u|4`?6{q<>mg6C>=BNfcIWJT(s9AKQIbR;)#zB)8yo&qmxserd)z5FO(Z>Rl|#l zcnK%VR}2jecUN6pTmWlsRzOKf2_!f;Dmm({Nkn5~W5rk!-c?oQ)-Fs>!$n&UuU1>N zKdWmiC;&iP=pP;J1Mykw^qmisBWYP#VnE@1R~gLLda~k?x~^{Da+2b+WS*?vqB_S~(=yJHXci+!XcB;lI38d{G$%=UoPjBT;DSIP5m8ZZ zD=G#zZzpBP=%G-FD=W4y{3m)r#na=b_gPIh7MiLreDuEp{g0AvOTP{(TYtmcINX#h z$x_NP-i3UaV3G(Qv|e}n&mIWCaJ&$A+vS9FN+~w=P2#nW;QtYzq4EG(tz;ecFPxZV A2><{9 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc-members.html new file mode 100644 index 000000000..50e639d84 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc-members.html @@ -0,0 +1,138 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRPanasonicAc Member List
+
+
+ +

This is the complete list of members for IRPanasonicAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_getTime(const uint8_t ptr[])IRPanasonicAcprivatestatic
_irsendIRPanasonicAcprivate
_setTime(uint8_t *const ptr, const uint16_t mins_since_midnight, const bool round_down)IRPanasonicAcprivatestatic
_swinghIRPanasonicAcprivate
_tempIRPanasonicAcprivate
begin(void)IRPanasonicAc
calcChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)IRPanasonicAcstatic
calibrate(void)IRPanasonicAcinline
cancelOffTimer(void)IRPanasonicAc
cancelOnTimer(void)IRPanasonicAc
convertFan(const stdAc::fanspeed_t speed)IRPanasonicAcstatic
convertMode(const stdAc::opmode_t mode)IRPanasonicAcstatic
convertSwingH(const stdAc::swingh_t position)IRPanasonicAcstatic
convertSwingV(const stdAc::swingv_t position)IRPanasonicAcstatic
encodeTime(const uint8_t hours, const uint8_t mins)IRPanasonicAcstatic
fixChecksum(const uint16_t length=kPanasonicAcStateLength)IRPanasonicAcprivate
getClock(void)IRPanasonicAc
getFan(void)IRPanasonicAc
getIon(void)IRPanasonicAc
getMode(void)IRPanasonicAc
getModel(void)IRPanasonicAc
getOffTimer(void)IRPanasonicAc
getOnTimer(void)IRPanasonicAc
getPower(void)IRPanasonicAc
getPowerful(void)IRPanasonicAc
getQuiet(void)IRPanasonicAc
getRaw(void)IRPanasonicAc
getSwingHorizontal(void)IRPanasonicAc
getSwingVertical(void)IRPanasonicAc
getTemp(void)IRPanasonicAc
IRPanasonicAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRPanasonicAcexplicit
isOffTimerEnabled(void)IRPanasonicAc
isOnTimerEnabled(void)IRPanasonicAc
off(void)IRPanasonicAc
on(void)IRPanasonicAc
remote_stateIRPanasonicAcprivate
send(const uint16_t repeat=kPanasonicAcDefaultRepeat)IRPanasonicAc
setClock(const uint16_t mins_since_midnight)IRPanasonicAc
setFan(const uint8_t fan)IRPanasonicAc
setIon(const bool on)IRPanasonicAc
setMode(const uint8_t mode)IRPanasonicAc
setModel(const panasonic_ac_remote_model_t model)IRPanasonicAc
setOffTimer(const uint16_t mins_since_midnight, const bool enable=true)IRPanasonicAc
setOnTimer(const uint16_t mins_since_midnight, const bool enable=true)IRPanasonicAc
setPower(const bool on)IRPanasonicAc
setPowerful(const bool on)IRPanasonicAc
setQuiet(const bool on)IRPanasonicAc
setRaw(const uint8_t state[])IRPanasonicAc
setSwingHorizontal(const uint8_t direction)IRPanasonicAc
setSwingVertical(const uint8_t elevation)IRPanasonicAc
setTemp(const uint8_t temp, const bool remember=true)IRPanasonicAc
stateReset(void)IRPanasonicAc
toCommon(void)IRPanasonicAc
toCommonFanSpeed(const uint8_t speed)IRPanasonicAcstatic
toCommonMode(const uint8_t mode)IRPanasonicAcstatic
toCommonSwingH(const uint8_t pos)IRPanasonicAcstatic
toCommonSwingV(const uint8_t pos)IRPanasonicAcstatic
toString(void)IRPanasonicAc
validChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)IRPanasonicAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc.html new file mode 100644 index 000000000..208d2d289 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc.html @@ -0,0 +1,1936 @@ + + + + + + + +IRremoteESP8266: IRPanasonicAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Panasonic A/C messages. + More...

+ +

#include <ir_Panasonic.h>

+
+Collaboration diagram for IRPanasonicAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRPanasonicAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kPanasonicAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Control the power state of the A/C unit. More...
 
bool getPower (void)
 Get the A/C power state of the remote. More...
 
void setTemp (const uint8_t temp, const bool remember=true)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setRaw (const uint8_t state[])
 Set the internal state from a valid code for this protocol. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setQuiet (const bool on)
 Set the Quiet setting of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet setting of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) setting of the A/C. More...
 
bool getPowerful (void)
 Get the Powerful (Turbo) setting of the A/C. More...
 
void setIon (const bool on)
 Set the Ion (filter) setting of the A/C. More...
 
bool getIon (void)
 Get the Ion (filter) setting of the A/C. More...
 
void setModel (const panasonic_ac_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
panasonic_ac_remote_model_t getModel (void)
 Get/Detect the model of the A/C. More...
 
void setSwingVertical (const uint8_t elevation)
 Control the vertical swing setting. More...
 
uint8_t getSwingVertical (void)
 Get the current vertical swing setting. More...
 
void setSwingHorizontal (const uint8_t direction)
 Control the horizontal swing setting. More...
 
uint8_t getSwingHorizontal (void)
 Get the current horizontal swing setting. More...
 
uint16_t getClock (void)
 Get the current clock time value. More...
 
void setClock (const uint16_t mins_since_midnight)
 Set the current clock time value. More...
 
uint16_t getOnTimer (void)
 Get the On Timer time value. More...
 
void setOnTimer (const uint16_t mins_since_midnight, const bool enable=true)
 Set/Enable the On Timer. More...
 
void cancelOnTimer (void)
 Cancel the On Timer. More...
 
bool isOnTimerEnabled (void)
 Check if the On Timer is Enabled. More...
 
uint16_t getOffTimer (void)
 Get the Off Timer time value. More...
 
void setOffTimer (const uint16_t mins_since_midnight, const bool enable=true)
 Set/Enable the Off Timer. More...
 
void cancelOffTimer (void)
 Cancel the Off Timer. More...
 
bool isOffTimerEnabled (void)
 Check if the Off Timer is Enabled. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
 Calculate the checksum for a given state. More...
 
static uint16_t encodeTime (const uint8_t hours, const uint8_t mins)
 Convert standard (military/24hr) time to nr. of minutes since midnight. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a standard A/C vertical swing into its native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a standard A/C horizontal swing into its native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
+ + + + +

+Private Member Functions

void fixChecksum (const uint16_t length=kPanasonicAcStateLength)
 Calculate and set the checksum values for the internal state. More...
 
+ + + + + + + +

+Static Private Member Functions

static uint16_t _getTime (const uint8_t ptr[])
 Get the time from a given pointer location. More...
 
static void _setTime (uint8_t *const ptr, const uint16_t mins_since_midnight, const bool round_down)
 Set the time at a given pointer location. More...
 
+ + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kPanasonicAcStateLength]
 The state in code form. More...
 
uint8_t _swingh
 
uint8_t _temp
 
+

Detailed Description

+

Class for handling detailed Panasonic A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRPanasonicAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRPanasonicAc::IRPanasonicAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _getTime()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRPanasonicAc::_getTime (const uint8_t ptr[])
+
+staticprivate
+
+ +

Get the time from a given pointer location.

+
Parameters
+ + +
[in]ptrA pointer to a time location in a state.
+
+
+
Returns
The time expressed as nr. of minutes past midnight.
+
Note
Internal use only.
+ +
+
+ +

◆ _setTime()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRPanasonicAc::_setTime (uint8_t *const ptr,
const uint16_t mins_since_midnight,
const bool round_down 
)
+
+staticprivate
+
+ +

Set the time at a given pointer location.

+
Parameters
+ + + + +
[in,out]ptrA pointer to a time location in a state.
[in]mins_since_midnightThe time as nr. of minutes past midnight.
[in]round_downDo we round to the nearest 10 minute mark?
+
+
+
Note
Internal use only.
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRPanasonicAc::calcChecksum (const uint8_t * state,
const uint16_t length = kPanasonicAcStateLength 
)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe value to calc the checksum of.
[in]lengthThe size/length of the state.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRPanasonicAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ cancelOffTimer()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::cancelOffTimer (void )
+
+ +

Cancel the Off Timer.

+ +
+
+ +

◆ cancelOnTimer()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::cancelOnTimer (void )
+
+ +

Cancel the On Timer.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRPanasonicAc::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRPanasonicAc::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRPanasonicAc::convertSwingH (const stdAc::swingh_t position)
+
+static
+
+ +

Convert a standard A/C horizontal swing into its native setting.

+
Parameters
+ + +
[in]positionA stdAc::swingh_t position to convert.
+
+
+
Returns
The equivilent native horizontal swing position.
+ +
+
+ +

◆ convertSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRPanasonicAc::convertSwingV (const stdAc::swingv_t position)
+
+static
+
+ +

Convert a standard A/C vertical swing into its native setting.

+
Parameters
+ + +
[in]positionA stdAc::swingv_t position to convert.
+
+
+
Returns
The equivilent native horizontal swing position.
+ +
+
+ +

◆ encodeTime()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint16_t IRPanasonicAc::encodeTime (const uint8_t hours,
const uint8_t mins 
)
+
+static
+
+ +

Convert standard (military/24hr) time to nr. of minutes since midnight.

+
Parameters
+ + + +
[in]hoursThe hours component of the time.
[in]minsThe minutes component of the time.
+
+
+
Returns
The nr of minutes since midnight.
+ +
+
+ +

◆ fixChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRPanasonicAc::fixChecksum (const uint16_t length = kPanasonicAcStateLength)
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+
Parameters
+ + +
[in]lengthThe size/length of the state.
+
+
+ +
+
+ +

◆ getClock()

+ +
+
+ + + + + + + + +
uint16_t IRPanasonicAc::getClock (void )
+
+ +

Get the current clock time value.

+
Returns
The time expressed as nr. of minutes past midnight.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRPanasonicAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed.
+ +
+
+ +

◆ getIon()

+ +
+
+ + + + + + + + +
bool IRPanasonicAc::getIon (void )
+
+ +

Get the Ion (filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRPanasonicAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getModel()

+ +
+
+ + + + + + + + +
panasonic_ac_remote_model_t IRPanasonicAc::getModel (void )
+
+ +

Get/Detect the model of the A/C.

+
Returns
The enum of the compatible model.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRPanasonicAc::getOffTimer (void )
+
+ +

Get the Off Timer time value.

+
Returns
The time expressed as nr. of minutes past midnight.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRPanasonicAc::getOnTimer (void )
+
+ +

Get the On Timer time value.

+
Returns
The time expressed as nr. of minutes past midnight.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRPanasonicAc::getPower (void )
+
+ +

Get the A/C power state of the remote.

+
Returns
true, the setting is on. false, the setting is off.
+
Warning
Except for CKP models, where it returns if the power state will be toggled on the A/C unit when the next message is sent.
+ +
+
+ +

◆ getPowerful()

+ +
+
+ + + + + + + + +
bool IRPanasonicAc::getPowerful (void )
+
+ +

Get the Powerful (Turbo) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRPanasonicAc::getQuiet (void )
+
+ +

Get the Quiet setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRPanasonicAc::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
uint8_t IRPanasonicAc::getSwingHorizontal (void )
+
+ +

Get the current horizontal swing setting.

+
Returns
The current position it is set to.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
uint8_t IRPanasonicAc::getSwingVertical (void )
+
+ +

Get the current vertical swing setting.

+
Returns
The current position it is set to.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRPanasonicAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ isOffTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRPanasonicAc::isOffTimerEnabled (void )
+
+ +

Check if the Off Timer is Enabled.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ isOnTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRPanasonicAc::isOnTimerEnabled (void )
+
+ +

Check if the On Timer is Enabled.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::off (void )
+
+ +

Change the power setting to Off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::on (void )
+
+ +

Change the power setting to On.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::send (const uint16_t repeat = kPanasonicAcDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClock()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setClock (const uint16_t mins_since_midnight)
+
+ +

Set the current clock time value.

+
Parameters
+ + +
[in]mins_since_midnightThe time as nr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setIon()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setIon (const bool on)
+
+ +

Set the Ion (filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setMode (const uint8_t desired)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]desiredThe desired operating mode.
+
+
+ +
+
+ +

◆ setModel()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setModel (const panasonic_ac_remote_model_t model)
+
+ +

Set the model of the A/C to emulate.

+
Parameters
+ + +
[in]modelThe enum of the appropriate model.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRPanasonicAc::setOffTimer (const uint16_t mins_since_midnight,
const bool enable = true 
)
+
+ +

Set/Enable the Off Timer.

+
Parameters
+ + + +
[in]mins_since_midnightThe time as nr. of minutes past midnight.
[in]enableDo we enable the timer or not?
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRPanasonicAc::setOnTimer (const uint16_t mins_since_midnight,
const bool enable = true 
)
+
+ +

Set/Enable the On Timer.

+
Parameters
+ + + +
[in]mins_since_midnightThe time as nr. of minutes past midnight.
[in]enableDo we enable the timer or not?
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setPower (const bool on)
+
+ +

Control the power state of the A/C unit.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Warning
For CKP models, the remote has no memory of the power state the A/C unit should be in. For those models setting this on/true will toggle the power state of the Panasonic A/C unit with the next meessage. e.g. If the A/C unit is already on, setPower(true) will turn it off. If the A/C unit is already off, setPower(true) will turn it on. setPower(false) will leave the A/C power state as it was. For all other models, setPower(true) should set the internal state to turn it on, and setPower(false) should turn it off.
+ +
+
+ +

◆ setPowerful()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setPowerful (const bool on)
+
+ +

Set the Powerful (Turbo) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setQuiet (const bool on)
+
+ +

Set the Quiet setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setRaw (const uint8_t state[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]stateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setSwingHorizontal (const uint8_t desired_direction)
+
+ +

Control the horizontal swing setting.

+
Parameters
+ + +
[in]desired_directionThe position to set the horizontal swing to.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::setSwingVertical (const uint8_t desired_elevation)
+
+ +

Control the vertical swing setting.

+
Parameters
+ + +
[in]desired_elevationThe position to set the vertical swing to.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRPanasonicAc::setTemp (const uint8_t celsius,
const bool remember = true 
)
+
+ +

Set the temperature.

+
Parameters
+ + + +
[in]celsiusThe temperature in degrees celsius.
[in]rememberA flag for the class to remember the temperature.
+
+
+
Note
Automatically safely limits the temp to the operating range supported.
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRPanasonicAc::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRPanasonicAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRPanasonicAc::toCommonFanSpeed (const uint8_t spd)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]spdThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRPanasonicAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonSwingH()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingh_t IRPanasonicAc::toCommonSwingH (const uint8_t pos)
+
+static
+
+ +

Convert a native horizontal swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common horizontal swing position.
+ +
+
+ +

◆ toCommonSwingV()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::swingv_t IRPanasonicAc::toCommonSwingV (const uint8_t pos)
+
+static
+
+ +

Convert a native vertical swing postion to it's common equivalent.

+
Parameters
+ + +
[in]posA native position to convert.
+
+
+
Returns
The common vertical swing position.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRPanasonicAc::toString (void )
+
+ +

Convert the internal state into a human readable string.

+
Returns
A string containing the settings in human-readable form.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRPanasonicAc::validChecksum (const uint8_t * state,
const uint16_t length = kPanasonicAcStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRPanasonicAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _swingh

+ +
+
+ + + + + +
+ + + + +
uint8_t IRPanasonicAc::_swingh
+
+private
+
+ +
+
+ +

◆ _temp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRPanasonicAc::_temp
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRPanasonicAc::remote_state[kPanasonicAcStateLength]
+
+private
+
+ +

The state in code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.map new file mode 100644 index 000000000..806678cd6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 new file mode 100644 index 000000000..ddab76af4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 @@ -0,0 +1 @@ +d3db02dc98d87de4f04f73ee0ebb90c7 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRPanasonicAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0c44699b51666a765a99f407ea753c0e89c3ec GIT binary patch literal 3434 zcmY*c2Q*x3*B+7R2`=#~VU&nY5Tl#O)mxBcbfcGu=tdnPVn~!k39b_N5~56m(K}(Z z#3*-$U`(QB)EHrm`kj3L_y6Cz=d5$ywb$D3d-mG<+534;ilv3&Wfp!G5D0YH*htSB zSmS;@Oboyq+bPHeEDUa@hI*j$Uw27oMHb)*HrCUir;)IiHRp6(_GPFW&Ey4jU_y+a8ZK$-aSapEO)u5Z~RU1T#EIirc|=M zyWQT1=kA5d(Ff1;6Nzh7R1k}PqRm$(++O~dd}2uPPGpxiGdcEVG_B>!Z+M7 zp-KM?DM|aSblEgDQ$aC2D)eYfbH~!w_MPE0;<`fjiPBWL`34mk_JzXA$|@x-Jz2V; zneNmc9(1s2=X6By9A(VY2$Rmw&yNa=8+5tJ8@k~TyY}z1OuG6dX`TJFy){K%w!i=W z`+Jc|vlT_$t7nLvnc0;_SrK#=U}IooptrEFFw497M4{{O&LA735WNA?`}+0k!igp2 z*`)5CSHt*i3tn|5tEfoovOI&wA8;^IS_q%r|ZijuO)06FB`)JdU`rZDJc;}#aB4!dExA={X*1+ zT=@2UFY^o}NpieIw*e>;Ye8Wo02Wt~f7`w>WZ@Z&o2L zIXxZQ+xw)xUMV;@c&5qUq5FMEt#GKYw6uwyzW%=CYTcj^7c(=npfmlf`}grbMO9U8 z3IcBNKf_=!hby`8$F_to81GBMRaI3DzC17V*#sbFeqas`;RWQezdzE+sR*R!>G@Vt zMuscCCGcAUB<}p|^a2MSkJq+WxLsCJL6t1e9pW8#KprEyhCM{Jv+@7HWi`%rd@;jx z4o*&8Q`1qoW6Iv%(i27@VR`xV_4S9T24cWD+o;A(Cx*0`_`}19PhQFn&5u`l8NvOZ zKc}gOtlo?{41_$Ixou#;ATKZ9)A+O%NQSca*flLJt>lah@7=|LnYlScb?wieq5J{@ zyL)@TFqW5>*X7u#)B9sh*RZ?ZrS}3zrEIiOga|nC$UDxEoT{r4o(99Yyy9@T?3fgw z6Mh+$E6t6z0Yo2;(z&;DIXO8V9vIDN;n!diio}u9eUYqVb z;-&Y_DfBleG6}ZvfJhnVavJ+VWZr~7&>c975{lf=*)G~DM`%O|ukm%kFgeQSk3nqN z$a~cYjW&_DCsUU$+d9-bF$S-aa$9D7CN#yJURoo4odstc+YK#jFIBMchmIM6%d$wp zm1$LCxty=NuY{TGt%rUxf|g|k%+CdGRdqu-VQPqmSF3HX)67X`@^bF#wCMLk`au`a zk`68W)Ot9eE%54;f_d_W#ikuPVN#2he)KjI-c=#=RBqn#itg?G9WQyC;jnr`X_|Oz zm~8;1dJIdrP19+;a#Hq+6u8c^zw$XSYcHPw(e+Kwgi1=CHwg)}zuzGFfH{m`8X$d< za)c%acK7U^${p0BZMIMW{Knl+D(KY13T3e~a*cVrHOU}$;HrT|IC-2fDUDOhZ77Yx z#_q>ZYgt}jE2u$8M~SSxD_-RP_l)|#;RhH-$M>|r7U{}Z`p znwANTZza0nOpxrq<{bd4s1>5m#iIr4Lj|xN5r%K6fV2=a5(@k{djy1 zFhPS|u0|97T-^}t1sf{7=s1@nTbWr}zC1i!%4nRXqoeDan!0yQE5Z`!v6L){yU#^_ zPf7;IomkycRejOdcjr}J-n+((`f~guWoyg&K^ph;Aq-5>b5~!PlNTxd`py<$t zQYSPJdIJjViPpA!u6;h-Bi|7t@pWqptqt}WD8^5m`3IlA5lup&xP*k#@ee%*(*-}} zDLxHZ8}l6~How8Oy}hlyy|yz@JO>3eJ8atd(>jN4%N*1!Q$^{~GnfW?&GicwDj&pD zCP%XE>MtA8q7|3dNt&*3V+{t(Is?{~@#g7PoMk2ZUus$_?Jyp5ZbZzw}60v z#l^*jX~XnubUh0TLJA5BJaYE^AK9VvBITWFrKMt2A_8psT2@3@xJ1=@GR?dIvajZK ze6STm8J4JV?)<|L9NWNNzh0;_M-dYfQxE(Kg2$bz07Y2YpN3CAoNyv}O}}?a71VsK z;zt+Ch&5P*35u~-V; z2EIEN(EX~Qz|_i$li}%;=;^2isxO5DRi?*<0m1nBeY@^IFC*t8SC&Hzm? z^{nHo+f#94V>gtQvyP6Uu<3%PF)>>1SVx(O$?@?XMsQ3|o%ua@RCMld)I>ud%{mfY$>913@J%Exa~1HqKFG@!}YYv9z?b zMu%bZ^KQW-N2IAKYh+|3z{=P(foXJ}>OurPs2Xn)8L4h;Y@Euk@*E`;W#otP#t8u> z`mw(+4#bw7&0UYd04l@@YXgJTNA7t6Gvfk5EV)YL32EacS)l>}5u z$B#bNp2jM|UwS8(56A??NQ%cbLBZjXk;UVk?j2YhF@^ogl^bemydoEmsXJ=}{{z3SsVTtD z&MwPiiaKg~@ZbR`l~?hv!HsP)IR*c4B?EdkuA{dFbkOLi`&^ShP*tC)3_(pS0qp>Y zGqO^b>i1j{4ah6N$(Y#V@Y&hfwnuZ5lL;IbyuH1X*!cQ(y3Z}Vyu6x^+a8=ulo}eF znwC~oJ#T7))WBqHYMlojHYx=#8{II=>jBVb>hCXiBP#{S;+v9^lJhFtdK8KgP~A(P zRY}V~$y0zP`qi4Qt|EYf0txohU%YtH8 zWD%rTs{d6rXMnu`Jy_$|nyLSS$I9Beugo}WrZZYqS65fHp&5g52bgDhc{!AiBrqR1 zWdO*eiHV7aMu?Z=I%RXio$Bl5m-GK4Z~if)0poGh + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRSamsungAc Member List
+
+
+ +

This is the complete list of members for IRSamsungAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_forcepowerIRSamsungAcprivate
_irsendIRSamsungAcprivate
_lastsentpowerstateIRSamsungAcprivate
begin(void)IRSamsungAc
calcChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)IRSamsungAcstatic
calibrate(void)IRSamsungAcinline
checksum(const uint16_t length=kSamsungAcStateLength)IRSamsungAcprivate
convertFan(const stdAc::fanspeed_t speed)IRSamsungAc
convertMode(const stdAc::opmode_t mode)IRSamsungAc
getBeep(void)IRSamsungAc
getBreeze(void)IRSamsungAc
getClean(void)IRSamsungAc
getDisplay(void)IRSamsungAc
getFan(void)IRSamsungAc
getIon(void)IRSamsungAc
getMode(void)IRSamsungAc
getPower(void)IRSamsungAc
getPowerful(void)IRSamsungAc
getQuiet(void)IRSamsungAc
getRaw(void)IRSamsungAc
getSwing(void)IRSamsungAc
getTemp(void)IRSamsungAc
IRSamsungAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRSamsungAcexplicit
off(void)IRSamsungAc
on(void)IRSamsungAc
remote_stateIRSamsungAcprivate
send(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)IRSamsungAc
sendExtended(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)IRSamsungAc
sendOff(const uint16_t repeat=kSamsungAcDefaultRepeat)IRSamsungAc
sendOn(const uint16_t repeat=kSamsungAcDefaultRepeat)IRSamsungAc
setBeep(const bool on)IRSamsungAc
setBreeze(const bool on)IRSamsungAc
setClean(const bool on)IRSamsungAc
setDisplay(const bool on)IRSamsungAc
setFan(const uint8_t speed)IRSamsungAc
setIon(const bool on)IRSamsungAc
setMode(const uint8_t mode)IRSamsungAc
setPower(const bool on)IRSamsungAc
setPowerful(const bool on)IRSamsungAc
setQuiet(const bool on)IRSamsungAc
setRaw(const uint8_t new_code[], const uint16_t length=kSamsungAcStateLength)IRSamsungAc
setSwing(const bool on)IRSamsungAc
setTemp(const uint8_t temp)IRSamsungAc
stateReset(const bool forcepower=true, const bool initialPower=true)IRSamsungAc
toCommon(void)IRSamsungAc
toCommonFanSpeed(const uint8_t speed)IRSamsungAcstatic
toCommonMode(const uint8_t mode)IRSamsungAcstatic
toString(void)IRSamsungAc
validChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)IRSamsungAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc.html new file mode 100644 index 000000000..3b0e593c0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc.html @@ -0,0 +1,1585 @@ + + + + + + + +IRremoteESP8266: IRSamsungAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Samsung A/C messages. + More...

+ +

#include <ir_Samsung.h>

+
+Collaboration diagram for IRSamsungAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRSamsungAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (const bool forcepower=true, const bool initialPower=true)
 Reset the internal state of the emulation. More...
 
void send (const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
 Send the current internal state as an IR message. More...
 
void sendExtended (const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
 Send the extended current internal state as an IR message. More...
 
void sendOn (const uint16_t repeat=kSamsungAcDefaultRepeat)
 Send the special extended "On" message as the library can't seem to reproduce this message automatically. More...
 
void sendOff (const uint16_t repeat=kSamsungAcDefaultRepeat)
 Send the special extended "Off" message as the library can't seem to reproduce this message automatically. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwing (const bool on)
 Set the vertical swing setting of the A/C. More...
 
bool getSwing (void)
 Get the vertical swing setting of the A/C. More...
 
void setBeep (const bool on)
 Set the Beep setting of the A/C. More...
 
bool getBeep (void)
 Get the Beep setting of the A/C. More...
 
void setClean (const bool on)
 Set the Clean setting of the A/C. More...
 
bool getClean (void)
 Get the Clean setting of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet setting of the A/C. More...
 
bool getQuiet (void)
 Get the Quiet setting of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) setting of the A/C. More...
 
bool getPowerful (void)
 Get the Powerful (Turbo) setting of the A/C. More...
 
void setBreeze (const bool on)
 Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree. More...
 
bool getBreeze (void)
 Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree. More...
 
void setDisplay (const bool on)
 Set the Display (Light/LED) setting of the A/C. More...
 
bool getDisplay (void)
 Get the Display (Light/LED) setting of the A/C. More...
 
void setIon (const bool on)
 Set the Ion (Filter) setting of the A/C. More...
 
bool getIon (void)
 Get the Ion (Filter) setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kSamsungAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
 Calculate the checksum for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (const uint16_t length=kSamsungAcStateLength)
 Update the checksum for the internal state. More...
 
+ + + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kSamsungAcExtendedStateLength]
 State in code form. More...
 
bool _forcepower
 Hack to know when we need to send a special power mesg. More...
 
bool _lastsentpowerstate
 
+

Detailed Description

+

Class for handling detailed Samsung A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRSamsungAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRSamsungAc::IRSamsungAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRSamsungAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRSamsungAc::calcChecksum (const uint8_t state[],
const uint16_t length = kSamsungAcStateLength 
)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe array to calc the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRSamsungAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRSamsungAc::checksum (const uint16_t length = kSamsungAcStateLength)
+
+private
+
+ +

Update the checksum for the internal state.

+
Parameters
+ + +
[in]lengthThe length/size of the internal array to checksum.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRSamsungAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRSamsungAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getBeep()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getBeep (void )
+
+ +

Get the Beep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getBreeze()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getBreeze (void )
+
+ +

Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree.

+
Returns
true, the setting is on. false, the setting is off.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1062
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getClean (void )
+
+ +

Get the Clean setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getDisplay()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getDisplay (void )
+
+ +

Get the Display (Light/LED) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRSamsungAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getIon()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getIon (void )
+
+ +

Get the Ion (Filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRSamsungAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerful()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getPowerful (void )
+
+ +

Get the Powerful (Turbo) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getQuiet()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getQuiet (void )
+
+ +

Get the Quiet setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRSamsungAc::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
bool IRSamsungAc::getSwing (void )
+
+ +

Get the vertical swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+
Todo:
(Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRSamsungAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRSamsungAc::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRSamsungAc::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSamsungAc::send (const uint16_t repeat = kSamsungAcDefaultRepeat,
const bool calcchecksum = true 
)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + + +
[in]repeatNr. of times the message will be repeated.
[in]calcchecksumDo we update the checksum before sending?
+
+
+
Note
Use for most function/mode/settings changes to the unit. i.e. When the device is already running.
+ +
+
+ +

◆ sendExtended()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSamsungAc::sendExtended (const uint16_t repeat = kSamsungAcDefaultRepeat,
const bool calcchecksum = true 
)
+
+ +

Send the extended current internal state as an IR message.

+
Parameters
+ + + +
[in]repeatNr. of times the message will be repeated.
[in]calcchecksumDo we update the checksum before sending?
+
+
+
Note
Use this for when you need to power on/off the device. Samsung A/C requires an extended length message when you want to change the power operating mode of the A/C unit.
+ +
+
+ +

◆ sendOff()

+ +
+
+ + + + + + + + +
void IRSamsungAc::sendOff (const uint16_t repeat = kSamsungAcDefaultRepeat)
+
+ +

Send the special extended "Off" message as the library can't seem to reproduce this message automatically.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036
+ +
+
+ +

◆ sendOn()

+ +
+
+ + + + + + + + +
void IRSamsungAc::sendOn (const uint16_t repeat = kSamsungAcDefaultRepeat)
+
+ +

Send the special extended "On" message as the library can't seem to reproduce this message automatically.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036
+ +
+
+ +

◆ setBeep()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setBeep (const bool on)
+
+ +

Set the Beep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setBreeze()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setBreeze (const bool on)
+
+ +

Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1062
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setClean (const bool on)
+
+ +

Set the Clean setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setDisplay()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setDisplay (const bool on)
+
+ +

Set the Display (Light/LED) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setIon()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setIon (const bool on)
+
+ +

Set the Ion (Filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerful()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setPowerful (const bool on)
+
+ +

Set the Powerful (Turbo) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setQuiet()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setQuiet (const bool on)
+
+ +

Set the Quiet setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSamsungAc::setRaw (const uint8_t new_code[],
const uint16_t length = kSamsungAcStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length/size of the new_code array.
+
+
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setSwing (const bool on)
+
+ +

Set the vertical swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Todo:
(Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRSamsungAc::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSamsungAc::stateReset (const bool forcepower = true,
const bool initialPower = true 
)
+
+ +

Reset the internal state of the emulation.

+
Parameters
+ + + +
[in]forcepowerA flag indicating if force sending a special power message with the first send() call.
[in]initialPowerSet the initial power state. True, on. False, off.
+
+
+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRSamsungAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRSamsungAc::toCommonFanSpeed (const uint8_t spd)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]spdThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRSamsungAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRSamsungAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRSamsungAc::validChecksum (const uint8_t state[],
const uint16_t length = kSamsungAcStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _forcepower

+ +
+
+ + + + + +
+ + + + +
bool IRSamsungAc::_forcepower
+
+private
+
+ +

Hack to know when we need to send a special power mesg.

+ +
+
+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRSamsungAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _lastsentpowerstate

+ +
+
+ + + + + +
+ + + + +
bool IRSamsungAc::_lastsentpowerstate
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRSamsungAc::remote_state[kSamsungAcExtendedStateLength]
+
+private
+
+ +

State in code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.map new file mode 100644 index 000000000..7b65cd5e6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 new file mode 100644 index 000000000..c11ced0ba --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 @@ -0,0 +1 @@ +383f10b4ef1888fea2358fde261598f6 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSamsungAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce17f8b0db4b36a22dca1acb89858aca964d6ef GIT binary patch literal 3730 zcmZ9Pc{o(>`^QHM5-k)VCXqdR$(G6>WH%W5mVF3e?4+_ZgBXJhLqea7CHodpWMm6t zU$XD}zJH&tPrvK?y?)oZ&bhDi$2re^?)%*D*ZYak(om+OVWELQAap8^VLBlCfHR1i z5?p^~AoW0?v{F-sK~DZ0XR~D=9Wc|I{=q8-qVqorLNNRi?WH zOFc*Runn?d!B}7cYh&&>QkPY$Mzz^-NWN) zj%F!mMa1Uj^NO5BcbK9g$%x>qp%3|Fb2d#Cgh?+g9i10S8R)3L5@Z#Vw>^)@Z-hLBk`?-aSa`w|oyoshs} zl#7drx#TiZ%{O&$a8P9b>*kBlP&Y5Hte}(Q>r(EpW?>;AZZ57fc6N6D0RjDGt^`>O zk|#RXCbaHrBZl>ty~G(x%2Us_=Hc}8^tVy(SX8y87%1cU*BRlevH0JUNGtkB@_!`*qof@0%=+o!MFY#l^*@_I4gl&QLZP zucm?NAaqQ`7r&jzQhiC^P5aAG=%_PW3?nNm>)WIxzNv*R-?7@%m(iNrQ&1VNCy?>B6d9zW zfsM_Fa5UOkH)(sdkBy{0Guhdx^GHDfQR>XBlyMp2>guYatD7X_Eff+GQhl^NcnCfd zVp1E(7JNTo|1py*4u?Bj`vDy)cT*UsO-@eU>>n9n53a0~ra6D!?fG+O+{(m6SAXl$ zr9ZtXudFQeT+q)mt!gYq4u06|=+L^rCjEVHW9Hn23%0wfW7lXYtE;OE3JTJQL|P75 z(Jcvy&GaoF6iUn3Sk1xVA8c0df=niot<_q9`9TgjHYVnQySo@29o=;~U+mfQj4=d4 z`_aLUC<~^WOtutDTHV~_5)?%Lqnqsxx zy_bg`=J&>7v0MrQgYDM0nJs#V2$0PElS28kE;D;G9@)4nADfft_A`fq4ZaUn{|`DeJiUW}g1%FHC0 zJ{6yjswG<1l~aj(I78d6eYwxwPQ&$%MD+uH0H=zx7*>E2^cg z)s?4uqYd1gQ&a8C7D%-Qe#tV|`?b2Iq)xQXrj1Si!@tam^>EQgPrf$dJe!?E5%O94 z*@j+xg+eS{!{Zva_cR%6bxA6ruMded;>ujm$hUX`Jmf43R4#!6HDv$cv;>@ z>tC9cT#ocYNt-9Vi7aP&qXja4>c5hnH?G zhzW??Ic`nxJ;k3#*8ZoK$5l(LEBBUxX{|CDb0XMLZxniLzq4FeRWf}2oU;%VuGDoXItr#4D2Hg$lg0j`u(5Apx+W%q z>O)3GM$NjKa^z{>V_7$+xYDZBHwHh$8Lu${SM z!Q*fQ1hx~tVx9nI_nmOZ1(@4#3BC5vTO#Z)i2f(I#a=uviy9|5wy?b>@@lyMs;KIQ z4@r7oD|~;Cqzd~ly#79OMY8*24S@*Ot8)4mM1OhoZ-|T|eqWnpbiKpK$QTLT-8Sy4@)p+C)&~8_E~=lSr{=haTD>vRh?)2r za=MT_IJbf79~hu#XK(vMw}mZ~pPw!QLCQ5QGXyxu%gciR-qByX#v8AusyYtdVlTns zyEWfX?lytiXqC*|E6P$&ZcKX^y1P_1+A;ThbDsR>`*)a-X(i0pSDG?36RqU z`2N};`MJ3{J$?Pod~v5d7=QMgxB`Xv$K21yq>> zQ?>GChuyV$jj}i2{Kw#+v13u4g~ebga&mG~OIP-YT=LDP$ZP6Cyp+0_Bh)HOA48<)~5D=T}gjI@4&=iCGQf3wca%nU4)<%_wQf~hOVZjrUfrmq>hY4qiwzhQ}hiC ztOGNs3x_NE_(&-#Do##KiTZ6j1CjzyW4pgO*V>FrNXY1#yC&t%1+lcW#7ldszAMNr zF2>^V*XbD;*4EeSNu-FFm>Ars!pUjr+^VSX@EbxxQJ+5X_vD+m1OMW)*1+_+0JR!4 zH9r0bc*51RWNG(FYBijo<#46v?!ke_`lQPCV!y(}hZH-@a=UbsOlGKb1e;N={=T!d zb!cubvM8^$u~BKCb9;F>S@8|yXP*t*PdPbjfZR84zE|JSJFck7is+eNSl|;7_%D#gu(Yh}(v&}HT9f5Z88LM#F`8~mQPbAG zOm&gn*^`xuii-P5VsKTJjE|2G`1cF__uQ?ltoq7ap*$M+8+Y$AX8h{QGX##c@!cJ# zzG@$F3JQvrR5{~)o`RARdNY{Cs8Vkc57gSQ*w#8y^eG1Jg83hWD1>;zj69}*h{Mq9t zPq-u`uwe6n6GYrpmyxw@qygr8<5xvty|ug+S=L#&8qu`EQ=$hX)^zB|MeGP$J_Ij4#lvkwVPsM zg^EURfYUp05*tqGF^kilq1A@WOCcye#$FBPM^G42EU{t?=GG6PoF~6IbJ6LGV3P?^ MQPhCtJ+gT5ACE<600000 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc-members.html new file mode 100644 index 000000000..904c5623f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc-members.html @@ -0,0 +1,130 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRSharpAc Member List
+
+
+ +

This is the complete list of members for IRSharpAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_fanIRSharpAcprivate
_irsendIRSharpAcprivate
_modeIRSharpAcprivate
_tempIRSharpAcprivate
begin(void)IRSharpAc
calcChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)IRSharpAcprivatestatic
calibrate(void)IRSharpAcinline
checksum(void)IRSharpAcprivate
clearPowerSpecial(void)IRSharpAcprivate
convertFan(const stdAc::fanspeed_t speed)IRSharpAcstatic
convertMode(const stdAc::opmode_t mode)IRSharpAcstatic
getClean(void)IRSharpAc
getEconoToggle(void)IRSharpAc
getFan(void)IRSharpAc
getIon(void)IRSharpAc
getMode(void)IRSharpAc
getPower(void)IRSharpAc
getPowerSpecial(void)IRSharpAcprivate
getRaw(void)IRSharpAc
getSpecial(void)IRSharpAc
getSwingToggle(void)IRSharpAc
getTemp(void)IRSharpAc
getTimerEnabled(void)IRSharpAc
getTimerTime(void)IRSharpAc
getTimerType(void)IRSharpAc
getTurbo(void)IRSharpAc
IRSharpAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRSharpAcexplicit
isPowerSpecial(void)IRSharpAc
off(void)IRSharpAc
on(void)IRSharpAc
remoteIRSharpAcprivate
send(const uint16_t repeat=kSharpAcDefaultRepeat)IRSharpAc
setClean(const bool on)IRSharpAc
setEconoToggle(const bool on)IRSharpAc
setFan(const uint8_t fan, const bool save=true)IRSharpAc
setIon(const bool on)IRSharpAc
setMode(const uint8_t mode, const bool save=true)IRSharpAc
setPower(const bool on, const bool prev_on=true)IRSharpAc
setPowerSpecial(const uint8_t value)IRSharpAcprivate
setRaw(const uint8_t new_code[], const uint16_t length=kSharpAcStateLength)IRSharpAc
setSpecial(const uint8_t mode)IRSharpAc
setSwingToggle(const bool on)IRSharpAc
setTemp(const uint8_t temp, const bool save=true)IRSharpAc
setTimer(bool enable, bool timer_type, uint16_t mins)IRSharpAc
setTurbo(const bool on)IRSharpAc
stateReset(void)IRSharpAcprivate
toCommon(void)IRSharpAc
toCommonFanSpeed(const uint8_t speed)IRSharpAcstatic
toCommonMode(const uint8_t mode)IRSharpAcstatic
toString(void)IRSharpAc
validChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)IRSharpAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc.html new file mode 100644 index 000000000..09a5d0a75 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc.html @@ -0,0 +1,1688 @@ + + + + + + + +IRremoteESP8266: IRSharpAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Sharp A/C messages. + More...

+ +

#include <ir_Sharp.h>

+
+Collaboration diagram for IRSharpAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRSharpAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kSharpAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on, const bool prev_on=true)
 Change the power setting, including the previous power state. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
bool isPowerSpecial (void)
 Is one of the special power states in use? More...
 
void setTemp (const uint8_t temp, const bool save=true)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan, const bool save=true)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode, const bool save=true)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSpecial (const uint8_t mode)
 Set the value of the Special (button/command?) setting. More...
 
uint8_t getSpecial (void)
 Get the value of the Special (button/command?) setting. More...
 
bool getTurbo (void)
 Get the Turbo setting of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo setting of the A/C. More...
 
bool getSwingToggle (void)
 Get the (vertical) Swing Toggle setting of the A/C. More...
 
void setSwingToggle (const bool on)
 Set the (vertical) Swing Toggle setting of the A/C. More...
 
bool getIon (void)
 Get the Ion (Filter) setting of the A/C. More...
 
void setIon (const bool on)
 Set the Ion (Filter) setting of the A/C. More...
 
bool getEconoToggle (void)
 Get the Economical mode toggle setting of the A/C. More...
 
void setEconoToggle (const bool on)
 Set the Economical mode toggle setting of the A/C. More...
 
uint16_t getTimerTime (void)
 Get how long the timer is set for, in minutes. More...
 
bool getTimerEnabled (void)
 Is the Timer enabled? More...
 
bool getTimerType (void)
 Get the current timer type. More...
 
void setTimer (bool enable, bool timer_type, uint16_t mins)
 Set or cancel the timer function. More...
 
bool getClean (void)
 Get the Clean setting of the A/C. More...
 
void setClean (const bool on)
 Set the Economical mode toggle setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kSharpAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kSharpAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + + + + + + + + + + +

+Private Member Functions

void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
void setPowerSpecial (const uint8_t value)
 Set the value of the Power Special setting without any checks. More...
 
uint8_t getPowerSpecial (void)
 Get the value of the Power Special setting. More...
 
void clearPowerSpecial (void)
 Clear the "special"/non-normal bits in the power section. e.g. for normal/common command modes. More...
 
+ + + + +

+Static Private Member Functions

static uint8_t calcChecksum (uint8_t state[], const uint16_t length=kSharpAcStateLength)
 Calculate the checksum for a given state. More...
 
+ + + + + + + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote [kSharpAcStateLength]
 State of the remote in IR code form. More...
 
uint8_t _temp
 Saved copy of the desired temp. More...
 
uint8_t _mode
 Saved copy of the desired mode. More...
 
uint8_t _fan
 Saved copy of the desired fan speed. More...
 
+

Detailed Description

+

Class for handling detailed Sharp A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRSharpAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRSharpAc::IRSharpAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRSharpAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRSharpAc::calcChecksum (uint8_t state[],
const uint16_t length = kSharpAcStateLength 
)
+
+staticprivate
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe array to calc the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
The calculated 4-bit checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRSharpAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRSharpAc::checksum (void )
+
+private
+
+ +

Calculate and set the checksum values for the internal state.

+ +
+
+ +

◆ clearPowerSpecial()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRSharpAc::clearPowerSpecial (void )
+
+private
+
+ +

Clear the "special"/non-normal bits in the power section. e.g. for normal/common command modes.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRSharpAc::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRSharpAc::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getClean()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getClean (void )
+
+ +

Get the Clean setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getEconoToggle()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getEconoToggle (void )
+
+ +

Get the Economical mode toggle setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRSharpAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getIon()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getIon (void )
+
+ +

Get the Ion (Filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRSharpAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getPowerSpecial()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRSharpAc::getPowerSpecial (void )
+
+private
+
+ +

Get the value of the Power Special setting.

+
Returns
The setting's value.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRSharpAc::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSpecial()

+ +
+
+ + + + + + + + +
uint8_t IRSharpAc::getSpecial (void )
+
+ +

Get the value of the Special (button/command?) setting.

+
Returns
The setting's value.
+ +
+
+ +

◆ getSwingToggle()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getSwingToggle (void )
+
+ +

Get the (vertical) Swing Toggle setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRSharpAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getTimerEnabled (void )
+
+ +

Is the Timer enabled?

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTimerTime()

+ +
+
+ + + + + + + + +
uint16_t IRSharpAc::getTimerTime (void )
+
+ +

Get how long the timer is set for, in minutes.

+
Returns
The time in nr of minutes.
+ +
+
+ +

◆ getTimerType()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getTimerType (void )
+
+ +

Get the current timer type.

+
Returns
true, It's an "On" timer. false, It's an "Off" timer.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRSharpAc::getTurbo (void )
+
+ +

Get the Turbo setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ isPowerSpecial()

+ +
+
+ + + + + + + + +
bool IRSharpAc::isPowerSpecial (void )
+
+ +

Is one of the special power states in use?

+
Returns
true, it is. false, it isn't.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRSharpAc::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRSharpAc::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRSharpAc::send (const uint16_t repeat = kSharpAcDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setClean()

+ +
+
+ + + + + + + + +
void IRSharpAc::setClean (const bool on)
+
+ +

Set the Economical mode toggle setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
Officially A/C unit needs to be "Off" before clean mode can be entered
+ +
+
+ +

◆ setEconoToggle()

+ +
+
+ + + + + + + + +
void IRSharpAc::setEconoToggle (const bool on)
+
+ +

Set the Economical mode toggle setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Warning
Probably incompatible with setTurbo()
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSharpAc::setFan (const uint8_t speed,
const bool save = true 
)
+
+ +

Set the speed of the fan.

+
Parameters
+ + + +
[in]speedThe desired setting.
[in]saveDo we save this setting as a user set one?
+
+
+ +
+
+ +

◆ setIon()

+ +
+
+ + + + + + + + +
void IRSharpAc::setIon (const bool on)
+
+ +

Set the Ion (Filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSharpAc::setMode (const uint8_t mode,
const bool save = true 
)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + + +
[in]modeThe desired operating mode.
[in]saveDo we save this setting as a user set one?
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSharpAc::setPower (const bool on,
const bool prev_on = true 
)
+
+ +

Change the power setting, including the previous power state.

+
Parameters
+ + + +
[in]ontrue, the setting is on. false, the setting is off.
[in]prev_ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPowerSpecial()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRSharpAc::setPowerSpecial (const uint8_t value)
+
+private
+
+ +

Set the value of the Power Special setting without any checks.

+
Parameters
+ + +
[in]valueThe value to set Power Special to.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSharpAc::setRaw (const uint8_t new_code[],
const uint16_t length = kSharpAcStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length/size of the new_code array.
+
+
+ +
+
+ +

◆ setSpecial()

+ +
+
+ + + + + + + + +
void IRSharpAc::setSpecial (const uint8_t mode)
+
+ +

Set the value of the Special (button/command?) setting.

+
Parameters
+ + +
[in]modeThe value to set Special to.
+
+
+ +
+
+ +

◆ setSwingToggle()

+ +
+
+ + + + + + + + +
void IRSharpAc::setSwingToggle (const bool on)
+
+ +

Set the (vertical) Swing Toggle setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRSharpAc::setTemp (const uint8_t temp,
const bool save = true 
)
+
+ +

Set the temperature.

+
Parameters
+ + + +
[in]tempThe temperature in degrees celsius.
[in]saveDo we save this setting as a user set one?
+
+
+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRSharpAc::setTimer (bool enable,
bool timer_type,
uint16_t mins 
)
+
+ +

Set or cancel the timer function.

+
Parameters
+ + + + +
[in]enableIs the timer to be enabled (true) or canceled(false)?
[in]timer_typeAn On (true) or an Off (false). Ignored if canceled.
[in]minsNr. of minutes the timer is to be set to.
+
+
+
Note
Rounds down to 30 min increments. (max: 720 mins (12h), 0 is Off)
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRSharpAc::setTurbo (const bool on)
+
+ +

Set the Turbo setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+
Note
If you use this method, you will need to send it before making other changes to the settings, as they may overwrite some of the bits used by this setting.
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRSharpAc::stateReset (void )
+
+private
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRSharpAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRSharpAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRSharpAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRSharpAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRSharpAc::validChecksum (uint8_t state[],
const uint16_t length = kSharpAcStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _fan

+ +
+
+ + + + + +
+ + + + +
uint8_t IRSharpAc::_fan
+
+private
+
+ +

Saved copy of the desired fan speed.

+ +
+
+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRSharpAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ _mode

+ +
+
+ + + + + +
+ + + + +
uint8_t IRSharpAc::_mode
+
+private
+
+ +

Saved copy of the desired mode.

+ +
+
+ +

◆ _temp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRSharpAc::_temp
+
+private
+
+ +

Saved copy of the desired temp.

+ +
+
+ +

◆ remote

+ +
+
+ + + + + +
+ + + + +
uint8_t IRSharpAc::remote[kSharpAcStateLength]
+
+private
+
+ +

State of the remote in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.map new file mode 100644 index 000000000..bd52394a1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.md5 new file mode 100644 index 000000000..4e92a3fe3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.md5 @@ -0,0 +1 @@ +a87b7a535dbb4358d51525a2278a117d \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRSharpAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..397be3abbff42fdcb1c2c648081cee364eaea847 GIT binary patch literal 3360 zcmZWs2{cr1{~xjosW61Hq-2mivXpiF$R37lld)tg%h*X{2~i9o`;sMO8B4}i)*8#0 z$}%y=F5B3*i2wEe-*evgocG@I+~=I<-1FS;^ZkC7?~OGw&|zWXVFH0bEV@ul6JT}& zMmPf<@cezC905#pa6KJO(COKo*II%GfzA)>YTh>s$Xd$|HR6~*`K(4ScliyuEb=z^ z9rQ}QDXe!R&ukW~8ds!_B?mRaeI+-AYy)+MZH z-lV&%_s14qvwKPVG^~PI+Y@S^+_?y1UNJuWM122XwR5iXe)CZVDKsF5wEiUW0yPKs z*IEpc=GHl#)a&dYAhAXW-L8Xavq`L6d=(Awy{>K;)GdDCeT5r#G*(iqbBe-Y17!gq_Zz4LA1odI*H1CZ9#` z<)5Mmn6>ql&CSh#z`*?BCydO@vmH^)IPdWA@X6498+CQ{r%0sJuR2#=ZAPx~42SYxhJztCSTkVw8u=~Yb0vX;AN8NZ`HtH7$4*QUVdV1YbybIHjm># z98Pz}&|X_!S)s4Ddp@+Xi~1k~mG+qFUv70C9v;sBu>>_R=y8;$np#_Xpsh{kHu~}U zwQJAk`_g>=?6`t%iHT7?_4l{n5uNQxm|Y$&&r%Dwg|(NLmv8MC>7qfufB(+IVtI6Q zdR6;ELqZ^}%^E!-j=M86GwN1WJRBSxs}oJ8hc+cYHh&nZJ)7xb1QO4{#MI#;J2O8Y zm7UGU!otEJ@JC-Mo6<18y|Izk+M12UD$OgPzSt*)USV|qhx564`E>z-h@U^rKH9Yp z=4-@QwuhQ&Uru^7buUmPavgOPHOV9Vp@?(pptj zRrzoZ-PPS~Y-jiSi~TiGQP<0R-Y#QVkmtkY7LR3l4!8Ow1OF_Q5T4XWMn`+^ll(Cr zg%UxXEiJ>!BSFEZzt*< z@(=e1oWY~C7bAq#0k-)^R!|JK*O*CE=Z}o* zfVu(S)De7}@9_QU+G2197#`fYAv92p;NarA#K)&{vF1Eu`)T02dA1hAjzo*!(sqqj zyoFz?gKoP=bjGHd@p~>1*-q2w)$2xBdy~JCPy~dm&*r-L^XS^Y3Bb|}RD4DKKJ&uI zoM(OU;qACxd33!-?M;)uTYYZS%{k8fQLv|NdEGd67^f@3&vvbN!BMPZXH>iqQuQs4 z9mem9;AU;uQLf+gisY6!Elfx(mRO-hI25HmY^Y+tPmZq8J{PUwPkC?j4{Xiiqp5!} z-!qNgC?e!$U$c*OlnL&`ouOAwygR|65AOYi302DZFR1mJ;BF0gbcDp4V@Y>dIASRM z(b2xOR)cnhO$FyX3F~kQXUcqOt^13(+;=rsPRV5Q!^lYo=#6rBJD~;2xWBVGuM2;a zi*}mBKK8XpPqf6N;=41_B;&(1D<6e{)Y0@mrKY*H#S&#lC0=nmt(0huf#cJ=sTIe& z#%?ii*Ex#cRkzaGe--2Zr7sfDrXnw_zpNj@49T)jL|5{~z5kYMI|5e!tELB(Q2z5h zbZ~+$EFvPJ=>2=x-BToXc`W{sJ#=|J*n9;oi8H zhfGu2bu>!?UD^rZ*49ZCz;q{kjyQ64EWiKg@Q_hKLE+izm=u9T5+BUIdqYG&{aPZw z$}J@&B~4@FBq$VWgwxT~d^t2^}p#0a%c-8yFN6H{1I)yT3_qMbU|45e4*rN}Q33l`k7oBQN zOiWS&uRNe2uEaLDQyCf>&U;xupvZ|>qZDR)g#RdIvt}E_5Zy&oRI>B(u1VOnRS55Y zC@-I#3|{BkL7vDoSyWX=i0qr-D>CiNzqOjd6uy|FgLTPC<*K&};b^F&+wx-r$niJ| zcYL_Lm}>qj!PMQoVwakas;K>ZqQK9-JpKPILYm*!njn>aiNCx0xXNCL^;eZez3C_F0@kLndyN(WZw=QX6?8#E( z=BG@*_Gvkq=pB{WE95bN(<*lGB*)suOyNhXq)Pr?`x1dSfqna!t?g~EdME;X`SRsA zSy{?O*zaUa&&7XZW&meZ1E-B)<*P-4<)a30CQJC2EtTz_Bqe1PmDu=r(*?sEWya^N zttu1>1!CRs$~h-cyUf(aX23Z&R9jbzflkc-UQD+W2f(Qc}{~;^Ow~YqeSzf}p&|ucEm(AgI2+8$m@yZZ0k^ z5H&S50|Ucv)5Z@U;^f>$o>C?hDNT#~fFGqw>+0%W=HesrczAal z2Mrw^03mf(S5Zbr#-fsvOJML<;2fo;rJqTpY=y}Hln#HOCUF69zI5e4X|L8@PRX_d z!PL~$fZ$-Uz65QdyZ)4->gqQQ4e~EgC|Layj!QQT>UQ$$j#bJr81&V!1F8h=&N|m0 zprI%A0RaKk!TX+rIVyd-D+;G~h!N-L19pck4o{BOGt|OW%gV}jRHLc`x1E5ZDTW-} zUT;5DrDx@x`kEvZy1Y(q&rKDxNY2dEgF+cVKx!a%ZCMo+kcELv9XMQ2Ts%B9==O~p zF{Pz9dtP6~&veIs8yHx_3<3^>!{Nqi5zO4&-1?dF31onPU5TUNo$%T{3aPIpaNDxl zo+>x&k0@{fL4s6>j~YD2ds0MA$Ld@!#dC@aN=PKyg&n@fE4`JliL0uT+}qnzK0V&9 ztE(Ft8{3zOKq8UK2U92rtTys-Z{jYDlb!ubC!5-@nDvsQ1FIlM7IPA zfDmAXgzw)wfY`=bgB4z@oqY11D%Q_X4+&8o@^MuR*toXdy3cRj=-EvsU;V9kE_mqy z!}s7RCMG5TStS58fG&Y*rzz_``B=AAKU=Au91iK26J@j!o9 zT3OjWIGA{}-X88kk4U#XmM$HB0&7N!%gM>DjyJ9sBY1gvEn5PlJUu;AQc@<6*#iRu z?h~Jq($m3bIZYDMu>`;%VoLU6o=ktu807tzbZ32L=Ea2c_AD;vDGn%~@<868bGQe}rPGc9rP@OTe28d+Jq zKyQ|z8v4g$bd*Spy+Ey_qXP)~T>OD6i|1quccr-=5-E>y##1c9jt@5b-^s-TX8}k`tadne7rAOr z!ut98`kuMZN>#gR(PL@LKPqz>85z31zB_!1nzit5rh>x4BNAF0Jt>eZpln^PIwyJw z5Hql8hB89G + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRTcl112Ac Member List
+
+
+ +

This is the complete list of members for IRTcl112Ac, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRTcl112Acprivate
begin(void)IRTcl112Ac
calcChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)IRTcl112Acstatic
calibrate(void)IRTcl112Acinline
checksum(const uint16_t length=kTcl112AcStateLength)IRTcl112Acprivate
convertFan(const stdAc::fanspeed_t speed)IRTcl112Ac
convertMode(const stdAc::opmode_t mode)IRTcl112Ac
getEcono(void)IRTcl112Ac
getFan(void)IRTcl112Ac
getHealth(void)IRTcl112Ac
getLight(void)IRTcl112Ac
getMode(void)IRTcl112Ac
getPower(void)IRTcl112Ac
getRaw(void)IRTcl112Ac
getSwingHorizontal(void)IRTcl112Ac
getSwingVertical(void)IRTcl112Ac
getTemp(void)IRTcl112Ac
getTurbo(void)IRTcl112Ac
IRTcl112Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTcl112Acexplicit
off(void)IRTcl112Ac
on(void)IRTcl112Ac
remote_stateIRTcl112Acprivate
send(const uint16_t repeat=kTcl112AcDefaultRepeat)IRTcl112Ac
setEcono(const bool on)IRTcl112Ac
setFan(const uint8_t speed)IRTcl112Ac
setHealth(const bool on)IRTcl112Ac
setLight(const bool on)IRTcl112Ac
setMode(const uint8_t mode)IRTcl112Ac
setPower(const bool on)IRTcl112Ac
setRaw(const uint8_t new_code[], const uint16_t length=kTcl112AcStateLength)IRTcl112Ac
setSwingHorizontal(const bool on)IRTcl112Ac
setSwingVertical(const bool on)IRTcl112Ac
setTemp(const float celsius)IRTcl112Ac
setTurbo(const bool on)IRTcl112Ac
stateReset(void)IRTcl112Ac
toCommon(void)IRTcl112Ac
toCommonFanSpeed(const uint8_t speed)IRTcl112Acstatic
toCommonMode(const uint8_t mode)IRTcl112Acstatic
toString(void)IRTcl112Ac
validChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)IRTcl112Acstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac.html new file mode 100644 index 000000000..f814eac41 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac.html @@ -0,0 +1,1298 @@ + + + + + + + +IRremoteESP8266: IRTcl112Ac Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed TCL A/C messages. + More...

+ +

#include <ir_Tcl.h>

+
+Collaboration diagram for IRTcl112Ac:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRTcl112Ac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kTcl112AcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void stateReset (void)
 Reset the internal state of the emulation. (On, Cool, 24C) More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kTcl112AcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const float celsius)
 Set the temperature. More...
 
float getTemp (void)
 Get the current temperature setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setEcono (const bool on)
 Set the economy setting of the A/C. More...
 
bool getEcono (void)
 Get the economy setting of the A/C. More...
 
void setHealth (const bool on)
 Set the Health (Filter) setting of the A/C. More...
 
bool getHealth (void)
 Get the Health (Filter) setting of the A/C. More...
 
void setLight (const bool on)
 Set the Light (LED/Display) setting of the A/C. More...
 
bool getLight (void)
 Get the Light (LED/Display) setting of the A/C. More...
 
void setSwingHorizontal (const bool on)
 Set the horizontal swing setting of the A/C. More...
 
bool getSwingHorizontal (void)
 Get the horizontal swing setting of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the vertical swing setting of the A/C. More...
 
bool getSwingVertical (void)
 Get the vertical swing setting of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo setting of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo setting of the A/C. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static uint8_t calcChecksum (uint8_t state[], const uint16_t length=kTcl112AcStateLength)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (uint8_t state[], const uint16_t length=kTcl112AcStateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (const uint16_t length=kTcl112AcStateLength)
 Calculate & set the checksum for the current internal state of the remote. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kTcl112AcStateLength]
 The State in IR code form. More...
 
+

Detailed Description

+

Class for handling detailed TCL A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRTcl112Ac()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRTcl112Ac::IRTcl112Ac (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRTcl112Ac::calcChecksum (uint8_t state[],
const uint16_t length = kTcl112AcStateLength 
)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe array to calc the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRTcl112Ac::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRTcl112Ac::checksum (const uint16_t length = kTcl112AcStateLength)
+
+private
+
+ +

Calculate & set the checksum for the current internal state of the remote.

+
Parameters
+ + +
[in]lengthThe length/size of the internal array to checksum.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRTcl112Ac::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRTcl112Ac::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getEcono()

+ +
+
+ + + + + + + + +
bool IRTcl112Ac::getEcono (void )
+
+ +

Get the economy setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRTcl112Ac::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getHealth()

+ +
+
+ + + + + + + + +
bool IRTcl112Ac::getHealth (void )
+
+ +

Get the Health (Filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + + +
bool IRTcl112Ac::getLight (void )
+
+ +

Get the Light (LED/Display) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRTcl112Ac::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRTcl112Ac::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRTcl112Ac::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSwingHorizontal()

+ +
+
+ + + + + + + + +
bool IRTcl112Ac::getSwingHorizontal (void )
+
+ +

Get the horizontal swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwingVertical()

+ +
+
+ + + + + + + + +
bool IRTcl112Ac::getSwingVertical (void )
+
+ +

Get the vertical swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
float IRTcl112Ac::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+
Note
The temperature resolution is 0.5 of a degree.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRTcl112Ac::getTurbo (void )
+
+ +

Get the Turbo setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::send (const uint16_t repeat = kTcl112AcDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setEcono()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setEcono (const bool on)
+
+ +

Set the economy setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+
Note
Unknown speeds will default to Auto.
+ +
+
+ +

◆ setHealth()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setHealth (const bool on)
+
+ +

Set the Health (Filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setLight (const bool on)
+
+ +

Set the Light (LED/Display) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+
Note
Fan/Ventilation mode sets the fan speed to high. Unknown values default to Auto.
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRTcl112Ac::setRaw (const uint8_t new_code[],
const uint16_t length = kTcl112AcStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length/size of the new_code array.
+
+
+ +
+
+ +

◆ setSwingHorizontal()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setSwingHorizontal (const bool on)
+
+ +

Set the horizontal swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwingVertical()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setSwingVertical (const bool on)
+
+ +

Set the vertical swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setTemp (const float celsius)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]celsiusThe temperature in degrees celsius.
+
+
+
Note
The temperature resolution is 0.5 of a degree.
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::setTurbo (const bool on)
+
+ +

Set the Turbo setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRTcl112Ac::stateReset (void )
+
+ +

Reset the internal state of the emulation. (On, Cool, 24C)

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRTcl112Ac::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRTcl112Ac::toCommonFanSpeed (const uint8_t spd)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]spdThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRTcl112Ac::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRTcl112Ac::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRTcl112Ac::validChecksum (uint8_t state[],
const uint16_t length = kTcl112AcStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRTcl112Ac::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRTcl112Ac::remote_state[kTcl112AcStateLength]
+
+private
+
+ +

The State in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.map new file mode 100644 index 000000000..206ef60dc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 new file mode 100644 index 000000000..b7845c7a0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 @@ -0,0 +1 @@ +b01bf74458107df4a91e8d68cd7bd7c2 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTcl112Ac__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..713bce3fb12da126a2761dc964636db9878bc7fc GIT binary patch literal 2945 zcmZ9O2UHVT7smq&q1VtsAyfq+%5p#=g;S#%|UbOj+S zlF)^OVnHmlpwjsWigfA4Z(Psrcg{ESX5P7T-rRR*-n;krPj$3M2=L1AfJ!GDjpgU!K%(k`oSe_&55 zfYGkj5T|$IsZBZV=woReYl_ZHaV)FpEPtpw8#Zxt)NgY~Is04Rdf)oKYN5&7J`>$_ zO$0X-g!ynvsFaU3Hs^1T`fOw}dD1}8 z)YKG}d{R&~{iL!86*p!Svptn8xFFYiXU3q?SzXh;SYg%nF-924k!xGI5bh=qTLTS!{oQpW@Zc`?)pB z$y!!U4vxcVDJm(6NJ()wxRQp4(a>9?fB9^GA8@F_0!J(k43TC}6l>A_9WK@K% z5)l@TyXX^=8T=LPB7h%M+PI zA}_YEx>{3;AH2W95ZYd(O;EgFik6m_$FriKZ$~_1Np!k-SVV-Ph6bPPXqAQ3TZ8V_)M!Bu zrn}QPKwp-YBEB|$7#Og*d9&GR&mis7GfG|P{cf*2RwbQ&g}1;hV}hU*BGKH^l9L)T zk+Hpv5B~U!heRTQ;-a^f*g$kToxqo87&R>%1Yzn&G5Qau zSS;4vqeqUM*ql0Z8mAPTJ~@fW$<2M#)Fh3_kQ1Q>>B;09M+yoE2)MM}JS7T&U>jUT zq@{Th&F>Tx92GW~lOS2?`rMkDnv#-{iSPCjp+2xxJ)dz^|C%utBrGMB(%NeBZM2>% zQ~qpEBA+BBlw~hPvPw@+@4(R*zV&xlQE)gMbFjPdqQBqD$q7=8)~NA(o-sJ+%r7M5 zaOq-LnBF*kMqqY!wy32=RyCW)IO5y2&huyFamV>V)T^JsRYOGB^Lb^7_h3}9cDxZe2c(ix2Ir{3iyy;n*$P+H@}rc%94gy>#H zZdR}2rvE`Y!szpz=)B$QIunGv5ss;+^ka`1BI1|w8R@KD&^7;qI(a2@RN?DN$xZx= z3~HKm0LbC&#_yo)to~ZlKJ?o{^%Fggc5BausAo%o?;4YPM1z zoi)Q3E%Xb6jgKP5avL2rf+;gP%|C)}eUt>5=_Dt7ncf~&Y>LO7?6^ zrSX=mto>Q^Sl5X^*S%Pc@o(MxwLD3|S__|QO}qHgZcXmR$1F9en(Na|IEPhGV91=6 ztsm-Sro`s%LTyQPwe45!{PKz@U`*)QjnvSVxU8eH4L@d&uT&U6x z88?a9TcjfKEgS3Yrq6c!#X0u+bonVE|GnREK|!__?5(w&$> zr#)Nc>Y^eum&jh5mnO}~{FIaw?kSqF{kggK7gHgf*E4GS1N3D4^<-8|GDF&Tz^SRJ z^Yin=x1JJZejUpgz(f~-1#TR00<=o6QW+NQ?7f~ z-hbok)^x*?=;GVe(O`)e4vdS`b^jot=@LgE5WXz0eCN8dv=WPXThF1vNI^|$M9KAQ z^&d_!ODB@QZ0x?wlB(}o8fzhsBlKC?4tIV9S}8&eUqH`?89ip)l?x>36liPIbI-C^ zN{Wi?hK7dp-HnA2Hqf~;Q7jhwqOT9`<)t`W<8B;a$eYNXr{(@9np{>^w!PG{tU4C* zuOO0Qt+!RDs{qMa=~2pbR( z@NQva`*3f0wcmIdvpnAB9}<%6Q7idJR~Njrw3K^cAeR#a02LU;Y>8YBEz8Txn>pB; zKwP*WP9zfFF_|eJKA@6K2*QIyLr@hJ&Y_{9fwOoKkv62Wdakvd9cS-#r+y2dYOn6F z3YBzqAu=RzcXv1byLEo-F?Dry^OzVDXLWH2Ew`Vn1*R~X4eSH=NtZ(F(V9ttoOA>Z+^Sei7~@sp@19UQNm>!F7=3FoSOS=v1OVZ zb!c!9!$=ZXSzDvGEVrk9{OI~}M*OO3zEg!gPknY&RMexQA`k$M>^Yi?X5)?j@Mg%L z&7e@UL2<56B{WR9>7L?&qf_#>+YPwh)H4hTPcw9*~olSJK$Xe1s$0 zbES31p9&f_m>pTzaG~MI-mAoM6)+g=wYRwlECRyaeXMlH+`^)B-DGLvIV{4O9S93( zDk>^2t@t_$S(u${pM0e^!_ZAxTwI)ItXOQ7U8`AWeQOJ0Wd(lq`n8Uc(Q2VrGJ&7~ zg|Y!&ErNnHl9G}fFJDdr^x1hYbqx)R@bFXTkjT1gQ|8Ifl9Iq6GjH!w#wH*PfFc33 zyk6s^*SP$N=w(xYhcf_4v*$(|f+UNJi|-Z|X7=^j{**RaS~z;E5n0g2#)jDxs)jE> zpirV&Sy|e^;nV!aHvwIh*zMKXLy}E=R<~FE^=qJ}XM2nr*~7ylB`wXu&W<#&+AlHV zq5QPE8VmF52f5J=9R(uC*0v^D9BD>e=ek?KDh z?+Lnk4wZ}hc@Ftb7&w8AlmFGFZ1)eDXDn_Ua^<_5_&`9z>VT#O*;v}cYs@k6{{;X< Ba$*1g literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc-members.html new file mode 100644 index 000000000..3b51979c9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc-members.html @@ -0,0 +1,117 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRTecoAc Member List
+
+
+ +

This is the complete list of members for IRTecoAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRTecoAcprivate
begin(void)IRTecoAc
calibrate(void)IRTecoAcinline
convertFan(const stdAc::fanspeed_t speed)IRTecoAc
convertMode(const stdAc::opmode_t mode)IRTecoAc
getFan(void)IRTecoAc
getHumid(void)IRTecoAc
getLight(void)IRTecoAc
getMode(void)IRTecoAc
getPower(void)IRTecoAc
getRaw(void)IRTecoAc
getSave(void)IRTecoAc
getSleep(void)IRTecoAc
getSwing(void)IRTecoAc
getTemp(void)IRTecoAc
getTimer(void)IRTecoAc
getTimerEnabled(void)IRTecoAcprivate
IRTecoAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTecoAcexplicit
off(void)IRTecoAc
on(void)IRTecoAc
remote_stateIRTecoAcprivate
send(const uint16_t repeat=kTecoDefaultRepeat)IRTecoAc
setFan(const uint8_t fan)IRTecoAc
setHumid(const bool on)IRTecoAc
setLight(const bool on)IRTecoAc
setMode(const uint8_t mode)IRTecoAc
setPower(const bool on)IRTecoAc
setRaw(const uint64_t new_code)IRTecoAc
setSave(const bool on)IRTecoAc
setSleep(const bool on)IRTecoAc
setSwing(const bool on)IRTecoAc
setTemp(const uint8_t temp)IRTecoAc
setTimer(const uint16_t mins)IRTecoAc
stateReset(void)IRTecoAc
toCommon(void)IRTecoAc
toCommonFanSpeed(const uint8_t speed)IRTecoAcstatic
toCommonMode(const uint8_t mode)IRTecoAcstatic
toString(void)IRTecoAc
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc.html new file mode 100644 index 000000000..992922ec8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc.html @@ -0,0 +1,1182 @@ + + + + + + + +IRremoteESP8266: IRTecoAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Teco A/C messages. + More...

+ +

#include <ir_Teco.h>

+
+Collaboration diagram for IRTecoAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRTecoAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state of the emulation. More...
 
void send (const uint16_t repeat=kTecoDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwing (const bool on)
 Set the (vertical) swing setting of the A/C. More...
 
bool getSwing (void)
 Get the (vertical) swing setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setLight (const bool on)
 Set the Light (LED/Display) setting of the A/C. More...
 
bool getLight (void)
 Get the Light (LED/Display) setting of the A/C. More...
 
void setHumid (const bool on)
 Set the Humid setting of the A/C. More...
 
bool getHumid (void)
 Get the Humid setting of the A/C. More...
 
void setSave (const bool on)
 Set the Save setting of the A/C. More...
 
bool getSave (void)
 Get the Save setting of the A/C. More...
 
uint16_t getTimer (void)
 Get the timer time for when the A/C unit will switch power state. More...
 
void setTimer (const uint16_t mins)
 Set the timer for when the A/C unit will switch power state. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state/code for this protocol. More...
 
void setRaw (const uint64_t new_code)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + +

+Static Public Member Functions

static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

bool getTimerEnabled (void)
 Is the timer function enabled? More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint64_t remote_state
 The state of the IR remote in IR code form. More...
 
+

Detailed Description

+

Class for handling detailed Teco A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRTecoAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRTecoAc::IRTecoAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRTecoAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRTecoAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRTecoAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRTecoAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRTecoAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getHumid()

+ +
+
+ + + + + + + + +
bool IRTecoAc::getHumid (void )
+
+ +

Get the Humid setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + + +
bool IRTecoAc::getLight (void )
+
+ +

Get the Light (LED/Display) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRTecoAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRTecoAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint64_t IRTecoAc::getRaw (void )
+
+ +

Get a copy of the internal state/code for this protocol.

+
Returns
A code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSave()

+ +
+
+ + + + + + + + +
bool IRTecoAc::getSave (void )
+
+ +

Get the Save setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRTecoAc::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
bool IRTecoAc::getSwing (void )
+
+ +

Get the (vertical) swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRTecoAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTimer()

+ +
+
+ + + + + + + + +
uint16_t IRTecoAc::getTimer (void )
+
+ +

Get the timer time for when the A/C unit will switch power state.

+
Returns
The number of minutes left on the timer. 0 means off.
+ +
+
+ +

◆ getTimerEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRTecoAc::getTimerEnabled (void )
+
+private
+
+ +

Is the timer function enabled?

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRTecoAc::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRTecoAc::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRTecoAc::send (const uint16_t repeat = kTecoDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRTecoAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setHumid()

+ +
+
+ + + + + + + + +
void IRTecoAc::setHumid (const bool on)
+
+ +

Set the Humid setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRTecoAc::setLight (const bool on)
+
+ +

Set the Light (LED/Display) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRTecoAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRTecoAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRTecoAc::setRaw (const uint64_t new_code)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]new_codeA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSave()

+ +
+
+ + + + + + + + +
void IRTecoAc::setSave (const bool on)
+
+ +

Set the Save setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRTecoAc::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRTecoAc::setSwing (const bool on)
+
+ +

Set the (vertical) swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRTecoAc::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + +
void IRTecoAc::setTimer (const uint16_t nr_mins)
+
+ +

Set the timer for when the A/C unit will switch power state.

+
Parameters
+ + +
[in]nr_minsNumber of minutes before power state change. 0 will clear the timer. Max is 24 hrs.
+
+
+
Note
Time is stored internaly in increments of 30 mins.
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRTecoAc::stateReset (void )
+
+ +

Reset the internal state of the emulation.

+
Note
Mode:auto, Power:Off, fan:auto, temp:16, swing:off, sleep:off
+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRTecoAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRTecoAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRTecoAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRTecoAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRTecoAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint64_t IRTecoAc::remote_state
+
+private
+
+ +

The state of the IR remote in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.map new file mode 100644 index 000000000..f3e5d1502 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.md5 new file mode 100644 index 000000000..b08a20fd3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.md5 @@ -0,0 +1 @@ +70b332a49408f4e1d8c532bf7d103f45 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTecoAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..60d06d0839e714fc567f6101fea03934da83da8d GIT binary patch literal 3054 zcmZWr2UHVF7hXVWXaU4frB@*o%>zUN1VYD1S9mljDk@S1q!?YlwJ(Ih!o*p&il)G=RZ5UbMEfU-kI;-`Mw*AG1X&X;$;E=fW<&x#|-S@xZ_vtrR)#S1tpW z@DgX+IiwYfTHI-yJW8A^Obi)J9M&QoZG{S>|B@g*MbzZgWHvjue9CxvXObZ<5AMz< zCnboOlo)Fqpmv3hyFw|QFW#*Agt0HY+^QY?puDneAmOwSxRCXIC1x=zFfTVSLo||I zp#ml055&hhIZH*w7IH~Mn}xeSYiMuhIUo9~Fu6hhNqju>>*E7Tcsg>Hca%&{DAr42 z;>M-D2-p;PmYq#|g%IyC2-8dChl;QoGz4zD^(6JwDyF@8i(%qKNmI#{)zz`__c=K_ zYOY`iP?Ga4G)D3I_3PuU_p*o8`n;x8Sf{6_ZC?6HcOGpS38RuPgw`pFi;D|IIyyQ6 z@Qxjht?lj2?P28MW#%8y8fgd{Ti@pz+a53e(1T^k(8D$It3sIQdcPkS zK;60}6^|DEL7{j}byIcaZC48^&uvWix^Pc03P)Dkwk4*erTwa=naZSva3@Dc(`k@h zlu~dw2Jh9$7B5%7hYvY{lJfGH?+cp&`rxYbk>cV}!5cmF!3R@QLR6ZAZpwwY!{Y+iRsOH*Gb}s52l^LrDntv0d8(O;6b~cLiP|2 zhubi?YG}xD;JeN<@~rX23zfeclC*tLVXYpgD>ZgRuznPYmX;@-XSRL(LE&-r2}bO$M+rp8-ZT3S(COUS+a z@WH{(?brJY*$TV~FhRlSzFF+ReE1k8%CPiJGz%XFgEI}@yx`;1V$!ZN?snVrA0O8y&s?G_iMvxeAQn}TwJSoLI&Y@$$j~hls7_amv;egZ)vNk(|;`T_xxE1FimUDgc++{nZ=N7K7GFG*l52Uig^+ zwexK0rTjh#VWJODY}#&9O^w9=3?swZ64<*7+G5!g!jdCl5#JDZX4u%_q_82XN9zJ9 zMI78e-i<$6?>=x?B-;Z(qY!JE@~p>b@Z%swLTW@Ztrurm;FUAc2m65!(H$^Uuh47J zRAy6l$9i%UU)h&qmiKHJIk$>gM6_D@G09b!-?)6y!3W&}n~h!0mR?uD7CIf1bBBV) zzvl-;GYal|#1FTAll6aFfr9eR^1bwNgiS+GM?852`geSJfS(#(v>-;C{ge1*Wh2=0 z>_*M#zsU{{GyFI65y|p2$;?3|dD4sZ{O(ncQl+4$; zcdusLX^`nTz2f4NxO4C)0&l7ralE3s)Y^k&6Od*G>O&6wtL-~@Q&LiX9Z>3)v+eXr zdY@@EPudXPzmaWjEmwnr)Fxg%gm>jVeX2b(J4<9k9%-V{=>EE{V?%9i?fxjpIo!a! z$k5PGNpo}BaDHkk3QW&fqKn8Mp5MegUvJVGn3#wQCdI(7mYSs)Wy(WidbOTEe~vS& z6tl0(WY_KoiI7-klC2*Wh6D*gOiu3Jr0QKU$%WCb=BGc+BS0b$QM9zQJW@+Yh0yAl zBcL+rPfoH4#3<^S+PfkuANEqDYOEk&s~d}}>pWn}%F0?=U7eRa*JyJAmynRV>vgQs zPQvG88Ow9kUs^~askF0m(qL5EljrCZCwgJb*HUuuyC=b1ae0^xN^WlM5&0w8NJ|SF zfc+-<)Z;xhE%6gx6Z?NLh`oLEimIc=zoD0%pBTH`?hC2yar)a}U&qPwfX8ZW2RKMwOC z(RN^dejZb4AtfU-GX{6)WCoH4=JoaUyEEi$le4m7{V1PJZX_B@^iDLnFN%~Hs0M5Z zX&kO7TUc03Wx3};cWm||9P3g&Cz}~{b#+17B2jh&7IPmar=`vL@Ew1)^#r-7pt{<) zLLpcvvY?>>N*Sx`+nnvAF&~6^xATKsH{RsV29n!fKZs#nALqRbTU)u$$=f~do$j7Z zLMGn((mLHkfBp<`N_St{*i1}J>c6bobOc>$y-$8ZB4L{{Ns$m{Fts|n&%S;-i~DgYiKYCyAi1c2p|mwtSzs;H`(-ID_u z+{sD!E`rbb=1r%j2}cFkuW$RO+F@gZ%XA3k0m0;sbN#sWPIJR!kVInlU;7$6j6C5V z$b`ojBfP{{S669)xrK#9BMOBQp_@$*=Y3b?H`-}N{H*e0CoJ4_hK`g(A z9?BIJ6%k5pFK~lpgk4u??g^<6RG*Cib&c(oot+&3n3XzaNCUz5;!YW=fZ%YC}u`MvG#Ms*>Ch+~?ythU^ z#X!G*sW;?Hn`g|88gyWwYU|yJa8S2P%F3u=9lNX$NN*gx6K8E7NDDb9KPNe=8hWGx z`s@>ctEj*#D=RDN>hfEI!<5&s$XwHy*RRzPD`9La;|(-kUS2BRbNwNi@1kA)Q^)>; z4nQNzw|b?rJa5aLe>*ys&S^c$>q^+<`IOS!_8^^%jtB$k6<(C|-wMsaJaybx!Q=Dc Z1ei}+-M;H!h64+Dz(Chjr&ilB{9m7R$PNGi literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC-members.html new file mode 100644 index 000000000..f54311112 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC-members.html @@ -0,0 +1,108 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRToshibaAC Member List
+
+
+ +

This is the complete list of members for IRToshibaAC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRToshibaACprivate
begin(void)IRToshibaAC
calcChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)IRToshibaACprivatestatic
calibrate(void)IRToshibaACinline
checksum(const uint16_t length=kToshibaACStateLength)IRToshibaACprivate
convertFan(const stdAc::fanspeed_t speed)IRToshibaAC
convertMode(const stdAc::opmode_t mode)IRToshibaAC
getFan(void)IRToshibaAC
getMode(const bool useRaw=false)IRToshibaAC
getPower(void)IRToshibaAC
getRaw(void)IRToshibaAC
getTemp(void)IRToshibaAC
IRToshibaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRToshibaACexplicit
mode_stateIRToshibaACprivate
off(void)IRToshibaAC
on(void)IRToshibaAC
remote_stateIRToshibaACprivate
send(const uint16_t repeat=kToshibaACMinRepeat)IRToshibaAC
setFan(const uint8_t speed)IRToshibaAC
setMode(const uint8_t mode)IRToshibaAC
setPower(const bool on)IRToshibaAC
setRaw(const uint8_t newState[])IRToshibaAC
setTemp(const uint8_t degrees)IRToshibaAC
stateReset(void)IRToshibaAC
toCommon(void)IRToshibaAC
toCommonFanSpeed(const uint8_t speed)IRToshibaACstatic
toCommonMode(const uint8_t mode)IRToshibaACstatic
toString(void)IRToshibaAC
validChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)IRToshibaACstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC.html new file mode 100644 index 000000000..285782974 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC.html @@ -0,0 +1,1001 @@ + + + + + + + +IRremoteESP8266: IRToshibaAC Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Toshiba A/C messages. + More...

+ +

#include <ir_Toshiba.h>

+
+Collaboration diagram for IRToshibaAC:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRToshibaAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kToshibaACMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (const bool useRaw=false)
 Get the operating mode setting of the A/C. More...
 
void setRaw (const uint8_t newState[])
 Set the internal state from a valid code for this protocol. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kToshibaACStateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (const uint16_t length=kToshibaACStateLength)
 Calculate & set the checksum for the current internal state of the remote. More...
 
+ + + + +

+Static Private Member Functions

static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kToshibaACStateLength)
 Calculate the checksum for a given state. More...
 
+ + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kToshibaACStateLength]
 The state in IR code form. More...
 
uint8_t mode_state
 
+

Detailed Description

+

Class for handling detailed Toshiba A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRToshibaAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRToshibaAC::IRToshibaAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRToshibaAC::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRToshibaAC::calcChecksum (const uint8_t state[],
const uint16_t length = kToshibaACStateLength 
)
+
+staticprivate
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe array to calc the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRToshibaAC::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRToshibaAC::checksum (const uint16_t length = kToshibaACStateLength)
+
+private
+
+ +

Calculate & set the checksum for the current internal state of the remote.

+
Parameters
+ + +
[in]lengthThe length/size of the internal array to checksum.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRToshibaAC::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRToshibaAC::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRToshibaAC::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRToshibaAC::getMode (const bool useRaw = false)
+
+ +

Get the operating mode setting of the A/C.

+
Parameters
+ + +
[in]useRawIndicate to get the mode from the internal state array.
+
+
+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRToshibaAC::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRToshibaAC::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRToshibaAC::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRToshibaAC::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRToshibaAC::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRToshibaAC::send (const uint16_t repeat = kToshibaACMinRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRToshibaAC::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting (0 is Auto, 1-5 is the speed, 5 is Max)
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRToshibaAC::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+
Note
If we get an unexpected mode, default to AUTO.
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRToshibaAC::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRToshibaAC::setRaw (const uint8_t newState[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]newStateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRToshibaAC::setTemp (const uint8_t degrees)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]degreesThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRToshibaAC::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+
See also
https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L103
+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRToshibaAC::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRToshibaAC::toCommonFanSpeed (const uint8_t spd)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]spdThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRToshibaAC::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRToshibaAC::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRToshibaAC::validChecksum (const uint8_t state[],
const uint16_t length = kToshibaACStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRToshibaAC::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ mode_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRToshibaAC::mode_state
+
+private
+
+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRToshibaAC::remote_state[kToshibaACStateLength]
+
+private
+
+ +

The state in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.map new file mode 100644 index 000000000..483543b42 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 new file mode 100644 index 000000000..b4f1e5ba5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 @@ -0,0 +1 @@ +c09eeaf5909d6c222783788bba05faaf \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRToshibaAC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c1bfa564da481a1b5716bfc5f461d10dffa40f2d GIT binary patch literal 3399 zcmZWsXH-*L8l_i7njlTO@{mW7-a-u|AWa1&ASDPWBBJyTf?z;_XDBZeL0YIHy%#Ae zC4dB^x6p&3H>q=+dGlvxW!;>Wd+$2=?*8_-_r54oWBrQ^+ze!7WEbHu-P>S&4vr8y z8t^^p`DZ3rXpn~bx@70SKbcKfG#S~26S%I{UEefPdeANQk?GJ3@&pEhPwX$lW_uQ& zisrGvi^ne&xIgKPt9pi9o&I%uqxXp>HpL(u6DDsLXZqT(bN4Xw3{h{ zeqXy-^0aU^n&Ks6QD$xJxAnRZ_jD^NhWnAP=GD4HR6Y9APH~W43`TaDmt8PI6Kgv^ zw@&7Hrc$p>2v+;>;RAww=2?Dz z{_JR(!=oc+0XYh0rwYp=!tq70JUWzR6pR=sMX_cYCXhYIqFP~XfO&bzM`xK@S*@*` zj)T*o5MdbzQ0K=knwUMk55$ z)zy^-2^ycW-%~!S?3g$_JdA($?q!zP$##zvasQIWN&M!fdtguyM%tbNYn*-?&&|yZ zGcM6uAUxJj{A9?wafd`=A-DEY5y1^(d8W)jZqJ%9xuQ7PInkB*`?!$FJsVN|u$E zm)G-EBw`wwZNpY#af2p2Y{WK%4~wVQ^z~J0@FpP_yA$7V$wtz>XPKOi zp5E+PteU!doi~Zw(b3W6mzI_maak*zhJ0Xj6b6M-H#awz3`M7Xojz^FJM6obJj3Y`ijbF^T2?q z+hlFnu#0((r38mjY{~T%PFC`h(^JbbBsGtsTTVd%ijtOTv-?J=DFV@5VpZd=k}jv9 zKzLC{$H?gLJKm#{34Q1)1wC6T6bH*TilruHxaw#y_?P&bSc|T)*2w=>>Orc+w@a z{>yt&&15lhFjMh}tRl-kR%gf3dSzBQl3FoF*9RYnhw53&XluR*X157nXnFw)c*uF)a@85#>SgG@#lN@C zq<<$T@%}q!oh{Q=oevK)a8q-Sq7zv8M$+!G+k9PQr^9BRta$N`q)hQ8Il=ze3OqCK z2x%D1q!a5&t}#fwjfAf!TC7P@iPmjf6b!;EN2UqeEp7tVA+@XCT6-2} zDyZdsTj=ABe6`Dc{Eg#lTe~!aaEY#}DhT6wxI07NdedOv)l>cg5t|}+JJktT1CEoz z)%oX;?a#*SyCFK_sNCa^vvXt5Ju^1t$>f-HRUcM1HXU>G zL=~CLVHZ&Wfy{}Sov$eJXE8s!J3@~zqee%Bj?nrJw?WS9GzsbR39Zj33MMgnR z?gcX%lf3Z$%~6Lq7H;lwg}FZR7+^|dwgWwIPnHn-f|J~p%uL|k38NSYhUO>t4e%rZx7drV%pP%Jv{_kB>#t^uyA<4 z#(5ghqRm~rNe%q`^kAmz+qYRDBuczY+S=N_!~!e~23y%yI_n!K-f>4Fg$fD^z_k}1 z9)7?ZQLkS=+FL0PKJ}-$bhWoT@kSMc&YcM6g~de~FXG+uii!!Cgt$0i_?~U&Bf0WN z--ReBDeF8}S)-WvvOax^N3mVshw-M|!%k06UwNy?4qf#$PO7h08N}mdxZi>^3Qxy7 z_SQy*chv*-;}a5e0|V6zlO=O=a&m^xfcG@+4jSG{Rd_pA;q0-!0GBUmBJQ@mVw8AL zpYRx;S7!H_!Z-s`l2>9`5ji?~pFkkM3=DvZhO4S-v0uI{^Y9yUl9a8nmsgbv7fU7G zbfcf_9jvkA_bg~cWF&z^G6IGKKwpyy8(?JRW1^i2I^c`Wl16sC*1#Q)KPmk_Fc8}H zkbpLUe8|g-e9NOq@h2|Ks>aO`%;ZC7=L+|^HU;yIv(sbCPj=)1`#&d8W?IZsRDb?Qq) zB`0(CLyjc^4%W@_k~WPX#CSEByP9NUI*N-WkPZ&0xH#vvA0;_hY|YI20e@j(p_rtk z(^$D96%|#!M=P&JFmEa@5{tcVV`Bpni?sW!rd}*>7eLG^ack0}pM{GH1!&W+wsQe& zJ?hGLuCu}=>m=>J`zSCl@HckS((%Ijv6bEPb90}=FF|11+7$Y6SIuiCTonuq42F^t z!0ns!aTJ(eHH6n2o;A>Z3_yK*X9o_4e_r*Z_;aLTa?;xS=P1}QtiJJhy}>1sn}b8o z-QB%ZEoQ&lgE0F!93%gPgNutxPEoNY)p_)j{Tpui=!2OMe$bX-m&NQj2y(LaIp~%< zVDqhOY#>>ITjyWYJ#ukrTYNF)Wj!`F#?Hyj7GR z2nzq!+k5xmhPXI|9mqE&-7(S8ZOAgaviqj&uNHff(aFhQfj}96$ix&CUS56^{0+dd zd98LMXXMNEYa$}?7))1l(6RKD3#28>mSA{tC3SZ?3G9h$@yU}$J) z+2k)@RaFH><@fx16?Qdzwv)EIiBa-d=LO2+I$jAcp|K6zf-1O + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRTrotecESP Member List
+
+
+ +

This is the complete list of members for IRTrotecESP, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_irsendIRTrotecESPprivate
begin(void)IRTrotecESP
calcChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)IRTrotecESPprivatestatic
calibrate(void)IRTrotecESPinline
checksum(void)IRTrotecESPprivate
convertFan(const stdAc::fanspeed_t speed)IRTrotecESP
convertMode(const stdAc::opmode_t mode)IRTrotecESP
getMode(void)IRTrotecESP
getPower(void)IRTrotecESP
getRaw(void)IRTrotecESP
getSleep(void)IRTrotecESP
getSpeed(void)IRTrotecESP
getTemp(void)IRTrotecESP
getTimer(void)IRTrotecESP
IRTrotecESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTrotecESPexplicit
off(void)IRTrotecESP
on(void)IRTrotecESP
remote_stateIRTrotecESPprivate
send(const uint16_t repeat=kTrotecDefaultRepeat)IRTrotecESP
setMode(const uint8_t mode)IRTrotecESP
setPower(const bool state)IRTrotecESP
setRaw(const uint8_t state[])IRTrotecESP
setSleep(const bool on)IRTrotecESP
setSpeed(const uint8_t fan)IRTrotecESP
setTemp(const uint8_t celsius)IRTrotecESP
setTimer(const uint8_t timer)IRTrotecESP
stateReset(void)IRTrotecESP
toCommon(void)IRTrotecESP
toCommonFanSpeed(const uint8_t speed)IRTrotecESPstatic
toCommonMode(const uint8_t mode)IRTrotecESPstatic
toString(void)IRTrotecESP
validChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)IRTrotecESPstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP.html new file mode 100644 index 000000000..36bcf53a1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP.html @@ -0,0 +1,1069 @@ + + + + + + + +IRremoteESP8266: IRTrotecESP Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Trotec A/C messages. + More...

+ +

#include <ir_Trotec.h>

+
+Collaboration diagram for IRTrotecESP:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRTrotecESP (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kTrotecDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool state)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t celsius)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setSpeed (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getSpeed (void)
 Get the current fan speed setting. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
uint8_t getTimer (void)
 Get the timer time in nr. of Hours. More...
 
void setTimer (const uint8_t timer)
 Set the timer time in nr. of Hours. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t state[])
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kTrotecStateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + +

+Private Member Functions

void checksum (void)
 Calculate & set the checksum for the current internal state of the remote. More...
 
+ + + + +

+Static Private Member Functions

static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kTrotecStateLength)
 Calculate the checksum for a given state. More...
 
+ + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kTrotecStateLength]
 Remote state in IR code form. More...
 
+

Detailed Description

+

Class for handling detailed Trotec A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRTrotecESP()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRTrotecESP::IRTrotecESP (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRTrotecESP::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t IRTrotecESP::calcChecksum (const uint8_t state[],
const uint16_t length = kTrotecStateLength 
)
+
+staticprivate
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + + +
[in]stateThe array to calc the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRTrotecESP::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRTrotecESP::checksum (void )
+
+private
+
+ +

Calculate & set the checksum for the current internal state of the remote.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRTrotecESP::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRTrotecESP::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRTrotecESP::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRTrotecESP::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRTrotecESP::getRaw (void )
+
+ +

Get a PTR to the internal state/code for this protocol.

+
Returns
PTR to a code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRTrotecESP::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSpeed()

+ +
+
+ + + + + + + + +
uint8_t IRTrotecESP::getSpeed (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRTrotecESP::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTimer()

+ +
+
+ + + + + + + + +
uint8_t IRTrotecESP::getTimer (void )
+
+ +

Get the timer time in nr. of Hours.

+
Returns
Nr. of Hours.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRTrotecESP::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRTrotecESP::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRTrotecESP::send (const uint16_t repeat = kTrotecDefaultRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRTrotecESP::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRTrotecESP::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + +
void IRTrotecESP::setRaw (const uint8_t state[])
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]stateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRTrotecESP::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSpeed()

+ +
+
+ + + + + + + + +
void IRTrotecESP::setSpeed (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRTrotecESP::setTemp (const uint8_t celsius)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]celsiusThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + +
void IRTrotecESP::setTimer (const uint8_t timer)
+
+ +

Set the timer time in nr. of Hours.

+
Parameters
+ + +
[in]timerNr. of Hours. Max is kTrotecMaxTimer
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRTrotecESP::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRTrotecESP::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRTrotecESP::toCommonFanSpeed (const uint8_t spd)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]spdThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRTrotecESP::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRTrotecESP::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRTrotecESP::validChecksum (const uint8_t state[],
const uint16_t length = kTrotecStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRTrotecESP::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRTrotecESP::remote_state[kTrotecStateLength]
+
+private
+
+ +

Remote state in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.map new file mode 100644 index 000000000..758a9b69c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 new file mode 100644 index 000000000..eafdf26cf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 @@ -0,0 +1 @@ +247690158326910cfd854f7b6909ded9 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRTrotecESP__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fc1d54d1302b81df7a1a454706238fc2d535eda1 GIT binary patch literal 3270 zcmZ8kc|25m8y{B@D*G-HS+ZnJBr1C}QK^w35u>pTCdOE1ly1mKcSM#M!i_G<7Sha6 zmV_*0;u`zJWNVVCN%r^Gd++6? z&w+>n7k-xjxU(cl>mUgDIy=}xwtt?FXr&nt$nIDt+mjcfNgOiX#ho|#>WZMrjKggK z!Yx)}oa`ONscYBGwW9O)1g==1WC(DA2jQZ@*e|=|l97+TwT9J%j^p+9wa>Vx#>O-sC(rq~0Oh(=O3HUu%fu|`@kuZ*>tCH1Y6%!p#A z9u+w%1@BAfnsH-m%em*@0wLS{yw{ZTVVcRH-Jx7m^X3rJ-}!uegSL}|&c%vXeSN4y zsqRWKw0ucTsLx;?*03E?R8-_!23|@_OScFoVdNG}&%S=bl_DJa8QwgqtCMyj&dtqL zMQW+Jf@Si$Q`6G?H`jQrZw@-0BC5mT@LfVeg%uU=?uhrogY{7+Mn*#x5(eCTlFhRNs8pLgus89vvqip4oQizuWCU@(|l ziHU!dmF4D>$vccM=hFjc7-y~Ri0Un^t$a_)%himHGsY*okzibCvVsmLU8oQZHCiBg4IChnPPA@E21mk>s9@Swm1MeKMiP2cB+vUq$ zzlz8XH=;`|y~+n8zD%9Ot#izZii=YSgtkDFnlRQWB_$=${}a0mgZq(nexZGRed+o6 z%DV*;EuU6b(+{m5k$xA5g(xd4UkeC02ZOyOAH)0r{q5}Od0bd{v#H7IU4Su21*R*r zvAO9{hm`K@?0i2sc-2I~JaR$Gg1k4Q)8u3QFZ}!-jS&a0U%&pmp@A_x>H8m1uW@bK90oRs4w70dlvpAeH zF)`(jmX?ao}vcOMs?ofI$gzL>AfWYrUb=wHnFn?OH9 zwKFygck}V&R&zlP7uoXo6?T&7(|e$}$2a?)pHC*Vq5k9Gwid)^wtc%k zTpd=&;5_KAHQj8`i`y43qq=|IQ43AtaJwMGEYl_K_IO*IgU`Gq+$xGO#DYmvGA?b~ zXc7~5?3LgNT7>Mo=U%OYE%6NaX6gld_sdlo_-dU9<0;NF$=~$TX>Z1Fi^=$xW&4F* zM7QC}p%mh!=IxQHaFJVUo8LVnN75|)98^LOF=AP&W_>b&#~EkR3;UvOdWchg!?5s` zYH9Um_ax3FRi2HtWZWEoTRu5yzEQERcva@T`xQn1J#0T&Zs`1(8$&!JBswvn_p5!V zw=#vFI8Y^m-6QynH5I)SVBTRaA-k73$wa7dzh9v&dG0_rKia}yz#8A{{Yo378bxJB zmosf=S0}C~2d-6h=@icYUe0VQ+Rn8O9^sXYLf(mHoB1*w5=o_cM}qt?C}{|8#NbO$ z3mzxtGwoQB`k}ms`IqYaEk6Ga!|dXgx;r|H<=H&@sFR2uEqc3<&RyTrxCRfj4()BxLUZEO+&i&czgbG*8ak;b+5BFvzHWcrM> zl+@d4W5cWD%OMkjcszb}DJQ!MN*kq$V(?mJgGf5E4zTI_C#KD{YwCJ>dJ!!aiLYN3 zr(0RDIJ?il%(TKRg%;l%qe$=CZbz0;!;K^*hnW7Y&qw&2{NMOJ#0v$t1O~cFS24b zLp+lV^oH3vW}ZKd;eS~~i97f^uAtOt+O7P|&f>1~24$B29ip^RLrr~*MV^v1ZcL`y zMgEN%|GrSgv2^B9qTqB6BL8(?-_nH0*yihrDQm^8`)yHtlIafEg@JZ2A zORE~2bM)es+{Z?HZ0+pQ8VO$BUjsz`cb)SCDC1+t6hRFK1_ox9&zC~^re*{rd|yEcR7bS7%J#RNb8xucdEHhw({ z85A_Xw4{0TXm(xDpAr%hM!xX~1VTpdvMuns!otGy5|geKL-SERxu(BAetgv^XSf+} zop&VUfPq2Su$m(dXB8S6dd=V8Lx;NlUjYqNsek)l0OswN+JB`O@rdpwPV` zAtBr-g1y?og9p_$G>Qh1%o=}@22}cZ_u3k75l)NA{P822N~MN{hpSpzlEA#+_7DS} zO-(Z=CcL+Ri7qSGg!@HeH8N6`nzxmmh`WS^70|2vf_v{1iKikXP3d$xb^S91=q zH{Us<*HNg_sw%Mr%mg+`Ge7#)9>pVJ-{#z`);}3Tj-V!7&}d`NhS0}A+d=2JT&~=w zWj7eiF+Tn{Fy{vkA4*C|wdEKi-Vl0PTluZ6t)n<2?Vxxs(6hb#N;!fZ$iV=2_e@e_ zXfMfJN=j<1nfw_A`s$pe%O_yOA|H><0v>8!>k5owap-ArZ7uqJunmX9Q92eySZZ2_ z=5MbpRu0W7qTP@1y!cO@4sRh)^%ZW8buutE;d$)g)m+hjlwYGQ|^muM@v2}Db zue1P{D{8%Q-}#|Fox!jH=mCe{8wQvsLqqjT&lZ%Fm!|?z1t@X|3eq_Xc0aSXm){^n zbp9~)%P#J;mzS4U;PxTP z|F4Aq=oPxJzGwNH;)QBGwac(ig%k?S;35XY%e%3&*!$~$Eb*Pvl&7a)p^^EP%Bxl> VdIYo&34Tl + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRVestelAc Member List
+
+
+ +

This is the complete list of members for IRVestelAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_getTimer(const uint8_t offset)IRVestelAcprivate
_irsendIRVestelAcprivate
_setTimer(const uint16_t minutes, const uint8_t offset)IRVestelAcprivate
begin(void)IRVestelAc
calcChecksum(const uint64_t state)IRVestelAcstatic
calibrate(void)IRVestelAcinline
checksum(void)IRVestelAcprivate
convertFan(const stdAc::fanspeed_t speed)IRVestelAcstatic
convertMode(const stdAc::opmode_t mode)IRVestelAcstatic
getFan(void)IRVestelAc
getIon(void)IRVestelAc
getMode(void)IRVestelAc
getOffTimer(void)IRVestelAc
getOnTimer(void)IRVestelAc
getPower(void)IRVestelAc
getRaw(void)IRVestelAc
getSleep(void)IRVestelAc
getSwing(void)IRVestelAc
getTemp(void)IRVestelAc
getTime(void)IRVestelAc
getTimer(void)IRVestelAc
getTurbo(void)IRVestelAc
IRVestelAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRVestelAcexplicit
isOffTimerActive(void)IRVestelAc
isOnTimerActive(void)IRVestelAc
isTimeCommand(void)IRVestelAc
isTimerActive(void)IRVestelAc
off(void)IRVestelAc
on(void)IRVestelAc
remote_stateIRVestelAcprivate
remote_time_stateIRVestelAcprivate
send(const uint16_t repeat=kNoRepeat)IRVestelAc
setAuto(const int8_t autoLevel)IRVestelAc
setFan(const uint8_t fan)IRVestelAc
setIon(const bool on)IRVestelAc
setMode(const uint8_t mode)IRVestelAc
setOffTimer(const uint16_t minutes)IRVestelAc
setOffTimerActive(const bool on)IRVestelAc
setOnTimer(const uint16_t minutes)IRVestelAc
setOnTimerActive(const bool on)IRVestelAc
setPower(const bool on)IRVestelAc
setRaw(const uint8_t *newState)IRVestelAc
setRaw(const uint64_t newState)IRVestelAc
setSleep(const bool on)IRVestelAc
setSwing(const bool on)IRVestelAc
setTemp(const uint8_t temp)IRVestelAc
setTime(const uint16_t minutes)IRVestelAc
setTimer(const uint16_t minutes)IRVestelAc
setTimerActive(const bool on)IRVestelAc
setTurbo(const bool on)IRVestelAc
stateReset(void)IRVestelAc
toCommon(void)IRVestelAc
toCommonFanSpeed(const uint8_t speed)IRVestelAcstatic
toCommonMode(const uint8_t mode)IRVestelAcstatic
toString(void)IRVestelAc
use_time_stateIRVestelAcprivate
validChecksum(const uint64_t state)IRVestelAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc.html new file mode 100644 index 000000000..32ca0cf07 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc.html @@ -0,0 +1,1758 @@ + + + + + + + +IRremoteESP8266: IRVestelAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Vestel A/C messages. + More...

+ +

#include <ir_Vestel.h>

+
+Collaboration diagram for IRVestelAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRVestelAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kNoRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void)
 Get the value of the current power setting. More...
 
void setAuto (const int8_t autoLevel)
 Set Auto mode/level of the A/C. More...
 
void setTimer (const uint16_t minutes)
 Set Timer option of A/C. More...
 
uint16_t getTimer (void)
 Get the Timer time of A/C. More...
 
void setTime (const uint16_t minutes)
 Set the A/C's internal clock. More...
 
uint16_t getTime (void)
 Get the A/C's internal clock's time. More...
 
void setOnTimer (const uint16_t minutes)
 Set the On timer time on the A/C. More...
 
uint16_t getOnTimer (void)
 Get the A/C's On Timer time. More...
 
void setOffTimer (const uint16_t minutes)
 Set the Off timer time on the A/C. More...
 
uint16_t getOffTimer (void)
 Get the A/C's Off Timer time. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setRaw (const uint8_t *newState)
 Set the internal state from a valid code for this protocol. More...
 
void setRaw (const uint64_t newState)
 Set the internal state from a valid code for this protocol. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state/code for this protocol. More...
 
void setSwing (const bool on)
 Set the Swing Roaming setting of the A/C. More...
 
bool getSwing (void)
 Get the Swing Roaming setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo setting of the A/C. More...
 
bool getTurbo (void)
 Get the Turbo setting of the A/C. More...
 
void setIon (const bool on)
 Set the Ion (Filter) setting of the A/C. More...
 
bool getIon (void)
 Get the Ion (Filter) setting of the A/C. More...
 
bool isTimeCommand (void)
 Is the current state a time command? More...
 
bool isOnTimerActive (void)
 Get if the On Timer is active on the A/C. More...
 
void setOnTimerActive (const bool on)
 Set the On timer to be active on the A/C. More...
 
bool isOffTimerActive (void)
 Get if the Off Timer is active on the A/C. More...
 
void setOffTimerActive (const bool on)
 Set the Off timer to be active on the A/C. More...
 
bool isTimerActive (void)
 Get if the Timer is active on the A/C. More...
 
void setTimerActive (const bool on)
 Set the timer to be active on the A/C. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + + + + +

+Private Member Functions

void checksum (void)
 Calculate & set the checksum for the current internal state of the remote. More...
 
void _setTimer (const uint16_t minutes, const uint8_t offset)
 Set a given timer time at a given bit offset. More...
 
uint16_t _getTimer (const uint8_t offset)
 Get the number of minutes a timer is set for. More...
 
+ + + + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint64_t remote_state
 The state of the IR remote in IR code form. More...
 
uint64_t remote_time_state
 The time state of the remote in code form. More...
 
bool use_time_state
 
+

Detailed Description

+

Class for handling detailed Vestel A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRVestelAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRVestelAc::IRVestelAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _getTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRVestelAc::_getTimer (const uint8_t offset)
+
+private
+
+ +

Get the number of minutes a timer is set for.

+
Parameters
+ + +
[in]offsetNr. of bits offset from the start of the state.
+
+
+
Returns
The time expressed in nr. of minutes.
+ +
+
+ +

◆ _setTimer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRVestelAc::_setTimer (const uint16_t minutes,
const uint8_t offset 
)
+
+private
+
+ +

Set a given timer time at a given bit offset.

+
Parameters
+ + + +
[in]minutesTime in nr. of minutes.
[in]offsetNr. of bits offset from the start of the state.
+
+
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRVestelAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calcChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRVestelAc::calcChecksum (const uint64_t state)
+
+static
+
+ +

Calculate the checksum for a given state.

+
Parameters
+ + +
[in]stateThe state to calc the checksum of.
+
+
+
Returns
The calculated checksum value.
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRVestelAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRVestelAc::checksum (void )
+
+private
+
+ +

Calculate & set the checksum for the current internal state of the remote.

+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRVestelAc::convertFan (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRVestelAc::convertMode (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRVestelAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getIon()

+ +
+
+ + + + + + + + +
bool IRVestelAc::getIon (void )
+
+ +

Get the Ion (Filter) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRVestelAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRVestelAc::getOffTimer (void )
+
+ +

Get the A/C's Off Timer time.

+
Returns
The time expressed in nr. of minutes.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRVestelAc::getOnTimer (void )
+
+ +

Get the A/C's On Timer time.

+
Returns
The time expressed in nr. of minutes.
+ +
+
+ +

◆ getPower()

+ +
+
+ + + + + + + + +
bool IRVestelAc::getPower (void )
+
+ +

Get the value of the current power setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint64_t IRVestelAc::getRaw (void )
+
+ +

Get a copy of the internal state/code for this protocol.

+
Returns
A code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRVestelAc::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
bool IRVestelAc::getSwing (void )
+
+ +

Get the Swing Roaming setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRVestelAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTime()

+ +
+
+ + + + + + + + +
uint16_t IRVestelAc::getTime (void )
+
+ +

Get the A/C's internal clock's time.

+
Returns
The time expressed in nr. of minutes past midnight.
+ +
+
+ +

◆ getTimer()

+ +
+
+ + + + + + + + +
uint16_t IRVestelAc::getTimer (void )
+
+ +

Get the Timer time of A/C.

+
Returns
The number of minutes of time on the timer.
+ +
+
+ +

◆ getTurbo()

+ +
+
+ + + + + + + + +
bool IRVestelAc::getTurbo (void )
+
+ +

Get the Turbo setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ isOffTimerActive()

+ +
+
+ + + + + + + + +
bool IRVestelAc::isOffTimerActive (void )
+
+ +

Get if the Off Timer is active on the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ isOnTimerActive()

+ +
+
+ + + + + + + + +
bool IRVestelAc::isOnTimerActive (void )
+
+ +

Get if the On Timer is active on the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ isTimeCommand()

+ +
+
+ + + + + + + + +
bool IRVestelAc::isTimeCommand (void )
+
+ +

Is the current state a time command?

+
Returns
true, if the state is a time message. Otherwise, false.
+ +
+
+ +

◆ isTimerActive()

+ +
+
+ + + + + + + + +
bool IRVestelAc::isTimerActive (void )
+
+ +

Get if the Timer is active on the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ off()

+ +
+
+ + + + + + + + +
void IRVestelAc::off (void )
+
+ +

Set the requested power state of the A/C to off.

+ +
+
+ +

◆ on()

+ +
+
+ + + + + + + + +
void IRVestelAc::on (void )
+
+ +

Set the requested power state of the A/C to on.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void IRVestelAc::send (const uint16_t repeat = kNoRepeat)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + +
[in]repeatNr. of times the message will be repeated.
+
+
+ +
+
+ +

◆ setAuto()

+ +
+
+ + + + + + + + +
void IRVestelAc::setAuto (const int8_t autoLevel)
+
+ +

Set Auto mode/level of the A/C.

+
Parameters
+ + +
[in]autoLevelThe auto mode/level setting.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRVestelAc::setFan (const uint8_t fan)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]fanThe desired setting.
+
+
+ +
+
+ +

◆ setIon()

+ +
+
+ + + + + + + + +
void IRVestelAc::setIon (const bool on)
+
+ +

Set the Ion (Filter) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRVestelAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+
Note
If we get an unexpected mode, default to AUTO.
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRVestelAc::setOffTimer (const uint16_t minutes)
+
+ +

Set the Off timer time on the A/C.

+
Parameters
+ + +
[in]minutesTime in nr. of minutes.
+
+
+ +
+
+ +

◆ setOffTimerActive()

+ +
+
+ + + + + + + + +
void IRVestelAc::setOffTimerActive (const bool on)
+
+ +

Set the Off timer to be active on the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRVestelAc::setOnTimer (const uint16_t minutes)
+
+ +

Set the On timer time on the A/C.

+
Parameters
+ + +
[in]minutesTime in nr. of minutes.
+
+
+ +
+
+ +

◆ setOnTimerActive()

+ +
+
+ + + + + + + + +
void IRVestelAc::setOnTimerActive (const bool on)
+
+ +

Set the On timer to be active on the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setPower()

+ +
+
+ + + + + + + + +
void IRVestelAc::setPower (const bool on)
+
+ +

Change the power setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw() [1/2]

+ +
+
+ + + + + + + + +
void IRVestelAc::setRaw (const uint64_t newState)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]newStateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setRaw() [2/2]

+ +
+
+ + + + + + + + +
void IRVestelAc::setRaw (const uint8_t * newState)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + +
[in]newStateA valid code for this protocol.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRVestelAc::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRVestelAc::setSwing (const bool on)
+
+ +

Set the Swing Roaming setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRVestelAc::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTime()

+ +
+
+ + + + + + + + +
void IRVestelAc::setTime (const uint16_t minutes)
+
+ +

Set the A/C's internal clock.

+
Parameters
+ + +
[in]minutesThe time expressed in nr. of minutes past midnight.
+
+
+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + +
void IRVestelAc::setTimer (const uint16_t minutes)
+
+ +

Set Timer option of A/C.

+
Parameters
+ + +
[in]minutesNr of minutes the timer is to be set for.
+
+
+
Note
Valid arguments are 0, 0.5, 1, 2, 3 and 5 hours (in minutes). 0 disables the timer.
+ +
+
+ +

◆ setTimerActive()

+ +
+
+ + + + + + + + +
void IRVestelAc::setTimerActive (const bool on)
+
+ +

Set the timer to be active on the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTurbo()

+ +
+
+ + + + + + + + +
void IRVestelAc::setTurbo (const bool on)
+
+ +

Set the Turbo setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRVestelAc::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+
Note
Power On, Mode Auto, Fan Auto, Temp = 25C/77F
+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRVestelAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRVestelAc::toCommonFanSpeed (const uint8_t spd)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]spdThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRVestelAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRVestelAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRVestelAc::validChecksum (const uint64_t state)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + +
[in]stateThe state to verify the checksum of.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRVestelAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint64_t IRVestelAc::remote_state
+
+private
+
+ +

The state of the IR remote in IR code form.

+ +
+
+ +

◆ remote_time_state

+ +
+
+ + + + + +
+ + + + +
uint64_t IRVestelAc::remote_time_state
+
+private
+
+ +

The time state of the remote in code form.

+ +
+
+ +

◆ use_time_state

+ +
+
+ + + + + +
+ + + + +
bool IRVestelAc::use_time_state
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.map new file mode 100644 index 000000000..0f380bbd5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.md5 new file mode 100644 index 000000000..c193a6f83 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.md5 @@ -0,0 +1 @@ +f54c4cec990e7a1ff1e10a366cb92198 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRVestelAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0622536caad1afcdbe0a3cf30ffedcc154e143 GIT binary patch literal 3288 zcmZu!c{E$u9}m;o$Pk)c{Ut>yQ6&isBefBfz{?|siZ_uO~y{oe0qc_~gPgs7055C{Yk zMcP_j0wNB$$pU=9Q%FU92MByV_6RG`;rFYUR-Od{iKHW~&R>Zt_*6)Cl5}Rhu}C{1 zWLuFTqS_7`Jk|~6`P^ACQ^8)({c+nw!bpVCrDy0!Rm-GjDBb&=FYCs@aNm52O@C@a z{cMse+x~&7Wsoc5iaXU7%Yl2ZUYMDVnYM@>vvjg*o@~k4A6OokiXaTeZO5$?na2>e z-H`%HPG}La5wV~AeJVO2_cR^6zlS+L;fm_&dAhV`K`LhX?w2p2isZepv}_Bm@^VL_ zaO{_M{>$QNv&Ogof-sp(sj2SYGhTSx+1ZsB^ku5rC#R>=acBGcsry?K5D4Vm@UZ2jOA=tSFQCpQ-eVFH zxdzw8Ha9mPXJ^-v4-bN-76g^ldfVgq=~ij3O(BK0_V&lmfd6>EJpR&}NPJaLGrE*W zp-^@XzI{ey-)46l(^+WlGOP~@Ojb!;v5(?Fwotsmye`{5nr;OW?9~l|B=R*0&Eq~JOr_VF9uz*0L#bsq> z6A}|wXX3%(Tg$E>IXO8Hh8k5n8JcGpEY)^+V7f5)B&UCSW8<;KV4or8lo5xyU) ztE-jQe&FTRrnSJ+fuji+DzS!0NrkUW8c)ZrI~sdXnBg0X=o`Vot}g>bDK5`TYHGlq zo}TjZ@{5a$KM9=i8NSgl7cw|8kv~0+{qW%f2S&r=vHP2&UESUKdU|>* zjl8_Pm|CBs`EYz0jix}uUL+8OP4QmmzI24t)wa}O%4nOmz0*~S&+}Q z5I&VOH_O1`@EN;!pWaMWD+FSW%SGO}q1oHpYh-H5de8+#)fzVm1bzofo|~`gXzdXxxZcPsteFxauHK`ovHaHUGDB-_GS|V8^^_QiRoY zczCnW@1m#^ACz1nbYas&@>H(F)f=}3Q@*C^Xd(PuA-YwqCBpnFpafU1iv9ThDH|<> zzcJ+W@*3Vor)Z@eckpsbMJdoIpp98ll34g{qX`{kd8fMMz0i;YI8~~QvPkt=)DeM`|Tp>>Nnmu-oGTYhHngA2cL4m><{V42Oxdt^Bj3S@<@$R zl3ET|rxVAc(ou3e9t&T09m&M#_+R-T8dWW9{i%f--OhHT<>9M+=d@Ia%VF;hvyf<8 ztku*uGW&Q6n}>3^zC_fJx~^6vl5dH;kl$Cs_o=D|{XzG4y5V}pjHn6dO1d3Ud=Y66TV8m1hd z$q4lB&(SS^@#5VFZwCQu!U0OM9939H5I7cK1NFA^vk`82Z6^Y-jkP zqtd#!W)IZ4ZY70c9Uc9e8jHhKB|mr|6-~pszrKYuTkSe_5(c}H>!9|^3<`y!FJD%U zj)}33i);O|u>lEq=_;Vq)t9Yh?e1O>c=M(tKs^AR;U>>iFWZcf4;Jc;wp~XPMr7?V zzz8#Z8nCxT%`olQ*jUbBqtU7H`yr|i5>?V;Z=op666TFF`3&mzbWGK?hSd4_0HRY} zW8+yV9d{%4r@h-wb>2a6{Zo0-2_F1z@{b)P2@1F{C;b-go-?!qU5f-Jq}A-lyB%`X z2A^1vu^}`Mb5(V9H{EwgAGq_ZLwm>rAj|(8!{2%YYZ(HUkJ78wpuiYtoOw?Mw7mQ}$GRHW6rde}4cF`w4V4mpls67f zi1|#*86LhAob-dkg=|2*9B?@8OqJd_CvA_{kKICE`TtqdNTn74>bJMQ&;9)Q`e2c{ zii%3{P~abL-A#$Id&j*6GFu-o_>;+8os1X+grm32F(1@@ z8m|q|d>$OH=++eS^yyRUgLcvPqoX~5)v$GNu%a;Q0HxCLY+Sa`bafwl^9BTs+fm9? z5toq>aF?Y5-w)_QP6xu)09h&-3IvVS`tmzEI#M@=?IF_Ab8~YSLPB&b1pv*7*+7pqTfeOP`uGImaGdfd zalA8KDaT~eZB8mH2jTGxz>A-sU+B{FrrFt9OFKIuV4W}+OfPsuTV6pSEG*1>YkB<0 z(W8$tGs78}ZY{jFiK*!j_m-874KLYct~0)@zM&y(jf1SKtNXIKNoO!b(`^iD+63M7e5cA3NR!lIXWIEPn@{Z+}s@efCci6OHNLOLTAVj+S!qb4=~syLWkkVgTCS-ufVCeqJ92>w>dl zFL-+^0p|gn)G9K_aw1;6?B*t{XDRhlXsBK^O_7GpC@)tB z5N~$4w+=gdc6egKo=7zQ?rV3&lJXjb7rw2uWc>Uy&$(UBF=NL}6_}hTgTW~Mb!~in z97y@Yyu99fqQ}Q*F>t`r8W|glOGw-WmJgI7fI`3&k2T)RH=}y^_?$E}G^}!KLWQVe zYp4{B)2ID`G?fkmu2@i1^l4RM0crra0d$GW$(i`G#xeJ!AJ#WF=O!c^ z+1%=bJia(o2x*P7s + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRWhirlpoolAc Member List
+
+
+ +

This is the complete list of members for IRWhirlpoolAc, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_desiredtempIRWhirlpoolAcprivate
_irsendIRWhirlpoolAcprivate
_setMode(const uint8_t mode)IRWhirlpoolAcprivate
_setTemp(const uint8_t temp, const bool remember=true)IRWhirlpoolAcprivate
begin(void)IRWhirlpoolAc
calibrate(void)IRWhirlpoolAcinline
checksum(const uint16_t length=kWhirlpoolAcStateLength)IRWhirlpoolAcprivate
convertFan(const stdAc::fanspeed_t speed)IRWhirlpoolAc
convertMode(const stdAc::opmode_t mode)IRWhirlpoolAc
enableOffTimer(const bool on)IRWhirlpoolAc
enableOnTimer(const bool on)IRWhirlpoolAc
enableTimer(const uint16_t pos, const bool state)IRWhirlpoolAcprivate
getClock(void)IRWhirlpoolAc
getCommand(void)IRWhirlpoolAc
getFan(void)IRWhirlpoolAc
getLight(void)IRWhirlpoolAc
getMode(void)IRWhirlpoolAc
getModel(void)IRWhirlpoolAc
getOffTimer(void)IRWhirlpoolAc
getOnTimer(void)IRWhirlpoolAc
getPowerToggle(void)IRWhirlpoolAc
getRaw(const bool calcchecksum=true)IRWhirlpoolAc
getSleep(void)IRWhirlpoolAc
getSuper(void)IRWhirlpoolAc
getSwing(void)IRWhirlpoolAc
getTemp(void)IRWhirlpoolAc
getTempOffset(void)IRWhirlpoolAcprivate
getTime(const uint16_t pos)IRWhirlpoolAcprivate
IRWhirlpoolAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRWhirlpoolAcexplicit
isOffTimerEnabled(void)IRWhirlpoolAc
isOnTimerEnabled(void)IRWhirlpoolAc
isTimerEnabled(const uint16_t pos)IRWhirlpoolAcprivate
remote_stateIRWhirlpoolAcprivate
send(const uint16_t repeat=kWhirlpoolAcDefaultRepeat, const bool calcchecksum=true)IRWhirlpoolAc
setClock(const uint16_t minspastmidnight)IRWhirlpoolAc
setCommand(const uint8_t code)IRWhirlpoolAc
setFan(const uint8_t speed)IRWhirlpoolAc
setLight(const bool on)IRWhirlpoolAc
setMode(const uint8_t mode)IRWhirlpoolAc
setModel(const whirlpool_ac_remote_model_t model)IRWhirlpoolAc
setOffTimer(const uint16_t minspastmidnight)IRWhirlpoolAc
setOnTimer(const uint16_t minspastmidnight)IRWhirlpoolAc
setPowerToggle(const bool on)IRWhirlpoolAc
setRaw(const uint8_t new_code[], const uint16_t length=kWhirlpoolAcStateLength)IRWhirlpoolAc
setSleep(const bool on)IRWhirlpoolAc
setSuper(const bool on)IRWhirlpoolAc
setSwing(const bool on)IRWhirlpoolAc
setTemp(const uint8_t temp)IRWhirlpoolAc
setTime(const uint16_t pos, const uint16_t minspastmidnight)IRWhirlpoolAcprivate
stateReset(void)IRWhirlpoolAc
toCommon(void)IRWhirlpoolAc
toCommonFanSpeed(const uint8_t speed)IRWhirlpoolAcstatic
toCommonMode(const uint8_t mode)IRWhirlpoolAcstatic
toString(void)IRWhirlpoolAc
validChecksum(const uint8_t state[], const uint16_t length=kWhirlpoolAcStateLength)IRWhirlpoolAcstatic
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc.html new file mode 100644 index 000000000..3ef4ae843 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc.html @@ -0,0 +1,1799 @@ + + + + + + + +IRremoteESP8266: IRWhirlpoolAc Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for handling detailed Whirlpool A/C messages. + More...

+ +

#include <ir_Whirlpool.h>

+
+Collaboration diagram for IRWhirlpoolAc:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRWhirlpoolAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kWhirlpoolAcDefaultRepeat, const bool calcchecksum=true)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setPowerToggle (const bool on)
 Change the power toggle setting. More...
 
bool getPowerToggle (void)
 Get the value of the current power toggle setting. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void)
 Get the Sleep setting of the A/C. More...
 
void setSuper (const bool on)
 Set the Super (Turbo/Jet) setting of the A/C. More...
 
bool getSuper (void)
 Get the Super (Turbo/Jet) setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void)
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void)
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void)
 Get the operating mode setting of the A/C. More...
 
void setSwing (const bool on)
 Set the (vertical) swing setting of the A/C. More...
 
bool getSwing (void)
 Get the (vertical) swing setting of the A/C. More...
 
void setLight (const bool on)
 Set the Light (Display/LED) setting of the A/C. More...
 
bool getLight (void)
 Get the Light (Display/LED) setting of the A/C. More...
 
uint16_t getClock (void)
 Get the clock time in nr. of minutes past midnight. More...
 
void setClock (const uint16_t minspastmidnight)
 Set the clock time in nr. of minutes past midnight. More...
 
uint16_t getOnTimer (void)
 Get the On Timer time.. More...
 
void setOnTimer (const uint16_t minspastmidnight)
 Set the On Timer time. More...
 
void enableOnTimer (const bool on)
 Enable the On Timer. More...
 
bool isOnTimerEnabled (void)
 Is the On timer enabled? More...
 
uint16_t getOffTimer (void)
 Get the Off Timer time.. More...
 
void setOffTimer (const uint16_t minspastmidnight)
 Set the Off Timer time. More...
 
void enableOffTimer (const bool on)
 Enable the Off Timer. More...
 
bool isOffTimerEnabled (void)
 Is the Off timer enabled? More...
 
void setCommand (const uint8_t code)
 Set the Command (Button) setting of the A/C. More...
 
uint8_t getCommand (void)
 Get the Command (Button) setting of the A/C. More...
 
whirlpool_ac_remote_model_t getModel (void)
 Get/Detect the model of the A/C. More...
 
void setModel (const whirlpool_ac_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
uint8_t * getRaw (const bool calcchecksum=true)
 Get a copy of the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kWhirlpoolAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivilant. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kWhirlpoolAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivilant. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivilant. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void checksum (const uint16_t length=kWhirlpoolAcStateLength)
 Calculate & set the checksum for the current internal state of the remote. More...
 
uint16_t getTime (const uint16_t pos)
 Get the time in nr. of minutes past midnight. More...
 
void setTime (const uint16_t pos, const uint16_t minspastmidnight)
 Set the time in nr. of minutes past midnight. More...
 
bool isTimerEnabled (const uint16_t pos)
 Is the timer enabled at the given byte offset? More...
 
void enableTimer (const uint16_t pos, const bool state)
 Enable the timer enabled at the given byte offset. More...
 
void _setTemp (const uint8_t temp, const bool remember=true)
 Set the temperature. More...
 
void _setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
int8_t getTempOffset (void)
 Calculate the temp. offset in deg C for the current model. More...
 
+ + + + + + + + + + +

+Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kWhirlpoolAcStateLength]
 The state in IR code form. More...
 
uint8_t _desiredtemp
 The last user explicitly set temperature. More...
 
+

Detailed Description

+

Class for handling detailed Whirlpool A/C messages.

+

Constructor & Destructor Documentation

+ +

◆ IRWhirlpoolAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRWhirlpoolAc::IRWhirlpoolAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _setMode()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRWhirlpoolAc::_setMode (const uint8_t mode)
+
+private
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+
Note
Internal use only.
+ +
+
+ +

◆ _setTemp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRWhirlpoolAc::_setTemp (const uint8_t temp,
const bool remember = true 
)
+
+private
+
+ +

Set the temperature.

+
Parameters
+ + + +
[in]tempThe temperature in degrees celsius.
[in]rememberDo we save this temperature?
+
+
+
Note
Internal use only.
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::begin (void )
+
+ +

Set up hardware to be able to send a message.

+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRWhirlpoolAc::calibrate (void )
+
+inline
+
+ +

Run the calibration to calculate uSec timing offsets for this platform.

+
Returns
The uSec timing offset needed per modulation of the IR Led.
+
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
+ +
+
+ +

◆ checksum()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRWhirlpoolAc::checksum (const uint16_t length = kWhirlpoolAcStateLength)
+
+private
+
+ +

Calculate & set the checksum for the current internal state of the remote.

+
Parameters
+ + +
[in]lengthThe length/size of the internal state array.
+
+
+ +
+
+ +

◆ convertFan()

+ +
+
+ + + + + + + + +
uint8_t IRWhirlpoolAc::convertFan (const stdAc::fanspeed_t speed)
+
+ +

Convert a stdAc::fanspeed_t enum into it's native speed.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ convertMode()

+ +
+
+ + + + + + + + +
uint8_t IRWhirlpoolAc::convertMode (const stdAc::opmode_t mode)
+
+ +

Convert a stdAc::opmode_t enum into its native mode.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The native equivilant of the enum.
+ +
+
+ +

◆ enableOffTimer()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::enableOffTimer (const bool on)
+
+ +

Enable the Off Timer.

+
Parameters
+ + +
[in]ontrue, the timer is enabled. false, the timer is disabled.
+
+
+ +
+
+ +

◆ enableOnTimer()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::enableOnTimer (const bool on)
+
+ +

Enable the On Timer.

+
Parameters
+ + +
[in]ontrue, the timer is enabled. false, the timer is disabled.
+
+
+ +
+
+ +

◆ enableTimer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRWhirlpoolAc::enableTimer (const uint16_t pos,
const bool on 
)
+
+private
+
+ +

Enable the timer enabled at the given byte offset.

+
Parameters
+ + + +
[in]posThe byte offset to write to.
[in]ontrue, the timer is enabled. false, the timer is disabled.
+
+
+ +
+
+ +

◆ getClock()

+ +
+
+ + + + + + + + +
uint16_t IRWhirlpoolAc::getClock (void )
+
+ +

Get the clock time in nr. of minutes past midnight.

+
Returns
The time expressed as the Nr. of minutes past midnight.
+ +
+
+ +

◆ getCommand()

+ +
+
+ + + + + + + + +
uint8_t IRWhirlpoolAc::getCommand (void )
+
+ +

Get the Command (Button) setting of the A/C.

+
Returns
The current Command (Button) of the A/C.
+ +
+
+ +

◆ getFan()

+ +
+
+ + + + + + + + +
uint8_t IRWhirlpoolAc::getFan (void )
+
+ +

Get the current fan speed setting.

+
Returns
The current fan speed/mode.
+ +
+
+ +

◆ getLight()

+ +
+
+ + + + + + + + +
bool IRWhirlpoolAc::getLight (void )
+
+ +

Get the Light (Display/LED) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getMode()

+ +
+
+ + + + + + + + +
uint8_t IRWhirlpoolAc::getMode (void )
+
+ +

Get the operating mode setting of the A/C.

+
Returns
The current operating mode setting.
+ +
+
+ +

◆ getModel()

+ +
+
+ + + + + + + + +
whirlpool_ac_remote_model_t IRWhirlpoolAc::getModel (void )
+
+ +

Get/Detect the model of the A/C.

+
Returns
The enum of the compatible model.
+ +
+
+ +

◆ getOffTimer()

+ +
+
+ + + + + + + + +
uint16_t IRWhirlpoolAc::getOffTimer (void )
+
+ +

Get the Off Timer time..

+
Returns
The time expressed as the Nr. of minutes past midnight.
+ +
+
+ +

◆ getOnTimer()

+ +
+
+ + + + + + + + +
uint16_t IRWhirlpoolAc::getOnTimer (void )
+
+ +

Get the On Timer time..

+
Returns
The time expressed as the Nr. of minutes past midnight.
+ +
+
+ +

◆ getPowerToggle()

+ +
+
+ + + + + + + + +
bool IRWhirlpoolAc::getPowerToggle (void )
+
+ +

Get the value of the current power toggle setting.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getRaw()

+ +
+
+ + + + + + + + +
uint8_t * IRWhirlpoolAc::getRaw (const bool calcchecksum = true)
+
+ +

Get a copy of the internal state/code for this protocol.

+
Parameters
+ + +
[in]calcchecksumDo we need to calculate the checksum?.
+
+
+
Returns
A code for this protocol based on the current internal state.
+ +
+
+ +

◆ getSleep()

+ +
+
+ + + + + + + + +
bool IRWhirlpoolAc::getSleep (void )
+
+ +

Get the Sleep setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSuper()

+ +
+
+ + + + + + + + +
bool IRWhirlpoolAc::getSuper (void )
+
+ +

Get the Super (Turbo/Jet) setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getSwing()

+ +
+
+ + + + + + + + +
bool IRWhirlpoolAc::getSwing (void )
+
+ +

Get the (vertical) swing setting of the A/C.

+
Returns
true, the setting is on. false, the setting is off.
+ +
+
+ +

◆ getTemp()

+ +
+
+ + + + + + + + +
uint8_t IRWhirlpoolAc::getTemp (void )
+
+ +

Get the current temperature setting.

+
Returns
The current setting for temp. in degrees celsius.
+ +
+
+ +

◆ getTempOffset()

+ +
+
+ + + + + +
+ + + + + + + + +
int8_t IRWhirlpoolAc::getTempOffset (void )
+
+private
+
+ +

Calculate the temp. offset in deg C for the current model.

+
Returns
The temperature offset.
+ +
+
+ +

◆ getTime()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRWhirlpoolAc::getTime (const uint16_t pos)
+
+private
+
+ +

Get the time in nr. of minutes past midnight.

+
Parameters
+ + +
[in]posThe byte offset to read from.
+
+
+
Returns
The time in Nr. of minutes past midnight.
+ +
+
+ +

◆ isOffTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRWhirlpoolAc::isOffTimerEnabled (void )
+
+ +

Is the Off timer enabled?

+
Returns
true, the Timer is enabled. false, the Timer is disabled.
+ +
+
+ +

◆ isOnTimerEnabled()

+ +
+
+ + + + + + + + +
bool IRWhirlpoolAc::isOnTimerEnabled (void )
+
+ +

Is the On timer enabled?

+
Returns
true, the Timer is enabled. false, the Timer is disabled.
+ +
+
+ +

◆ isTimerEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRWhirlpoolAc::isTimerEnabled (const uint16_t pos)
+
+private
+
+ +

Is the timer enabled at the given byte offset?

+
Parameters
+ + +
[in]posThe byte offset to read from.
+
+
+
Returns
true, the Timer is on. false, the Timer is off.
+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRWhirlpoolAc::send (const uint16_t repeat = kWhirlpoolAcDefaultRepeat,
const bool calcchecksum = true 
)
+
+ +

Send the current internal state as an IR message.

+
Parameters
+ + + +
[in]repeatNr. of times the message will be repeated.
[in]calcchecksumDo we need to calculate the checksum?.
+
+
+ +
+
+ +

◆ setClock()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setClock (const uint16_t minspastmidnight)
+
+ +

Set the clock time in nr. of minutes past midnight.

+
Parameters
+ + +
[in]minspastmidnightThe time expressed as minutes past midnight.
+
+
+ +
+
+ +

◆ setCommand()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setCommand (const uint8_t code)
+
+ +

Set the Command (Button) setting of the A/C.

+
Parameters
+ + +
[in]codeThe current Command (Button) of the A/C.
+
+
+ +
+
+ +

◆ setFan()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setFan (const uint8_t speed)
+
+ +

Set the speed of the fan.

+
Parameters
+ + +
[in]speedThe desired setting.
+
+
+ +
+
+ +

◆ setLight()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setLight (const bool on)
+
+ +

Set the Light (Display/LED) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setMode (const uint8_t mode)
+
+ +

Set the operating mode of the A/C.

+
Parameters
+ + +
[in]modeThe desired operating mode.
+
+
+ +
+
+ +

◆ setModel()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setModel (const whirlpool_ac_remote_model_t model)
+
+ +

Set the model of the A/C to emulate.

+
Parameters
+ + +
[in]modelThe enum of the appropriate model.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setOffTimer (const uint16_t minspastmidnight)
+
+ +

Set the Off Timer time.

+
Parameters
+ + +
[in]minspastmidnightThe time expressed as minutes past midnight.
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setOnTimer (const uint16_t minspastmidnight)
+
+ +

Set the On Timer time.

+
Parameters
+ + +
[in]minspastmidnightThe time expressed as minutes past midnight.
+
+
+ +
+
+ +

◆ setPowerToggle()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setPowerToggle (const bool on)
+
+ +

Change the power toggle setting.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRWhirlpoolAc::setRaw (const uint8_t new_code[],
const uint16_t length = kWhirlpoolAcStateLength 
)
+
+ +

Set the internal state from a valid code for this protocol.

+
Parameters
+ + + +
[in]new_codeA valid code for this protocol.
[in]lengthThe length/size of the new_code array.
+
+
+ +
+
+ +

◆ setSleep()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setSleep (const bool on)
+
+ +

Set the Sleep setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSuper()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setSuper (const bool on)
+
+ +

Set the Super (Turbo/Jet) setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setSwing()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setSwing (const bool on)
+
+ +

Set the (vertical) swing setting of the A/C.

+
Parameters
+ + +
[in]ontrue, the setting is on. false, the setting is off.
+
+
+ +
+
+ +

◆ setTemp()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::setTemp (const uint8_t temp)
+
+ +

Set the temperature.

+
Parameters
+ + +
[in]tempThe temperature in degrees celsius.
+
+
+ +
+
+ +

◆ setTime()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRWhirlpoolAc::setTime (const uint16_t pos,
const uint16_t minspastmidnight 
)
+
+private
+
+ +

Set the time in nr. of minutes past midnight.

+
Parameters
+ + + +
[in]posThe byte offset to write to.
[in]minspastmidnightNr. of minutes past midnight.
+
+
+ +
+
+ +

◆ stateReset()

+ +
+
+ + + + + + + + +
void IRWhirlpoolAc::stateReset (void )
+
+ +

Reset the state of the remote to a known good state/sequence.

+ +
+
+ +

◆ toCommon()

+ +
+
+ + + + + + + + +
stdAc::state_t IRWhirlpoolAc::toCommon (void )
+
+ +

Convert the current internal state into its stdAc::state_t equivilant.

+
Returns
The stdAc equivilant of the native settings.
+ +
+
+ +

◆ toCommonFanSpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::fanspeed_t IRWhirlpoolAc::toCommonFanSpeed (const uint8_t speed)
+
+static
+
+ +

Convert a native fan speed into its stdAc equivilant.

+
Parameters
+ + +
[in]speedThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toCommonMode()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::opmode_t IRWhirlpoolAc::toCommonMode (const uint8_t mode)
+
+static
+
+ +

Convert a native mode into its stdAc equivilant.

+
Parameters
+ + +
[in]modeThe native setting to be converted.
+
+
+
Returns
The stdAc equivilant of the native setting.
+ +
+
+ +

◆ toString()

+ +
+
+ + + + + + + + +
String IRWhirlpoolAc::toString (void )
+
+ +

Convert the current internal state into a human readable string.

+
Returns
A human readable string.
+ +
+
+ +

◆ validChecksum()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRWhirlpoolAc::validChecksum (const uint8_t state[],
const uint16_t length = kWhirlpoolAcStateLength 
)
+
+static
+
+ +

Verify the checksum is valid for a given state.

+
Parameters
+ + + +
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the array.
+
+
+
Returns
true, if the state has a valid checksum. Otherwise, false.
+ +
+
+

Member Data Documentation

+ +

◆ _desiredtemp

+ +
+
+ + + + + +
+ + + + +
uint8_t IRWhirlpoolAc::_desiredtemp
+
+private
+
+ +

The last user explicitly set temperature.

+ +
+
+ +

◆ _irsend

+ +
+
+ + + + + +
+ + + + +
IRsend IRWhirlpoolAc::_irsend
+
+private
+
+ +

Instance of the IR send class.

+ +
+
+ +

◆ remote_state

+ +
+
+ + + + + +
+ + + + +
uint8_t IRWhirlpoolAc::remote_state[kWhirlpoolAcStateLength]
+
+private
+
+ +

The state in IR code form.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map new file mode 100644 index 000000000..8fbbe1e23 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 new file mode 100644 index 000000000..2bd14cbec --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 @@ -0,0 +1 @@ +67506f3229bc12f62882dd42ed993175 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..08f43344278773e6620112cfde7947563a9df425 GIT binary patch literal 3386 zcmY*c2Q(a8A0NUhPg&6xn7IE-5+HW2+KSbSkBp&zd>MhgOmXEwzf>xRmSM9|kg>8r^y>^CM~VJ;8%Rz_iZz0; zWXTnOA^rrzZ;L;0dZ-oCee2=yPHeJD2EUf;rpMJK#rt0S`Cr=(s6({Cq2`0!Ct;Xq zC_Us#NZdN0W0y%z>tHBj6Ib;xj2^;}aO~P%SF5C?q_~tckjrHclD^lub+a-sG5wac z{;IgR_{`E!UKCl@NY@2`ChChlc>9JUQC~;5i59&#|4$*gjxr;2b57MHojZ35KG&GC zfW-$McW`rar(|R-)ei^2RgG`6$*&f|EL*K|l?@S=m>zHP`-1j)4nHb=-b)Bu%V%Z$9pL628TIiRn<7K zKr{}gEuAiU;R2(tuP^b2xH!bWZIAEl*|X%$&E&W^X1GRJZewt8uoyVvaErNQgErjU>&JlMjzpYY9&d{C0PDMHCgeg;e|&47$d~$K}IMu=Vxzg+wBp zi4(z7KQOMpoPwBHG@Sm@aL>rkuV!2w2y5MZcWkJq$LOyDW9yon%%GkeZ{Dq$n43ca z_@N=B`k-GUcX)XC31xZN`?c3FV$P3X#|(^(j%qnLIDj|P)BV#`RaGp2n?lx0M{(`X zhSN>~Rh%k*^SQ^Xl2j;)`@rDrv0yWA_Qt0{PV#Fcx0wxb$Em6Ui82*mR0>Y4LhK33A{sXzGP z@PwkG^RPsH^+6Z8rV?~bXEh@eP+=VpqRqq0JAbsdsv7W(VGg@v2I5BUNffG^UWXwN zIMTePp&|24E31_BbjCa+Q`JQLov=ej>2y}*9N#fwCy7KrO-Q3>TX@A&Ss+n#{={E6 zpfvaDj57xK{MJ|Km5t0h>bA-CUtQdI<5ELoFbM1 zNwFwou}#1A)v>YRBNB-((=zmnJIG`aaE6rMe~%m(Ftz3L{lRrqM2CKy2JJ+Afzkhu zL~H-m8zBtIgUThBNV1hFlBI@IRMA;o^ro}M3 zy?Nww9w2M3YUu4VfFq%f7=l3akM^QyaVWieegdv5r^Y$4W{kdRx1hi7js#{#q-pnS zzgw%A>L->O4HRUlgAM`Tz2!-m<$_l-G&&KAi}$7B59!?`yfyCgzLgPkYrP<8%@X#@ zUE{-@f|{pdnyW@F*+G>IleP}I`{zVPY{w>ES&20@Y(gFj#cIME+tO4c@_V${1pMQc zGTSZ0C^2_wJn847#=(|K(LAY}j%CVQ;)X%_O>~|ZRX+t*<)~rayS4N=R zHRS}>YK3Nzt=zlgc`d3Y+*;**e^3|tOanG%t`eLwx$M}%Q4}75*^=I_E*DVsLbm%P z2reD;*i+iU2G=LsttQJi5jdJtiEH?zQy#alu=)Px*WpbA1B2AULXp590|E*P3fe;j z8sSnmuSR-HGOMSz`OUbqs*8h=`dIn>I1RidCY=hFl-Ry{5dw4Cp4UdQ3 zw6!(B;c$kouIE$w+`Hy6P;F-Ww#QeDOiaYu+S*D=OJlmayJxKuY^51%FU#Rq=t)j_ ziuvT2m>BB2R)#$fvm+&D7MA(&RuhXm`)TUz`b;XI4uB1#3a4zeZq|7Y3O)!9-q8vL zMVy|VenYKbI_hZdEX_IU=(V7_P80Z^IE8KgvQ}tC?sZpTd4=+)#vO}SweU*}zmES> zhw+`|OENMh*A1M2bThR<3wx3e?(Yx(f6#-*qE$+E2vVtE@gvMa8Ku4YkM<_J9%?C- zznWJf{p~sbZdhU93Q#O@w;Fm4#*tOIVI|Kh0lqO(lC23N4XJlt*KQm=h(JZn^ z$U%AtBNaiKf|KBGv*hRHC2~t3O;-hF+jh@N%gA_rD4xpr>fV%2PL-eb+d#YPGssFx zwo4RXztz`TNETX1;xjYj26I%3TUxRkGyeGFTMWN5rlluE%m940wOadr+ebNv-CTpF zw6e1Da-r9&AQZQ-u;BBDK8)j>8bgfsJddv>v!e}Zd~D3Z$|_1YoXXYL*B7$cc0dX7 zAP@-4D=XUm{<7gjo2qWmX!1I5DXXYNK_kn{C2gCfSfiov8;^Nb|E$)rx6dkk)Jilu z*xrsbE~W1cz@iDICK;k4A`$$P^O!R%G8Qny()0~En4gTeMNs^7)%rV zD6OS=!S-AGwW+9k zlb)Up3H^+XQ)tS3tZ;h(TvSw)@}Su<35SCK5y&#q3%%!cpnlgkHtwjHf|NYmUPMk_ zd$-~7Zel}$>={1 zR`?*6Om6%dMj9D`K2SU7cK2>xO=}qKv97*;XMg{1!`FA%AP|U)a*o8VPU+2gaP7F* z-Yz{eGc!F?Q#LFXi%&^;+TO02s~##iJ3H%*LTNiYBS2D8D5#*IATWERe(5Elm33+- zcf?#PDk><4O9h8OsD3e**KmG!(z$C;K|xjx4ULkL5|_n~=~k`3QpvBoqkVjQKDPwP zfOFS@7Kh!NunpNAH8>P{k39^uyU17H&`?AmaDnxJlgdNTqqnxVwcXuI#)C?4N}V3t zShQZ#QzYI{|EYV?nHVzguFpMk)H}MYOd>M!B%V_5-gg!N5se)5Y%LBY%H^b|r^^W@ zhOAVS<&ND$q5fh=em){3B!v8w36c3}^GU~|S&OxFH<&#}r>3428zgW41WmT1qocgK zy1O9!9f&i$H3HoCGt7~fv z5mHkII?P%g9v3(e*WduenwRpLRe5WB=KgSp=bNI+%6RkViHR}YZciOAFO7qV+1i@t zB42;z$@DGBbYqZ@ukO4@OiWCCZn($)HHb*tpWfQv?*R?v*SF`g-@uF*%!cH3|}i9t|+?Iv+$QPe}u_4D)OHk&dj!>R6YLHYEUzKqRoGD zhfWS){Cg7WN9#Vt@%7wBb-58OAgiQ*^cxRIa!s?~FjUU*{_GD4W?CHJ&k$gwht#dn Hc8UBiDNAri literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac-members.html new file mode 100644 index 000000000..c9e1b88a1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac-members.html @@ -0,0 +1,151 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRac Member List
+
+
+ +

This is the complete list of members for IRac, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_invertedIRacprivate
_modulationIRacprivate
_pinIRacprivate
_prevIRacprivate
amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)IRacprivate
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)IRacprivate
boolToString(const bool value)IRacstatic
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)IRacprivate
cleanState(const stdAc::state_t state)IRacprivatestatic
cmpStates(const stdAc::state_t a, const stdAc::state_t b)IRacstatic
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)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)IRacprivate
daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
fanspeedToString(const stdAc::fanspeed_t speed)IRacstatic
fujitsu(IRFujitsuAC *ac, const fujitsu_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 econo, const bool filter, const bool clean)IRacprivate
getState(void)IRac
getStatePrev(void)IRac
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)IRacprivate
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 bool turbo, const bool light, const bool clean, const int16_t sleep=-1)IRacprivate
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)IRacprivate
haierYrwo2(IRHaierACYRW02 *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)IRacprivate
handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)IRacprivatestatic
hasStateChanged(void)IRac
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)IRacprivate
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)IRacprivate
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)IRacprivate
hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)IRacprivate
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)IRacstatic
initState(stdAc::state_t *state)IRacstatic
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRacexplicit
isProtocolSupported(const decode_type_t protocol)IRacstatic
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)IRacprivate
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)IRacprivate
markAsSent(void)IRac
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 int16_t sleep=-1)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
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)IRacprivate
neoclima(IRNeoclimaAc *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 filter, const int16_t sleep=-1)IRacprivate
nextIRac
opmodeToString(const stdAc::opmode_t mode)IRacstatic
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)IRacprivate
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 bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)IRacprivate
sendAc(void)IRac
sendAc(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)IRac
sendAc(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=-1, const int16_t clock=-1)IRac
sharp(IRSharpAc *ac, 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 bool turbo, const bool filter, const bool clean)IRacprivate
strToBool(const char *str, const bool def=false)IRacstatic
strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)IRacstatic
strToModel(const char *str, const int16_t def=-1)IRacstatic
strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)IRacstatic
strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)IRacstatic
strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)IRacstatic
swinghToString(const stdAc::swingh_t swingh)IRacstatic
swingvToString(const stdAc::swingv_t swingv)IRacstatic
tcl112(IRTcl112Ac *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 econo, const bool filter)IRacprivate
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)IRacprivate
toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)IRacprivate
trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)IRacprivate
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)IRacprivate
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)IRacprivate
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac.html new file mode 100644 index 000000000..8c0bb6274 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac.html @@ -0,0 +1,5644 @@ + + + + + + + +IRremoteESP8266: IRac Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

#include <IRac.h>

+
+Collaboration diagram for IRac:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void markAsSent (void)
 Update the previous state to the current one. More...
 
bool sendAc (void)
 Send an A/C message based soley on our internal state. More...
 
bool sendAc (const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
 Send A/C message for a given device using state_t structures. More...
 
bool sendAc (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=-1, const int16_t clock=-1)
 Send A/C message for a given device using common A/C settings. More...
 
stdAc::state_t getState (void)
 Get the current internal A/C climate state. More...
 
stdAc::state_t getStatePrev (void)
 Get the previous internal A/C climate state that should have already been sent to the device. i.e. What the A/C unit should already be set to. More...
 
bool hasStateChanged (void)
 Check if the internal state has changed from what was previously sent. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool isProtocolSupported (const decode_type_t protocol)
 Is the given protocol supported by the IRac class? More...
 
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)
 Initialse the given state with the supplied settings. More...
 
static void initState (stdAc::state_t *state)
 Initialse the given state with the supplied settings. More...
 
static bool cmpStates (const stdAc::state_t a, const stdAc::state_t b)
 Compare two AirCon states. More...
 
static bool strToBool (const char *str, const bool def=false)
 Convert the supplied str into the appropriate boolean value. More...
 
static int16_t strToModel (const char *str, const int16_t def=-1)
 Convert the supplied str into the appropriate enum. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
static String boolToString (const bool value)
 Convert the supplied boolean into the appropriate String. More...
 
static String opmodeToString (const stdAc::opmode_t mode)
 Convert the supplied operation mode into the appropriate String. More...
 
static String fanspeedToString (const stdAc::fanspeed_t speed)
 Convert the supplied fan speed enum into the appropriate String. More...
 
static String swingvToString (const stdAc::swingv_t swingv)
 Convert the supplied enum into the appropriate String. More...
 
static String swinghToString (const stdAc::swingh_t swingh)
 Convert the supplied enum into the appropriate String. More...
 
+ + + + +

+Public Attributes

stdAc::state_t next
 The state we want the device to be in after we send. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void fujitsu (IRFujitsuAC *ac, const fujitsu_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 econo, const bool filter, const bool clean)
 Send a Fujitsu A/C message with the supplied settings. More...
 
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. More...
 
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 bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
 Send a Gree A/C message with the supplied settings. More...
 
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. More...
 
void haierYrwo2 (IRHaierACYRW02 *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)
 Send a Haier YRWO2 A/C message with the supplied settings. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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)
 Send a LG A/C message with the supplied settings. More...
 
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 int16_t sleep=-1)
 Send a Midea A/C message with the supplied settings. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void neoclima (IRNeoclimaAc *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 filter, const int16_t sleep=-1)
 Send a Neoclima A/C message with the supplied settings. More...
 
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. More...
 
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 bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
 Send a Samsung A/C message with the supplied settings. More...
 
void sharp (IRSharpAc *ac, 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 bool turbo, const bool filter, const bool clean)
 Send a Sharp A/C message with the supplied settings. More...
 
void tcl112 (IRTcl112Ac *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 econo, const bool filter)
 Send a TCL 112-bit A/C message with the supplied settings. More...
 
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. More...
 
void toshiba (IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
 Send a Toshiba A/C message with the supplied settings. More...
 
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. More...
 
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. More...
 
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. More...
 
+ + + + + + + +

+Static Private Member Functions

static stdAc::state_t cleanState (const stdAc::state_t state)
 Create a new state base on the provided state that has been suitably fixed. More...
 
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 need to be toggled. More...
 
+ + + + + + + + + +

+Private Attributes

uint16_t _pin
 
bool _inverted
 
bool _modulation
 
stdAc::state_t _prev
 
+

Constructor & Destructor Documentation

+ +

◆ IRac()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRac::IRac (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
+
+explicit
+
+ +

Class constructor.

+
Parameters
+ + + + +
[in]pinGpio pin to use when transmitting IR messages.
[in]invertedtrue, gpio output defaults to high. false, to low.
[in]use_modulationtrue means use frequency modulation. false, don't.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ amcor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::amcor (IRAmcorAcac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan 
)
+
+private
+
+ +

Send an Amcor A/C message with the supplied settings.

+
Parameters
+ + + + + + +
[in,out]acA Ptr to an IRAmcorAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
+
+
+ +
+
+ +

◆ argo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::argo (IRArgoACac,
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 
)
+
+private
+
+ +

Send an Argo A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + +
[in,out]acA Ptr to an IRArgoAC object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]sleepNr. of minutes for sleep mode.
+
+
+
Note
-1 is Off, >= 0 is on.
+ +
+
+ +

◆ boolToString()

+ +
+
+ + + + + +
+ + + + + + + + +
String IRac::boolToString (const bool value)
+
+static
+
+ +

Convert the supplied boolean into the appropriate String.

+
Parameters
+ + +
[in]valueThe boolean value to be converted.
+
+
+
Returns
The equivilent String for the locale.
+ +
+
+ +

◆ carrier64()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::carrier64 (IRCarrierAc64ac,
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 
)
+
+private
+
+ +

Send a Carrier 64-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + +
[in,out]acA Ptr to an IRCarrierAc64 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]sleepNr. of minutes for sleep mode.
+
+
+
Note
-1 is Off, >= 0 is on.
+ +
+
+ +

◆ cleanState()

+ +
+
+ + + + + +
+ + + + + + + + +
stdAc::state_t IRac::cleanState (const stdAc::state_t state)
+
+staticprivate
+
+ +

Create a new state base on the provided state that has been suitably fixed.

+
Note
This is for use with Home Assistant, which requires mode to be off if the power is off.
+
Parameters
+ + +
[in]stateThe state_t structure describing the desired a/c state.
+
+
+
Returns
A stdAc::state_t with the needed settings.
+ +
+
+ +

◆ cmpStates()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRac::cmpStates (const stdAc::state_t a,
const stdAc::state_t b 
)
+
+static
+
+ +

Compare two AirCon states.

+
Note
The comparison excludes the clock.
+
Parameters
+ + + +
aA state_t to be compared.
bA state_t to be compared.
+
+
+
Returns
True if they differ, False if they don't.
+ +
+
+ +

◆ coolix()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::coolix (IRCoolixACac,
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 
)
+
+private
+
+ +

Send a Coolix A/C message with the supplied settings.

+
Note
May result in multiple messages being sent.
+
Parameters
+ + + + + + + + + + + + +
[in,out]acA Ptr to an IRCoolixAC object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
[in]sleepNr. of minutes for sleep mode.
+
+
+
Note
-1 is Off, >= 0 is on.
+ +
+
+ +

◆ corona()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::corona (IRCoronaAcac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan,
const stdAc::swingv_t swingv,
const bool econo 
)
+
+private
+
+ +

Send a Corona A/C message with the supplied settings.

+
Note
May result in multiple messages being sent.
+
Parameters
+ + + + + + + + +
[in,out]acA Ptr to an IRCoronaAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]econoRun the device in economical mode.
+
+
+ +
+
+ +

◆ daikin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin (IRDaikinESPac,
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 
)
+
+private
+
+ +

Send a Daikin A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + +
[in,out]acA Ptr to an IRDaikinESP object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]econoRun the device in economical mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
+
+
+ +
+
+ +

◆ daikin128()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin128 (IRDaikin128ac,
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 
)
+
+private
+
+ +

Send a Daikin 128-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + +
[in,out]acA Ptr to an IRDaikin128 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]econoRun the device in economical mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+ +
+
+ +

◆ daikin152()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin152 (IRDaikin152ac,
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 
)
+
+private
+
+ +

Send a Daikin 152-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + +
[in,out]acA Ptr to an IRDaikin152 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]econoRun the device in economical mode.
+
+
+ +
+
+ +

◆ daikin160()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin160 (IRDaikin160ac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan,
const stdAc::swingv_t swingv 
)
+
+private
+
+ +

Send a Daikin 160-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + +
[in,out]acA Ptr to an IRDaikin160 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
+
+
+ +
+
+ +

◆ daikin176()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin176 (IRDaikin176ac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan,
const stdAc::swingh_t swingh 
)
+
+private
+
+ +

Send a Daikin 176-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + +
[in,out]acA Ptr to an IRDaikin176 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swinghThe horizontal swing setting.
+
+
+ +
+
+ +

◆ daikin2()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin2 (IRDaikin2ac,
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 
)
+
+private
+
+ +

Send a Daikin2 A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + + + + + +
[in,out]acA Ptr to an IRDaikin2 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]econoRun the device in economical mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
[in]beepEnable/Disable beeps when receiving IR messages.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+ +
+
+ +

◆ daikin216()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin216 (IRDaikin216ac,
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 
)
+
+private
+
+ +

Send a Daikin 216-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + +
[in,out]acA Ptr to an IRDaikin216 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
+
+
+ +
+
+ +

◆ daikin64()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::daikin64 (IRDaikin64ac,
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 
)
+
+private
+
+ +

Send a Daikin 64-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + +
[in,out]acA Ptr to an IRDaikin64 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+ +
+
+ +

◆ delonghiac()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::delonghiac (IRDelonghiAcac,
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 
)
+
+private
+
+ +

Send a Delonghi A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + +
[in,out]acA Ptr to an IRDelonghiAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]turboRun the device in turbo/powerful mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
+
+
+ +
+
+ +

◆ electra()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::electra (IRElectraAcac,
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 
)
+
+private
+
+ +

Send an Electra A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + +
[in,out]acA Ptr to an IRElectraAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]lighttoggleShould we toggle the LED/Display?
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
+
+
+ +
+
+ +

◆ fanspeedToString()

+ +
+
+ + + + + +
+ + + + + + + + +
String IRac::fanspeedToString (const stdAc::fanspeed_t speed)
+
+static
+
+ +

Convert the supplied fan speed enum into the appropriate String.

+
Parameters
+ + +
[in]speedThe enum to be converted.
+
+
+
Returns
The equivilent String for the locale.
+ +
+
+ +

◆ fujitsu()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::fujitsu (IRFujitsuACac,
const fujitsu_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 econo,
const bool filter,
const bool clean 
)
+
+private
+
+ +

Send a Fujitsu A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + + +
[in,out]acA Ptr to an IRFujitsuAC object to use.
[in]modelThe A/C model to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]econoRun the device in economical mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
+
+
+ +
+
+ +

◆ getState()

+ +
+
+ + + + + + + + +
stdAc::state_t IRac::getState (void )
+
+ +

Get the current internal A/C climate state.

+
Returns
A Ptr to a state containing the current (to be sent) settings.
+ +
+
+ +

◆ getStatePrev()

+ +
+
+ + + + + + + + +
stdAc::state_t IRac::getStatePrev (void )
+
+ +

Get the previous internal A/C climate state that should have already been sent to the device. i.e. What the A/C unit should already be set to.

+
Returns
A Ptr to a state containing the previously sent settings.
+ +
+
+ +

◆ goodweather()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::goodweather (IRGoodweatherAcac,
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 
)
+
+private
+
+ +

Send a Goodweather A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + +
[in,out]acA Ptr to an IRGoodweatherAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
+
+
+ +
+
+ +

◆ gree()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::gree (IRGreeACac,
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 bool turbo,
const bool light,
const bool clean,
const int16_t sleep = -1 
)
+
+private
+
+ +

Send a Gree A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + +
[in,out]acA Ptr to an IRGreeAC object to use.
[in]modelThe A/C model to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
+
+
+ +
+
+ +

◆ haier()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::haier (IRHaierACac,
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 
)
+
+private
+
+ +

Send a Haier A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + +
[in,out]acA Ptr to an IRGreeAC object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+ +
+
+ +

◆ haierYrwo2()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::haierYrwo2 (IRHaierACYRW02ac,
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 
)
+
+private
+
+ +

Send a Haier YRWO2 A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + +
[in,out]acA Ptr to an IRHaierACYRW02 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
+
+
+ +
+
+ +

◆ handleToggles()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
stdAc::state_t IRac::handleToggles (const stdAc::state_t desired,
const stdAc::state_tprev = NULL 
)
+
+staticprivate
+
+ +

Create a new state base on desired & previous states but handle any state changes for options that need to be toggled.

+
Parameters
+ + + +
[in]desiredThe state_t structure describing the desired a/c state.
[in]prevA Ptr to the previous state_t structure.
+
+
+
Returns
A stdAc::state_t with the needed settings.
+ +
+
+ +

◆ hasStateChanged()

+ +
+
+ + + + + + + + +
bool IRac::hasStateChanged (void )
+
+ +

Check if the internal state has changed from what was previously sent.

+
Note
The comparison excludes the clock.
+
Returns
True if it has changed, False if not.
+ +
+
+ +

◆ hitachi()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::hitachi (IRHitachiAcac,
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 
)
+
+private
+
+ +

Send a Hitachi A/C message with the supplied settings.

+
Parameters
+ + + + + + + + +
[in,out]acA Ptr to an IRHitachiAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
+
+
+ +
+
+ +

◆ hitachi1()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::hitachi1 (IRHitachiAc1ac,
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 
)
+
+private
+
+ +

Send a Hitachi1 A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + +
[in,out]acA Ptr to an IRHitachiAc1 object to use.
[in]modelThe A/C model to use.
[in]onThe power setting.
[in]power_toggleThe power toggle setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]swing_toggleThe swing_toggle setting.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
+
+
+
Note
The sleep mode used is the "Sleep 2" setting.
+ +
+
+ +

◆ hitachi344()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::hitachi344 (IRHitachiAc344ac,
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 
)
+
+private
+
+ +

Send a Hitachi 344-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + +
[in,out]acA Ptr to an IRHitachiAc344 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
+
+
+ +
+
+ +

◆ hitachi424()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::hitachi424 (IRHitachiAc424ac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan,
const stdAc::swingv_t swingv 
)
+
+private
+
+ +

Send a Hitachi 424-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + +
[in,out]acA Ptr to an IRHitachiAc424 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
+
+
+ +
+
+ +

◆ initState() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void IRac::initState (stdAc::state_tstate)
+
+static
+
+ +

Initialse the given state with the supplied settings.

+
Parameters
+ + +
[out]stateA Ptr to where the settings will be stored.
+
+
+
Note
Sets all the parameters to reasonable base/automatic defaults.
+ +
+
+ +

◆ initState() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::initState (stdAc::state_tstate,
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 
)
+
+static
+
+ +

Initialse the given state with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + + + + + + + + +
[out]stateA Ptr to where the settings will be stored.
[in]vendorThe vendor/protocol type.
[in]modelThe A/C model if applicable.
[in]powerThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]econoRun the device in economical mode.
[in]lightTurn on the LED/Display mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
[in]beepEnable/Disable beeps when receiving IR messages.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on. Some devices it is the nr. of mins to run for. Others it may be the time to enter/exit sleep mode. i.e. Time in Nr. of mins since midnight.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+ +
+
+ +

◆ isProtocolSupported()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRac::isProtocolSupported (const decode_type_t protocol)
+
+static
+
+ +

Is the given protocol supported by the IRac class?

+
Parameters
+ + +
[in]protocolThe vendor/protocol type.
+
+
+
Returns
true if the protocol is supported by this class, otherwise false.
+ +
+
+ +

◆ kelvinator()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::kelvinator (IRKelvinatorACac,
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 
)
+
+private
+
+ +

Send a Kelvinator A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + +
[in,out]acA Ptr to an IRKelvinatorAC object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. XFan, dry filters etc
+
+
+ +
+
+ +

◆ lg()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::lg (IRLgAcac,
const lg_ac_remote_model_t model,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan 
)
+
+private
+
+ +

Send a LG A/C message with the supplied settings.

+
Parameters
+ + + + + + + +
[in,out]acA Ptr to an IRLgAc object to use.
[in]modelThe A/C model to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
+
+
+ +
+
+ +

◆ markAsSent()

+ +
+
+ + + + + + + + +
void IRac::markAsSent (void )
+
+ +

Update the previous state to the current one.

+ +
+
+ +

◆ midea()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::midea (IRMideaACac,
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 
)
+
+private
+
+ +

Send a Midea A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + +
[in,out]acA Ptr to an IRMideaAC object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
+
+
+ +
+
+ +

◆ mitsubishi()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::mitsubishi (IRMitsubishiACac,
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 
)
+
+private
+
+ +

Send a Mitsubishi A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + +
[in,out]acA Ptr to an IRMitsubishiAC object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+
Note
Clock can only be set in 10 minute increments. i.e. % 10.
+ +
+
+ +

◆ mitsubishi112()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::mitsubishi112 (IRMitsubishi112ac,
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 
)
+
+private
+
+ +

Send a Mitsubishi 112-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + +
[in,out]acA Ptr to an IRMitsubishi112 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
+
+
+ +
+
+ +

◆ mitsubishi136()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::mitsubishi136 (IRMitsubishi136ac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan,
const stdAc::swingv_t swingv,
const bool quiet 
)
+
+private
+
+ +

Send a Mitsubishi 136-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + +
[in,out]acA Ptr to an IRMitsubishi136 object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]quietRun the device in quiet/silent mode.
+
+
+ +
+
+ +

◆ mitsubishiHeavy152()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::mitsubishiHeavy152 (IRMitsubishiHeavy152Acac,
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 
)
+
+private
+
+ +

Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + + +
[in,out]acA Ptr to an IRMitsubishiHeavy152Ac object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]econoRun the device in economical mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
+
+
+ +
+
+ +

◆ mitsubishiHeavy88()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::mitsubishiHeavy88 (IRMitsubishiHeavy88Acac,
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 
)
+
+private
+
+ +

Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + +
[in,out]acA Ptr to an IRMitsubishiHeavy88Ac object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]econoRun the device in economical mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
+
+
+ +
+
+ +

◆ neoclima()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::neoclima (IRNeoclimaAcac,
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 filter,
const int16_t sleep = -1 
)
+
+private
+
+ +

Send a Neoclima A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + +
[in,out]acA Ptr to an IRNeoclimaAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
+
+
+ +
+
+ +

◆ opmodeToString()

+ +
+
+ + + + + +
+ + + + + + + + +
String IRac::opmodeToString (const stdAc::opmode_t mode)
+
+static
+
+ +

Convert the supplied operation mode into the appropriate String.

+
Parameters
+ + +
[in]modeThe enum to be converted.
+
+
+
Returns
The equivilent String for the locale.
+ +
+
+ +

◆ panasonic()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::panasonic (IRPanasonicAcac,
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 
)
+
+private
+
+ +

Send a Panasonic A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + + +
[in,out]acA Ptr to an IRPanasonicAc object to use.
[in]modelThe A/C model to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+ +
+
+ +

◆ samsung()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::samsung (IRSamsungAcac,
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 filter,
const bool clean,
const bool beep,
const bool prevpower = true,
const bool forcepower = true 
)
+
+private
+
+ +

Send a Samsung A/C message with the supplied settings.

+
Note
Multiple IR messages may be generated & sent.
+
Parameters
+ + + + + + + + + + + + + + + +
[in,out]acA Ptr to an IRSamsungAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
[in]beepEnable/Disable beeps when receiving IR messages.
[in]prevpowerThe power setting from the previous A/C state.
[in]forcepowerDo we force send the special power message?
+
+
+ +
+
+ +

◆ sendAc() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRac::sendAc (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 = -1,
const int16_t clock = -1 
)
+
+ +

Send A/C message for a given device using common A/C settings.

+
Parameters
+ + + + + + + + +
[in]vendorThe vendor/protocol type.
[in]modelThe A/C model if applicable.
[in]powerThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
[in]fanThe speed setting for the fan.
+
+
+
Note
The following are all "if supported" by the underlying A/C classes.
+
Parameters
+ + + + + + + + + + + + +
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]quietRun the device in quiet/silent mode.
[in]turboRun the device in turbo/powerful mode.
[in]econoRun the device in economical mode.
[in]lightTurn on the LED/Display mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
[in]beepEnable/Disable beeps when receiving IR messages.
[in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on. Some devices it is the nr. of mins to run for. Others it may be the time to enter/exit sleep mode. i.e. Time in Nr. of mins since midnight.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+
Returns
True, if accepted/converted/attempted etc. False, if unsupported.
+ +
+
+ +

◆ sendAc() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool IRac::sendAc (const stdAc::state_t desired,
const stdAc::state_tprev = NULL 
)
+
+ +

Send A/C message for a given device using state_t structures.

+
Parameters
+ + + +
[in]desiredThe state_t structure describing the desired new ac state
[in]prevA Ptr to the state_t structure containing the previous state
+
+
+
Returns
True, if accepted/converted/attempted etc. False, if unsupported.
+ +
+
+ +

◆ sendAc() [3/3]

+ +
+
+ + + + + + + + +
bool IRac::sendAc (void )
+
+ +

Send an A/C message based soley on our internal state.

+
Returns
True, if accepted/converted/attempted. False, if unsupported.
+ +
+
+ +

◆ sharp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::sharp (IRSharpAcac,
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 bool turbo,
const bool filter,
const bool clean 
)
+
+private
+
+ +

Send a Sharp A/C message with the supplied settings.

+
Note
Multiple IR messages may be generated & sent.
+
Parameters
+ + + + + + + + + + + +
[in,out]acA Ptr to an IRSharpAc object to use.
[in]onThe power setting.
[in]prev_powerThe power setting from the previous A/C state.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
+
+
+ +
+
+ +

◆ strToBool()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IRac::strToBool (const char * str,
const bool def = false 
)
+
+static
+
+ +

Convert the supplied str into the appropriate boolean value.

+
Parameters
+ + + +
[in]strA Ptr to a C-style string to be converted.
[in]defThe boolean value to return if no conversion was possible.
+
+
+
Returns
The equivilent boolean value.
+ +
+
+ +

◆ strToFanspeed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
stdAc::fanspeed_t IRac::strToFanspeed (const char * str,
const stdAc::fanspeed_t def = stdAc::fanspeed_t::kAuto 
)
+
+static
+
+ +

Convert the supplied str into the appropriate enum.

+
Parameters
+ + + +
[in]strA Ptr to a C-style string to be converted.
[in]defThe enum to return if no conversion was possible.
+
+
+
Returns
The equivilent enum.
+ +
+
+ +

◆ strToModel()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int16_t IRac::strToModel (const char * str,
const int16_t def = -1 
)
+
+static
+
+ +

Convert the supplied str into the appropriate enum.

+
Note
Assumes str is the model code or an integer >= 1.
+
Parameters
+ + + +
[in]strA Ptr to a C-style string to be converted.
[in]defThe enum to return if no conversion was possible.
+
+
+
Returns
The equivilent enum.
+ +
+
+ +

◆ strToOpmode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
stdAc::opmode_t IRac::strToOpmode (const char * str,
const stdAc::opmode_t def = stdAc::opmode_t::kAuto 
)
+
+static
+
+ +

Convert the supplied str into the appropriate enum.

+
Parameters
+ + + +
[in]strA Ptr to a C-style string to be converted.
[in]defThe enum to return if no conversion was possible.
+
+
+
Returns
The equivilent enum.
+ +
+
+ +

◆ strToSwingH()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
stdAc::swingh_t IRac::strToSwingH (const char * str,
const stdAc::swingh_t def = stdAc::swingh_t::kOff 
)
+
+static
+
+ +

Convert the supplied str into the appropriate enum.

+
Parameters
+ + + +
[in]strA Ptr to a C-style string to be converted.
[in]defThe enum to return if no conversion was possible.
+
+
+
Returns
The equivilent enum.
+ +
+
+ +

◆ strToSwingV()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
stdAc::swingv_t IRac::strToSwingV (const char * str,
const stdAc::swingv_t def = stdAc::swingv_t::kOff 
)
+
+static
+
+ +

Convert the supplied str into the appropriate enum.

+
Parameters
+ + + +
[in]strA Ptr to a C-style string to be converted.
[in]defThe enum to return if no conversion was possible.
+
+
+
Returns
The equivilent enum.
+ +
+
+ +

◆ swinghToString()

+ +
+
+ + + + + +
+ + + + + + + + +
String IRac::swinghToString (const stdAc::swingh_t swingh)
+
+static
+
+ +

Convert the supplied enum into the appropriate String.

+
Parameters
+ + +
[in]swinghThe enum to be converted.
+
+
+
Returns
The equivilent String for the locale.
+ +
+
+ +

◆ swingvToString()

+ +
+
+ + + + + +
+ + + + + + + + +
String IRac::swingvToString (const stdAc::swingv_t swingv)
+
+static
+
+ +

Convert the supplied enum into the appropriate String.

+
Parameters
+ + +
[in]swingvThe enum to be converted.
+
+
+
Returns
The equivilent String for the locale.
+ +
+
+ +

◆ tcl112()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::tcl112 (IRTcl112Acac,
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 econo,
const bool filter 
)
+
+private
+
+ +

Send a TCL 112-bit A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + +
[in,out]acA Ptr to an IRTcl112Ac object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]swinghThe horizontal swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]econoRun the device in economical mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
+
+
+ +
+
+ +

◆ teco()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::teco (IRTecoAcac,
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 
)
+
+private
+
+ +

Send a Teco A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + +
[in,out]acA Ptr to an IRTecoAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]lightTurn on the LED/Display mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
+
+
+ +
+
+ +

◆ toshiba()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::toshiba (IRToshibaACac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan 
)
+
+private
+
+ +

Send a Toshiba A/C message with the supplied settings.

+
Parameters
+ + + + + + +
[in,out]acA Ptr to an IRToshibaAC object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
+
+
+ +
+
+ +

◆ trotec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::trotec (IRTrotecESPac,
const bool on,
const stdAc::opmode_t mode,
const float degrees,
const stdAc::fanspeed_t fan,
const int16_t sleep = -1 
)
+
+private
+
+ +

Send a Trotec A/C message with the supplied settings.

+
Parameters
+ + + + + + + +
[in,out]acA Ptr to an IRTrotecESP object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
+
+
+ +
+
+ +

◆ vestel()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::vestel (IRVestelAcac,
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 
)
+
+private
+
+ +

Send a Vestel A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + +
[in,out]acA Ptr to an IRVestelAc object to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]filterTurn on the (ion/pollen/etc) filter mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
[in]sendNormalDo we send a Normal settings message at all? i.e In addition to the clock/time/timer message
+
+
+ +
+
+ +

◆ whirlpool()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRac::whirlpool (IRWhirlpoolAcac,
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 
)
+
+private
+
+ +

Send a Whirlpool A/C message with the supplied settings.

+
Parameters
+ + + + + + + + + + + + +
[in,out]acA Ptr to an IRWhirlpoolAc object to use.
[in]modelThe A/C model to use.
[in]onThe power setting.
[in]modeThe operation mode setting.
[in]degreesThe temperature setting in degrees.
[in]fanThe speed setting for the fan.
[in]swingvThe vertical swing setting.
[in]turboRun the device in turbo/powerful mode.
[in]lightTurn on the LED/Display mode.
[in]sleepNr. of minutes for sleep mode. -1 is Off, > 0 is on.
[in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ _inverted

+ +
+
+ + + + + +
+ + + + +
bool IRac::_inverted
+
+private
+
+ +
+
+ +

◆ _modulation

+ +
+
+ + + + + +
+ + + + +
bool IRac::_modulation
+
+private
+
+ +
+
+ +

◆ _pin

+ +
+
+ + + + + +
+ + + + +
uint16_t IRac::_pin
+
+private
+
+ +
+
+ +

◆ _prev

+ +
+
+ + + + + +
+ + + + +
stdAc::state_t IRac::_prev
+
+private
+
+ +
+
+ +

◆ next

+ +
+
+ + + + +
stdAc::state_t IRac::next
+
+ +

The state we want the device to be in after we send.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.map new file mode 100644 index 000000000..a8e1d6323 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.md5 new file mode 100644 index 000000000..76e762f05 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.md5 @@ -0,0 +1 @@ +798baf66f32a8ad80bc719cc6de8c2ba \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRac__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8ea1ee9140bc33fef84a87fb305f46cea3896e GIT binary patch literal 3252 zcmZ8k2Uru?8XXW&dXW}-cNbVddX35=9RcYjl!&qzkVuOVVvq&0NE48@tkfq8ksy5u z0t#YKdT&BD(gFb~f$->W-16S{y*uB`{buIQf6KY&{AZFKZdh=0h;aY_z-?t|b`z|l z!87dwGkBFKH01{?Hn@$28F2RPC~13<4FFt0R%X|nAN;oQ4B>EbQtIuQxQ`r*14}fd zvr9N6kh#YhlCwjN{J^{lG-><38Yvj56qLl@$V?xXtsWDG;77mroQ=p(^g#8Oj?atDVJ<*)<)fF&-X}!{H6~=Oh#v6X*bc zDsPdFZ26qXDMIjS{(87a6TE&qFpy^G-4>&B-4TPqR9037>!Q0K3z5<#&&8FN$`YeP zLPCOrUwKyZaB&4A5TlVsP-szc@!(PzCN_5d!9rSP<@b-vc%+O)`T4K84UwA^lE%iI z0htT&y-UJELYWFd4Ks_20S_NSab4RC#tl2W9P8&5JhAt@w1Q_Ef<`Os4i#Nn+fkcE zDJeGL;q}(f1(MBLqc+NV-KstJ#@&2ZtEzoFpeiZ|KfjXtdM!1z8{|D3^|pw$F|gkR zQ_5^;M>V2zg+5vBh1&l*H#|ICS69a=qUNCF?In6H&Ahzj{(^Zxz+!<`V5)0xPtVlv z_sh-XAkxy5)nBW-vho@ZTg9i^9nwoxPFRQP=2(YoSQRh_L2vqNV z21CuODfrHvq_US33Zs<<` zMW9gUt|E~d*Z5ej=^Gf>+1gq@ziHF?I@jXho~^xo4IY2AkZ~m|JNu%5z*B2Q;I;c1 zO<6%9ASNaTiF`7jW2vyqW|id|yWI_rEmArXgE`q=ATh=DF5PXMArREOx-~R3WcV&H zHfB+0r;6+E2UT+`PQB;<(k-)rt?}p@<(`n_tz`kXuoqfq^UQ z>#tn#E|ty-R?JuZ{QM9I6^t=IKR;rU(BIoDE+&>`sldw08Zk>G8UpSuVb2N82?+^J z--<2|E;~0jH#?iYQjAT{$SBsoUsh4U20Ttlk(ZZW{X`70ftPT$wY9-uuo|B>PfyP( zapw*(To;9Y0HVd8(rx{GXQmMWfk41%j8SOKjbbN*qgk=luJ|j5)bgGlOB4zvm4P}v zjwZfoX)#b%{xm&Za2lW6yCkl6Py2TsFi=ZN3!CK5!EwlJlcS)Ht}bK3EA$62`u3M@ z@YNl{kE*E@aBY2v5tVp6?N=Q{)cRCuYnaAM-OHD2!AWjyA$fT-#_?`vTV1?&c*rHy zkmY4W{0KVT$HT)4`^fkcE-9KX=7tM4UW{B`ey&wF-dS03`StDIT+;ePPdJ1tuNNbb zELc2AeM=aA1S|hJlMq6UIh^5{)k#)-W#bxV{exSGD$ymnB_i}juRN8U$Cu`;9uoNR%Clx~%>OwS2J|*VgAi{Ncec#(=V^L zu&Q+^nTdC)5}H^3TJ&?R=I8&?_0%`ZPWC^+K6|K&bglBA$7K>A90Rg{V*{esxuCkG zcP=W8kIqTTXU!m?H{15Jva+Uv8BX>lkq0}siJz%!r}OhZSS&W?w()gG0|SHPS1TU%2@5>1(au$IrqYp45UEcRe$DOmRi_+3{$jFGH zp<(;+jtwlE||l19Q8FP77)T3cs7e*BobxmHhUB+9>C*cSf5b8Ko#9}4yH_Fi9F($Uwq z%sbD*($LWGleXBW_kG2trO5E`)@ZuY+;}_Y2$aka(OKgNn1e&fEUXrO9n7dOH9?M5 zQ!OoQ&6^!-FtJ^CRIo})N-Bb4W|C?zYvP<0=5lolyr)H_qzE0==*CO9u2Q|ezT=QN z;$B~Y7Ff8sxo_RNRZvi%%T);Jh}64kQmPneH!nP-9Hbz?UOf1snf=QqS~_Mq6p0)H z@h;g&;uaTHb$4)b3O_wQaP!6F6y-Mxr5e}t(+^gP&vts%v$L~{V|S9h)dqWdG+z4M zSeBawQrJ(^}mDxjSy&KG)5W^4iLD+OhW&luaRnMM85<0)bAfr z`-Zmsiu3ld&a&(u67hc)*Ve?;u z)1L^P+h3pVq98#|Q8z%4qvQ_}bcSk~G%V&h7-1 z^F0wYO@3UI-NN#6Zf52+z63M5QX38q4v_EQ#$jbH;j=yQB7_isyNySb!{rRw9u{LZ44i@M%^SGawzi^$zq; z_wU!%)Py=YjrJGnEi5c-Kn{P_Z=kJxD|Z28RFp7BqO7d!A+{G@o2%|yR8TNIG6D`l zQ(ynzph0>D#Te@Aivl2t*Dp2%Nz6pLy1M%K%uh|ZgM5jOJ_sK)vFPBhtE^mIpRU&| zNF5LugdV8^yZig~?yo?%V{|@5jBODiEnN)y1JDdjOiVDprBZ)#bR1spFT~^VU>X~PYQ81k dzg6iB2$3^81ajxC!QT+T>iP{cf~jBpe*h|`X|MnQ literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv-members.html new file mode 100644 index 000000000..8be86fdbc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv-members.html @@ -0,0 +1,189 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRrecv Member List
+
+
+ +

This is the complete list of members for IRrecv, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_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)IRrecvprivate
_timer_numIRrecvprivate
_toleranceIRrecvprivate
_unknown_thresholdIRrecvprivate
_validTolerance(const uint8_t percentage)IRrecvprivate
compare(const uint16_t oldval, const uint16_t newval)IRrecvprivate
copyIrParams(volatile irparams_t *src, irparams_t *dst)IRrecvprivate
crudeNoiseFilter(decode_results *results, const uint16_t floor=0)IRrecvprivate
decode(decode_results *results, irparams_t *save=NULL, uint8_t max_skip=0, uint16_t noise_floor=0)IRrecv
decodeAirwell(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirwellBits, const bool strict=true)IRrecvprivate
decodeAiwaRCT501(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAiwaRcT501Bits, const bool strict=true)IRrecvprivate
decodeAmcor(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAmcorBits, const bool strict=true)IRrecvprivate
decodeArgo(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgoBits, const bool strict=true)IRrecvprivate
decodeCarrierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)IRrecvprivate
decodeCarrierAC40(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc40Bits, const bool strict=true)IRrecvprivate
decodeCarrierAC64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc64Bits, const bool strict=true)IRrecvprivate
decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)IRrecvprivate
decodeCoronaAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoronaAcBitsShort, const bool strict=true)IRrecvprivate
decodeDaikin(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)IRrecvprivate
decodeDaikin128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)IRrecvprivate
decodeDaikin152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)IRrecvprivate
decodeDaikin160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)IRrecvprivate
decodeDaikin176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)IRrecvprivate
decodeDaikin2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)IRrecvprivate
decodeDaikin216(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)IRrecvprivate
decodeDaikin64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)IRrecvprivate
decodeDelonghiAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDelonghiAcBits, const bool strict=true)IRrecvprivate
decodeDenon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDenonBits, const bool strict=true)IRrecvprivate
decodeDISH(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDishBits, const bool strict=true)IRrecvprivate
decodeDoshisha(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDoshishaBits, const bool strict=true)IRrecvprivate
decodeElectraAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)IRrecvprivate
decodeEpson(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)IRrecvprivate
decodeFujitsuAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kFujitsuAcBits, const bool strict=false)IRrecvprivate
decodeGICable(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGicableBits, const bool strict=true)IRrecvprivate
decodeGoodweather(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)IRrecvprivate
decodeGree(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGreeBits, const bool strict=true)IRrecvprivate
decodeHaierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACBits, const bool strict=true)IRrecvprivate
decodeHaierACYRW02(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACYRW02Bits, const bool strict=true)IRrecvprivate
decodeHash(decode_results *results)IRrecvprivate
decodeHitachiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)IRrecvprivate
decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)IRrecvprivate
decodeHitachiAc3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)IRrecvprivate
decodeHitachiAc424(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)IRrecvprivate
decodeInax(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kInaxBits, const bool strict=true)IRrecvprivate
decodeJVC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kJvcBits, const bool strict=true)IRrecvprivate
decodeKelvinator(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)IRrecvprivate
decodeLasertag(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)IRrecvprivate
decodeLegoPf(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLegoPfBits, const bool strict=true)IRrecvprivate
decodeLG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)IRrecvprivate
decodeLutron(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLutronBits, const bool strict=true)IRrecvprivate
decodeMagiQuest(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMagiquestBits, const bool strict=true)IRrecvprivate
decodeMidea(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)IRrecvprivate
decodeMidea24(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)IRrecvprivate
decodeMitsubishi(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)IRrecvprivate
decodeMitsubishi112(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi112Bits, const bool strict=true)IRrecvprivate
decodeMitsubishi136(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi136Bits, const bool strict=true)IRrecvprivate
decodeMitsubishi2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)IRrecvprivate
decodeMitsubishiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiACBits, const bool strict=false)IRrecvprivate
decodeMitsubishiHeavy(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiHeavy152Bits, const bool strict=true)IRrecvprivate
decodeMultibrackets(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMultibracketsBits, const bool strict=true)IRrecvprivate
decodeMWM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=24, const bool strict=true)IRrecvprivate
decodeNEC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNECBits, const bool strict=true)IRrecvprivate
decodeNeoclima(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNeoclimaBits, const bool strict=true)IRrecvprivate
decodeNikai(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNikaiBits, const bool strict=true)IRrecvprivate
decodePanasonic(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)IRrecvprivate
decodePanasonicAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)IRrecvprivate
decodePioneer(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPioneerBits, const bool strict=true)IRrecvprivate
decodeRC5(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)IRrecvprivate
decodeRC6(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)IRrecvprivate
decodeRCMM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRCMMBits, const bool strict=false)IRrecvprivate
decodeSAMSUNG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungBits, const bool strict=true)IRrecvprivate
decodeSamsung36(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)IRrecvprivate
decodeSamsungAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungAcBits, const bool strict=true)IRrecvprivate
decodeSanyoLC7461(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, bool strict=true)IRrecvprivate
decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)IRrecvprivate
decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)IRrecvprivate
decodeSony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSonyMinBits, const bool strict=false)IRrecvprivate
decodeSymphony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)IRrecvprivate
decodeTeco(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTecoBits, const bool strict=false)IRrecvprivate
decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbytes=kToshibaACBits, const bool strict=true)IRrecvprivate
decodeTrotec(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)IRrecvprivate
decodeVestelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVestelAcBits, const bool strict=true)IRrecvprivate
decodeWhirlpoolAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhirlpoolAcBits, const bool strict=true)IRrecvprivate
decodeWhynter(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhynterBits, const bool strict=true)IRrecvprivate
decodeZepeal(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kZepealBits, const bool strict=true)IRrecvprivate
disableIRIn(void)IRrecv
enableIRIn(const bool pullup=false)IRrecv
getBufSize(void)IRrecv
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)IRrecvprivate
getTolerance(void)IRrecv
irparams_saveIRrecvprivate
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)IRrecvexplicit
IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)IRrecvexplicit
match(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecv
matchAtLeast(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecvprivate
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)IRrecvprivate
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)IRrecvprivate
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)IRrecvprivate
matchGeneric(volatile uint16_t *data_ptr, uint8_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)IRrecvprivate
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)IRrecvprivate
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)IRrecvprivate
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)IRrecvprivate
matchMark(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)IRrecv
matchSpace(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)IRrecv
resume(void)IRrecv
setTolerance(const uint8_t percent=kTolerance)IRrecv
setUnknownThreshold(const uint16_t length)IRrecv
ticksHigh(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecvprivate
ticksLow(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecvprivate
~IRrecv(void)IRrecv
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv.html new file mode 100644 index 000000000..88e252a44 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv.html @@ -0,0 +1,7184 @@ + + + + + + + +IRremoteESP8266: IRrecv Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for receiving IR messages. + More...

+ +

#include <IRrecv.h>

+
+Collaboration diagram for IRrecv:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 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: More...
 
 IRrecv (const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)
 
 ~IRrecv (void)
 Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the various buffers, and disables any timers or interrupts used. More...
 
void setTolerance (const uint8_t percent=kTolerance)
 Set the base tolerance percentage for matching incoming IR messages. More...
 
uint8_t getTolerance (void)
 Get the base tolerance percentage for matching incoming IR messages. More...
 
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 for the next IR message to avoid missing messages. More...
 
void enableIRIn (const bool pullup=false)
 Set up and (re)start the IR capture mechanism. More...
 
void disableIRIn (void)
 Stop collection of any received IR data. Disable any timers and interrupts. More...
 
void resume (void)
 Resume collection of received IR data. More...
 
uint16_t getBufSize (void)
 Obtain the maximum number of entries possible in the capture buffer. i.e. It's size. More...
 
void setUnknownThreshold (const uint16_t length)
 Set the minimum length we will consider for reporting UNKNOWN message types. More...
 
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 delta range. More...
 
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, after an expected is excess is added. More...
 
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, after an expected is excess is removed. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

uint8_t _validTolerance (const uint8_t percentage)
 Convert the tolerance percentage into something valid. More...
 
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, thus memcpy() isn't allowed. Only call this when you know the interrupt handlers won't modify anything. i.e. In kStopState. More...
 
uint16_t compare (const uint16_t oldval, const uint16_t newval)
 Compare two tick values. More...
 
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. More...
 
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. More...
 
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 margin. More...
 
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_ptr depending on flag use_bits. More...
 
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)
 Match & decode the typical data section of an IR message. The data value is stored in the least significant bits reguardless of the bit ordering requested. More...
 
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)
 Match & decode the typical data section of an IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. More...
 
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. More...
 
uint16_t matchGeneric (volatile uint16_t *data_ptr, uint8_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 bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. More...
 
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_ptr. More...
 
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. More...
 
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. More...
 
void crudeNoiseFilter (decode_results *results, const uint16_t floor=0)
 Remove or merge pulses in the capture buffer that are too short. More...
 
bool decodeHash (decode_results *results)
 Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encoding scheme (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value. More...
 
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. More...
 
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. More...
 
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 / Untested. More...
 
bool decodeSanyoLC7461 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, bool strict=true)
 Decode the supplied SANYO LC7461 message. Status: BETA / Probably works. More...
 
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. More...
 
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. More...
 
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. More...
 
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 working. More...
 
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 / Reported as working. More...
 
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. Needs testing against a real device. More...
 
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 broken into time intervals. E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, successive calls to getRClevel will return MARK, MARK, SPACE. offset and used are updated to keep track of the current position. More...
 
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) More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
bool decodeSamsung36 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)
 Decode the supplied Samsung36 message. Status: Alpha / Experimental. More...
 
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. More...
 
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. More...
 
bool decodeCOOLIX (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)
 Decode the supplied Coolix A/C message. Status: STABLE / Known Working. More...
 
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. More...
 
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.) More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
bool decodeToshibaAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbytes=kToshibaACBits, const bool strict=true)
 Decode the supplied Toshiba A/C message. Status: STABLE / Working. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
bool decodeCarrierAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)
 Decode the supplied Carrier HVAC message. More...
 
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, but it is sent three(3) times. Status: STABLE / Tested against a real device. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
bool decodeHitachiAC1 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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). More...
 
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 examples) More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
+ + + + + + + + + +

+Private Attributes

irparams_tirparams_save
 
uint8_t _tolerance
 
uint8_t _timer_num
 
uint16_t _unknown_threshold
 
+

Detailed Description

+

Class for receiving IR messages.

+

Constructor & Destructor Documentation

+ +

◆ IRrecv() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IRrecv::IRrecv (const uint16_t recvpin,
const uint16_t bufsize = kRawBuf,
const uint8_t timeout = kTimeoutMs,
const bool save_buffer = false,
const uint8_t timer_num = kDefaultESP32Timer 
)
+
+explicit
+
+ +

Class constructor Args:

+
Parameters
+ + + + + + +
[in]recvpinThe GPIO pin the IR receiver module's data pin is connected to.
[in]bufsizeNr. of entries to have in the capture buffer. (Default: kRawBuf)
[in]timeoutNr. of milli-Seconds of no signal before we stop capturing data. (Default: kTimeoutMs)
[in]save_bufferUse a second (save) buffer to decode from. (Default: false)
[in]timer_numNr. of the ESP32 timer to use (0 to 3) (ESP32 Only)
+
+
+ +
+
+ +

◆ IRrecv() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IRrecv::IRrecv (const uint16_t recvpin,
const uint16_t bufsize = kRawBuf,
const uint8_t timeout = kTimeoutMs,
const bool save_buffer = false 
)
+
+explicit
+
+ +
+
+ +

◆ ~IRrecv()

+ +
+
+ + + + + + + + +
IRrecv::~IRrecv (void )
+
+ +

Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the various buffers, and disables any timers or interrupts used.

+ +
+
+

Member Function Documentation

+ +

◆ _matchGeneric()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::_matchGeneric (volatile uint16_t * data_ptr,
uint64_t * result_bits_ptr,
uint8_t * result_bytes_ptr,
const bool use_bits,
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 
)
+
+private
+
+ +

Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_ptr depending on flag use_bits.

+
Note
Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
+
Parameters
+ + + + + + + + + + + + + + + + + + + +
[in]data_ptrA pointer to where we are at in the capture buffer.
[out]result_bits_ptrA pointer to where to start storing the bits we decoded.
[out]result_bytes_ptrA pointer to where to start storing the bytes we decoded.
[in]use_bitsA flag indicating if we are to decode bits or bytes.
[in]remainingThe size of the capture buffer remaining.
[in]nbitsNr. of data bits we expect.
[in]hdrmarkNr. of uSeconds for the expected header mark signal.
[in]hdrspaceNr. of uSeconds for the expected header space signal.
[in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
[in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
[in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
[in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
[in]footermarkNr. of uSeconds for the expected footer mark signal.
[in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
[in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
+
+
+
Returns
If successful, how many buffer entries were used. Otherwise 0.
+ +
+
+ +

◆ _validTolerance()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t IRrecv::_validTolerance (const uint8_t percentage)
+
+private
+
+ +

Convert the tolerance percentage into something valid.

+
Parameters
+ + +
[in]percentageAn integer percentage.
+
+
+ +
+
+ +

◆ compare()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::compare (const uint16_t oldval,
const uint16_t newval 
)
+
+private
+
+ +

Compare two tick values.

+
Parameters
+ + + +
[in]oldvalNr. of ticks.
[in]newvalNr. of ticks.
+
+
+
Returns
0 if newval is shorter, 1 if it is equal, & 2 if it is longer.
+
Note
Use a tolerance of 20%
+ +
+
+ +

◆ copyIrParams()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRrecv::copyIrParams (volatile irparams_tsrc,
irparams_tdst 
)
+
+private
+
+ +

Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile, thus memcpy() isn't allowed. Only call this when you know the interrupt handlers won't modify anything. i.e. In kStopState.

+
Parameters
+ + + +
[in]srcPointer to an irparams_t structure to copy from.
[out]dstPointer to an irparams_t structure to copy to.
+
+
+ +
+
+ +

◆ crudeNoiseFilter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IRrecv::crudeNoiseFilter (decode_resultsresults,
const uint16_t floor = 0 
)
+
+private
+
+ +

Remove or merge pulses in the capture buffer that are too short.

+
Parameters
+ + + +
[in,out]resultsPtr to the decode_results we are going to filter.
[in]floorOnly allow values in the buffer large than this. (in microSeconds)
+
+
+ +
+
+ +

◆ decode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decode (decode_resultsresults,
irparams_tsave = 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 for the next IR message to avoid missing messages.

+
Note
There is a trade-off here. Saving the state means less time lost until we can receiving the next message vs. using more RAM. Choose appropriately.
+
Parameters
+ + + + +
[out]resultsA PTR to where the decoded IR message will be stored.
[out]saveA PTR to an irparams_t instance in which to save the interrupt's memory/state. NULL means don't save it.
[in]max_skipMaximum Nr. of pulses at the begining of a capture we can skip when attempting to find a protocol we can successfully decode. This parameter can dramatically improve detection of protocols when there is light IR interference just before an incoming IR message, however, it comes at a steep performace price. (Default is 0. No skipping.)
+
+
+
Warning
Increasing the max_skip value will dramatically (linearly) increase the cpu time & usage to decode protocols. e.g. 0 -> 1 will be a 2x increase in cpu usage/time. 0 -> 2 will be a 3x increase etc. If you are going to do this, consider disabling protocol decoding for protocols you are not expecting.
+
Parameters
+ + +
[in]noise_floorPulses below this size (in usecs) will be removed or merged prior to any decoding. This is to try to remove noise/poor readings & slighly increase the chances of a successful decode but at the cost of data fidelity & integrity. (Defaults to 0 usecs. i.e. Don't filter; which is safe!)
+
+
+
Warning
DANGER: Here Be Dragons! If you set the noise_floor value too high, it WILL break decoding of some protocols. You have been warned! Any non-zero value has the potential to cook the captured raw data i.e. The raw data is going to lie to you. It may obscure hardware, circuit, & environment issues thus making it impossible to support you accurately or confidently. Values of <= 50 usecs will probably be safe. 51 - 100 usecs might be okay. 100 - 150 usecs is "Danger, Will Robinson!". 150 - 200 usecs expect broken protocols. At 200+ usecs, you have protocols you can't decode!!
+
Returns
A boolean indicating if an IR message is ready or not.
+ +
+
+ +

◆ decodeAirwell()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeAirwell (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kAirwellBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Airwell "Manchester code" message.

+

Status: BETA / Appears to be working.

Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
+ +
+
+ +

◆ decodeAiwaRCT501()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeAiwaRCT501 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kAiwaRcT501Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Aiwa RC T501 message. Status: BETA / Should work.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
Note
Aiwa RC T501 appears to be a 42 bit variant of the NEC1 protocol. However, we historically (original Arduino IRremote project) treats it as a 15 bit (data) protocol. So, we expect nbits to typically be 15, and we will remove the prefix and postfix from the raw data, and use that as the result.
+
See also
http://www.sbprojects.com/knowledge/ir/nec.php
+
+https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
+ +
+
+ +

◆ decodeAmcor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeAmcor (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kAmcorBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeArgo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeArgo (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kArgoBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Argo message. Status: BETA / Probably works.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
Note
This decoder is based soley off sendArgo(). We have no actual captures to test this against. If you have one of these units, please let us know.
+ +
+
+ +

◆ decodeCarrierAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeCarrierAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kCarrierAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Carrier HVAC message.

+
Note
Carrier HVAC messages contain only 32 bits, but it is sent three(3) times. i.e. normal + inverted + normal Status: BETA / Probably works.
+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeCarrierAC40()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeCarrierAC40 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kCarrierAc40Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits, but it is sent three(3) times. Status: STABLE / Tested against a real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeCarrierAC64()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeCarrierAC64 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kCarrierAc64Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeCOOLIX()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeCOOLIX (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kCoolixBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Coolix A/C message. Status: STABLE / Known Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeCoronaAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeCoronaAc (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kCoronaAcBitsShort,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied CoronaAc message. Status: STABLE / Appears to be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store it
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeDaikin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikinBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote
+ +
+
+ +

◆ decodeDaikin128()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin128 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikin128Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/827
+ +
+
+ +

◆ decodeDaikin152()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin152 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikin152Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/873
+ +
+
+ +

◆ decodeDaikin160()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin160 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikin160Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/731
+ +
+
+ +

◆ decodeDaikin176()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin176 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikin176Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeDaikin2()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin2 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikin2Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeDaikin216()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin216 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikin216Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/689
+
+https://github.com/danny-source/Arduino_DY_IRDaikin
+ +
+
+ +

◆ decodeDaikin64()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDaikin64 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDaikin64Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1064
+ +
+
+ +

◆ decodeDelonghiAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDelonghiAc (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDelonghiAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1096
+ +
+
+ +

◆ decodeDenon()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDenon (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDenonBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
See also
https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp
+ +
+
+ +

◆ decodeDISH()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDISH (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDishBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed.)

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
Note
Dishplayer is a different protocol. Typically a DISH device needs to get a command a total of at least 4 times to accept it.
+
See also
http://www.hifi-remote.com/wiki/index.php?title=Dish
+
+http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx
+
+https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Dish.cpp
+ +
+
+ +

◆ decodeDoshisha()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeDoshisha (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kDoshishaBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Doshisha message. Status: STABLE / Works on real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeElectraAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeElectraAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kElectraAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Electra A/C message. Status: STABLE / Known working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeEpson()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeEpson (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kEpsonBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Epson message. Status: Beta / Probably works.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
Note
Experimental data indicates there are at least three messages (first + 2 repeats). We only require the first + a single repeat to match. This helps us distinguish it from NEC messages which are near identical.
+ +
+
+ +

◆ decodeFujitsuAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeFujitsuAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kFujitsuAcBits,
const bool strict = false 
)
+
+private
+
+ +

Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeGICable()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeGICable (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kGicableBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeGoodweather()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeGoodweather (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kGoodweatherBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Goodweather message. Status: BETA / Probably works.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeGree()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeGree (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kGreeBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Gree HVAC message. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeHaierAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeHaierAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kHaierACBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeHaierACYRW02()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeHaierACYRW02 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kHaierACYRW02Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeHash()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IRrecv::decodeHash (decode_resultsresults)
+
+private
+
+ +

Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encoding scheme (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value.

+

The algorithm: look at the sequence of MARK signals, and see if each one is shorter (0), the same length (1), or longer (2) than the previous. Do the same with the SPACE signals. Hash the resulting sequence of 0's, 1's, and 2's to a 32-bit value. This will give a unique value for each different code (probably), for most code systems.

See also
http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html
+
Note
This isn't a "real" decoding, just an arbitrary value. Hopefully this code is unique for each button.
+ +
+
+ +

◆ decodeHitachiAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeHitachiAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kHitachiAcBits,
const bool strict = true,
const bool MSBfirst = true 
)
+
+private
+
+ +

Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work.

+
Parameters
+ + + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect. Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, kHitachiAc344Bits
[in]strictFlag indicating if we should perform strict matching.
[in]MSBfirstIs the data per byte stored in MSB First (true) or LSB First order(false)?
+
+
+
Returns
True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/417
+
+https://github.com/crankyoldgit/IRremoteESP8266/issues/453
+
+https://github.com/crankyoldgit/IRremoteESP8266/issues/1134
+ +
+
+ +

◆ decodeHitachiAC1()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeHitachiAC1 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kHitachiAc1Bits,
const bool strict = true 
)
+
+private
+
+ +
+
+ +

◆ decodeHitachiAc3()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeHitachiAc3 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kHitachiAc3Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
This protocol is almost exactly the same as HitachiAC424 except this variant has subtle timing differences and multiple lengths. There are five(5) typical lengths: kHitachiAc3MinStateLength (Cancel Timer), kHitachiAc3MinStateLength + 2 (Change Temp), kHitachiAc3StateLength - 6 (Change Mode), kHitachiAc3StateLength - 4 (Normal), & kHitachiAc3StateLength (Set Timer)
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1060
+ +
+
+ +

◆ decodeHitachiAc424()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeHitachiAc424 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kHitachiAc424Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
This protocol is almost exactly the same as HitachiAC2 except this variant has a leader section as well, and subtle timing differences. It is also in LSBF order (per byte), rather than MSBF order.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/973
+
+(Japanese Manual) https://kadenfan.hitachi.co.jp/support/raj/item/docs/ras_aj22h_a_tori.pdf
+ +
+
+ +

◆ decodeInax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeInax (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kInaxBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Inax Toilet message. Status: Stable / Known working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/706
+ +
+
+ +

◆ decodeJVC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeJVC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kJvcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied JVC message. Status: Stable / Known working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
JVC repeat codes don't have a header.
+
See also
http://www.sbprojects.com/knowledge/ir/jvc.php
+ +
+
+ +

◆ decodeKelvinator()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeKelvinator (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kKelvinatorBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Kelvinator message. Status: STABLE / Known working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeLasertag()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeLasertag (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kLasertagBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
This protocol is pretty much just raw Manchester encoding.
+
See also
http://www.sbprojects.com/knowledge/ir/rc5.php
+
+https://en.wikipedia.org/wiki/RC-5
+
+https://en.wikipedia.org/wiki/Manchester_code
+
Todo:
Convert to using matchManchester() if we can.
+ +
+
+ +

◆ decodeLegoPf()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeLegoPf (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kLegoPfBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeLG()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeLG (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kLgBits,
const bool strict = false 
)
+
+private
+
+ +

Decode the supplied LG message. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect. Typically kLgBits or kLg32Bits.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
LG protocol has a repeat code which is 4 items long. Even though the protocol has 28/32 bits of data, only 24/28 bits are distinct. In transmission order, the 28/32 bits are constructed as follows: 8/12 bits of address + 16 bits of command + 4 bits of checksum.
+
+LG 32bit protocol appears near identical to the Samsung protocol. They possibly differ on how they repeat and initial HDR mark.
+
See also
https://funembedded.wordpress.com/2014/11/08/ir-remote-control-for-lg-conditioner-using-stm32f302-mcu-on-mbed-platform/
+ +
+
+ +

◆ decodeLutron()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeLutron (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kLutronBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Lutron message. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeMagiQuest()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMagiQuest (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMagiquestBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied MagiQuest message. Status: Beta / Should work.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
MagiQuest protocol appears to be a header of 8 'zero' bits, followed by 32 bits of "wand ID" and finally 16 bits of "magnitude". Even though we describe this protocol as 56 bits, it really only has 48 bits of data that matter. In transmission order, 8 zeros + 32 wand_id + 16 magnitude.
+
See also
https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp
+ +
+
+ +

◆ decodeMidea()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMidea (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMideaBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Midea message. Status: Alpha / Needs testing against a real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect. Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, kHitachiAc344Bits
[in]strictFlag indicating if we should perform strict matching.
+
+
+ +
+
+ +

◆ decodeMidea24()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMidea24 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMidea24Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+
Note
This protocol is basically a 48-bit version of the NEC protocol with alternate bytes inverted, thus only 24 bits of real data.
+
Warning
Can't be used beyond 32 bits.
+ +
+
+ +

◆ decodeMitsubishi()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMitsubishi (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMitsubishiBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Mitsubishi 16-bit message. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
This protocol appears to have no header.
+
See also
GlobalCache's Control Tower's Mitsubishi TV data.
+ +
+
+ +

◆ decodeMitsubishi112()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMitsubishi112 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMitsubishi112Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Reported as working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Note
Note Mitsubishi112 & Tcl112Ac are basically the same protocol. The only significant difference I can see is Mitsubishi112 has a slightly longer header mark. We will use that to determine which variant it should be. The other differences require full decoding and only only with certain settings. There are some other timing differences too, but the tolerances will overlap.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/619
+
+https://github.com/crankyoldgit/IRremoteESP8266/issues/947
+ +
+
+ +

◆ decodeMitsubishi136()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMitsubishi136 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMitsubishi136Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/888
+ +
+
+ +

◆ decodeMitsubishi2()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMitsubishi2 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMitsubishiBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/441
+ +
+
+ +

◆ decodeMitsubishiAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMitsubishiAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMitsubishiACBits,
const bool strict = false 
)
+
+private
+
+ +

Decode the supplied Mitsubish 144-bit A/C message. Status: BETA / Probably works.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
See also
https://www.analysir.com/blog/2015/01/06/reverse-engineering-mitsubishi-ac-infrared-protocol/
+ +
+
+ +

◆ decodeMitsubishiHeavy()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMitsubishiHeavy (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMitsubishiHeavy152Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working. Needs testing against a real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect. Typically kMitsubishiHeavy88Bits or kMitsubishiHeavy152Bits (def).
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeMultibrackets()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMultibrackets (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kMultibracketsBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the Multibrackets message. Status: BETA / Appears to be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeMWM()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeMWM (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = 24,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied MWM message. Status: Implemented.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
This protocol is 2400 bps serial, 1 start bit (mark), 1 stop bit (space), no parity
+ +
+
+ +

◆ decodeNEC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeNEC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kNECBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied NEC (Renesas) message. Status: STABLE / Known good.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
NEC protocol has three variants/forms. Normal: an 8 bit address & an 8 bit command in 32 bit data form. i.e. address + inverted(address) + command + inverted(command) Extended: a 16 bit address & an 8 bit command in 32 bit data form. i.e. address + command + inverted(command) Repeat: a 0-bit code. i.e. No data bits. Just the header + footer.
+
See also
http://www.sbprojects.com/knowledge/ir/nec.php
+ +
+
+ +

◆ decodeNeoclima()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeNeoclima (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kNeoclimaBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Neoclima message. Status: STABLE / Known working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeNikai()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeNikai (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kNikaiBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Nikai message. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+ +
+
+ +

◆ decodePanasonic()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodePanasonic (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kPanasonicBits,
const bool strict = false,
const uint32_t manufacturer = kPanasonicManufacturer 
)
+
+private
+
+ +

Decode the supplied Panasonic message. Status: STABLE / Should be working.

+
Parameters
+ + + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]manufacturerA 16-bit manufacturer code. e.g. 0x4004 is Panasonic
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Warning
Results to be used with sendPanasonic64(), not sendPanasonic().
+
Note
Panasonic 48-bit protocol is a modified version of Kaseikyo.
+
See also
http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615
+
+http://www.hifi-remote.com/wiki/index.php?title=Panasonic
+ +
+
+ +

◆ decodePanasonicAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodePanasonicAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kPanasonicAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s).

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodePioneer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodePioneer (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kPioneerBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real examples)

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeRC5()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeRC5 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kRC5XBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied RC-5/RC5X message. Status: RC-5 (stable), RC-5X (alpha)

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
The 'toggle' bit is included as the 6th (MSB) address bit, the MSB of data, & in the count of bits decoded.
+
Todo:
Serious testing of the RC-5X and strict aspects needs to be done.
+ +
+
+ +

◆ decodeRC6()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeRC6 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kRC6Mode0Bits,
const bool strict = false 
)
+
+private
+
+ +

Decode the supplied RC6 message. Status: Stable.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Todo:
Testing of the strict compliance aspects.
+ +
+
+ +

◆ decodeRCMM()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeRCMM (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kRCMMBits,
const bool strict = false 
)
+
+private
+
+ +

Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeSAMSUNG()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSAMSUNG (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSamsungBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Samsung 32-bit message. Status: STABLE.

+
Note
Samsung messages whilst 32 bits in size, only contain 16 bits of distinct data. e.g. In transmition order: customer_byte + customer_byte(same) + address_byte + invert(address_byte)
+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
LG 32bit protocol appears near identical to the Samsung protocol. They differ on their compliance criteria and how they repeat.
+
See also
http://elektrolab.wz.cz/katalog/samsung_protocol.pdf
+ +
+
+ +

◆ decodeSamsung36()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSamsung36 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSamsung36Bits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Samsung36 message. Status: Alpha / Experimental.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/621
+ +
+
+ +

◆ decodeSamsungAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSamsungAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSamsungAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Samsung A/C message. Status: Stable / Known to be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/505
+ +
+
+ +

◆ decodeSanyoLC7461()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSanyoLC7461 (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSanyoLC7461Bits,
bool strict = true 
)
+
+private
+
+ +

Decode the supplied SANYO LC7461 message. Status: BETA / Probably works.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
Based on @marcosamarinho's work. This protocol uses the NEC protocol. However, data is formatted as : address(13 bits), !address, command (8 bits), !command. According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon Information for this protocol is available at the Sanyo LC7461 datasheet.
+
See also
http://slydiman.narod.ru/scr/kb/sanyo.htm
+
+https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp
+
+http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf
+ +
+
+ +

◆ decodeSharp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSharp (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSharpBits,
const bool strict = true,
const bool expansion = true 
)
+
+private
+
+ +

Decode the supplied Sharp message. Status: STABLE / Working fine.

+
Parameters
+ + + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
[in]expansionShould we expect the expansion bit to be set. Default is true.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
This procedure returns a value suitable for use in sendSharpRaw().
+
Todo:
Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
+ +
+
+ +

◆ decodeSharpAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSharpAc (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSharpAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Sharp A/C message. Status: STABLE / Known working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/638
+
+https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp
+ +
+
+ +

◆ decodeSony()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSony (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSonyMinBits,
const bool strict = false 
)
+
+private
+
+ +

Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Untested.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
Note
SONY protocol, SIRC (Serial Infra-Red Control) can be 12, 15, or 20 bits long.
+ +
+
+ +

◆ decodeSymphony()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeSymphony (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kSymphonyBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Symphony packet/message. Status: STABLE / Should be working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeTeco()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeTeco (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kTecoBits,
const bool strict = false 
)
+
+private
+
+ +

Decode the supplied Teco message. Status: STABLE / Tested.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeToshibaAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeToshibaAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kToshibaACBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Toshiba A/C message. Status: STABLE / Working.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeTrotec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeTrotec (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kTrotecBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeVestelAc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeVestelAc (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kVestelAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeWhirlpoolAC()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeWhirlpoolAC (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kWhirlpoolAcBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+ +
+
+ +

◆ decodeWhynter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeWhynter (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kWhynterBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the result
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
True if it can decode it, false if it can't.
+
See also
https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp
+ +
+
+ +

◆ decodeZepeal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::decodeZepeal (decode_resultsresults,
uint16_t offset = kStartOffset,
const uint16_t nbits = kZepealBits,
const bool strict = true 
)
+
+private
+
+ +

Decode the supplied Zepeal message. Status: STABLE / Works on real device.

+
Parameters
+ + + + + +
[in,out]resultsPtr to the data to decode & where to store the decode result.
[in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
[in]nbitsThe number of data bits to expect. Typically kZepealBits.
[in]strictFlag indicating if we should perform strict matching.
+
+
+
Returns
A boolean. True if it can decode it, false if it can't.
+ +
+
+ +

◆ disableIRIn()

+ +
+
+ + + + + + + + +
void IRrecv::disableIRIn (void )
+
+ +

Stop collection of any received IR data. Disable any timers and interrupts.

+ +
+
+ +

◆ enableIRIn()

+ +
+
+ + + + + + + + +
void IRrecv::enableIRIn (const bool pullup = false)
+
+ +

Set up and (re)start the IR capture mechanism.

+
Parameters
+ + +
[in]pullupA flag indicating should the GPIO use the internal pullup resistor. (Default: false. i.e. No.)
+
+
+ +
+
+ +

◆ getBufSize()

+ +
+
+ + + + + + + + +
uint16_t IRrecv::getBufSize (void )
+
+ +

Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.

+
Returns
The size of the buffer that is in use by the object.
+ +
+
+ +

◆ getRClevel()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int16_t IRrecv::getRClevel (decode_resultsresults,
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 
)
+
+private
+
+ +

Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is broken into time intervals. E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, successive calls to getRClevel will return MARK, MARK, SPACE. offset and used are updated to keep track of the current position.

+
Parameters
+ + + + + + + + + +
[in,out]resultsPtr to the data to decode and where to store the decode result.
[in,out]offsetPtr to the currect offset to the rawbuf.
[in,out]usedPtr to the current used counter.
[in]bitTimeTime interval of single bit in microseconds.
[in]tolerancePercent tolerance to be used in matching.
[in]excessExtra useconds to add to Marks & removed from Spaces.
[in]deltaA non-scaling (+/-) error margin (in useconds).
[in]maxwidthMaximum number of successive levels to find in a single level (default is 3)
+
+
+
Returns
MARK, SPACE, or -1 for error. (The measured time interval is not a multiple of t1.)
+
See also
https://en.wikipedia.org/wiki/Manchester_code
+ +
+
+ +

◆ getTolerance()

+ +
+
+ + + + + + + + +
uint8_t IRrecv::getTolerance (void )
+
+ +

Get the base tolerance percentage for matching incoming IR messages.

+
Returns
A integer percentage.
+ +
+
+ +

◆ match()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::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 delta range.

+
Parameters
+ + + + + +
[in]measuredThe recorded period of the signal pulse.
[in]desiredThe expected period (in usecs) we are matching against.
[in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
[in]deltaA non-scaling (+/-) error margin (in useconds).
+
+
+
Returns
A Boolean. true if it matches, false if it doesn't.
+ +
+
+ +

◆ matchAtLeast()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::matchAtLeast (const uint32_t measured,
const uint32_t desired,
const uint8_t tolerance = kUseDefTol,
const uint16_t delta = 0 
)
+
+private
+
+ +

Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta margin.

+
Parameters
+ + + + + +
[in]measuredThe recorded period of the signal pulse.
[in]desiredThe expected period (in usecs) we are matching against.
[in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
[in]deltaA non-scaling amount to reduce usecs by.
+
+
+
Returns
A Boolean. true if it matches, false if it doesn't.
+ +
+
+ +

◆ matchBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::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 
)
+
+private
+
+ +

Match & decode the typical data section of an IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on.

+
Parameters
+ + + + + + + + + + + + +
[in]data_ptrA pointer to where we are at in the capture buffer.
[out]result_ptrA ptr to where to start storing the bytes we decoded.
[in]remainingThe size of the capture buffer remaining.
[in]nbytesNr. of data bytes we expect.
[in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
[in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
[in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
[in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
+
+
+
Returns
If successful, how many buffer entries were used. Otherwise 0.
+ +
+
+ +

◆ matchData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
match_result_t IRrecv::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 
)
+
+private
+
+ +

Match & decode the typical data section of an IR message. The data value is stored in the least significant bits reguardless of the bit ordering requested.

+
Parameters
+ + + + + + + + + + +
[in]data_ptrA pointer to where we are at in the capture buffer.
[in]nbitsNr. of data bits we expect.
[in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
[in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
[in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
[in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
+
+
+
Returns
A match_result_t structure containing the success (or not), the data value, and how many buffer entries were used.
+ +
+
+ +

◆ matchGeneric() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::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 
)
+
+private
+
+ +

Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr.

+
Note
Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
+
Parameters
+ + + + + + + + + + + + + + + + + +
[in]data_ptrA pointer to where we are at in the capture buffer.
[out]result_ptrA ptr to where to start storing the bits we decoded.
[in]remainingThe size of the capture buffer remaining.
[in]nbitsNr. of data bits we expect.
[in]hdrmarkNr. of uSeconds for the expected header mark signal.
[in]hdrspaceNr. of uSeconds for the expected header space signal.
[in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
[in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
[in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
[in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
[in]footermarkNr. of uSeconds for the expected footer mark signal.
[in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
[in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
+
+
+
Returns
If successful, how many buffer entries were used. Otherwise 0.
+ +
+
+ +

◆ matchGeneric() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::matchGeneric (volatile uint16_t * data_ptr,
uint8_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 
)
+
+private
+
+ +

Match & decode a generic/typical > 64bit IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on.

+
Note
Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
+
Parameters
+ + + + + + + + + + + + + + + + + +
[in]data_ptrA pointer to where we are at in the capture buffer.
[out]result_ptrA ptr to where to start storing the bytes we decoded.
[in]remainingThe size of the capture buffer remaining.
[in]nbitsNr. of data bits we expect.
[in]hdrmarkNr. of uSeconds for the expected header mark signal.
[in]hdrspaceNr. of uSeconds for the expected header space signal.
[in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
[in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
[in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
[in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
[in]footermarkNr. of uSeconds for the expected footer mark signal.
[in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
[in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
+
+
+
Returns
If successful, how many buffer entries were used. Otherwise 0.
+ +
+
+ +

◆ matchGenericConstBitTime()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::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 
)
+
+private
+
+ +

Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_ptr.

+
Note
Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
+
Parameters
+ + +
[in]data_ptrA pointer to where we are at in the capture buffer.
+
+
+
Note
data_ptr is assumed to be pointing to a "Mark", not a "Space".
+
Parameters
+ + + + + + + + + + + + + + +
[out]result_ptrA ptr to where to start storing the bits we decoded.
[in]remainingThe size of the capture buffer remaining.
[in]nbitsNr. of data bits we expect.
[in]hdrmarkNr. of uSeconds for the expected header mark signal.
[in]hdrspaceNr. of uSeconds for the expected header space signal.
[in]oneNr. of uSeconds in an expected mark signal for a '1' bit.
[in]zeroNr. of uSeconds in an expected mark signal for a '0' bit.
[in]footermarkNr. of uSeconds for the expected footer mark signal.
[in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
[in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
+
+
+
Returns
If successful, how many buffer entries were used. Otherwise 0.
+
Note
Parameters one + zero add up to the total time for a bit. e.g. mark(one) + space(zero) is a 1, mark(zero) + space(one) is a 0.
+ +
+
+ +

◆ matchManchester()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::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 half_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 
)
+
+private
+
+ +

Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr.

+
Note
Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
+
Parameters
+ + +
[in]data_ptrA pointer to where we are at in the capture buffer.
+
+
+
Note
data_ptr is assumed to be pointing to a "Mark", not a "Space".
+
Parameters
+ + + + + + + + + + + + + + +
[out]result_ptrA ptr to where to start storing the bits we decoded.
[in]remainingThe size of the capture buffer remaining.
[in]nbitsNr. of data bits we expect.
[in]hdrmarkNr. of uSeconds for the expected header mark signal.
[in]hdrspaceNr. of uSeconds for the expected header space signal.
[in]half_periodNr. of uSeconds for half the clock's period. i.e. 1/2 wavelength
[in]footermarkNr. of uSeconds for the expected footer mark signal.
[in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
[in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
[in]GEThomasUse G.E. Thomas (true) or IEEE 802.3 (false) convention?
+
+
+
Returns
If successful, how many buffer entries were used. Otherwise 0.
+
See also
https://en.wikipedia.org/wiki/Manchester_code
+
+http://ww1.microchip.com/downloads/en/AppNotes/Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf
+ +
+
+ +

◆ matchManchesterData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRrecv::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 
)
+
+private
+
+ +

Match & decode a Manchester Code data (<= 64bits.

+
Parameters
+ + +
[in]data_ptrA pointer to where we are at in the capture buffer.
+
+
+
Note
data_ptr is assumed to be pointing to a "Mark", not a "Space".
+
Parameters
+ + + + + + + + + + +
[out]result_ptrA ptr to where to start storing the bits we decoded.
[in]remainingThe size of the capture buffer remaining.
[in]nbitsNr. of data bits we expect.
[in]half_periodNr. of uSeconds for half the clock's period. i.e. 1/2 wavelength
[in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
[in]starting_balanceAmount of uSeconds to assume exists prior to the current value pointed too.
[in]excessNr. of uSeconds. (Def: kMarkExcess)
[in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
[in]GEThomasUse G.E. Thomas (true) or IEEE 802.3 (false) convention?
+
+
+
Returns
If successful, how many buffer entries were used. Otherwise 0.
+
See also
https://en.wikipedia.org/wiki/Manchester_code
+
+http://ww1.microchip.com/downloads/en/AppNotes/Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf
+
Todo:
Clean up and optimise this. It is just "get it working code" atm.
+ +
+
+ +

◆ matchMark()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::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, after an expected is excess is added.

+
Parameters
+ + + + + +
[in]measuredThe recorded period of the signal pulse.
[in]desiredThe expected period (in usecs) we are matching against.
[in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
[in]excessA non-scaling amount to reduce usecs by.
+
+
+
Returns
A Boolean. true if it matches, false if it doesn't.
+ +
+
+ +

◆ matchSpace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRrecv::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, after an expected is excess is removed.

+
Parameters
+ + + + + +
[in]measuredThe recorded period of the signal pulse.
[in]desiredThe expected period (in usecs) we are matching against.
[in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
[in]excessA non-scaling amount to reduce usecs by.
+
+
+
Returns
A Boolean. true if it matches, false if it doesn't.
+ +
+
+ +

◆ resume()

+ +
+
+ + + + + + + + +
void IRrecv::resume (void )
+
+ +

Resume collection of received IR data.

+
Note
This is required if decode() is successful and save_buffer was not set when the class was instanciated.
+
See also
IRrecv class constructor
+ +
+
+ +

◆ setTolerance()

+ +
+
+ + + + + + + + +
void IRrecv::setTolerance (const uint8_t percent = kTolerance)
+
+ +

Set the base tolerance percentage for matching incoming IR messages.

+
Parameters
+ + +
[in]percentAn integer percentage. (0-100)
+
+
+ +
+
+ +

◆ setUnknownThreshold()

+ +
+
+ + + + + + + + +
void IRrecv::setUnknownThreshold (const uint16_t length)
+
+ +

Set the minimum length we will consider for reporting UNKNOWN message types.

+
Parameters
+ + +
[in]lengthMin nr. of mark/space pulses required to be considered.
+
+
+ +
+
+ +

◆ ticksHigh()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t IRrecv::ticksHigh (const uint32_t usecs,
const uint8_t tolerance = kUseDefTol,
const uint16_t delta = 0 
)
+
+private
+
+ +

Calculate the upper bound of the nr. of ticks.

+
Parameters
+ + + + +
[in]usecsNr. of uSeconds.
[in]tolerancePercent as an integer. e.g. 10 is 10%
[in]deltaA non-scaling amount to increase usecs by.
+
+
+
Returns
Nr. of ticks.
+ +
+
+ +

◆ ticksLow()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t IRrecv::ticksLow (const uint32_t usecs,
const uint8_t tolerance = kUseDefTol,
const uint16_t delta = 0 
)
+
+private
+
+ +

Calculate the lower bound of the nr. of ticks.

+
Parameters
+ + + + +
[in]usecsNr. of uSeconds.
[in]tolerancePercent as an integer. e.g. 10 is 10%
[in]deltaA non-scaling amount to reduce usecs by.
+
+
+
Returns
Nr. of ticks.
+ +
+
+

Member Data Documentation

+ +

◆ _timer_num

+ +
+
+ + + + + +
+ + + + +
uint8_t IRrecv::_timer_num
+
+private
+
+ +
+
+ +

◆ _tolerance

+ +
+
+ + + + + +
+ + + + +
uint8_t IRrecv::_tolerance
+
+private
+
+ +
+
+ +

◆ _unknown_threshold

+ +
+
+ + + + + +
+ + + + +
uint16_t IRrecv::_unknown_threshold
+
+private
+
+ +
+
+ +

◆ irparams_save

+ +
+
+ + + + + +
+ + + + +
irparams_t* IRrecv::irparams_save
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.map new file mode 100644 index 000000000..afb28be42 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.md5 new file mode 100644 index 000000000..03ea8f4ee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.md5 @@ -0,0 +1 @@ +86a4a18f846668b6a3cf862d7669306a \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRrecv__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..69ea6e16f851a9224320aa46dad26e7c44cc5948 GIT binary patch literal 3293 zcmY*c2UJsA77Zd*S_0An0SBZgAWdozX#yWUCKLrEfJhSw7`h-`z91lN6!}0fq9#Z$ zp(T_EQUs(#>AfkvL|Q1$V`l!8_11fLz58xi=be4_-ZueZVa&-c%nky9I899qErAvb z+>xxzz!R1m<^VLzE@sAtpkJrg>jr!V2*i_E*gHo>30$Y}doTH)Y!2JiRe3E@_trKtQip58v3q-JPE%%6T@s3If~*)N zp^Y=~9&e_>3Nj&2&auO0Tv}UrFI~P|9=LJ~MhvNH2;19MpuD3OZwW)8<-SwbfX=t? z-%F(&H69jkt<$Q0MU#I7XuZYbX$mb1o?u@q75AdURX zvlnt8WGeoqgo+AP2$eASwZN*}|GUMcTRbz`i%p=Vq98dTLC?oW!M*!cG&29j3~8g$ zz}%c;umqLZ+G;4n$KLws(+n_cP)$}=mgg*kaux>?iR|d=YKgt=&G{8CfxcB_8x0KY zSnz}Ijr(i(FLG3SkHln8ohZ(?C47>p9sc{}y}@7ZnDzEeKoqN1Wb`uh6A1y=Z1Bi_{( zP@PcKLIT0L#%IFi;NZX`t~DT~tel>!9sE2n zFt9u+i9^lntIW$6FFyH9k~_V;ylhQOSgA_^NlI-e`*YljYim6b2MYr3s={_|ZWr&= z`MookqWoRfYIw*g^4MewdM{-!+>BC&_R5sAi+S?oY{;WWc6fP5vY?84ca%P^dHGu* zn4kZTfdR|xAV){X_~hhI1MkeX=2CP=*Qk!!Ze1_$e*U{`YS+Rm-Nuw!x<`_cW3J6dgBR>h43k-TnM2nY$?_rLK3u4zB_pVHO0q^RtT{=#L}KGow^2++#Cyb|IUekSyJN_5^b z^Tuy5QvgjHkXk|25Es&rik3LrISF;=h25qW*Sao}h|AMv$!%>)|F=Mb_Goky8urx0 zMts9BUNn8UT}4Q4pJpfxVjwQ4Kgu)^5l@)DdNj_Kn84t?PisYwudUCaAms)SN}*04 zSI0W4uw9O0M>p87Bz{C;hiB8n3AXzp( z&v3CiUT+$ECiw8Ui8h!$6=4cF zoex`{yf!^y{qyHgzD%fA_YcB~o@dUQPFc8=sRQE$&Gb4gqsX_6zwE4@7SS+dvkP22 zYwusiLz(`M44Ht}3t4$qK%`YeyW-xXGL!FkSWKis3>`eJ%xYf)6f7wQ7oP6b>Awb> z(cgXmpTz&Ud7NqT=IOJ6x5= zYcY(glY>-x=AVCRx&96lB1fA9Mm6C^H7)VxQY}XZG^DL<{6^C+*f{}(sz$u^rL8uo zuQMfviBM1wO>u4>sr110d-jcuX}hA{kViZ;#>J*f>+6N*+EZ${HU$7e6fG*v&u7G7 zFeYYZ(Cv{=++09npke9h=?EJeCZc`v;-Wj8)~&+Dxv6fgUFWclIE{0-79$~b6PqO9 z^tgYq!MEv{AFAdZWnX;b&K)Q=^5oI{{CxA!P;f`RB#m)9V|vwsuKxffbeC@x*`V^mkX?HrCW7mO?$dQNq zhH`wYBrp6PiLJ+@J|t65L^5j{jKTfaFT}(c{|meRc6>TwHywb%e^aO`xcHX``2S^L zs1#`hi(}E!iV8?_a`Knu^|V(Cop*=DVxqof)^&@4AP@)-4E61V$`=3Yv z7s9mXA@1SfVNhW0(wTm7aLA(<%LLk|)Bh$X$6;U0uj27#-cAamT;nj;urqjvKp-@q z93O7cS4!sq!CY4t0fE(PI3~k^%IWh|1^hv1!=#puiVClG&}uWl#wkGF=KxJm6iyzl zMneav)U@>U7@$O|h(xl@S5;kqXNe;c zzqxfS-yhcsX=rGWk(ZAXXMLrCdD9cNu&~ha`LjNNSL;jX)qKX|0en2BFX8)^0uYy8 z*w*;u241gCxkhIt5{VtXz3o_?Fh$I)p|y?8-No)KPfyS0g|5h4FKs|4U0hsvAduOC zg&oQ9y)9--OUsz_bO@+99xRcXnK`r}Lb#DnneWVC01cHowRdJnpL)F{Ar)p&S;&^l zDYKN6aQW4VG@Z~d10|YVR;CEryCF~ZrT<(y6*ItJPy}0MTArq5Wi353+OhSiYa=zK z+y+7g49a6#kNWYAGBz%*>J!qtcT6BfAg_|r(h{1QLYH2!GsiL%7Z-b?(Q!bb0l$(Z zC(pjPtv}!Ru39$I#wKok-A7VNifif&WY1x4LO@V3-lp)@Om6Tbg%Znx9<=0sF3Jyq zoYCU}z@U2_hxobjeU$hBaC^0(J0Aj*_g)J)hA>>ac8yR})Cz=#vn*JBZf<~0x>K?R zlg#W&!(yMKNI{%htf+?%72n^?dwz8ESoP{vTuqHYrUL3?ec+0-au$z>NK&R_C|kA~ zTHnBcaecflwxU9LrOz}*e404qXkco}W|5;24WNPK2i8d+W8nr33=9Btkhs0Qt*4uj zk-_-RGGTSqn|!dCEh8t_T4Yx_y|%^)0z8G0wKZQwWhL&L7t+e=o(laZ@C|`NCHM6q z;D@V~Esf^bF9iZIjmNuVwGqel?T-954h~6m{@=G1jQ9-8+av}I{_DE`x8hDsIJNg1 zOgAEDUFl+w=^~haJqmVrMkAD2c_wCe>z_9Lbb`{EX2(e*o?e=6tnuSMVQOzQa9#nK M8d(^Y=sU;!1BWM6qW}N^ literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend-members.html new file mode 100644 index 000000000..af01c2961 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend-members.html @@ -0,0 +1,213 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRsend Member List
+
+
+ +

This is the complete list of members for IRsend, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_delayMicroseconds(uint32_t usec)IRsend
_dutycycleIRsendprivate
_freq_unittestIRsendprivate
_sendSony(const uint64_t data, const uint16_t nbits, const uint16_t repeat, const uint16_t freq)IRsendprivate
begin()IRsend
calcUSecPeriod(uint32_t hz, bool use_offset=true)IRsendprivate
calibrate(uint16_t hz=38000U)IRsend
defaultBits(const decode_type_t protocol)IRsendstatic
enableIROut(uint32_t freq, uint8_t duty=kDutyDefault)IRsend
encodeDoshisha(const uint8_t command, const uint8_t channel=0)IRsend
encodeJVC(uint8_t address, uint8_t command)IRsend
encodeLG(uint16_t address, uint16_t command)IRsend
encodeMagiQuest(const uint32_t wand_id, const uint16_t magnitude)IRsend
encodeNEC(uint16_t address, uint16_t command)IRsend
encodePanasonic(const uint16_t manufacturer, const uint8_t device, const uint8_t subdevice, const uint8_t function)IRsend
encodePioneer(uint16_t address, uint16_t command)IRsend
encodeRC5(const uint8_t address, const uint8_t command, const bool key_released=false)IRsend
encodeRC5X(const uint8_t address, const uint8_t command, const bool key_released=false)IRsend
encodeRC6(const uint32_t address, const uint8_t command, const uint16_t mode=kRC6Mode0Bits)IRsend
encodeSAMSUNG(const uint8_t customer, const uint8_t command)IRsend
encodeSanyoLC7461(uint16_t address, uint8_t command)IRsend
encodeSharp(const uint16_t address, const uint16_t command, const uint16_t expansion=1, const uint16_t check=0, const bool MSBfirst=false)IRsend
encodeSony(const uint16_t nbits, const uint16_t command, const uint16_t address, const uint16_t extended=0)IRsend
IRpinIRsendprivate
IRsend(uint16_t IRsendPin, bool inverted=false, bool use_modulation=true)IRsendexplicit
ledOff()IRsendprotected
ledOn()IRsendprotected
mark(uint16_t usec)IRsend
minRepeats(const decode_type_t protocol)IRsendstatic
modulationIRsendprivate
offTimePeriodIRsendprivate
onTimePeriodIRsendprivate
outputOffIRsendprotected
outputOnIRsendprotected
periodOffsetIRsendprivate
send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)IRsend
send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes)IRsend
sendAirwell(uint64_t data, uint16_t nbits=kAirwellBits, uint16_t repeat=kAirwellMinRepeats)IRsend
sendAiwaRCT501(uint64_t data, uint16_t nbits=kAiwaRcT501Bits, uint16_t repeat=kAiwaRcT501MinRepeats)IRsend
sendAmcor(const unsigned char data[], const uint16_t nbytes=kAmcorStateLength, const uint16_t repeat=kAmcorDefaultRepeat)IRsend
sendArgo(const unsigned char data[], const uint16_t nbytes=kArgoStateLength, const uint16_t repeat=kArgoDefaultRepeat)IRsend
sendCarrierAC(uint64_t data, uint16_t nbits=kCarrierAcBits, uint16_t repeat=kCarrierAcMinRepeat)IRsend
sendCarrierAC40(uint64_t data, uint16_t nbits=kCarrierAc40Bits, uint16_t repeat=kCarrierAc40MinRepeat)IRsend
sendCarrierAC64(uint64_t data, uint16_t nbits=kCarrierAc64Bits, uint16_t repeat=kCarrierAc64MinRepeat)IRsend
sendCOOLIX(uint64_t data, uint16_t nbits=kCoolixBits, uint16_t repeat=kCoolixDefaultRepeat)IRsend
sendCoronaAc(const uint8_t data[], const uint16_t nbytes=kCoronaAcStateLength, const uint16_t repeat=kNoRepeat)IRsend
sendDaikin(const unsigned char data[], const uint16_t nbytes=kDaikinStateLength, const uint16_t repeat=kDaikinDefaultRepeat)IRsend
sendDaikin128(const unsigned char data[], const uint16_t nbytes=kDaikin128StateLength, const uint16_t repeat=kDaikin128DefaultRepeat)IRsend
sendDaikin152(const unsigned char data[], const uint16_t nbytes=kDaikin152StateLength, const uint16_t repeat=kDaikin152DefaultRepeat)IRsend
sendDaikin160(const unsigned char data[], const uint16_t nbytes=kDaikin160StateLength, const uint16_t repeat=kDaikin160DefaultRepeat)IRsend
sendDaikin176(const unsigned char data[], const uint16_t nbytes=kDaikin176StateLength, const uint16_t repeat=kDaikin176DefaultRepeat)IRsend
sendDaikin2(const unsigned char data[], const uint16_t nbytes=kDaikin2StateLength, const uint16_t repeat=kDaikin2DefaultRepeat)IRsend
sendDaikin216(const unsigned char data[], const uint16_t nbytes=kDaikin216StateLength, const uint16_t repeat=kDaikin216DefaultRepeat)IRsend
sendDaikin64(const uint64_t data, const uint16_t nbits=kDaikin64Bits, const uint16_t repeat=kDaikin64DefaultRepeat)IRsend
sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark, uint32_t zerospace, uint64_t data, uint16_t nbits, bool MSBfirst=true)IRsend
sendDelonghiAc(uint64_t data, uint16_t nbits=kDelonghiAcBits, uint16_t repeat=kDelonghiAcDefaultRepeat)IRsend
sendDenon(uint64_t data, uint16_t nbits=kDenonBits, uint16_t repeat=kNoRepeat)IRsend
sendDISH(uint64_t data, uint16_t nbits=kDishBits, uint16_t repeat=kDishMinRepeat)IRsend
sendDoshisha(const uint64_t data, uint16_t nbits=kDoshishaBits, const uint16_t repeat=kNoRepeat)IRsend
sendElectraAC(const unsigned char data[], const uint16_t nbytes=kElectraAcStateLength, const uint16_t repeat=kNoRepeat)IRsend
sendEpson(uint64_t data, uint16_t nbits=kEpsonBits, uint16_t repeat=kEpsonMinRepeat)IRsend
sendFujitsuAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kFujitsuAcMinRepeat)IRsend
sendGC(uint16_t buf[], uint16_t len)IRsend
sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)IRsend
sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)IRsend
sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)IRsend
sendGICable(uint64_t data, uint16_t nbits=kGicableBits, uint16_t repeat=kGicableMinRepeat)IRsend
sendGoodweather(const uint64_t data, const uint16_t nbits=kGoodweatherBits, const uint16_t repeat=kGoodweatherMinRepeat)IRsend
sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)IRsend
sendGree(const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)IRsend
sendHaierAC(const unsigned char data[], const uint16_t nbytes=kHaierACStateLength, const uint16_t repeat=kHaierAcDefaultRepeat)IRsend
sendHaierACYRW02(const unsigned char data[], const uint16_t nbytes=kHaierACYRW02StateLength, const uint16_t repeat=kHaierAcYrw02DefaultRepeat)IRsend
sendHitachiAC(const unsigned char data[], const uint16_t nbytes=kHitachiAcStateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
sendHitachiAC1(const unsigned char data[], const uint16_t nbytes=kHitachiAc1StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
sendHitachiAC2(const unsigned char data[], const uint16_t nbytes=kHitachiAc2StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
sendHitachiAc3(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
sendHitachiAc344(const unsigned char data[], const uint16_t nbytes=kHitachiAc344StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
sendHitachiAc424(const unsigned char data[], const uint16_t nbytes=kHitachiAc424StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
sendInax(const uint64_t data, const uint16_t nbits=kInaxBits, const uint16_t repeat=kInaxMinRepeat)IRsend
sendJVC(uint64_t data, uint16_t nbits=kJvcBits, uint16_t repeat=kNoRepeat)IRsend
sendKelvinator(const unsigned char data[], const uint16_t nbytes=kKelvinatorStateLength, const uint16_t repeat=kKelvinatorDefaultRepeat)IRsend
sendLasertag(uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)IRsend
sendLegoPf(const uint64_t data, const uint16_t nbits=kLegoPfBits, const uint16_t repeat=kLegoPfMinRepeat)IRsend
sendLG(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)IRsend
sendLG2(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)IRsend
sendLutron(uint64_t data, uint16_t nbits=kLutronBits, uint16_t repeat=kNoRepeat)IRsend
sendMagiQuest(const uint64_t data, const uint16_t nbits=kMagiquestBits, const uint16_t repeat=kNoRepeat)IRsend
sendManchester(const uint16_t headermark, const uint32_t headerspace, const uint16_t half_period, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency=38, const bool MSBfirst=true, const uint16_t repeat=kNoRepeat, const uint8_t dutycycle=kDutyDefault, const bool GEThomas=true)IRsend
sendManchesterData(const uint16_t half_period, const uint64_t data, const uint16_t nbits, const bool MSBfirst=true, const bool GEThomas=true)IRsend
sendMidea(uint64_t data, uint16_t nbits=kMideaBits, uint16_t repeat=kMideaMinRepeat)IRsend
sendMidea24(const uint64_t data, const uint16_t nbits=kMidea24Bits, const uint16_t repeat=kMidea24MinRepeat)IRsend
sendMitsubishi(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)IRsend
sendMitsubishi112(const unsigned char data[], const uint16_t nbytes=kMitsubishi112StateLength, const uint16_t repeat=kMitsubishi112MinRepeat)IRsend
sendMitsubishi136(const unsigned char data[], const uint16_t nbytes=kMitsubishi136StateLength, const uint16_t repeat=kMitsubishi136MinRepeat)IRsend
sendMitsubishi2(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)IRsend
sendMitsubishiAC(const unsigned char data[], const uint16_t nbytes=kMitsubishiACStateLength, const uint16_t repeat=kMitsubishiACMinRepeat)IRsend
sendMitsubishiHeavy152(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy152StateLength, const uint16_t repeat=kMitsubishiHeavy152MinRepeat)IRsend
sendMitsubishiHeavy88(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy88StateLength, const uint16_t repeat=kMitsubishiHeavy88MinRepeat)IRsend
sendMultibrackets(const uint64_t data, const uint16_t nbits=kMultibracketsBits, const uint16_t repeat=kMultibracketsDefaultRepeat)IRsend
sendMWM(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kNoRepeat)IRsend
sendNEC(uint64_t data, uint16_t nbits=kNECBits, uint16_t repeat=kNoRepeat)IRsend
sendNeoclima(const unsigned char data[], const uint16_t nbytes=kNeoclimaStateLength, const uint16_t repeat=kNeoclimaMinRepeat)IRsend
sendNikai(uint64_t data, uint16_t nbits=kNikaiBits, uint16_t repeat=kNoRepeat)IRsend
sendPanasonic(const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)IRsend
sendPanasonic64(const uint64_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)IRsend
sendPanasonicAC(const unsigned char data[], const uint16_t nbytes=kPanasonicAcStateLength, const uint16_t repeat=kPanasonicAcDefaultRepeat)IRsend
sendPioneer(const uint64_t data, const uint16_t nbits=kPioneerBits, const uint16_t repeat=kNoRepeat)IRsend
sendPronto(uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)IRsend
sendRaw(const uint16_t buf[], const uint16_t len, const uint16_t hz)IRsend
sendRC5(const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)IRsend
sendRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits, const uint16_t repeat=kNoRepeat)IRsend
sendRCMM(uint64_t data, uint16_t nbits=kRCMMBits, uint16_t repeat=kNoRepeat)IRsend
sendSAMSUNG(const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)IRsend
sendSamsung36(const uint64_t data, const uint16_t nbits=kSamsung36Bits, const uint16_t repeat=kNoRepeat)IRsend
sendSamsungAC(const unsigned char data[], const uint16_t nbytes=kSamsungAcStateLength, const uint16_t repeat=kSamsungAcDefaultRepeat)IRsend
sendSanyoLC7461(const uint64_t data, const uint16_t nbits=kSanyoLC7461Bits, const uint16_t repeat=kNoRepeat)IRsend
sendSharp(const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)IRsend
sendSharpAc(const unsigned char data[], const uint16_t nbytes=kSharpAcStateLength, const uint16_t repeat=kSharpAcDefaultRepeat)IRsend
sendSharpRaw(const uint64_t data, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)IRsend
sendSherwood(uint64_t data, uint16_t nbits=kSherwoodBits, uint16_t repeat=kSherwoodMinRepeat)IRsend
sendSony(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat)IRsend
sendSony38(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat+1)IRsend
sendSymphony(uint64_t data, uint16_t nbits=kSymphonyBits, uint16_t repeat=kSymphonyDefaultRepeat)IRsend
sendTcl112Ac(const unsigned char data[], const uint16_t nbytes=kTcl112AcStateLength, const uint16_t repeat=kTcl112AcDefaultRepeat)IRsend
sendTeco(const uint64_t data, const uint16_t nbits=kTecoBits, const uint16_t repeat=kNoRepeat)IRsend
sendToshibaAC(const unsigned char data[], const uint16_t nbytes=kToshibaACStateLength, const uint16_t repeat=kToshibaACMinRepeat)IRsend
sendTrotec(const unsigned char data[], const uint16_t nbytes=kTrotecStateLength, const uint16_t repeat=kTrotecDefaultRepeat)IRsend
sendVestelAc(const uint64_t data, const uint16_t nbits=kVestelAcBits, const uint16_t repeat=kNoRepeat)IRsend
sendWhirlpoolAC(const unsigned char data[], const uint16_t nbytes=kWhirlpoolAcStateLength, const uint16_t repeat=kWhirlpoolAcDefaultRepeat)IRsend
sendWhynter(const uint64_t data, const uint16_t nbits=kWhynterBits, const uint16_t repeat=kNoRepeat)IRsend
sendZepeal(const uint64_t data, const uint16_t nbits=kZepealBits, const uint16_t repeat=kZepealMinRepeat)IRsend
space(uint32_t usec)IRsend
toggleRC5(const uint64_t data)IRsend
toggleRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits)IRsend
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend.html new file mode 100644 index 000000000..93a9b7efe --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRsend.html @@ -0,0 +1,6599 @@ + + + + + + + +IRremoteESP8266: IRsend Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class for sending all basic IR protocols. + More...

+ +

#include <IRsend.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IRsend (uint16_t IRsendPin, bool inverted=false, bool use_modulation=true)
 Constructor for an IRsend object. More...
 
void begin ()
 Enable the pin for output. More...
 
void enableIROut (uint32_t freq, uint8_t duty=kDutyDefault)
 Set the output frequency modulation and duty cycle. More...
 
VIRTUAL void _delayMicroseconds (uint32_t usec)
 An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds(). More...
 
VIRTUAL uint16_t mark (uint16_t usec)
 Modulate the IR LED for the given period (usec) and at the duty cycle set. More...
 
VIRTUAL void space (uint32_t usec)
 Turn the pin (LED) off for a given time. Sends an IR space for the specified number of microseconds. A space is no output, so the PWM output is disabled. More...
 
int8_t calibrate (uint16_t hz=38000U)
 Calculate & set any offsets to account for execution times during sending. More...
 
void sendRaw (const uint16_t buf[], const uint16_t len, const uint16_t hz)
 Send a raw IRremote message. More...
 
void sendData (uint16_t onemark, uint32_t onespace, uint16_t zeromark, uint32_t zerospace, uint64_t data, uint16_t nbits, bool MSBfirst=true)
 Generic method for sending data that is common to most protocols. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
 
void sendManchesterData (const uint16_t half_period, const uint64_t data, const uint16_t nbits, const bool MSBfirst=true, const bool GEThomas=true)
 Generic method for sending Manchester code data. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
 
void sendManchester (const uint16_t headermark, const uint32_t headerspace, const uint16_t half_period, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency=38, const bool MSBfirst=true, const uint16_t repeat=kNoRepeat, const uint8_t dutycycle=kDutyDefault, const bool GEThomas=true)
 Generic method for sending Manchester code messages. Will send leading or trailing 0's if the nbits is larger than the number. More...
 
void sendGeneric (const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
 Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
 
void sendGeneric (const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
 Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
 
void sendGeneric (const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
 Generic method for sending simple protocol messages. More...
 
bool send (const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)
 Send a simple (up to 64 bits) IR message of a given type. An unknown/unsupported type will send nothing. More...
 
bool send (const decode_type_t type, const uint8_t *state, const uint16_t nbytes)
 Send a complex (>= 64 bits) IR message of a given type. An unknown/unsupported type will send nothing. More...
 
void sendNEC (uint64_t data, uint16_t nbits=kNECBits, uint16_t repeat=kNoRepeat)
 Send a raw NEC(Renesas) formatted message. Status: STABLE / Known working. More...
 
uint32_t encodeNEC (uint16_t address, uint16_t command)
 Calculate the raw NEC data based on address and command. Status: STABLE / Expected to work. More...
 
void sendSony (const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat)
 Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) Status: STABLE / Known working. More...
 
void sendSony38 (const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat+1)
 Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. Status: STABLE / Known working. More...
 
uint32_t encodeSony (const uint16_t nbits, const uint16_t command, const uint16_t address, const uint16_t extended=0)
 Convert Sony/SIRC command, address, & extended bits into sendSony format. Status: STABLE / Should be working. More...
 
void sendSherwood (uint64_t data, uint16_t nbits=kSherwoodBits, uint16_t repeat=kSherwoodMinRepeat)
 Send an IR command to a Sherwood device. Status: STABLE / Known working. More...
 
void sendSAMSUNG (const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)
 Send a 32-bit Samsung formatted message. Status: STABLE / Should be working. More...
 
uint32_t encodeSAMSUNG (const uint8_t customer, const uint8_t command)
 Construct a raw Samsung message from the supplied customer(address) & command. Status: STABLE / Should be working. More...
 
void sendSamsung36 (const uint64_t data, const uint16_t nbits=kSamsung36Bits, const uint16_t repeat=kNoRepeat)
 Send a Samsung 36-bit formatted message. Status: Alpha / Experimental. More...
 
void sendSamsungAC (const unsigned char data[], const uint16_t nbytes=kSamsungAcStateLength, const uint16_t repeat=kSamsungAcDefaultRepeat)
 Send a Samsung A/C message. Status: Stable / Known working. More...
 
void sendLG (uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
 Send an LG formatted message. (LG) Status: Beta / Should be working. More...
 
void sendLG2 (uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
 Send an LG Variant-2 formatted message. (LG2) Status: Beta / Should be working. More...
 
uint32_t encodeLG (uint16_t address, uint16_t command)
 Construct a raw 28-bit LG message code from the supplied address & command. Status: STABLE / Works. More...
 
uint32_t encodeSharp (const uint16_t address, const uint16_t command, const uint16_t expansion=1, const uint16_t check=0, const bool MSBfirst=false)
 Encode a (raw) Sharp message from it's components. Status: STABLE / Works okay. More...
 
void sendSharp (const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
 Send a Sharp message Status: DEPRECATED / Previously working fine. More...
 
void sendSharpRaw (const uint64_t data, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
 Send a (raw) Sharp message. More...
 
void sendSharpAc (const unsigned char data[], const uint16_t nbytes=kSharpAcStateLength, const uint16_t repeat=kSharpAcDefaultRepeat)
 Send a Sharp A/C message. Status: Alpha / Untested. More...
 
void sendJVC (uint64_t data, uint16_t nbits=kJvcBits, uint16_t repeat=kNoRepeat)
 Send a JVC formatted message. Status: STABLE / Working. More...
 
uint16_t encodeJVC (uint8_t address, uint8_t command)
 Calculate the raw JVC data based on address and command. Status: STABLE / Works fine. More...
 
void sendDenon (uint64_t data, uint16_t nbits=kDenonBits, uint16_t repeat=kNoRepeat)
 Send a Denon formatted message. Status: STABLE / Should be working. More...
 
uint64_t encodeSanyoLC7461 (uint16_t address, uint8_t command)
 Construct a Sanyo LC7461 message. More...
 
void sendSanyoLC7461 (const uint64_t data, const uint16_t nbits=kSanyoLC7461Bits, const uint16_t repeat=kNoRepeat)
 Send a Sanyo LC7461 message. Status: BETA / Probably works. More...
 
void sendDISH (uint64_t data, uint16_t nbits=kDishBits, uint16_t repeat=kDishMinRepeat)
 Send a DISH NETWORK formatted message. Status: STABLE / Working. More...
 
void sendPanasonic64 (const uint64_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
 Send a Panasonic formatted message. Status: STABLE / Should be working. More...
 
void sendPanasonic (const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
 Send a Panasonic formatted message. Status: STABLE, but DEPRECATED. More...
 
uint64_t encodePanasonic (const uint16_t manufacturer, const uint8_t device, const uint8_t subdevice, const uint8_t function)
 Calculate the raw Panasonic data based on device, subdevice, & function. Status: STABLE / Should be working. More...
 
void sendRC5 (const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)
 Send a Philips RC-5/RC-5X packet. Status: RC-5 (stable), RC-5X (alpha) More...
 
uint16_t encodeRC5 (const uint8_t address, const uint8_t command, const bool key_released=false)
 Encode a Philips RC-5 data message. Status: Beta / Should be working. More...
 
uint16_t encodeRC5X (const uint8_t address, const uint8_t command, const bool key_released=false)
 Encode a Philips RC-5X data message. Status: Beta / Should be working. More...
 
uint64_t toggleRC5 (const uint64_t data)
 Flip the toggle bit of a Philips RC-5/RC-5X data message. Used to indicate a change of remote button's state. Status: STABLE. More...
 
void sendRC6 (const uint64_t data, const uint16_t nbits=kRC6Mode0Bits, const uint16_t repeat=kNoRepeat)
 Send a Philips RC-6 packet. Status: Stable. More...
 
uint64_t encodeRC6 (const uint32_t address, const uint8_t command, const uint16_t mode=kRC6Mode0Bits)
 Encode a Philips RC-6 data message. Status: Beta / Should be working. More...
 
uint64_t toggleRC6 (const uint64_t data, const uint16_t nbits=kRC6Mode0Bits)
 Flip the toggle bit of a Philips RC-6 data message. Used to indicate a change of remote button's state. Status: STABLE / Should work fine. More...
 
void sendRCMM (uint64_t data, uint16_t nbits=kRCMMBits, uint16_t repeat=kNoRepeat)
 Send a Philips RC-MM packet. Status: STABLE / Should be working. More...
 
void sendCOOLIX (uint64_t data, uint16_t nbits=kCoolixBits, uint16_t repeat=kCoolixDefaultRepeat)
 Send a Coolix message Status: STABLE / Confirmed Working. More...
 
void sendWhynter (const uint64_t data, const uint16_t nbits=kWhynterBits, const uint16_t repeat=kNoRepeat)
 Send a Whynter message. Status: STABLE. More...
 
void sendMitsubishi (uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
 Send the supplied Mitsubishi 16-bit message. Status: STABLE / Working. More...
 
void sendMitsubishi136 (const unsigned char data[], const uint16_t nbytes=kMitsubishi136StateLength, const uint16_t repeat=kMitsubishi136MinRepeat)
 Send a Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: BETA / Probably working. Needs to be tested against a real device. More...
 
void sendMitsubishi112 (const unsigned char data[], const uint16_t nbytes=kMitsubishi112StateLength, const uint16_t repeat=kMitsubishi112MinRepeat)
 Send a Mitsubishi 112-bit A/C formatted message. (MITSUBISHI112) Status: Stable / Reported as working. More...
 
void sendMitsubishi2 (uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
 Send a supplied second variant Mitsubishi 16-bit message. Status: BETA / Probably works. More...
 
void sendMitsubishiAC (const unsigned char data[], const uint16_t nbytes=kMitsubishiACStateLength, const uint16_t repeat=kMitsubishiACMinRepeat)
 Send a Mitsubishi 144-bit A/C formatted message. (MITSUBISHI_AC) Status: STABLE / Working. More...
 
void sendMitsubishiHeavy88 (const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy88StateLength, const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
 Send a MitsubishiHeavy 88-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device. More...
 
void sendMitsubishiHeavy152 (const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy152StateLength, const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
 Send a MitsubishiHeavy 152-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device. More...
 
void sendFujitsuAC (const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kFujitsuAcMinRepeat)
 Send a Fujitsu A/C formatted message. Status: STABLE / Known Good. More...
 
void sendInax (const uint64_t data, const uint16_t nbits=kInaxBits, const uint16_t repeat=kInaxMinRepeat)
 Send a Inax Toilet formatted message. Status: STABLE / Working. More...
 
void sendGC (uint16_t buf[], uint16_t len)
 Send a shortened GlobalCache (GC) IRdb/control tower formatted message. Status: STABLE / Known working. More...
 
void sendKelvinator (const unsigned char data[], const uint16_t nbytes=kKelvinatorStateLength, const uint16_t repeat=kKelvinatorDefaultRepeat)
 Send a Kelvinator A/C message. Status: STABLE / Known working. More...
 
void sendDaikin (const unsigned char data[], const uint16_t nbytes=kDaikinStateLength, const uint16_t repeat=kDaikinDefaultRepeat)
 Send a Daikin 280-bit A/C formatted message. Status: STABLE. More...
 
void sendDaikin64 (const uint64_t data, const uint16_t nbits=kDaikin64Bits, const uint16_t repeat=kDaikin64DefaultRepeat)
 Send a Daikin64 (64-bit) A/C formatted message. Status: Beta / Probably Working. More...
 
void sendDaikin128 (const unsigned char data[], const uint16_t nbytes=kDaikin128StateLength, const uint16_t repeat=kDaikin128DefaultRepeat)
 Send a Daikin128 (128-bit) A/C formatted message. Status: STABLE / Known Working. More...
 
void sendDaikin152 (const unsigned char data[], const uint16_t nbytes=kDaikin152StateLength, const uint16_t repeat=kDaikin152DefaultRepeat)
 Send a Daikin152 (152-bit) A/C formatted message. Status: STABLE / Known Working. More...
 
void sendDaikin160 (const unsigned char data[], const uint16_t nbytes=kDaikin160StateLength, const uint16_t repeat=kDaikin160DefaultRepeat)
 Send a Daikin160 (160-bit) A/C formatted message. Status: STABLE / Confirmed working. More...
 
void sendDaikin176 (const unsigned char data[], const uint16_t nbytes=kDaikin176StateLength, const uint16_t repeat=kDaikin176DefaultRepeat)
 Send a Daikin176 (176-bit) A/C formatted message. Status: Alpha / Untested on a real device. More...
 
void sendDaikin2 (const unsigned char data[], const uint16_t nbytes=kDaikin2StateLength, const uint16_t repeat=kDaikin2DefaultRepeat)
 Send a Daikin2 (312-bit) A/C formatted message. Status: STABLE / Expected to work. More...
 
void sendDaikin216 (const unsigned char data[], const uint16_t nbytes=kDaikin216StateLength, const uint16_t repeat=kDaikin216DefaultRepeat)
 Send a Daikin216 (216-bit) A/C formatted message. Status: Alpha / Untested on a real device. More...
 
void sendAiwaRCT501 (uint64_t data, uint16_t nbits=kAiwaRcT501Bits, uint16_t repeat=kAiwaRcT501MinRepeats)
 Send an Aiwa RC T501 formatted message. Status: BETA / Should work. More...
 
void sendGree (const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)
 Send a Gree Heat Pump formatted message. Status: STABLE / Working. More...
 
void sendGree (const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)
 Send a Gree Heat Pump formatted message. Status: STABLE / Working. More...
 
void sendGoodweather (const uint64_t data, const uint16_t nbits=kGoodweatherBits, const uint16_t repeat=kGoodweatherMinRepeat)
 Send a Goodweather HVAC formatted message. Status: BETA / Needs testing on real device. More...
 
void sendPronto (uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)
 Send a Pronto Code formatted message. Status: STABLE / Known working. More...
 
void sendArgo (const unsigned char data[], const uint16_t nbytes=kArgoStateLength, const uint16_t repeat=kArgoDefaultRepeat)
 Send a Argo A/C formatted message. Status: BETA / Probably works. More...
 
void sendTrotec (const unsigned char data[], const uint16_t nbytes=kTrotecStateLength, const uint16_t repeat=kTrotecDefaultRepeat)
 Send a Trotec message. Status: Beta / Probably Working. More...
 
void sendNikai (uint64_t data, uint16_t nbits=kNikaiBits, uint16_t repeat=kNoRepeat)
 Send a Nikai formatted message. Status: STABLE / Working. More...
 
void sendToshibaAC (const unsigned char data[], const uint16_t nbytes=kToshibaACStateLength, const uint16_t repeat=kToshibaACMinRepeat)
 Send a Toshiba A/C message. Status: STABLE / Working. More...
 
void sendMidea (uint64_t data, uint16_t nbits=kMideaBits, uint16_t repeat=kMideaMinRepeat)
 Send a Midea message Status: Alpha / Needs testing against a real device. More...
 
void sendMidea24 (const uint64_t data, const uint16_t nbits=kMidea24Bits, const uint16_t repeat=kMidea24MinRepeat)
 Send a Midea24 formatted message. Status: STABLE / Confirmed working on a real device. More...
 
void sendMagiQuest (const uint64_t data, const uint16_t nbits=kMagiquestBits, const uint16_t repeat=kNoRepeat)
 Send a MagiQuest formatted message. Status: Beta / Should be working. More...
 
uint64_t encodeMagiQuest (const uint32_t wand_id, const uint16_t magnitude)
 Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. (Only 48 bits of real data + 8 leading zero bits) This is suitable for calling sendMagiQuest() with. e.g. sendMagiQuest(encodeMagiQuest(wand_id, magnitude)) More...
 
void sendLasertag (uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)
 Send a Lasertag packet/message. Status: STABLE / Working. More...
 
void sendCarrierAC (uint64_t data, uint16_t nbits=kCarrierAcBits, uint16_t repeat=kCarrierAcMinRepeat)
 Send a Carrier HVAC formatted message. Status: STABLE / Works on real devices. More...
 
void sendCarrierAC40 (uint64_t data, uint16_t nbits=kCarrierAc40Bits, uint16_t repeat=kCarrierAc40MinRepeat)
 Send a Carrier 40bit HVAC formatted message. Status: STABLE / Tested against a real device. More...
 
void sendCarrierAC64 (uint64_t data, uint16_t nbits=kCarrierAc64Bits, uint16_t repeat=kCarrierAc64MinRepeat)
 Send a Carrier 64bit HVAC formatted message. Status: STABLE / Known to be working. More...
 
void sendHaierAC (const unsigned char data[], const uint16_t nbytes=kHaierACStateLength, const uint16_t repeat=kHaierAcDefaultRepeat)
 Send a Haier A/C formatted message. (HSU07-HEA03 remote) Status: STABLE / Known to be working. More...
 
void sendHaierACYRW02 (const unsigned char data[], const uint16_t nbytes=kHaierACYRW02StateLength, const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
 Send a Haier YR-W02 remote A/C formatted message. Status: Alpha / Untested on a real device. More...
 
void sendHitachiAC (const unsigned char data[], const uint16_t nbytes=kHitachiAcStateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send a Hitachi 28-byte/224-bit A/C formatted message. (HITACHI_AC) Status: STABLE / Working. More...
 
void sendHitachiAC1 (const unsigned char data[], const uint16_t nbytes=kHitachiAc1StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send a Hitachi 13 byte/224-bit A/C formatted message. (HITACHI_AC1) Status: STABLE / Confirmed Working. More...
 
void sendHitachiAC2 (const unsigned char data[], const uint16_t nbytes=kHitachiAc2StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send a Hitachi 53 byte/424-bit A/C formatted message. (HITACHI_AC2) Basically the same as sendHitatchiAC() except different size. Status: STABLE / Expected to work. More...
 
void sendHitachiAc3 (const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send a Hitachi(3) A/C formatted message. (HITACHI_AC3) Status: STABLE / Working fine. More...
 
void sendHitachiAc344 (const unsigned char data[], const uint16_t nbytes=kHitachiAc344StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send a Hitachi A/C 43-byte/344-bit message. (HITACHI_AC344) Basically the same as sendHitatchiAC() except different size. Status: Beta / Probably works. More...
 
void sendHitachiAc424 (const unsigned char data[], const uint16_t nbytes=kHitachiAc424StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send a Hitachi 53-byte/424-bit A/C formatted message. (HITACHI_AC424) Status: STABLE / Reported as working. More...
 
void sendGICable (uint64_t data, uint16_t nbits=kGicableBits, uint16_t repeat=kGicableMinRepeat)
 Send a raw G.I. Cable formatted message. Status: Alpha / Untested. More...
 
void sendWhirlpoolAC (const unsigned char data[], const uint16_t nbytes=kWhirlpoolAcStateLength, const uint16_t repeat=kWhirlpoolAcDefaultRepeat)
 Send a Whirlpool A/C message. Status: BETA / Probably works. More...
 
void sendLutron (uint64_t data, uint16_t nbits=kLutronBits, uint16_t repeat=kNoRepeat)
 Send a Lutron formatted message. Status: Stable / Appears to be working for real devices. More...
 
void sendElectraAC (const unsigned char data[], const uint16_t nbytes=kElectraAcStateLength, const uint16_t repeat=kNoRepeat)
 Send a Electra A/C formatted message. Status: Alpha / Needs testing against a real device. More...
 
void sendPanasonicAC (const unsigned char data[], const uint16_t nbytes=kPanasonicAcStateLength, const uint16_t repeat=kPanasonicAcDefaultRepeat)
 Send a Panasonic A/C message. Status: STABLE / Work with real device(s). More...
 
void sendPioneer (const uint64_t data, const uint16_t nbits=kPioneerBits, const uint16_t repeat=kNoRepeat)
 Send a raw Pioneer formatted message. Status: STABLE / Expected to be working. More...
 
uint64_t encodePioneer (uint16_t address, uint16_t command)
 Calculate the raw Pioneer data code based on two NEC sub-codes Status: STABLE / Expected to work. More...
 
void sendMWM (const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kNoRepeat)
 Send a MWM packet/message. Status: Implemented. More...
 
void sendVestelAc (const uint64_t data, const uint16_t nbits=kVestelAcBits, const uint16_t repeat=kNoRepeat)
 Send a Vestel message Status: STABLE / Working. More...
 
void sendTcl112Ac (const unsigned char data[], const uint16_t nbytes=kTcl112AcStateLength, const uint16_t repeat=kTcl112AcDefaultRepeat)
 Send a TCL 112-bit A/C message. Status: Beta / Probably working. More...
 
void sendTeco (const uint64_t data, const uint16_t nbits=kTecoBits, const uint16_t repeat=kNoRepeat)
 Send a Teco A/C message. Status: Beta / Probably working. More...
 
void sendLegoPf (const uint64_t data, const uint16_t nbits=kLegoPfBits, const uint16_t repeat=kLegoPfMinRepeat)
 Send a LEGO Power Functions message. Status: Beta / Should work. More...
 
void sendNeoclima (const unsigned char data[], const uint16_t nbytes=kNeoclimaStateLength, const uint16_t repeat=kNeoclimaMinRepeat)
 Send a Neoclima message. Status: STABLE / Known to be working. More...
 
void sendAmcor (const unsigned char data[], const uint16_t nbytes=kAmcorStateLength, const uint16_t repeat=kAmcorDefaultRepeat)
 Send a Amcor HVAC formatted message. Status: STABLE / Reported as working. More...
 
void sendEpson (uint64_t data, uint16_t nbits=kEpsonBits, uint16_t repeat=kEpsonMinRepeat)
 Send an Epson formatted message. Status: Beta / Probably works. More...
 
void sendSymphony (uint64_t data, uint16_t nbits=kSymphonyBits, uint16_t repeat=kSymphonyDefaultRepeat)
 Send a Symphony packet. Status: STABLE / Should be working. More...
 
void sendAirwell (uint64_t data, uint16_t nbits=kAirwellBits, uint16_t repeat=kAirwellMinRepeats)
 Send an Airwell Manchester Code formatted message. Status: BETA / Appears to be working. More...
 
void sendDelonghiAc (uint64_t data, uint16_t nbits=kDelonghiAcBits, uint16_t repeat=kDelonghiAcDefaultRepeat)
 Send a Delonghi A/C formatted message. Status: STABLE / Reported as working on a real device. More...
 
void sendDoshisha (const uint64_t data, uint16_t nbits=kDoshishaBits, const uint16_t repeat=kNoRepeat)
 Send a Doshisha formatted message. Status: STABLE / Works on real device. More...
 
uint64_t encodeDoshisha (const uint8_t command, const uint8_t channel=0)
 Encode Doshisha combining constant values with command and channel. Status: STABLE / Working. More...
 
void sendMultibrackets (const uint64_t data, const uint16_t nbits=kMultibracketsBits, const uint16_t repeat=kMultibracketsDefaultRepeat)
 Send a Multibrackets formatted message. Status: BETA / Appears to be working. More...
 
void sendCoronaAc (const uint8_t data[], const uint16_t nbytes=kCoronaAcStateLength, const uint16_t repeat=kNoRepeat)
 Send a CoronaAc formatted message. Status: STABLE / Working on real device. More...
 
void sendZepeal (const uint64_t data, const uint16_t nbits=kZepealBits, const uint16_t repeat=kZepealMinRepeat)
 Send a Zepeal formatted message. Status: STABLE / Works on real device. More...
 
+ + + + + + + +

+Static Public Member Functions

static uint16_t minRepeats (const decode_type_t protocol)
 Get the minimum number of repeats for a given protocol. More...
 
static uint16_t defaultBits (const decode_type_t protocol)
 Get the default number of bits for a given protocol. More...
 
+ + + + + + + +

+Protected Member Functions

VIRTUAL void ledOff ()
 Turn off the IR LED. More...
 
VIRTUAL void ledOn ()
 Turn on the IR LED. More...
 
+ + + + + +

+Protected Attributes

uint8_t outputOn
 
uint8_t outputOff
 
+ + + + + + + +

+Private Member Functions

uint32_t calcUSecPeriod (uint32_t hz, bool use_offset=true)
 Calculate the period for a given frequency. More...
 
void _sendSony (const uint64_t data, const uint16_t nbits, const uint16_t repeat, const uint16_t freq)
 Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message Status: STABLE / Known working. More...
 
+ + + + + + + + + + + + + + + +

+Private Attributes

uint32_t _freq_unittest
 
uint16_t onTimePeriod
 
uint16_t offTimePeriod
 
uint16_t IRpin
 
int8_t periodOffset
 
uint8_t _dutycycle
 
bool modulation
 
+

Detailed Description

+

Class for sending all basic IR protocols.

+
Note
Originally from https://github.com/shirriff/Arduino-IRremote/ Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for sending IR code on ESP8266
+

Constructor & Destructor Documentation

+ +

◆ IRsend()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
IRsend::IRsend (uint16_t IRsendPin,
bool inverted = false,
bool use_modulation = true 
)
+
+explicit
+
+ +

Constructor for an IRsend object.

+
Parameters
+ + + +
[in]IRsendPinWhich GPIO pin to use when sending an IR command.
[in]invertedOptional flag to invert the output. (default = false) e.g. LED is illuminated when GPIO is LOW rather than HIGH.
+
+
+
Warning
Setting inverted to something other than the default could easily destroy your IR LED if you are overdriving it. Unless you REALLY know what you are doing, don't change this.
+
Parameters
+ + +
[in]use_modulationDo we do frequency modulation during transmission? i.e. If not, assume a 100% duty cycle. Ignore attempts to change the duty cycle etc.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _delayMicroseconds()

+ +
+
+ + + + + + + + +
void IRsend::_delayMicroseconds (uint32_t usec)
+
+ +

An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds().

+

A version of delayMicroseconds() that handles large values and does NOT use the watch-dog friendly delay() calls where appropriate.

+
Parameters
+ + +
[in]usecNr. of uSeconds to delay for.
+
+
+
Note
Use this only if you know what you are doing as it may cause the WDT to reset the ESP8266.
+ +
+
+ +

◆ _sendSony()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::_sendSony (const uint64_t data,
const uint16_t nbits,
const uint16_t repeat,
const uint16_t freq 
)
+
+private
+
+ +

Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message Status: STABLE / Known working.

+
Parameters
+ + + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
[in]freqFrequency of the modulation to transmit at. (Hz or kHz)
+
+
+ +
+
+ +

◆ begin()

+ +
+
+ + + + + + + +
void IRsend::begin ()
+
+ +

Enable the pin for output.

+ +
+
+ +

◆ calcUSecPeriod()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint32_t IRsend::calcUSecPeriod (uint32_t hz,
bool use_offset = true 
)
+
+private
+
+ +

Calculate the period for a given frequency.

+
Parameters
+ + + +
[in]hzFrequency in Hz.
[in]use_offsetShould we use the calculated offset or not?
+
+
+
Returns
nr. of uSeconds.
+
Note
(T = 1/f)
+ +
+
+ +

◆ calibrate()

+ +
+
+ + + + + + + + +
int8_t IRsend::calibrate (uint16_t hz = 38000U)
+
+ +

Calculate & set any offsets to account for execution times during sending.

+
Parameters
+ + +
[in]hzThe frequency to calibrate at >= 1000Hz. Default is 38000Hz.
+
+
+
Returns
The calculated period offset (in uSeconds) which is now in use. e.g. -5.
+
Note
This will generate an 65535us mark() IR LED signal. This only needs to be called once, if at all.
+ +
+
+ +

◆ defaultBits()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRsend::defaultBits (const decode_type_t protocol)
+
+static
+
+ +

Get the default number of bits for a given protocol.

+
Parameters
+ + +
[in]protocolProtocol number/type you want the default bit size for.
+
+
+
Returns
The number of bits.
+ +
+
+ +

◆ enableIROut()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRsend::enableIROut (uint32_t freq,
uint8_t duty = kDutyDefault 
)
+
+ +

Set the output frequency modulation and duty cycle.

+
Parameters
+ + + +
[in]freqThe freq we want to modulate at. Assumes < 1000 means kHz else Hz.
[in]dutyPercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent. This is ignored if modulation is disabled at object instantiation.
+
+
+
Note
Integer timing functions & math mean we can't do fractions of microseconds timing. Thus minor changes to the freq & duty values may have limited effect. You've been warned.
+ +
+
+ +

◆ encodeDoshisha()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t IRsend::encodeDoshisha (const uint8_t command,
const uint8_t channel = 0 
)
+
+ +

Encode Doshisha combining constant values with command and channel. Status: STABLE / Working.

+
Parameters
+ + + +
[in]commandThe command code to be sent.
[in]channelThe one bit channel 0 for CH1 and 1 for CH2
+
+
+
Returns
The corresponding Doshisha code.
+ +
+
+ +

◆ encodeJVC()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint16_t IRsend::encodeJVC (uint8_t address,
uint8_t command 
)
+
+ +

Calculate the raw JVC data based on address and command. Status: STABLE / Works fine.

+
Parameters
+ + + +
[in]addressAn 8-bit address value.
[in]commandAn 8-bit command value.
+
+
+
Returns
A raw JVC message code, suitable for sendJVC()..
+
See also
http://www.sbprojects.com/knowledge/ir/jvc.php
+ +
+
+ +

◆ encodeLG()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t IRsend::encodeLG (uint16_t address,
uint16_t command 
)
+
+ +

Construct a raw 28-bit LG message code from the supplied address & command. Status: STABLE / Works.

+
Parameters
+ + + +
[in]addressThe address code.
[in]commandThe command code.
+
+
+
Returns
A raw 28-bit LG message code suitable for sendLG() etc.
+
Note
Sequence of bits = address + command + checksum.
+ +
+
+ +

◆ encodeMagiQuest()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t IRsend::encodeMagiQuest (const uint32_t wand_id,
const uint16_t magnitude 
)
+
+ +

Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. (Only 48 bits of real data + 8 leading zero bits) This is suitable for calling sendMagiQuest() with. e.g. sendMagiQuest(encodeMagiQuest(wand_id, magnitude))

+
Parameters
+ + + +
[in]wand_idThe value for the wand ID.
[in]magnitudeThe value for the magnitude
+
+
+
Returns
A code suitable for calling sendMagiQuest() with.
+ +
+
+ +

◆ encodeNEC()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t IRsend::encodeNEC (uint16_t address,
uint16_t command 
)
+
+ +

Calculate the raw NEC data based on address and command. Status: STABLE / Expected to work.

+
Parameters
+ + + +
[in]addressAn address value.
[in]commandAn 8-bit command value.
+
+
+
Returns
A raw 32-bit NEC message suitable for use with sendNEC().
+
See also
http://www.sbprojects.com/knowledge/ir/nec.php
+ +
+
+ +

◆ encodePanasonic()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint64_t IRsend::encodePanasonic (const uint16_t manufacturer,
const uint8_t device,
const uint8_t subdevice,
const uint8_t function 
)
+
+ +

Calculate the raw Panasonic data based on device, subdevice, & function. Status: STABLE / Should be working.

+
Parameters
+ + + + + +
[in]manufacturerA 16-bit manufacturer code. e.g. 0x4004 is Panasonic
[in]deviceAn 8-bit code.
[in]subdeviceAn 8-bit code.
[in]functionAn 8-bit code.
+
+
+
Returns
A value suitable for use with sendPanasonic64().
+
Note
Panasonic 48-bit protocol is a modified version of Kaseikyo.
+
See also
http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615
+ +
+
+ +

◆ encodePioneer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t IRsend::encodePioneer (uint16_t address,
uint16_t command 
)
+
+ +

Calculate the raw Pioneer data code based on two NEC sub-codes Status: STABLE / Expected to work.

+
Parameters
+ + + +
[in]addressA 16-bit "published" NEC value.
[in]commandA 16-bit "published" NEC value.
+
+
+
Returns
A raw 64-bit Pioneer message code for use with sendPioneer()`
+
Note
Address & Command can be take from a decode result OR from the spreadsheets located at: https://www.pioneerelectronics.com/PUSA/Support/Home-Entertainment-Custom-Install/IR+Codes/A+V+Receivers where the first part is considered the address, and the second the command. e.g. "A556+AF20" is an Address of 0xA556 & a Command of 0xAF20.
+ +
+
+ +

◆ encodeRC5()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRsend::encodeRC5 (const uint8_t address,
const uint8_t command,
const bool key_released = false 
)
+
+ +

Encode a Philips RC-5 data message. Status: Beta / Should be working.

+
Parameters
+ + + + +
[in]addressThe 5-bit address value for the message.
[in]commandThe 6-bit command value for the message.
[in]key_releasedIndicate if the remote key has been released.
+
+
+
Returns
A message suitable for use in sendRC5().
+ +
+
+ +

◆ encodeRC5X()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t IRsend::encodeRC5X (const uint8_t address,
const uint8_t command,
const bool key_released = false 
)
+
+ +

Encode a Philips RC-5X data message. Status: Beta / Should be working.

+
Parameters
+ + + + +
[in]addressThe 5-bit address value for the message.
[in]commandThe 7-bit command value for the message.
[in]key_releasedIndicate if the remote key has been released.
+
+
+
Returns
A message suitable for use in sendRC5().
+ +
+
+ +

◆ encodeRC6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint64_t IRsend::encodeRC6 (const uint32_t address,
const uint8_t command,
const uint16_t mode = kRC6Mode0Bits 
)
+
+ +

Encode a Philips RC-6 data message. Status: Beta / Should be working.

+
Parameters
+ + + + +
[in]addressThe address (aka. control) value for the message. Includes the field/mode/toggle bits.
[in]commandThe 8-bit command value for the message. (aka. information)
[in]modeWhich protocol to use. Defined by nr. of bits in the protocol.
+
+
+
Returns
A data message suitable for use in sendRC6().
+ +
+
+ +

◆ encodeSAMSUNG()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t IRsend::encodeSAMSUNG (const uint8_t customer,
const uint8_t command 
)
+
+ +

Construct a raw Samsung message from the supplied customer(address) & command. Status: STABLE / Should be working.

+
Parameters
+ + + +
[in]customerThe customer code. (aka. Address)
[in]commandThe command code.
+
+
+
Returns
A raw 32-bit Samsung message suitable for sendSAMSUNG().
+ +
+
+ +

◆ encodeSanyoLC7461()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t IRsend::encodeSanyoLC7461 (uint16_t address,
uint8_t command 
)
+
+ +

Construct a Sanyo LC7461 message.

+
Parameters
+ + + +
[in]addressThe 13 bit value of the address(Custom) portion of the protocol.
[in]commandThe 8 bit value of the command(Key) portion of the protocol.
+
+
+
Returns
An uint64_t with the encoded raw 42 bit Sanyo LC7461 data value.
+
Note
This protocol uses the NEC protocol timings. However, data is formatted as : address(13 bits), !address, command(8 bits), !command. According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon
+ +
+
+ +

◆ encodeSharp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t IRsend::encodeSharp (const uint16_t address,
const uint16_t command,
const uint16_t expansion = 1,
const uint16_t check = 0,
const bool MSBfirst = false 
)
+
+ +

Encode a (raw) Sharp message from it's components. Status: STABLE / Works okay.

+
Parameters
+ + + + + + +
[in]addressThe value of the address to be sent.
[in]commandThe value of the address to be sent. (8 bits)
[in]expansionThe value of the expansion bit to use. (0 or 1, typically 1)
[in]checkThe value of the check bit to use. (0 or 1, typically 0)
[in]MSBfirstFlag indicating MSB first or LSB first order.
+
+
+
Returns
A uint32_t containing the raw Sharp message for sendSharpRaw().
+
Note
Assumes the standard Sharp bit sizes. Historically sendSharp() sends address & command in MSB first order. This is actually incorrect. It should be sent in LSB order. The behaviour of sendSharp() hasn't been changed to maintain backward compatibility.
+ +
+
+ +

◆ encodeSony()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t IRsend::encodeSony (const uint16_t nbits,
const uint16_t command,
const uint16_t address,
const uint16_t extended = 0 
)
+
+ +

Convert Sony/SIRC command, address, & extended bits into sendSony format. Status: STABLE / Should be working.

+
Parameters
+ + + + + +
[in]nbitsSony protocol bit size.
[in]commandSony command bits.
[in]addressSony address bits.
[in]extendedSony extended bits.
+
+
+
Returns
A sendSony() etc compatible data message.
+ +
+
+ +

◆ ledOff()

+ +
+
+ + + + + +
+ + + + + + + +
void IRsend::ledOff ()
+
+protected
+
+ +

Turn off the IR LED.

+ +
+
+ +

◆ ledOn()

+ +
+
+ + + + + +
+ + + + + + + +
void IRsend::ledOn ()
+
+protected
+
+ +

Turn on the IR LED.

+ +
+
+ +

◆ mark()

+ +
+
+ + + + + + + + +
uint16_t IRsend::mark (uint16_t usec)
+
+ +

Modulate the IR LED for the given period (usec) and at the duty cycle set.

+
Parameters
+ + +
[in]usecThe period of time to modulate the IR LED for, in microseconds.
+
+
+
Returns
Nr. of pulses actually sent.
+
Note
The ESP8266 has no good way to do hardware PWM, so we have to do it all in software. There is a horrible kludge/brilliant hack to use the second serial TX line to do fairly accurate hardware PWM, but it is only available on a single specific GPIO and only available on some modules. e.g. It's not available on the ESP-01 module. Hence, for greater compatibility & choice, we don't use that method. Ref: https://www.analysir.com/blog/2017/01/29/updated-esp8266-nodemcu-backdoor-upwm-hack-for-ir-signals/
+ +
+
+ +

◆ minRepeats()

+ +
+
+ + + + + +
+ + + + + + + + +
uint16_t IRsend::minRepeats (const decode_type_t protocol)
+
+static
+
+ +

Get the minimum number of repeats for a given protocol.

+
Parameters
+ + +
[in]protocolProtocol number/type of the message you want to send.
+
+
+
Returns
The number of repeats required.
+ +
+
+ +

◆ send() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IRsend::send (const decode_type_t type,
const uint64_t data,
const uint16_t nbits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a simple (up to 64 bits) IR message of a given type. An unknown/unsupported type will send nothing.

+
Parameters
+ + + + + +
[in]typeProtocol number/type of the message you want to send.
[in]dataThe data you want to send (up to 64 bits).
[in]nbitsHow many bits long the message is to be.
[in]repeatHow many repeats to do?
+
+
+
Returns
True if it is a type we can attempt to send, false if not.
+ +
+
+ +

◆ send() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool IRsend::send (const decode_type_t type,
const uint8_t * state,
const uint16_t nbytes 
)
+
+ +

Send a complex (>= 64 bits) IR message of a given type. An unknown/unsupported type will send nothing.

+
Parameters
+ + + + +
[in]typeProtocol number/type of the message you want to send.
[in]stateA pointer to the array of bytes that make up the state[].
[in]nbytesHow many bytes are in the state.
+
+
+
Returns
True if it is a type we can attempt to send, false if not.
+ +
+
+ +

◆ sendAirwell()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendAirwell (uint64_t data,
uint16_t nbits = kAirwellBits,
uint16_t repeat = kAirwellMinRepeats 
)
+
+ +

Send an Airwell Manchester Code formatted message. Status: BETA / Appears to be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of the message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
+ +
+
+ +

◆ sendAiwaRCT501()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendAiwaRCT501 (uint64_t data,
uint16_t nbits = kAiwaRcT501Bits,
uint16_t repeat = kAiwaRcT501MinRepeats 
)
+
+ +

Send an Aiwa RC T501 formatted message. Status: BETA / Should work.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of the message to be sent. Typically kAiwaRcT501Bits. Max is 37 = (64 - 27)
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
http://lirc.sourceforge.net/remotes/aiwa/RC-T501
+ +
+
+ +

◆ sendAmcor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendAmcor (const unsigned char data[],
const uint16_t nbytes = kAmcorStateLength,
const uint16_t repeat = kAmcorDefaultRepeat 
)
+
+ +

Send a Amcor HVAC formatted message. Status: STABLE / Reported as working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendArgo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendArgo (const unsigned char data[],
const uint16_t nbytes = kArgoStateLength,
const uint16_t repeat = kArgoDefaultRepeat 
)
+
+ +

Send a Argo A/C formatted message. Status: BETA / Probably works.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendCarrierAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendCarrierAC (uint64_t data,
uint16_t nbits = kCarrierAcBits,
uint16_t repeat = kCarrierAcMinRepeat 
)
+
+ +

Send a Carrier HVAC formatted message. Status: STABLE / Works on real devices.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendCarrierAC40()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendCarrierAC40 (uint64_t data,
uint16_t nbits = kCarrierAc40Bits,
uint16_t repeat = kCarrierAc40MinRepeat 
)
+
+ +

Send a Carrier 40bit HVAC formatted message. Status: STABLE / Tested against a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe bit size of the message being sent.
[in]repeatThe number of times the message is to be repeated.
+
+
+ +
+
+ +

◆ sendCarrierAC64()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendCarrierAC64 (uint64_t data,
uint16_t nbits = kCarrierAc64Bits,
uint16_t repeat = kCarrierAc64MinRepeat 
)
+
+ +

Send a Carrier 64bit HVAC formatted message. Status: STABLE / Known to be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe bit size of the message being sent.
[in]repeatThe number of times the message is to be repeated.
+
+
+ +
+
+ +

◆ sendCOOLIX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendCOOLIX (uint64_t data,
uint16_t nbits = kCoolixBits,
uint16_t repeat = kCoolixDefaultRepeat 
)
+
+ +

Send a Coolix message Status: STABLE / Confirmed Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/z3t0/Arduino-IRremote/blob/master/ir_COOLIX.cpp
+ +
+
+ +

◆ sendCoronaAc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendCoronaAc (const uint8_t data[],
const uint16_t nbytes = kCoronaAcStateLength,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a CoronaAc formatted message. Status: STABLE / Working on real device.

+
Parameters
+ + + + +
[in]dataAn array of bytes containing the IR command.
[in]nbytesNr. of bytes of data in the array. e.g.
uint8_t data[kCoronaAcStateLength] = {
+
0x28, 0x61, 0x3D, 0x19, 0xE6, 0x37, 0xC8,
+
0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00,
+
0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00};
+
[in]repeatNr. of times the message is to be repeated.
+
+
+ +
+
+ +

◆ sendDaikin()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin (const unsigned char data[],
const uint16_t nbytes = kDaikinStateLength,
const uint16_t repeat = kDaikinDefaultRepeat 
)
+
+ +

Send a Daikin 280-bit A/C formatted message. Status: STABLE.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote
+
+https://github.com/blafois/Daikin-IR-Reverse
+ +
+
+ +

◆ sendDaikin128()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin128 (const unsigned char data[],
const uint16_t nbytes = kDaikin128StateLength,
const uint16_t repeat = kDaikin128DefaultRepeat 
)
+
+ +

Send a Daikin128 (128-bit) A/C formatted message. Status: STABLE / Known Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/827
+ +
+
+ +

◆ sendDaikin152()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin152 (const unsigned char data[],
const uint16_t nbytes = kDaikin152StateLength,
const uint16_t repeat = kDaikin152DefaultRepeat 
)
+
+ +

Send a Daikin152 (152-bit) A/C formatted message. Status: STABLE / Known Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/873
+ +
+
+ +

◆ sendDaikin160()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin160 (const unsigned char data[],
const uint16_t nbytes = kDaikin160StateLength,
const uint16_t repeat = kDaikin160DefaultRepeat 
)
+
+ +

Send a Daikin160 (160-bit) A/C formatted message. Status: STABLE / Confirmed working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/731
+ +
+
+ +

◆ sendDaikin176()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin176 (const unsigned char data[],
const uint16_t nbytes = kDaikin176StateLength,
const uint16_t repeat = kDaikin176DefaultRepeat 
)
+
+ +

Send a Daikin176 (176-bit) A/C formatted message. Status: Alpha / Untested on a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendDaikin2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin2 (const unsigned char data[],
const uint16_t nbytes = kDaikin2StateLength,
const uint16_t repeat = kDaikin2DefaultRepeat 
)
+
+ +

Send a Daikin2 (312-bit) A/C formatted message. Status: STABLE / Expected to work.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/582
+ +
+
+ +

◆ sendDaikin216()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin216 (const unsigned char data[],
const uint16_t nbytes = kDaikin216StateLength,
const uint16_t repeat = kDaikin216DefaultRepeat 
)
+
+ +

Send a Daikin216 (216-bit) A/C formatted message. Status: Alpha / Untested on a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/689
+
+https://github.com/danny-source/Arduino_DY_IRDaikin
+ +
+
+ +

◆ sendDaikin64()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDaikin64 (const uint64_t data,
const uint16_t nbits = kDaikin64Bits,
const uint16_t repeat = kDaikin64DefaultRepeat 
)
+
+ +

Send a Daikin64 (64-bit) A/C formatted message. Status: Beta / Probably Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1064
+ +
+
+ +

◆ sendData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendData (uint16_t onemark,
uint32_t onespace,
uint16_t zeromark,
uint32_t zerospace,
uint64_t data,
uint16_t nbits,
bool MSBfirst = true 
)
+
+ +

Generic method for sending data that is common to most protocols. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

+
Parameters
+ + + + + + + + +
[in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
[in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
[in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
[in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
[in]dataThe data to be transmitted.
[in]nbitsNr. of bits of data to be sent.
[in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
+
+
+ +
+
+ +

◆ sendDelonghiAc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDelonghiAc (uint64_t data,
uint16_t nbits = kDelonghiAcBits,
uint16_t repeat = kDelonghiAcDefaultRepeat 
)
+
+ +

Send a Delonghi A/C formatted message. Status: STABLE / Reported as working on a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1096
+ +
+
+ +

◆ sendDenon()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDenon (uint64_t data,
uint16_t nbits = kDenonBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Denon formatted message. Status: STABLE / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Some Denon devices use a Kaseikyo/Panasonic 48-bit format Others use the Sharp protocol.
+ +
+
+ +

◆ sendDISH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDISH (uint64_t data,
uint16_t nbits = kDishBits,
uint16_t repeat = kDishMinRepeat 
)
+
+ +

Send a DISH NETWORK formatted message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Dishplayer is a different protocol. Typically a DISH device needs to get a command a total of at least 4 times to accept it. e.g. repeat=3
+

Here is the LIRC file I found that seems to match the remote codes from the oscilloscope: DISH NETWORK (echostar 301):

See also
http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx
+
+http://www.hifi-remote.com/wiki/index.php?title=Dish
+ +
+
+ +

◆ sendDoshisha()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendDoshisha (const uint64_t data,
uint16_t nbits = kDoshishaBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Doshisha formatted message. Status: STABLE / Works on real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendElectraAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendElectraAC (const unsigned char data[],
const uint16_t nbytes = kElectraAcStateLength,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Electra A/C formatted message. Status: Alpha / Needs testing against a real device.

+
Parameters
+ + +
[in]dataThe message to be sent.
+
+
+
Note
Guessing MSBF order.
+
Parameters
+ + + +
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendEpson()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendEpson (uint64_t data,
uint16_t nbits = kEpsonBits,
uint16_t repeat = kEpsonMinRepeat 
)
+
+ +

Send an Epson formatted message. Status: Beta / Probably works.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of nbits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendFujitsuAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendFujitsuAC (const unsigned char data[],
const uint16_t nbytes,
const uint16_t repeat = kFujitsuAcMinRepeat 
)
+
+ +

Send a Fujitsu A/C formatted message. Status: STABLE / Known Good.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent. Typically one of: kFujitsuAcStateLength, kFujitsuAcStateLength - 1, kFujitsuAcStateLengthShort, kFujitsuAcStateLengthShort - 1
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendGC()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IRsend::sendGC (uint16_t buf[],
uint16_t len 
)
+
+ +

Send a shortened GlobalCache (GC) IRdb/control tower formatted message. Status: STABLE / Known working.

+
Parameters
+ + + +
[in]bufArray of uint16_t containing the shortened GlobalCache data.
[in]lenNr. of entries in the buf[] array.
+
+
+
Note
Global Cache format without the emitter ID or request ID. Starts at the frequency (Hertz), followed by nr. of times to emit (count), then the offset for repeats (where a repeat will start from), then the rest of entries are the actual IR message as units of periodic time. e.g. sendir,1:1,1,38000,1,1,9,70,9,30,9,... -> 38000,1,1,9,70,9,30,9,...
+
See also
https://irdb.globalcache.com/Home/Database
+ +
+
+ +

◆ sendGeneric() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendGeneric (const uint16_t headermark,
const uint32_t headerspace,
const uint16_t onemark,
const uint32_t onespace,
const uint16_t zeromark,
const uint32_t zerospace,
const uint16_t footermark,
const uint32_t gap,
const uint32_t mesgtime,
const uint64_t data,
const uint16_t nbits,
const uint16_t frequency,
const bool MSBfirst,
const uint16_t repeat,
const uint8_t dutycycle 
)
+
+ +

Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

+
Parameters
+ + + + + + + + + + + + + + + + +
[in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
[in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
[in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
[in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
[in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
[in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
[in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
[in]gapNr. of usecs for the led to be off after the footer mark. This is effectively the gap between messages. A value of 0 means no gap space.
[in]mesgtimeMin. nr. of usecs a single message needs to be. This is effectively the min. total length of a single message.
[in]dataThe data to be transmitted.
[in]nbitsNr. of bits of data to be sent.
[in]frequencyThe frequency we want to modulate at. (Hz/kHz)
[in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
[in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
[in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
+
+
+
Note
Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
+ +
+
+ +

◆ sendGeneric() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendGeneric (const uint16_t headermark,
const uint32_t headerspace,
const uint16_t onemark,
const uint32_t onespace,
const uint16_t zeromark,
const uint32_t zerospace,
const uint16_t footermark,
const uint32_t gap,
const uint64_t data,
const uint16_t nbits,
const uint16_t frequency,
const bool MSBfirst,
const uint16_t repeat,
const uint8_t dutycycle 
)
+
+ +

Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

+
Parameters
+ + + + + + + + + + + + + + + +
[in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
[in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
[in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
[in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
[in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
[in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
[in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
[in]gapNr. of usecs for the led to be off after the footer mark. This is effectively the gap between messages. A value of 0 means no gap space.
[in]dataThe data to be transmitted.
[in]nbitsNr. of bits of data to be sent.
[in]frequencyThe frequency we want to modulate at. (Hz/kHz)
[in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
[in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
[in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
+
+
+
Note
Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
+ +
+
+ +

◆ sendGeneric() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendGeneric (const uint16_t headermark,
const uint32_t headerspace,
const uint16_t onemark,
const uint32_t onespace,
const uint16_t zeromark,
const uint32_t zerospace,
const uint16_t footermark,
const uint32_t gap,
const uint8_t * dataptr,
const uint16_t nbytes,
const uint16_t frequency,
const bool MSBfirst,
const uint16_t repeat,
const uint8_t dutycycle 
)
+
+ +

Generic method for sending simple protocol messages.

+
Parameters
+ + + + + + + + + + + + + + + +
[in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
[in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
[in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
[in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
[in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
[in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
[in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
[in]gapNr. of usecs for the led to be off after the footer mark. This is effectively the gap between messages. A value of 0 means no gap space.
[in]dataptrPointer to the data to be transmitted.
[in]nbytesNr. of bytes of data to be sent.
[in]frequencyThe frequency we want to modulate at. (Hz/kHz)
[in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
[in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
[in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
+
+
+
Note
Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
+ +
+
+ +

◆ sendGICable()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendGICable (uint64_t data,
uint16_t nbits = kGicableBits,
uint16_t repeat = kGicableMinRepeat 
)
+
+ +

Send a raw G.I. Cable formatted message. Status: Alpha / Untested.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendGoodweather()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendGoodweather (const uint64_t data,
const uint16_t nbits = kGoodweatherBits,
const uint16_t repeat = kGoodweatherMinRepeat 
)
+
+ +

Send a Goodweather HVAC formatted message. Status: BETA / Needs testing on real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendGree() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendGree (const uint64_t data,
const uint16_t nbits = kGreeBits,
const uint16_t repeat = kGreeDefaultRepeat 
)
+
+ +

Send a Gree Heat Pump formatted message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendGree() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendGree (const uint8_t data[],
const uint16_t nbytes = kGreeStateLength,
const uint16_t repeat = kGreeDefaultRepeat 
)
+
+ +

Send a Gree Heat Pump formatted message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendHaierAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHaierAC (const unsigned char data[],
const uint16_t nbytes = kHaierACStateLength,
const uint16_t repeat = kHaierAcDefaultRepeat 
)
+
+ +

Send a Haier A/C formatted message. (HSU07-HEA03 remote) Status: STABLE / Known to be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendHaierACYRW02()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHaierACYRW02 (const unsigned char data[],
const uint16_t nbytes = kHaierACYRW02StateLength,
const uint16_t repeat = kHaierAcYrw02DefaultRepeat 
)
+
+ +

Send a Haier YR-W02 remote A/C formatted message. Status: Alpha / Untested on a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendHitachiAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHitachiAC (const unsigned char data[],
const uint16_t nbytes = kHitachiAcStateLength,
const uint16_t repeat = kHitachiAcDefaultRepeat 
)
+
+ +

Send a Hitachi 28-byte/224-bit A/C formatted message. (HITACHI_AC) Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/417
+ +
+
+ +

◆ sendHitachiAC1()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHitachiAC1 (const unsigned char data[],
const uint16_t nbytes = kHitachiAc1StateLength,
const uint16_t repeat = kHitachiAcDefaultRepeat 
)
+
+ +

Send a Hitachi 13 byte/224-bit A/C formatted message. (HITACHI_AC1) Status: STABLE / Confirmed Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Basically the same as sendHitatchiAC() except different size & header.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/453
+ +
+
+ +

◆ sendHitachiAC2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHitachiAC2 (const unsigned char data[],
const uint16_t nbytes = kHitachiAc2StateLength,
const uint16_t repeat = kHitachiAcDefaultRepeat 
)
+
+ +

Send a Hitachi 53 byte/424-bit A/C formatted message. (HITACHI_AC2) Basically the same as sendHitatchiAC() except different size. Status: STABLE / Expected to work.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendHitachiAc3()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHitachiAc3 (const unsigned char data[],
const uint16_t nbytes,
const uint16_t repeat = kHitachiAcDefaultRepeat 
)
+
+ +

Send a Hitachi(3) A/C formatted message. (HITACHI_AC3) Status: STABLE / Working fine.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol is almost exactly the same as HitachiAC424 except this variant has subtle timing differences. There are five(5) typical sizes: kHitachiAc3MinStateLength (Cancel Timer), kHitachiAc3MinStateLength + 2 (Change Temp), kHitachiAc3StateLength - 6 (Change Mode), kHitachiAc3StateLength - 4 (Normal), & kHitachiAc3StateLength (Set Timer)
+ +
+
+ +

◆ sendHitachiAc344()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHitachiAc344 (const unsigned char data[],
const uint16_t nbytes = kHitachiAc344StateLength,
const uint16_t repeat = kHitachiAcDefaultRepeat 
)
+
+ +

Send a Hitachi A/C 43-byte/344-bit message. (HITACHI_AC344) Basically the same as sendHitatchiAC() except different size. Status: Beta / Probably works.

+
Parameters
+ + + + +
[in]dataAn array of bytes containing the IR command.
[in]nbytesNr. of bytes of data in the array.
[in]repeatNr. of times the message is to be repeated. (Default = 0).
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1134
+ +
+
+ +

◆ sendHitachiAc424()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendHitachiAc424 (const unsigned char data[],
const uint16_t nbytes = kHitachiAc424StateLength,
const uint16_t repeat = kHitachiAcDefaultRepeat 
)
+
+ +

Send a Hitachi 53-byte/424-bit A/C formatted message. (HITACHI_AC424) Status: STABLE / Reported as working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol is almost exactly the same as HitachiAC2 except this variant has a leader section as well, and subtle timing differences. It is also in LSBF order (per byte), rather than MSBF order.
+ +
+
+ +

◆ sendInax()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendInax (const uint64_t data,
const uint16_t nbits = kInaxBits,
const uint16_t repeat = kInaxMinRepeat 
)
+
+ +

Send a Inax Toilet formatted message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/706
+ +
+
+ +

◆ sendJVC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendJVC (uint64_t data,
uint16_t nbits = kJvcBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send a JVC formatted message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
http://www.sbprojects.com/knowledge/ir/jvc.php
+ +
+
+ +

◆ sendKelvinator()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendKelvinator (const unsigned char data[],
const uint16_t nbytes = kKelvinatorStateLength,
const uint16_t repeat = kKelvinatorDefaultRepeat 
)
+
+ +

Send a Kelvinator A/C message. Status: STABLE / Known working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendLasertag()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendLasertag (uint64_t data,
uint16_t nbits = kLasertagBits,
uint16_t repeat = kLasertagMinRepeat 
)
+
+ +

Send a Lasertag packet/message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol is pretty much just raw Manchester encoding.
+
Todo:
Convert this to use sendManchester() if we can.`
+ +
+
+ +

◆ sendLegoPf()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendLegoPf (const uint64_t data,
const uint16_t nbits = kLegoPfBits,
const uint16_t repeat = kLegoPfMinRepeat 
)
+
+ +

Send a LEGO Power Functions message. Status: Beta / Should work.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Non-zero repeats results in at least 5 messages per spec.
+ +
+
+ +

◆ sendLG()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendLG (uint64_t data,
uint16_t nbits = kLgBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send an LG formatted message. (LG) Status: Beta / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent. Typically kLgBits or kLg32Bits.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
LG has a separate message to indicate a repeat, like NEC does.
+ +
+
+ +

◆ sendLG2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendLG2 (uint64_t data,
uint16_t nbits = kLgBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send an LG Variant-2 formatted message. (LG2) Status: Beta / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent. Typically kLgBits or kLg32Bits.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
LG has a separate message to indicate a repeat, like NEC does.
+ +
+
+ +

◆ sendLutron()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendLutron (uint64_t data,
uint16_t nbits = kLutronBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Lutron formatted message. Status: Stable / Appears to be working for real devices.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
The protocol is really 36 bits long, but the first bit is always a 1. So, assume the 1 and only have a normal payload of 35 bits.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/515
+ +
+
+ +

◆ sendMagiQuest()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMagiQuest (const uint64_t data,
const uint16_t nbits = kMagiquestBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a MagiQuest formatted message. Status: Beta / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendManchester()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendManchester (const uint16_t headermark,
const uint32_t headerspace,
const uint16_t half_period,
const uint16_t footermark,
const uint32_t gap,
const uint64_t data,
const uint16_t nbits,
const uint16_t frequency = 38,
const bool MSBfirst = true,
const uint16_t repeat = kNoRepeat,
const uint8_t dutycycle = kDutyDefault,
const bool GEThomas = true 
)
+
+ +

Generic method for sending Manchester code messages. Will send leading or trailing 0's if the nbits is larger than the number.

+
Parameters
+ + + + + + + + + + + + + +
[in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
[in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
[in]half_periodNr. of uSeconds for half the clock's period. (1/2 wavelength)
[in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
[in]gapMin. nr. of usecs for the led to be off after the footer mark. This is effectively the absolute minimum gap between messages.
[in]dataThe data to be transmitted.
[in]nbitsNr. of bits of data to be sent.
[in]frequencyThe frequency we want to modulate at. (Hz/kHz)
[in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
[in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
[in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
[in]GEThomasUse G.E. Thomas (true/default) or IEEE 802.3 (false).
+
+
+
Note
Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
+ +
+
+ +

◆ sendManchesterData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendManchesterData (const uint16_t half_period,
const uint64_t data,
const uint16_t nbits,
const bool MSBfirst = true,
const bool GEThomas = true 
)
+
+ +

Generic method for sending Manchester code data. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

+
Parameters
+ + + + + + +
[in]half_periodNr. of uSeconds for half the clock's period. (1/2 wavelength)
[in]dataThe data to be transmitted.
[in]nbitsNr. of bits of data to be sent.
[in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
[in]GEThomasUse G.E. Thomas (true/default) or IEEE 802.3 (false).
+
+
+ +
+
+ +

◆ sendMidea()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMidea (uint64_t data,
uint16_t nbits = kMideaBits,
uint16_t repeat = kMideaMinRepeat 
)
+
+ +

Send a Midea message Status: Alpha / Needs testing against a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendMidea24()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMidea24 (const uint64_t data,
const uint16_t nbits = kMidea24Bits,
const uint16_t repeat = kMidea24MinRepeat 
)
+
+ +

Send a Midea24 formatted message. Status: STABLE / Confirmed working on a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1170
+
Note
This protocol is basically a 48-bit version of the NEC protocol with alternate bytes inverted, thus only 24 bits of real data, and with at least a single repeat.
+
Warning
Can't be used beyond 32 bits.
+ +
+
+ +

◆ sendMitsubishi()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMitsubishi (uint64_t data,
uint16_t nbits = kMitsubishiBits,
uint16_t repeat = kMitsubishiMinRepeat 
)
+
+ +

Send the supplied Mitsubishi 16-bit message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol appears to have no header.
+
See also
https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Mitsubishi.cpp
+
+GlobalCache's Control Tower's Mitsubishi TV data.
+ +
+
+ +

◆ sendMitsubishi112()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMitsubishi112 (const unsigned char data[],
const uint16_t nbytes = kMitsubishi112StateLength,
const uint16_t repeat = kMitsubishi112MinRepeat 
)
+
+ +

Send a Mitsubishi 112-bit A/C formatted message. (MITSUBISHI112) Status: Stable / Reported as working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/947
+ +
+
+ +

◆ sendMitsubishi136()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMitsubishi136 (const unsigned char data[],
const uint16_t nbytes = kMitsubishi136StateLength,
const uint16_t repeat = kMitsubishi136MinRepeat 
)
+
+ +

Send a Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: BETA / Probably working. Needs to be tested against a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/888
+ +
+
+ +

◆ sendMitsubishi2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMitsubishi2 (uint64_t data,
uint16_t nbits = kMitsubishiBits,
uint16_t repeat = kMitsubishiMinRepeat 
)
+
+ +

Send a supplied second variant Mitsubishi 16-bit message. Status: BETA / Probably works.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Based on a Mitsubishi HC3000 projector's remote. This protocol appears to have a manditory in-protocol repeat. That is in addition to the entire message needing to be sent twice for the device to accept the command. That is separate from the repeat. i.e. Allegedly, the real remote requires the "Off" button pressed twice. You will need to add a suitable gap yourself.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/441
+ +
+
+ +

◆ sendMitsubishiAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMitsubishiAC (const unsigned char data[],
const uint16_t nbytes = kMitsubishiACStateLength,
const uint16_t repeat = kMitsubishiACMinRepeat 
)
+
+ +

Send a Mitsubishi 144-bit A/C formatted message. (MITSUBISHI_AC) Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendMitsubishiHeavy152()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMitsubishiHeavy152 (const unsigned char data[],
const uint16_t nbytes = kMitsubishiHeavy152StateLength,
const uint16_t repeat = kMitsubishiHeavy152MinRepeat 
)
+
+ +

Send a MitsubishiHeavy 152-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendMitsubishiHeavy88()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMitsubishiHeavy88 (const unsigned char data[],
const uint16_t nbytes = kMitsubishiHeavy88StateLength,
const uint16_t repeat = kMitsubishiHeavy88MinRepeat 
)
+
+ +

Send a MitsubishiHeavy 88-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendMultibrackets()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMultibrackets (const uint64_t data,
const uint16_t nbits = kMultibracketsBits,
const uint16_t repeat = kMultibracketsDefaultRepeat 
)
+
+ +

Send a Multibrackets formatted message. Status: BETA / Appears to be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendMWM()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendMWM (const unsigned char data[],
const uint16_t nbytes,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a MWM packet/message. Status: Implemented.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol is 2400 bps serial, 1 start bit (mark), 1 stop bit (space), no parity
+ +
+
+ +

◆ sendNEC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendNEC (uint64_t data,
uint16_t nbits = kNECBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send a raw NEC(Renesas) formatted message. Status: STABLE / Known working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol appears to have no header.
+
See also
http://www.sbprojects.com/knowledge/ir/nec.php
+ +
+
+ +

◆ sendNeoclima()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendNeoclima (const unsigned char data[],
const uint16_t nbytes = kNeoclimaStateLength,
const uint16_t repeat = kNeoclimaMinRepeat 
)
+
+ +

Send a Neoclima message. Status: STABLE / Known to be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendNikai()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendNikai (uint64_t data,
uint16_t nbits = kNikaiBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Nikai formatted message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendPanasonic()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendPanasonic (const uint16_t address,
const uint32_t data,
const uint16_t nbits = kPanasonicBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Panasonic formatted message. Status: STABLE, but DEPRECATED.

+
Deprecated:
This is only for legacy use only, please use sendPanasonic64() instead.
+
Parameters
+ + + + + +
[in]addressThe 16-bit manufacturer code.
[in]dataThe 32-bit data portion of the message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol is a modified version of Kaseikyo.
+ +
+
+ +

◆ sendPanasonic64()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendPanasonic64 (const uint64_t data,
const uint16_t nbits = kPanasonicBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Panasonic formatted message. Status: STABLE / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This protocol is a modified version of Kaseikyo.
+
+Use this method if you want to send the results of decodePanasonic.
+ +
+
+ +

◆ sendPanasonicAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendPanasonicAC (const unsigned char data[],
const uint16_t nbytes = kPanasonicAcStateLength,
const uint16_t repeat = kPanasonicAcDefaultRepeat 
)
+
+ +

Send a Panasonic A/C message. Status: STABLE / Work with real device(s).

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendPioneer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendPioneer (const uint64_t data,
const uint16_t nbits = kPioneerBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a raw Pioneer formatted message. Status: STABLE / Expected to be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendPronto()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendPronto (uint16_t data[],
uint16_t len,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Pronto Code formatted message. Status: STABLE / Known working.

+
Parameters
+ + + + +
[in]dataAn array of uint16_t containing the pronto codes.
[in]lenNr. of entries in the data[] array.
[in]repeatNr. of times to repeat the message.
+
+
+
Note
Pronto codes are typically represented in hexadecimal. You will need to convert the code to an array of integers, and calculate it's length. e.g.
A Sony 20 bit DVD remote command.
+
"0000 0067 0000 0015 0060 0018 0018 0018 0030 0018 0030 0018 0030 0018
+
0018 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0030 0018
+
0030 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018
+
0030 0018 0018 03f6"
+
converts to:
uint16_t prontoCode[46] = {
+
0x0000, 0x0067, 0x0000, 0x0015,
+
0x0060, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0030, 0x0018,
+
0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018,
+
0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018,
+
0x0030, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
+
0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018,
+
0x0018, 0x03f6};
+
// Send the Pronto(Sony) code. Repeat twice as Sony's require that.
+
sendPronto(prontoCode, 46, kSonyMinRepeat);
+
+
See also
http://www.etcwiki.org/wiki/Pronto_Infrared_Format
+
+http://www.remotecentral.com/features/irdisp2.htm
+ +
+
+ +

◆ sendRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendRaw (const uint16_t buf[],
const uint16_t len,
const uint16_t hz 
)
+
+ +

Send a raw IRremote message.

+
Parameters
+ + + + +
[in]bufAn array of uint16_t's that has microseconds elements.
[in]lenNr. of elements in the buf[] array.
[in]hzFrequency to send the message at. (kHz < 1000; Hz >= 1000)
+
+
+
Note
Even elements are Mark times (On), Odd elements are Space times (Off). Ref: examples/IRrecvDumpV2/IRrecvDumpV2.ino (or later)
+ +
+
+ +

◆ sendRC5()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendRC5 (const uint64_t data,
uint16_t nbits = kRC5XBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Philips RC-5/RC-5X packet. Status: RC-5 (stable), RC-5X (alpha)

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Caller needs to take care of flipping the toggle bit. That bit differentiates between key press & key release. For RC-5 it is the MSB of the data. For RC-5X it is the 2nd MSB of the data.
+
Todo:
Testing of the RC-5X components.
+ +
+
+ +

◆ sendRC6()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendRC6 (const uint64_t data,
const uint16_t nbits = kRC6Mode0Bits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Philips RC-6 packet. Status: Stable.

+
Note
Caller needs to take care of flipping the toggle bit (The 4th Most Significant Bit). That bit differentiates between key press & key release.
+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendRCMM()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendRCMM (uint64_t data,
uint16_t nbits = kRCMMBits,
uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Philips RC-MM packet. Status: STABLE / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendSAMSUNG()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSAMSUNG (const uint64_t data,
const uint16_t nbits = kSamsungBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a 32-bit Samsung formatted message. Status: STABLE / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
http://elektrolab.wz.cz/katalog/samsung_protocol.pdf
+
Note
Samsung has a separate message to indicate a repeat, like NEC does.
+
Todo:
Confirm that is actually how Samsung sends a repeat. The refdoc doesn't indicate it is true.
+ +
+
+ +

◆ sendSamsung36()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSamsung36 (const uint64_t data,
const uint16_t nbits = kSamsung36Bits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Samsung 36-bit formatted message. Status: Alpha / Experimental.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/621
+ +
+
+ +

◆ sendSamsungAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSamsungAC (const unsigned char data[],
const uint16_t nbytes = kSamsungAcStateLength,
const uint16_t repeat = kSamsungAcDefaultRepeat 
)
+
+ +

Send a Samsung A/C message. Status: Stable / Known working.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/505
+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendSanyoLC7461()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSanyoLC7461 (const uint64_t data,
const uint16_t nbits = kSanyoLC7461Bits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Sanyo LC7461 message. Status: BETA / Probably works.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Based on @marcosamarinho's work. This protocol uses the NEC protocol timings. However, data is formatted as : address(13 bits), !address, command (8 bits), !command. According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon Information for this protocol is available at the Sanyo LC7461 datasheet. Repeats are performed similar to the NEC method of sending a special repeat message, rather than duplicating the entire message.
+
See also
https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp
+
+http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf
+ +
+
+ +

◆ sendSharp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSharp (const uint16_t address,
const uint16_t command,
const uint16_t nbits = kSharpBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Sharp message Status: DEPRECATED / Previously working fine.

+
Deprecated:
Only use this if you are using legacy from the original Arduino-IRremote library. 99% of the time, you will want to use sendSharpRaw() instead
+
Parameters
+ + + + + +
[in]addressAddress value to be sent.
[in]commandCommand value to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
This procedure has a non-standard invocation style compared to similar sendProtocol() routines. This is due to legacy, compatibility, & historic reasons. Normally the calling syntax version is like sendSharpRaw(). This procedure transmits the address & command in MSB first order, which is incorrect. This behaviour is left as-is to maintain backward compatibility with legacy code. In short, you should use sendSharpRaw(), encodeSharp(), and the correct values of address & command instead of using this, & the wrong values.
+ +
+
+ +

◆ sendSharpAc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSharpAc (const unsigned char data[],
const uint16_t nbytes = kSharpAcStateLength,
const uint16_t repeat = kSharpAcDefaultRepeat 
)
+
+ +

Send a Sharp A/C message. Status: Alpha / Untested.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/638
+
+https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp
+ +
+
+ +

◆ sendSharpRaw()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSharpRaw (const uint64_t data,
const uint16_t nbits = kSharpBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a (raw) Sharp message.

+
Note
Status: STABLE / Working fine.
+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
his procedure handles the inversion of bits required per protocol. The protocol spec says to send the LSB first, but legacy code & usage has us sending the MSB first. Grrrr. Normal invocation of encodeSharp() handles this for you, assuming you are using the correct/standard values. e.g. sendSharpRaw(encodeSharp(address, command));
+ +
+
+ +

◆ sendSherwood()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSherwood (uint64_t data,
uint16_t nbits = kSherwoodBits,
uint16_t repeat = kSherwoodMinRepeat 
)
+
+ +

Send an IR command to a Sherwood device. Status: STABLE / Known working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
Sherwood remote codes appear to be NEC codes with a manditory repeat code. i.e. repeat should be >= kSherwoodMinRepeat (1).
+ +
+
+ +

◆ sendSony()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSony (const uint64_t data,
const uint16_t nbits = kSony20Bits,
const uint16_t repeat = kSonyMinRepeat 
)
+
+ +

Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) Status: STABLE / Known working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
sendSony() should typically be called with repeat=2 as Sony devices expect the message to be sent at least 3 times.
+ +
+
+ +

◆ sendSony38()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSony38 (const uint64_t data,
const uint16_t nbits = kSony20Bits,
const uint16_t repeat = kSonyMinRepeat + 1 
)
+
+ +

Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. Status: STABLE / Known working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
Note
sendSony38() should typically be called with repeat=3 as these Sony devices expect the message to be sent at least 4 times.
+
Warning
Messages send via this method will be detected by this library as just SONY, not SONY_38K as the library has no way to determine the modulation frequency used. Hence, there is no decodeSony38().
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1018
+ +
+
+ +

◆ sendSymphony()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendSymphony (uint64_t data,
uint16_t nbits = kSymphonyBits,
uint16_t repeat = kSymphonyDefaultRepeat 
)
+
+ +

Send a Symphony packet. Status: STABLE / Should be working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendTcl112Ac()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendTcl112Ac (const unsigned char data[],
const uint16_t nbytes = kTcl112AcStateLength,
const uint16_t repeat = kTcl112AcDefaultRepeat 
)
+
+ +

Send a TCL 112-bit A/C message. Status: Beta / Probably working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendTeco()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendTeco (const uint64_t data,
const uint16_t nbits = kTecoBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Teco A/C message. Status: Beta / Probably working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendToshibaAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendToshibaAC (const unsigned char data[],
const uint16_t nbytes = kToshibaACStateLength,
const uint16_t repeat = kToshibaACMinRepeat 
)
+
+ +

Send a Toshiba A/C message. Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendTrotec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendTrotec (const unsigned char data[],
const uint16_t nbytes = kTrotecStateLength,
const uint16_t repeat = kTrotecDefaultRepeat 
)
+
+ +

Send a Trotec message. Status: Beta / Probably Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendVestelAc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendVestelAc (const uint64_t data,
const uint16_t nbits = kVestelAcBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Vestel message Status: STABLE / Working.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendWhirlpoolAC()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendWhirlpoolAC (const unsigned char data[],
const uint16_t nbytes = kWhirlpoolAcStateLength,
const uint16_t repeat = kWhirlpoolAcDefaultRepeat 
)
+
+ +

Send a Whirlpool A/C message. Status: BETA / Probably works.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbytesThe number of bytes of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+ +
+
+ +

◆ sendWhynter()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendWhynter (const uint64_t data,
const uint16_t nbits = kWhynterBits,
const uint16_t repeat = kNoRepeat 
)
+
+ +

Send a Whynter message. Status: STABLE.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe number of bits of message to be sent.
[in]repeatThe number of times the command is to be repeated.
+
+
+
See also
https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp
+ +
+
+ +

◆ sendZepeal()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IRsend::sendZepeal (const uint64_t data,
const uint16_t nbits = kZepealBits,
const uint16_t repeat = kZepealMinRepeat 
)
+
+ +

Send a Zepeal formatted message. Status: STABLE / Works on real device.

+
Parameters
+ + + + +
[in]dataThe message to be sent.
[in]nbitsThe bit size of the message being sent.
[in]repeatThe number of times the message is to be repeated.
+
+
+ +
+
+ +

◆ space()

+ +
+
+ + + + + + + + +
void IRsend::space (uint32_t time)
+
+ +

Turn the pin (LED) off for a given time. Sends an IR space for the specified number of microseconds. A space is no output, so the PWM output is disabled.

+
Parameters
+ + +
[in]timeTime in microseconds (us).
+
+
+ +
+
+ +

◆ toggleRC5()

+ +
+
+ + + + + + + + +
uint64_t IRsend::toggleRC5 (const uint64_t data)
+
+ +

Flip the toggle bit of a Philips RC-5/RC-5X data message. Used to indicate a change of remote button's state. Status: STABLE.

+
Parameters
+ + +
[in]dataThe existing RC-5/RC-5X message.
+
+
+
Returns
A data message suitable for use in sendRC5() with the toggle bit flipped.
+ +
+
+ +

◆ toggleRC6()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t IRsend::toggleRC6 (const uint64_t data,
const uint16_t nbits = kRC6Mode0Bits 
)
+
+ +

Flip the toggle bit of a Philips RC-6 data message. Used to indicate a change of remote button's state. Status: STABLE / Should work fine.

+
Parameters
+ + + +
[in]dataThe existing RC-6 message.
[in]nbitsNr. of bits in the RC-6 protocol.
+
+
+
Returns
A data message suitable for use in sendRC6() with the toggle bit flipped.
+
Note
For RC-6 (20-bits), it is the 17th least significant bit.
+
+For RC-6 (36-bits/Xbox-360), it is the 16th least significant bit.
+ +
+
+

Member Data Documentation

+ +

◆ _dutycycle

+ +
+
+ + + + + +
+ + + + +
uint8_t IRsend::_dutycycle
+
+private
+
+ +
+
+ +

◆ _freq_unittest

+ +
+
+ + + + + +
+ + + + +
uint32_t IRsend::_freq_unittest
+
+private
+
+ +
+
+ +

◆ IRpin

+ +
+
+ + + + + +
+ + + + +
uint16_t IRsend::IRpin
+
+private
+
+ +
+
+ +

◆ modulation

+ +
+
+ + + + + +
+ + + + +
bool IRsend::modulation
+
+private
+
+ +
+
+ +

◆ offTimePeriod

+ +
+
+ + + + + +
+ + + + +
uint16_t IRsend::offTimePeriod
+
+private
+
+ +
+
+ +

◆ onTimePeriod

+ +
+
+ + + + + +
+ + + + +
uint16_t IRsend::onTimePeriod
+
+private
+
+ +
+
+ +

◆ outputOff

+ +
+
+ + + + + +
+ + + + +
uint8_t IRsend::outputOff
+
+protected
+
+ +
+
+ +

◆ outputOn

+ +
+
+ + + + + +
+ + + + +
uint8_t IRsend::outputOn
+
+protected
+
+ +
+
+ +

◆ periodOffset

+ +
+
+ + + + + +
+ + + + +
int8_t IRsend::periodOffset
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
void sendPronto(uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)
Send a Pronto Code formatted message. Status: STABLE / Known working.
Definition: ir_Pronto.cpp:56
+
const uint16_t kCoronaAcStateLength
Definition: IRremoteESP8266.h:833
+
const uint16_t kSonyMinRepeat
Definition: IRremoteESP8266.h:991
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer-members.html new file mode 100644 index 000000000..b1603a411 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer-members.html @@ -0,0 +1,84 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
IRtimer Member List
+
+
+ +

This is the complete list of members for IRtimer, including all inherited members.

+ + + + + + +
add(uint32_t usecs)IRtimerstatic
elapsed()IRtimer
IRtimer()IRtimer
reset()IRtimer
startIRtimerprivate
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer.html new file mode 100644 index 000000000..b0d7fac99 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classIRtimer.html @@ -0,0 +1,235 @@ + + + + + + + +IRremoteESP8266: IRtimer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

This class performs a simple timer in useconds since instantiated. + More...

+ +

#include <IRtimer.h>

+ + + + + + + + + + + +

+Public Member Functions

 IRtimer ()
 Class constructor. More...
 
void reset ()
 Resets the IRtimer object. More...
 
uint32_t elapsed ()
 Calculate how many microseconds have elapsed since the timer was started. More...
 
+ + + + +

+Static Public Member Functions

static void add (uint32_t usecs)
 Add time to the timer to simulate elapsed time. More...
 
+ + + +

+Private Attributes

uint32_t start
 
+

Detailed Description

+

This class performs a simple timer in useconds since instantiated.

+
Note
Handles when the system timer wraps around (once).
+

Constructor & Destructor Documentation

+ +

◆ IRtimer()

+ +
+
+ + + + + + + +
IRtimer::IRtimer ()
+
+ +

Class constructor.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRtimer::add (uint32_t usecs)
+
+static
+
+ +

Add time to the timer to simulate elapsed time.

+
Parameters
+ + +
[in]usecsNr. of uSeconds to be added.
+
+
+
Note
Only used in unit testing.
+ +
+
+ +

◆ elapsed()

+ +
+
+ + + + + + + +
uint32_t IRtimer::elapsed ()
+
+ +

Calculate how many microseconds have elapsed since the timer was started.

+
Returns
Nr. of microseconds.
+ +
+
+ +

◆ reset()

+ +
+
+ + + + + + + +
void IRtimer::reset ()
+
+ +

Resets the IRtimer object.

+ +
+
+

Member Data Documentation

+ +

◆ start

+ +
+
+ + + + + +
+ + + + +
uint32_t IRtimer::start
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs-members.html new file mode 100644 index 000000000..63f0f8ba0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs-members.html @@ -0,0 +1,84 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TimerMs Member List
+
+
+ +

This is the complete list of members for TimerMs, including all inherited members.

+ + + + + + +
add(uint32_t msecs)TimerMsstatic
elapsed()TimerMs
reset()TimerMs
startTimerMsprivate
TimerMs()TimerMs
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs.html new file mode 100644 index 000000000..a67791242 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classTimerMs.html @@ -0,0 +1,235 @@ + + + + + + + +IRremoteESP8266: TimerMs Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

This class performs a simple timer in milli-seoncds since instantiated. + More...

+ +

#include <IRtimer.h>

+ + + + + + + + + + + +

+Public Member Functions

 TimerMs ()
 Class constructor. More...
 
void reset ()
 Resets the TimerMs object. More...
 
uint32_t elapsed ()
 Calculate how many milliseconds have elapsed since the timer was started. More...
 
+ + + + +

+Static Public Member Functions

static void add (uint32_t msecs)
 Add time to the timer to simulate elapsed time. More...
 
+ + + +

+Private Attributes

uint32_t start
 
+

Detailed Description

+

This class performs a simple timer in milli-seoncds since instantiated.

+
Note
Handles when the system timer wraps around (once).
+

Constructor & Destructor Documentation

+ +

◆ TimerMs()

+ +
+
+ + + + + + + +
TimerMs::TimerMs ()
+
+ +

Class constructor.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + +
+ + + + + + + + +
void TimerMs::add (uint32_t msecs)
+
+static
+
+ +

Add time to the timer to simulate elapsed time.

+
Parameters
+ + +
[in]msecsNr. of mSeconds to be added.
+
+
+
Note
Only used in unit testing.
+ +
+
+ +

◆ elapsed()

+ +
+
+ + + + + + + +
uint32_t TimerMs::elapsed ()
+
+ +

Calculate how many milliseconds have elapsed since the timer was started.

+
Returns
Nr. of milliseconds.
+ +
+
+ +

◆ reset()

+ +
+
+ + + + + + + +
void TimerMs::reset ()
+
+ +

Resets the TimerMs object.

+ +
+
+

Member Data Documentation

+ +

◆ start

+ +
+
+ + + + + +
+ + + + +
uint32_t TimerMs::start
+
+private
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results-members.html new file mode 100644 index 000000000..5939b876d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results-members.html @@ -0,0 +1,89 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
decode_results Member List
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results.html new file mode 100644 index 000000000..2028cee12 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classdecode__results.html @@ -0,0 +1,274 @@ + + + + + + + +IRremoteESP8266: decode_results Class Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
decode_results Class Reference
+
+
+ +

Results returned from the decoder. + More...

+ +

#include <IRrecv.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

decode_type_t decode_type
 
union {
   struct {
      uint64_t   value
 
      uint32_t   address
 
      uint32_t   command
 
   } 
 
   uint8_t   state [kStateSizeMax]
 
}; 
 
uint16_t bits
 
volatile uint16_t * rawbuf
 
uint16_t rawlen
 
bool overflow
 
bool repeat
 
+

Detailed Description

+

Results returned from the decoder.

+

Member Data Documentation

+ +

◆ @2

+ +
+
+ + + + +
union { ... }
+
+ +
+
+ +

◆ address

+ +
+
+ + + + +
uint32_t decode_results::address
+
+ +
+
+ +

◆ bits

+ +
+
+ + + + +
uint16_t decode_results::bits
+
+ +
+
+ +

◆ command

+ +
+
+ + + + +
uint32_t decode_results::command
+
+ +
+
+ +

◆ decode_type

+ +
+
+ + + + +
decode_type_t decode_results::decode_type
+
+ +
+
+ +

◆ overflow

+ +
+
+ + + + +
bool decode_results::overflow
+
+ +
+
+ +

◆ rawbuf

+ +
+
+ + + + +
volatile uint16_t* decode_results::rawbuf
+
+ +
+
+ +

◆ rawlen

+ +
+
+ + + + +
uint16_t decode_results::rawlen
+
+ +
+
+ +

◆ repeat

+ +
+
+ + + + +
bool decode_results::repeat
+
+ +
+
+ +

◆ state

+ +
+
+ + + + +
uint8_t decode_results::state[kStateSizeMax]
+
+ +
+
+ +

◆ value

+ +
+
+ + + + +
uint64_t decode_results::value
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classes.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classes.html new file mode 100644 index 000000000..72eebee83 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/classes.html @@ -0,0 +1,157 @@ + + + + + + + +IRremoteESP8266: Class Index + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
d | i | m | s | t
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  d  
+
IRDaikin160   IRHitachiAc   IRNeoclimaAc   IRWhirlpoolAc   
IRDaikin176   IRHitachiAc1   IRPanasonicAc   
  m  
+
decode_results   IRDaikin2   IRHitachiAc3   irparams_t   
  i  
+
IRDaikin216   IRHitachiAc344   IRrecv   magiquest   
IRDaikin64   IRHitachiAc424   IRSamsungAc   match_result_t   
IRac   IRDaikinESP   IRKelvinatorAC   IRsend   
  s  
+
IRAmcorAc   IRDelonghiAc   IRLgAc   IRSharpAc   
IRArgoAC   IRElectraAc   IRMideaAC   IRTcl112Ac   state_t (stdAc)   
IRCarrierAc64   IRFujitsuAC   IRMitsubishi112   IRTecoAc   
  t  
+
IRCoolixAC   IRGoodweatherAc   IRMitsubishi136   IRtimer   
IRCoronaAc   IRGreeAC   IRMitsubishiAC   IRToshibaAC   TimerMs   
IRDaikin128   IRHaierAC   IRMitsubishiHeavy152Ac   IRTrotecESP   
IRDaikin152   IRHaierACYRW02   IRMitsubishiHeavy88Ac   IRVestelAc   
+
d | i | m | s | t
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/closed.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h.html new file mode 100644 index 000000000..d0cada931 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/de-CH.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
de-CH.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h_source.html new file mode 100644 index 000000000..8ad5119f2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-CH_8h_source.html @@ -0,0 +1,239 @@ + + + + + + + +IRremoteESP8266: src/locale/de-CH.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
de-CH.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - Martin (@finfinack)
+
2 // Locale/language file for German / Switzerland.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_DE_CH_H_
+
5 #define LOCALE_DE_CH_H_
+
6 
+
7 // Import German / Germany as default overrides.
+
8 #include "locale/de-DE.h"
+
9 
+
10 // As we have loaded another language, we need to #undef anything we need
+
11 // to update/change.
+
12 
+
13 #undef D_STR_ON
+
14 #define D_STR_ON "Ii"
+
15 #undef D_STR_OFF
+
16 #define D_STR_OFF "Us"
+
17 #undef D_STR_TOGGLE
+
18 #define D_STR_TOGGLE "Umschalte"
+
19 #undef D_STR_SLEEP
+
20 #define D_STR_SLEEP "Schlafe"
+
21 #undef D_STR_LIGHT
+
22 #define D_STR_LIGHT "Liecht"
+
23 #undef D_STR_POWERFUL
+
24 #define D_STR_POWERFUL "Starch"
+
25 #undef D_STR_QUIET
+
26 #define D_STR_QUIET "Liislig"
+
27 #undef D_STR_CLEAN
+
28 #define D_STR_CLEAN "Reinige"
+
29 #undef D_STR_PURIFY
+
30 #define D_STR_PURIFY "Frische"
+
31 #undef D_STR_HEALTH
+
32 #define D_STR_HEALTH "Gsundheit"
+
33 #undef D_STR_HUMID
+
34 #define D_STR_HUMID "Füecht"
+
35 #undef D_STR_SAVE
+
36 #define D_STR_SAVE "Speichere"
+
37 #undef D_STR_EYE
+
38 #define D_STR_EYE "Aug"
+
39 #undef D_STR_FOLLOW
+
40 #define D_STR_FOLLOW "Folge"
+
41 #undef D_STR_HOLD
+
42 #define D_STR_HOLD "Halte"
+
43 #undef D_STR_BUTTON
+
44 #define D_STR_BUTTON "Chnopf"
+
45 #undef D_STR_UP
+
46 #define D_STR_UP "Ufe"
+
47 #undef D_STR_TEMPUP
+
48 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
+
49 #undef D_STR_DOWN
+
50 #define D_STR_DOWN "Abe"
+
51 #undef D_STR_TEMPDOWN
+
52 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
+
53 #undef D_STR_CHANGE
+
54 #define D_STR_CHANGE "Wechsele"
+
55 #undef D_STR_MOVE
+
56 #define D_STR_MOVE "Verschiebe"
+
57 #undef D_STR_SET
+
58 #define D_STR_SET "Setze"
+
59 #undef D_STR_CANCEL
+
60 #define D_STR_CANCEL "Abbreche"
+
61 #undef D_STR_WEEKLY
+
62 #define D_STR_WEEKLY "Wüchentlich"
+
63 #undef D_STR_WEEKLYTIMER
+
64 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
+
65 #undef D_STR_OUTSIDE
+
66 #define D_STR_OUTSIDE "Dusse"
+
67 #undef D_STR_LOUD
+
68 #define D_STR_LOUD "Luut"
+
69 #undef D_STR_UPPER
+
70 #define D_STR_UPPER "Obe"
+
71 #undef D_STR_LOWER
+
72 #define D_STR_LOWER "Une"
+
73 #undef D_STR_CIRCULATE
+
74 #define D_STR_CIRCULATE "Zirkuliere"
+
75 #undef D_STR_CEILING
+
76 #define D_STR_CEILING "Decki"
+
77 #undef D_STR_6THSENSE
+
78 #define D_STR_6THSENSE "6te Sinn"
+
79 
+
80 #undef D_STR_COOL
+
81 #define D_STR_COOL "Chüehle"
+
82 #undef D_STR_HEAT
+
83 #define D_STR_HEAT "Heize"
+
84 #undef D_STR_DRY
+
85 #define D_STR_DRY "Tröchne"
+
86 
+
87 #undef D_STR_MED
+
88 #define D_STR_MED "Mit"
+
89 #undef D_STR_MEDIUM
+
90 #define D_STR_MEDIUM "Mittel"
+
91 
+
92 #undef D_STR_HIGHEST
+
93 #define D_STR_HIGHEST "Höchscht"
+
94 #undef D_STR_HIGH
+
95 #define D_STR_HIGH "Höch"
+
96 #undef D_STR_HI
+
97 #define D_STR_HI "H"
+
98 #undef D_STR_MID
+
99 #define D_STR_MID "M"
+
100 #undef D_STR_MIDDLE
+
101 #define D_STR_MIDDLE "Mittel"
+
102 #undef D_STR_LOW
+
103 #define D_STR_LOW "Tüüf"
+
104 #undef D_STR_LO
+
105 #define D_STR_LO "T"
+
106 #undef D_STR_LOWEST
+
107 #define D_STR_LOWEST "Tüfschte"
+
108 #undef D_STR_MAXRIGHT
+
109 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
+
110 #undef D_STR_RIGHTMAX_NOSPACE
+
111 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
+
112 #undef D_STR_MAXLEFT
+
113 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
+
114 #undef D_STR_LEFTMAX_NOSPACE
+
115 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
+
116 #undef D_STR_CENTRE
+
117 #define D_STR_CENTRE "Mitti"
+
118 #undef D_STR_TOP
+
119 #define D_STR_TOP "Obe"
+
120 #undef D_STR_BOTTOM
+
121 #define D_STR_BOTTOM "Une"
+
122 
+
123 #undef D_STR_DAY
+
124 #define D_STR_DAY "Tag"
+
125 #undef D_STR_DAYS
+
126 #define D_STR_DAYS "Täg"
+
127 #undef D_STR_HOUR
+
128 #define D_STR_HOUR "Stund"
+
129 #undef D_STR_HOURS
+
130 #define D_STR_HOURS D_STR_HOUR "e"
+
131 #undef D_STR_MINUTE
+
132 #define D_STR_MINUTE "Minute"
+
133 #undef D_STR_MINUTES
+
134 #define D_STR_MINUTES D_STR_MINUTE
+
135 #undef D_STR_SECONDS
+
136 #define D_STR_SECONDS D_STR_SECOND
+
137 #undef D_STR_NOW
+
138 #define D_STR_NOW "Jetz"
+
139 
+
140 #undef D_STR_NO
+
141 #define D_STR_NO "Nei"
+
142 
+
143 #undef D_STR_REPEAT
+
144 #define D_STR_REPEAT "Wiederhole"
+
145 
+
146 // IRrecvDumpV2+
+
147 #undef D_STR_TIMESTAMP
+
148 #define D_STR_TIMESTAMP "Ziitstämpfel"
+
149 #undef D_STR_IRRECVDUMP_STARTUP
+
150 #define D_STR_IRRECVDUMP_STARTUP \
+
151  "IRrecvDump lauft und wartet uf IR Iigab ufem Pin %d"
+
152 #undef D_WARN_BUFFERFULL
+
153 #define D_WARN_BUFFERFULL \
+
154  "WARNUNG: IR Code isch zgross für de Buffer (>= %d). " \
+
155  "Dem Resultat sött mer nöd vertraue bevor das behobe isch. " \
+
156  "Bearbeite & vergrössere `kCaptureBufferSize`."
+
157 
+
158 #endif // LOCALE_DE_CH_H_
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h.html new file mode 100644 index 000000000..2b94c27ea --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/de-DE.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
de-DE.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h_source.html new file mode 100644 index 000000000..f3eda60f6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/de-DE_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +IRremoteESP8266: src/locale/de-DE.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
de-DE.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - Martin (@finfinack)
+
2 // Locale/language file for German / Germany.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_DE_DE_H_
+
5 #define LOCALE_DE_DE_H_
+
6 
+
7 #define D_STR_UNKNOWN "UNBEKANNT"
+
8 #define D_STR_PROTOCOL "Protokoll"
+
9 #define D_STR_ON "Ein"
+
10 #define D_STR_OFF "Aus"
+
11 #define D_STR_MODE "Modus"
+
12 #define D_STR_TOGGLE "Umschalten"
+
13 #define D_STR_SLEEP "Schlafen"
+
14 #define D_STR_LIGHT "Licht"
+
15 #define D_STR_POWERFUL "Stark"
+
16 #define D_STR_QUIET "Ruhig"
+
17 #define D_STR_ECONO "Eco"
+
18 #define D_STR_BEEP "Piep"
+
19 #define D_STR_MOULD "Schimmel"
+
20 #define D_STR_CLEAN "Reinigen"
+
21 #define D_STR_PURIFY "Frischen"
+
22 #define D_STR_TIMER "Timer"
+
23 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
+
24 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
+
25 #define D_STR_CLOCK "Uhr"
+
26 #define D_STR_COMMAND "Befehl"
+
27 #define D_STR_HEALTH "Gesundheit"
+
28 #define D_STR_TEMP "Temp"
+
29 #define D_STR_HUMID "Feucht"
+
30 #define D_STR_SAVE "Speichern"
+
31 #define D_STR_EYE "Auge"
+
32 #define D_STR_FOLLOW "Folgen"
+
33 #define D_STR_FRESH "Frisch"
+
34 #define D_STR_HOLD "Halten"
+
35 #define D_STR_BUTTON "Knopf"
+
36 #define D_STR_NIGHT "Nacht"
+
37 #define D_STR_SILENT "Ruhig"
+
38 #define D_STR_UP "Hinauf"
+
39 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
+
40 #define D_STR_DOWN "Hinunter"
+
41 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
+
42 #define D_STR_CHANGE "Wechseln"
+
43 #define D_STR_MOVE "Verschieben"
+
44 #define D_STR_SET "Setzen"
+
45 #define D_STR_CANCEL "Abbrechen"
+
46 #define D_STR_COMFORT "Komfort"
+
47 #define D_STR_WEEKLY "Wöchentlich"
+
48 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
+
49 #define D_STR_FAST "Schnell"
+
50 #define D_STR_SLOW "Langsam"
+
51 #define D_STR_AIRFLOW "Luftzug"
+
52 #define D_STR_STEP "Schritt"
+
53 #define D_STR_NA "N/A"
+
54 #define D_STR_OUTSIDE "Draussen"
+
55 #define D_STR_LOUD "Laut"
+
56 #define D_STR_UPPER "Oben"
+
57 #define D_STR_LOWER "Unten"
+
58 #define D_STR_BREEZE "Brise"
+
59 #define D_STR_CIRCULATE "Zirkulieren"
+
60 #define D_STR_CEILING "Decke"
+
61 #define D_STR_WALL "Wand"
+
62 #define D_STR_ROOM "Raum"
+
63 #define D_STR_6THSENSE "6ter Sinn"
+
64 #define D_STR_FIXED "Fixiert"
+
65 
+
66 #define D_STR_AUTOMATIC "Automatisch"
+
67 #define D_STR_MANUAL "Manuell"
+
68 #define D_STR_COOL "Kühlen"
+
69 #define D_STR_HEAT "Heizen"
+
70 #define D_STR_FAN "Lüfter"
+
71 #define D_STR_FANONLY "nur_lüfter"
+
72 #define D_STR_DRY "Trocken"
+
73 
+
74 #define D_STR_MED "Mit"
+
75 #define D_STR_MEDIUM "Mittel"
+
76 
+
77 #define D_STR_HIGHEST "Höchste"
+
78 #define D_STR_HIGH "Hoch"
+
79 #define D_STR_HI "H"
+
80 #define D_STR_MID "M"
+
81 #define D_STR_MIDDLE "Mittel"
+
82 #define D_STR_LOW "Tief"
+
83 #define D_STR_LO "T"
+
84 #define D_STR_LOWEST "Tiefste"
+
85 #define D_STR_RIGHT "Rechts"
+
86 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
+
87 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
+
88 #define D_STR_LEFT "Links"
+
89 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
+
90 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
+
91 #define D_STR_WIDE "Breit"
+
92 #define D_STR_CENTRE "Mitte"
+
93 #define D_STR_TOP "Oben"
+
94 #define D_STR_BOTTOM "Unten"
+
95 
+
96 #define D_STR_DAY "Tag"
+
97 #define D_STR_DAYS D_STR_DAY "e"
+
98 #define D_STR_HOUR "Stunde"
+
99 #define D_STR_HOURS D_STR_HOUR "n"
+
100 #define D_STR_MINUTES D_STR_MINUTE "n"
+
101 #define D_STR_SECOND "Sekunde"
+
102 #define D_STR_SECONDS D_STR_SECOND "n"
+
103 #define D_STR_NOW "Jetzt"
+
104 // These don't translate well to German as typically only 2 letter
+
105 // abbreviations are used. Hence, this is an approximation.
+
106 #define D_STR_THREELETTERDAYS "SonMonDieMitDonFreSam"
+
107 
+
108 #define D_STR_YES "Ja"
+
109 #define D_STR_NO "Nein"
+
110 #define D_STR_TRUE "Wahr"
+
111 #define D_STR_FALSE "Falsch"
+
112 
+
113 #define D_STR_REPEAT "Wiederholen"
+
114 
+
115 // IRrecvDumpV2+
+
116 #define D_STR_TIMESTAMP "Zeitstempel"
+
117 #define D_STR_LIBRARY "Bibliothek"
+
118 #define D_STR_MESGDESC "Nachr. Beschr."
+
119 #define D_STR_IRRECVDUMP_STARTUP \
+
120  "IRrecvDump läuft und wartet auf IR Eingabe auf Pin %d"
+
121 #define D_WARN_BUFFERFULL \
+
122  "WARNUNG: IR Code ist zu gross für Buffer (>= %d). " \
+
123  "Dem Resultat sollte nicht vertraut werden bevor das behoben ist. " \
+
124  "Bearbeite & vergrössere `kCaptureBufferSize`."
+
125 
+
126 #endif // LOCALE_DE_DE_H_
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h.html new file mode 100644 index 000000000..512778196 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/defaults.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
defaults.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h_source.html new file mode 100644 index 000000000..f2cf638b3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/defaults_8h_source.html @@ -0,0 +1,838 @@ + + + + + + + +IRremoteESP8266: src/locale/defaults.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
defaults.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - David Conran (@crankyoldgit)
+
2 // The default text to use throughout the library.
+
3 // The library will use this text if no locale (_IR_LOCALE_) is set or if
+
4 // the locale doesn't define particular values.
+
5 // If they are defined, this file should NOT override them.
+
6 //
+
7 // This file should contain a #define for every translateable/locale dependant
+
8 // string used by the library. Language specific files don't have to include
+
9 // everything.
+
10 //
+
11 // NOTE: ASCII/UTF-8 characters only. Unicode is NOT supported.
+
12 //
+
13 // The defaults are English (AU) / en-AU. Australia (AU) is pretty much the same
+
14 // as English (UK) for this libraries use case.
+
15 #ifndef LOCALE_DEFAULTS_H_
+
16 #define LOCALE_DEFAULTS_H_
+
17 
+
18 #ifndef D_STR_UNKNOWN
+
19 #define D_STR_UNKNOWN "UNKNOWN"
+
20 #endif // D_STR_UNKNOWN
+
21 #ifndef D_STR_PROTOCOL
+
22 #define D_STR_PROTOCOL "Protocol"
+
23 #endif // D_STR_PROTOCOL
+
24 #ifndef D_STR_POWER
+
25 #define D_STR_POWER "Power"
+
26 #endif // D_STR_POWER
+
27 #ifndef D_STR_PREVIOUS
+
28 #define D_STR_PREVIOUS "Previous"
+
29 #endif // D_STR_PREVIOUS
+
30 #ifndef D_STR_ON
+
31 #define D_STR_ON "On"
+
32 #endif // D_STR_ON
+
33 #ifndef D_STR_OFF
+
34 #define D_STR_OFF "Off"
+
35 #endif // D_STR_OFF
+
36 #ifndef D_STR_MODE
+
37 #define D_STR_MODE "Mode"
+
38 #endif // D_STR_MODE
+
39 #ifndef D_STR_TOGGLE
+
40 #define D_STR_TOGGLE "Toggle"
+
41 #endif // D_STR_TOGGLE
+
42 #ifndef D_STR_TURBO
+
43 #define D_STR_TURBO "Turbo"
+
44 #endif // D_STR_TURBO
+
45 #ifndef D_STR_SUPER
+
46 #define D_STR_SUPER "Super"
+
47 #endif // D_STR_SUPER
+
48 #ifndef D_STR_SLEEP
+
49 #define D_STR_SLEEP "Sleep"
+
50 #endif // D_STR_SLEEP
+
51 #ifndef D_STR_LIGHT
+
52 #define D_STR_LIGHT "Light"
+
53 #endif // D_STR_LIGHT
+
54 #ifndef D_STR_POWERFUL
+
55 #define D_STR_POWERFUL "Powerful"
+
56 #endif // D_STR_POWERFUL
+
57 #ifndef D_STR_QUIET
+
58 #define D_STR_QUIET "Quiet"
+
59 #endif // D_STR_QUIET
+
60 #ifndef D_STR_ECONO
+
61 #define D_STR_ECONO "Econo"
+
62 #endif // D_STR_ECONO
+
63 #ifndef D_STR_SWING
+
64 #define D_STR_SWING "Swing"
+
65 #endif // D_STR_SWING
+
66 #ifndef D_STR_SWINGH
+
67 #define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first!
+
68 #endif // D_STR_SWINGH
+
69 #ifndef D_STR_SWINGV
+
70 #define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
+
71 #endif // D_STR_SWINGV
+
72 #ifndef D_STR_BEEP
+
73 #define D_STR_BEEP "Beep"
+
74 #endif // D_STR_BEEP
+
75 #ifndef D_STR_MOULD
+
76 #define D_STR_MOULD "Mould"
+
77 #endif // D_STR_MOULD
+
78 #ifndef D_STR_CLEAN
+
79 #define D_STR_CLEAN "Clean"
+
80 #endif // D_STR_CLEAN
+
81 #ifndef D_STR_PURIFY
+
82 #define D_STR_PURIFY "Purify"
+
83 #endif // D_STR_PURIFY
+
84 #ifndef D_STR_TIMER
+
85 #define D_STR_TIMER "Timer"
+
86 #endif // D_STR_TIMER
+
87 #ifndef D_STR_ONTIMER
+
88 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
+
89 #endif // D_STR_ONTIMER
+
90 #ifndef D_STR_OFFTIMER
+
91 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
+
92 #endif // D_STR_OFFTIMER
+
93 #ifndef D_STR_CLOCK
+
94 #define D_STR_CLOCK "Clock"
+
95 #endif // D_STR_CLOCK
+
96 #ifndef D_STR_COMMAND
+
97 #define D_STR_COMMAND "Command"
+
98 #endif // D_STR_COMMAND
+
99 #ifndef D_STR_XFAN
+
100 #define D_STR_XFAN "XFan"
+
101 #endif // D_STR_XFAN
+
102 #ifndef D_STR_HEALTH
+
103 #define D_STR_HEALTH "Health"
+
104 #endif // D_STR_HEALTH
+
105 #ifndef D_STR_MODEL
+
106 #define D_STR_MODEL "Model"
+
107 #endif // D_STR_MODEL
+
108 #ifndef D_STR_TEMP
+
109 #define D_STR_TEMP "Temp"
+
110 #endif // D_STR_TEMP
+
111 #ifndef D_STR_IFEEL
+
112 #define D_STR_IFEEL "IFeel"
+
113 #endif // D_STR_IFEEL
+
114 #ifndef D_STR_HUMID
+
115 #define D_STR_HUMID "Humid"
+
116 #endif // D_STR_HUMID
+
117 #ifndef D_STR_SAVE
+
118 #define D_STR_SAVE "Save"
+
119 #endif // D_STR_SAVE
+
120 #ifndef D_STR_EYE
+
121 #define D_STR_EYE "Eye"
+
122 #endif // D_STR_EYE
+
123 #ifndef D_STR_FOLLOW
+
124 #define D_STR_FOLLOW "Follow"
+
125 #endif // D_STR_FOLLOW
+
126 #ifndef D_STR_ION
+
127 #define D_STR_ION "Ion"
+
128 #endif // D_STR_ION
+
129 #ifndef D_STR_FRESH
+
130 #define D_STR_FRESH "Fresh"
+
131 #endif // D_STR_FRESH
+
132 #ifndef D_STR_HOLD
+
133 #define D_STR_HOLD "Hold"
+
134 #endif // D_STR_HOLD
+
135 #ifndef D_STR_8C_HEAT
+
136 #define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
+
137 #endif // D_STR_8C_HEAT
+
138 #ifndef D_STR_BUTTON
+
139 #define D_STR_BUTTON "Button"
+
140 #endif // D_STR_BUTTON
+
141 #ifndef D_STR_NIGHT
+
142 #define D_STR_NIGHT "Night"
+
143 #endif // D_STR_NIGHT
+
144 #ifndef D_STR_SILENT
+
145 #define D_STR_SILENT "Silent"
+
146 #endif // D_STR_SILENT
+
147 #ifndef D_STR_FILTER
+
148 #define D_STR_FILTER "Filter"
+
149 #endif // D_STR_FILTER
+
150 #ifndef D_STR_3D
+
151 #define D_STR_3D "3D"
+
152 #endif // D_STR_3D
+
153 #ifndef D_STR_CELSIUS
+
154 #define D_STR_CELSIUS "Celsius"
+
155 #endif // D_STR_CELSIUS
+
156 #ifndef D_STR_UP
+
157 #define D_STR_UP "Up"
+
158 #endif // D_STR_UP
+
159 #ifndef D_STR_TEMPUP
+
160 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
+
161 #endif // D_STR_TEMPUP
+
162 #ifndef D_STR_DOWN
+
163 #define D_STR_DOWN "Down"
+
164 #endif // D_STR_DOWN
+
165 #ifndef D_STR_TEMPDOWN
+
166 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
+
167 #endif // D_STR_TEMPDOWN
+
168 #ifndef D_STR_CHANGE
+
169 #define D_STR_CHANGE "Change"
+
170 #endif // D_STR_CHANGE
+
171 #ifndef D_STR_START
+
172 #define D_STR_START "Start"
+
173 #endif // D_STR_START
+
174 #ifndef D_STR_STOP
+
175 #define D_STR_STOP "Stop"
+
176 #endif // D_STR_STOP
+
177 #ifndef D_STR_MOVE
+
178 #define D_STR_MOVE "Move"
+
179 #endif // D_STR_MOVE
+
180 #ifndef D_STR_SET
+
181 #define D_STR_SET "Set"
+
182 #endif // D_STR_SET
+
183 #ifndef D_STR_CANCEL
+
184 #define D_STR_CANCEL "Cancel"
+
185 #endif // D_STR_CANCEL
+
186 #ifndef D_STR_COMFORT
+
187 #define D_STR_COMFORT "Comfort"
+
188 #endif // D_STR_COMFORT
+
189 #ifndef D_STR_SENSOR
+
190 #define D_STR_SENSOR "Sensor"
+
191 #endif // D_STR_SENSOR
+
192 #ifndef D_STR_DISPLAY
+
193 #define D_STR_DISPLAY "Display"
+
194 #endif // D_STR_DISPLAY
+
195 #ifndef D_STR_WEEKLY
+
196 #define D_STR_WEEKLY "Weekly"
+
197 #endif // D_STR_WEEKLY
+
198 #ifndef D_STR_WEEKLYTIMER
+
199 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
+
200 #endif // D_STR_WEEKLYTIMER
+
201 #ifndef D_STR_WIFI
+
202 #define D_STR_WIFI "WiFi"
+
203 #endif // D_STR_WIFI
+
204 #ifndef D_STR_LAST
+
205 #define D_STR_LAST "Last"
+
206 #endif // D_STR_LAST
+
207 #ifndef D_STR_FAST
+
208 #define D_STR_FAST "Fast"
+
209 #endif // D_STR_FAST
+
210 #ifndef D_STR_SLOW
+
211 #define D_STR_SLOW "Slow"
+
212 #endif // D_STR_SLOW
+
213 #ifndef D_STR_AIRFLOW
+
214 #define D_STR_AIRFLOW "Air Flow"
+
215 #endif // D_STR_AIRFLOW
+
216 #ifndef D_STR_STEP
+
217 #define D_STR_STEP "Step"
+
218 #endif // D_STR_STEP
+
219 #ifndef D_STR_NA
+
220 #define D_STR_NA "N/A"
+
221 #endif // D_STR_NA
+
222 #ifndef D_STR_INSIDE
+
223 #define D_STR_INSIDE "Inside"
+
224 #endif // D_STR_INSIDE
+
225 #ifndef D_STR_OUTSIDE
+
226 #define D_STR_OUTSIDE "Outside"
+
227 #endif // D_STR_OUTSIDE
+
228 #ifndef D_STR_LOUD
+
229 #define D_STR_LOUD "Loud"
+
230 #endif // D_STR_LOUD
+
231 #ifndef D_STR_UPPER
+
232 #define D_STR_UPPER "Upper"
+
233 #endif // D_STR_UPPER
+
234 #ifndef D_STR_LOWER
+
235 #define D_STR_LOWER "Lower"
+
236 #endif // D_STR_LOWER
+
237 #ifndef D_STR_BREEZE
+
238 #define D_STR_BREEZE "Breeze"
+
239 #endif // D_STR_BREEZE
+
240 #ifndef D_STR_CIRCULATE
+
241 #define D_STR_CIRCULATE "Circulate"
+
242 #endif // D_STR_CIRCULATE
+
243 #ifndef D_STR_CEILING
+
244 #define D_STR_CEILING "Ceiling"
+
245 #endif // D_STR_CEILING
+
246 #ifndef D_STR_WALL
+
247 #define D_STR_WALL "Wall"
+
248 #endif // D_STR_WALL
+
249 #ifndef D_STR_ROOM
+
250 #define D_STR_ROOM "Room"
+
251 #endif // D_STR_ROOM
+
252 #ifndef D_STR_6THSENSE
+
253 #define D_STR_6THSENSE "6th Sense"
+
254 #endif // D_STR_6THSENSE
+
255 #ifndef D_STR_ZONEFOLLOW
+
256 #define D_STR_ZONEFOLLOW "Zone Follow"
+
257 #endif // D_STR_ZONEFOLLOW
+
258 #ifndef D_STR_FIXED
+
259 #define D_STR_FIXED "Fixed"
+
260 #endif // D_STR_FIXED
+
261 
+
262 #ifndef D_STR_AUTO
+
263 #define D_STR_AUTO "Auto"
+
264 #endif // D_STR_AUTO
+
265 #ifndef D_STR_AUTOMATIC
+
266 #define D_STR_AUTOMATIC "Automatic"
+
267 #endif // D_STR_AUTOMATIC
+
268 #ifndef D_STR_MANUAL
+
269 #define D_STR_MANUAL "Manual"
+
270 #endif // D_STR_MANUAL
+
271 #ifndef D_STR_COOL
+
272 #define D_STR_COOL "Cool"
+
273 #endif // D_STR_COOL
+
274 #ifndef D_STR_HEAT
+
275 #define D_STR_HEAT "Heat"
+
276 #endif // D_STR_HEAT
+
277 #ifndef D_STR_FAN
+
278 #define D_STR_FAN "Fan"
+
279 #endif // D_STR_FAN
+
280 #ifndef D_STR_FANONLY
+
281 #define D_STR_FANONLY "fan_only"
+
282 #endif // D_STR_FANONLY
+
283 #ifndef D_STR_DRY
+
284 #define D_STR_DRY "Dry"
+
285 #endif // D_STR_DRY
+
286 
+
287 #ifndef D_STR_MAX
+
288 #define D_STR_MAX "Max"
+
289 #endif // D_STR_MAX
+
290 #ifndef D_STR_MAXIMUM
+
291 #define D_STR_MAXIMUM "Maximum"
+
292 #endif // D_STR_MAXIMUM
+
293 #ifndef D_STR_MIN
+
294 #define D_STR_MIN "Min"
+
295 #endif // D_STR_MIN
+
296 #ifndef D_STR_MINIMUM
+
297 #define D_STR_MINIMUM "Minimum"
+
298 #endif // D_STR_MINIMUM
+
299 #ifndef D_STR_MED
+
300 #define D_STR_MED "Med"
+
301 #endif // D_STR_MED
+
302 #ifndef D_STR_MEDIUM
+
303 #define D_STR_MEDIUM "Medium"
+
304 #endif // D_STR_MEDIUM
+
305 
+
306 #ifndef D_STR_HIGHEST
+
307 #define D_STR_HIGHEST "Highest"
+
308 #endif // D_STR_HIGHEST
+
309 #ifndef D_STR_HIGH
+
310 #define D_STR_HIGH "High"
+
311 #endif // D_STR_HIGH
+
312 #ifndef D_STR_HI
+
313 #define D_STR_HI "Hi"
+
314 #endif // D_STR_HI
+
315 #ifndef D_STR_MID
+
316 #define D_STR_MID "Mid"
+
317 #endif // D_STR_MID
+
318 #ifndef D_STR_MIDDLE
+
319 #define D_STR_MIDDLE "Middle"
+
320 #endif // D_STR_MIDDLE
+
321 #ifndef D_STR_LOW
+
322 #define D_STR_LOW "Low"
+
323 #endif // D_STR_LOW
+
324 #ifndef D_STR_LO
+
325 #define D_STR_LO "Lo"
+
326 #endif // D_STR_LO
+
327 #ifndef D_STR_LOWEST
+
328 #define D_STR_LOWEST "Lowest"
+
329 #endif // D_STR_LOWEST
+
330 #ifndef D_STR_RIGHT
+
331 #define D_STR_RIGHT "Right"
+
332 #endif // D_STR_RIGHT
+
333 #ifndef D_STR_MAXRIGHT
+
334 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
+
335 #endif // D_STR_MAXRIGHT
+
336 #ifndef D_STR_RIGHTMAX_NOSPACE
+
337 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
+
338 #endif // D_STR_RIGHTMAX_NOSPACE
+
339 #ifndef D_STR_LEFT
+
340 #define D_STR_LEFT "Left"
+
341 #endif // D_STR_LEFT
+
342 #ifndef D_STR_MAXLEFT
+
343 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
+
344 #endif // D_STR_MAXLEFT
+
345 #ifndef D_STR_LEFTMAX_NOSPACE
+
346 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
+
347 #endif // D_STR_LEFTMAX_NOSPACE
+
348 #ifndef D_STR_WIDE
+
349 #define D_STR_WIDE "Wide"
+
350 #endif // D_STR_WIDE
+
351 #ifndef D_STR_CENTRE
+
352 #define D_STR_CENTRE "Centre"
+
353 #endif // D_STR_CENTRE
+
354 #ifndef D_STR_TOP
+
355 #define D_STR_TOP "Top"
+
356 #endif // D_STR_TOP
+
357 #ifndef D_STR_BOTTOM
+
358 #define D_STR_BOTTOM "Bottom"
+
359 #endif // D_STR_BOTTOM
+
360 
+
361 // Compound words/phrases/descriptions from pre-defined words.
+
362 // Note: Obviously these need to be defined *after* their component words.
+
363 #ifndef D_STR_EYEAUTO
+
364 #define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
+
365 #endif // D_STR_EYEAUTO
+
366 #ifndef D_STR_LIGHTTOGGLE
+
367 #define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
+
368 #endif // D_STR_LIGHTTOGGLE
+
369 #ifndef D_STR_OUTSIDEQUIET
+
370 #define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
+
371 #endif // D_STR_OUTSIDEQUIET
+
372 #ifndef D_STR_POWERTOGGLE
+
373 #define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
+
374 #endif // D_STR_POWERTOGGLE
+
375 #ifndef D_STR_POWERBUTTON
+
376 #define D_STR_POWERBUTTON D_STR_POWER " " D_STR_BUTTON
+
377 #endif // D_STR_POWERBUTTON
+
378 #ifndef D_STR_PREVIOUSPOWER
+
379 #define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER
+
380 #endif // D_STR_PREVIOUSPOWER
+
381 #ifndef D_STR_DISPLAYTEMP
+
382 #define D_STR_DISPLAYTEMP D_STR_DISPLAY " " D_STR_TEMP
+
383 #endif // D_STR_DISPLAYTEMP
+
384 #ifndef D_STR_SENSORTEMP
+
385 #define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
+
386 #endif // D_STR_SENSORTEMP
+
387 #ifndef D_STR_SLEEP_TIMER
+
388 #define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
+
389 #endif // D_STR_SLEEP_TIMER
+
390 #ifndef D_STR_SWINGVMODE
+
391 #define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
+
392 #endif // D_STR_SWINGVMODE
+
393 #ifndef D_STR_SWINGVTOGGLE
+
394 #define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
+
395 #endif // D_STR_SWINGVTOGGLE
+
396 
+
397 // Separators
+
398 #ifndef D_CHR_TIME_SEP
+
399 #define D_CHR_TIME_SEP ':'
+
400 #endif // D_CHR_TIME_SEP
+
401 #ifndef D_STR_SPACELBRACE
+
402 #define D_STR_SPACELBRACE " ("
+
403 #endif // D_STR_SPACELBRACE
+
404 #ifndef D_STR_COMMASPACE
+
405 #define D_STR_COMMASPACE ", "
+
406 #endif // D_STR_COMMASPACE
+
407 #ifndef D_STR_COLONSPACE
+
408 #define D_STR_COLONSPACE ": "
+
409 #endif // D_STR_COLONSPACE
+
410 
+
411 #ifndef D_STR_DAY
+
412 #define D_STR_DAY "Day"
+
413 #endif // D_STR_DAY
+
414 #ifndef D_STR_DAYS
+
415 #define D_STR_DAYS D_STR_DAY "s"
+
416 #endif // D_STR_DAYS
+
417 #ifndef D_STR_HOUR
+
418 #define D_STR_HOUR "Hour"
+
419 #endif // D_STR_HOUR
+
420 #ifndef D_STR_HOURS
+
421 #define D_STR_HOURS D_STR_HOUR "s"
+
422 #endif // D_STR_HOURS
+
423 #ifndef D_STR_MINUTE
+
424 #define D_STR_MINUTE "Minute"
+
425 #endif // D_STR_MINUTE
+
426 #ifndef D_STR_MINUTES
+
427 #define D_STR_MINUTES D_STR_MINUTE "s"
+
428 #endif // D_STR_MINUTES
+
429 #ifndef D_STR_SECOND
+
430 #define D_STR_SECOND "Second"
+
431 #endif // D_STR_SECOND
+
432 #ifndef D_STR_SECONDS
+
433 #define D_STR_SECONDS D_STR_SECOND "s"
+
434 #endif // D_STR_SECONDS
+
435 #ifndef D_STR_NOW
+
436 #define D_STR_NOW "Now"
+
437 #endif // D_STR_NOW
+
438 #ifndef D_STR_THREELETTERDAYS
+
439 #define D_STR_THREELETTERDAYS "SunMonTueWedThuFriSat"
+
440 #endif // D_STR_THREELETTERDAYS
+
441 
+
442 #ifndef D_STR_YES
+
443 #define D_STR_YES "Yes"
+
444 #endif // D_STR_YES
+
445 #ifndef D_STR_NO
+
446 #define D_STR_NO "No"
+
447 #endif // D_STR_NO
+
448 #ifndef D_STR_TRUE
+
449 #define D_STR_TRUE "True"
+
450 #endif // D_STR_TRUE
+
451 #ifndef D_STR_FALSE
+
452 #define D_STR_FALSE "False"
+
453 #endif // D_STR_FALSE
+
454 
+
455 #ifndef D_STR_REPEAT
+
456 #define D_STR_REPEAT "Repeat"
+
457 #endif // D_STR_REPEAT
+
458 #ifndef D_STR_CODE
+
459 #define D_STR_CODE "Code"
+
460 #endif // D_STR_CODE
+
461 #ifndef D_STR_BITS
+
462 #define D_STR_BITS "Bits"
+
463 #endif // D_STR_BITS
+
464 
+
465 // Protocols Names
+
466 #ifndef D_STR_AIRWELL
+
467 #define D_STR_AIRWELL "AIRWELL"
+
468 #endif // D_STR_AIRWELL
+
469 #ifndef D_STR_AIWA_RC_T501
+
470 #define D_STR_AIWA_RC_T501 "AIWA_RC_T501"
+
471 #endif // D_STR_AIWA_RC_T501
+
472 #ifndef D_STR_AMCOR
+
473 #define D_STR_AMCOR "AMCOR"
+
474 #endif // D_STR_AMCOR
+
475 #ifndef D_STR_ARGO
+
476 #define D_STR_ARGO "ARGO"
+
477 #endif // D_STR_ARGO
+
478 #ifndef D_STR_CARRIER_AC
+
479 #define D_STR_CARRIER_AC "CARRIER_AC"
+
480 #endif // D_STR_CARRIER_AC
+
481 #ifndef D_STR_CARRIER_AC40
+
482 #define D_STR_CARRIER_AC40 D_STR_CARRIER_AC "40"
+
483 #endif // D_STR_CARRIER_AC40
+
484 #ifndef D_STR_CARRIER_AC64
+
485 #define D_STR_CARRIER_AC64 D_STR_CARRIER_AC "64"
+
486 #endif // D_STR_CARRIER_AC64
+
487 #ifndef D_STR_COOLIX
+
488 #define D_STR_COOLIX "COOLIX"
+
489 #endif // D_STR_COOLIX
+
490 #ifndef D_STR_CORONA_AC
+
491 #define D_STR_CORONA_AC "CORONA_AC"
+
492 #endif // D_STR_CORONA_AC
+
493 #ifndef D_STR_DAIKIN
+
494 #define D_STR_DAIKIN "DAIKIN"
+
495 #endif // D_STR_DAIKIN
+
496 #ifndef D_STR_DAIKIN128
+
497 #define D_STR_DAIKIN128 "DAIKIN128"
+
498 #endif // D_STR_DAIKIN128
+
499 #ifndef D_STR_DAIKIN152
+
500 #define D_STR_DAIKIN152 "DAIKIN152"
+
501 #endif // D_STR_DAIKIN152
+
502 #ifndef D_STR_DAIKIN160
+
503 #define D_STR_DAIKIN160 "DAIKIN160"
+
504 #endif // D_STR_DAIKIN160
+
505 #ifndef D_STR_DAIKIN176
+
506 #define D_STR_DAIKIN176 "DAIKIN176"
+
507 #endif // D_STR_DAIKIN176
+
508 #ifndef D_STR_DAIKIN2
+
509 #define D_STR_DAIKIN2 "DAIKIN2"
+
510 #endif // D_STR_DAIKIN2
+
511 #ifndef D_STR_DAIKIN216
+
512 #define D_STR_DAIKIN216 "DAIKIN216"
+
513 #endif // D_STR_DAIKIN216
+
514 #ifndef D_STR_DAIKIN64
+
515 #define D_STR_DAIKIN64 "DAIKIN64"
+
516 #endif // D_STR_DAIKIN64
+
517 #ifndef D_STR_DELONGHI_AC
+
518 #define D_STR_DELONGHI_AC "DELONGHI_AC"
+
519 #endif // D_STR_DELONGHI_AC
+
520 #ifndef D_STR_DENON
+
521 #define D_STR_DENON "DENON"
+
522 #endif // D_STR_DENON
+
523 #ifndef D_STR_DISH
+
524 #define D_STR_DISH "DISH"
+
525 #endif // D_STR_DISH
+
526 #ifndef D_STR_DOSHISHA
+
527 #define D_STR_DOSHISHA "DOSHISHA"
+
528 #endif // D_STR_DOSHISHA
+
529 #ifndef D_STR_ELECTRA_AC
+
530 #define D_STR_ELECTRA_AC "ELECTRA_AC"
+
531 #endif // D_STR_ELECTRA_AC
+
532 #ifndef D_STR_EPSON
+
533 #define D_STR_EPSON "EPSON"
+
534 #endif // D_STR_EPSON
+
535 #ifndef D_STR_FUJITSU_AC
+
536 #define D_STR_FUJITSU_AC "FUJITSU_AC"
+
537 #endif // D_STR_FUJITSU_AC
+
538 #ifndef D_STR_GICABLE
+
539 #define D_STR_GICABLE "GICABLE"
+
540 #endif // D_STR_GICABLE
+
541 #ifndef D_STR_GLOBALCACHE
+
542 #define D_STR_GLOBALCACHE "GLOBALCACHE"
+
543 #endif // D_STR_GLOBALCACHE
+
544 #ifndef D_STR_GOODWEATHER
+
545 #define D_STR_GOODWEATHER "GOODWEATHER"
+
546 #endif // D_STR_GOODWEATHER
+
547 #ifndef D_STR_GREE
+
548 #define D_STR_GREE "GREE"
+
549 #endif // D_STR_GREE
+
550 #ifndef D_STR_HAIER_AC
+
551 #define D_STR_HAIER_AC "HAIER_AC"
+
552 #endif // D_STR_HAIER_AC
+
553 #ifndef D_STR_HAIER_AC_YRW02
+
554 #define D_STR_HAIER_AC_YRW02 "HAIER_AC_YRW02"
+
555 #endif // D_STR_HAIER_AC_YRW02
+
556 #ifndef D_STR_HITACHI_AC
+
557 #define D_STR_HITACHI_AC "HITACHI_AC"
+
558 #endif // D_STR_HITACHI_AC
+
559 #ifndef D_STR_HITACHI_AC1
+
560 #define D_STR_HITACHI_AC1 "HITACHI_AC1"
+
561 #endif // D_STR_HITACHI_AC1
+
562 #ifndef D_STR_HITACHI_AC2
+
563 #define D_STR_HITACHI_AC2 "HITACHI_AC2"
+
564 #endif // D_STR_HITACHI_AC2
+
565 #ifndef D_STR_HITACHI_AC3
+
566 #define D_STR_HITACHI_AC3 "HITACHI_AC3"
+
567 #endif // D_STR_HITACHI_AC3
+
568 #ifndef D_STR_HITACHI_AC344
+
569 #define D_STR_HITACHI_AC344 "HITACHI_AC344"
+
570 #endif // D_STR_HITACHI_AC344
+
571 #ifndef D_STR_HITACHI_AC424
+
572 #define D_STR_HITACHI_AC424 "HITACHI_AC424"
+
573 #endif // D_STR_HITACHI_AC424
+
574 #ifndef D_STR_INAX
+
575 #define D_STR_INAX "INAX"
+
576 #endif // D_STR_INAX
+
577 #ifndef D_STR_JVC
+
578 #define D_STR_JVC "JVC"
+
579 #endif // D_STR_JVC
+
580 #ifndef D_STR_KELVINATOR
+
581 #define D_STR_KELVINATOR "KELVINATOR"
+
582 #endif // D_STR_KELVINATOR
+
583 #ifndef D_STR_LASERTAG
+
584 #define D_STR_LASERTAG "LASERTAG"
+
585 #endif // D_STR_LASERTAG
+
586 #ifndef D_STR_LEGOPF
+
587 #define D_STR_LEGOPF "LEGOPF"
+
588 #endif // D_STR_LEGOPF
+
589 #ifndef D_STR_LG
+
590 #define D_STR_LG "LG"
+
591 #endif // D_STR_LG
+
592 #ifndef D_STR_LG2
+
593 #define D_STR_LG2 "LG2"
+
594 #endif // D_STR_LG2
+
595 #ifndef D_STR_LUTRON
+
596 #define D_STR_LUTRON "LUTRON"
+
597 #endif // D_STR_LUTRON
+
598 #ifndef D_STR_MAGIQUEST
+
599 #define D_STR_MAGIQUEST "MAGIQUEST"
+
600 #endif // D_STR_MAGIQUEST
+
601 #ifndef D_STR_MIDEA
+
602 #define D_STR_MIDEA "MIDEA"
+
603 #endif // D_STR_MIDEA
+
604 #ifndef D_STR_MIDEA24
+
605 #define D_STR_MIDEA24 "MIDEA24"
+
606 #endif // D_STR_MIDEA24
+
607 #ifndef D_STR_MITSUBISHI
+
608 #define D_STR_MITSUBISHI "MITSUBISHI"
+
609 #endif // D_STR_MITSUBISHI
+
610 #ifndef D_STR_MITSUBISHI112
+
611 #define D_STR_MITSUBISHI112 "MITSUBISHI112"
+
612 #endif // D_STR_MITSUBISHI112
+
613 #ifndef D_STR_MITSUBISHI136
+
614 #define D_STR_MITSUBISHI136 "MITSUBISHI136"
+
615 #endif // D_STR_MITSUBISHI136
+
616 #ifndef D_STR_MITSUBISHI2
+
617 #define D_STR_MITSUBISHI2 "MITSUBISHI2"
+
618 #endif // D_STR_MITSUBISHI2
+
619 #ifndef D_STR_MITSUBISHI_AC
+
620 #define D_STR_MITSUBISHI_AC "MITSUBISHI_AC"
+
621 #endif // D_STR_MITSUBISHI_AC
+
622 #ifndef D_STR_MITSUBISHI_HEAVY_152
+
623 #define D_STR_MITSUBISHI_HEAVY_152 "MITSUBISHI_HEAVY_152"
+
624 #endif // D_STR_MITSUBISHI_HEAVY_152
+
625 #ifndef D_STR_MITSUBISHI_HEAVY_88
+
626 #define D_STR_MITSUBISHI_HEAVY_88 "MITSUBISHI_HEAVY_88"
+
627 #endif // D_STR_MITSUBISHI_HEAVY_88
+
628 #ifndef D_STR_MULTIBRACKETS
+
629 #define D_STR_MULTIBRACKETS "MULTIBRACKETS"
+
630 #endif // D_STR_MULTIBRACKETS
+
631 #ifndef D_STR_MWM
+
632 #define D_STR_MWM "MWM"
+
633 #endif // D_STR_MWM
+
634 #ifndef D_STR_NEC
+
635 #define D_STR_NEC "NEC"
+
636 #endif // D_STR_NEC
+
637 #ifndef D_STR_NEC_LIKE
+
638 #define D_STR_NEC_LIKE D_STR_NEC "_LIKE"
+
639 #endif // D_STR_NEC_LIKE
+
640 #ifndef D_STR_NEC_NON_STRICT
+
641 #define D_STR_NEC_NON_STRICT D_STR_NEC " (NON-STRICT)"
+
642 #endif // D_STR_NEC_NON_STRICT
+
643 #ifndef D_STR_NEOCLIMA
+
644 #define D_STR_NEOCLIMA "NEOCLIMA"
+
645 #endif // D_STR_NEOCLIMA
+
646 #ifndef D_STR_NIKAI
+
647 #define D_STR_NIKAI "NIKAI"
+
648 #endif // D_STR_NIKAI
+
649 #ifndef D_STR_PANASONIC
+
650 #define D_STR_PANASONIC "PANASONIC"
+
651 #endif // D_STR_PANASONIC
+
652 #ifndef D_STR_PANASONIC_AC
+
653 #define D_STR_PANASONIC_AC "PANASONIC_AC"
+
654 #endif // D_STR_PANASONIC_AC
+
655 #ifndef D_STR_PIONEER
+
656 #define D_STR_PIONEER "PIONEER"
+
657 #endif // D_STR_PIONEER
+
658 #ifndef D_STR_PRONTO
+
659 #define D_STR_PRONTO "PRONTO"
+
660 #endif // D_STR_PRONTO
+
661 #ifndef D_STR_RAW
+
662 #define D_STR_RAW "RAW"
+
663 #endif // D_STR_RAW
+
664 #ifndef D_STR_RC5
+
665 #define D_STR_RC5 "RC5"
+
666 #endif // D_STR_RC5
+
667 #ifndef D_STR_RC5X
+
668 #define D_STR_RC5X "RC5X"
+
669 #endif // D_STR_RC5X
+
670 #ifndef D_STR_RC6
+
671 #define D_STR_RC6 "RC6"
+
672 #endif // D_STR_RC6
+
673 #ifndef D_STR_RCMM
+
674 #define D_STR_RCMM "RCMM"
+
675 #endif // D_STR_RCMM
+
676 #ifndef D_STR_SAMSUNG
+
677 #define D_STR_SAMSUNG "SAMSUNG"
+
678 #endif // D_STR_SAMSUNG
+
679 #ifndef D_STR_SAMSUNG36
+
680 #define D_STR_SAMSUNG36 "SAMSUNG36"
+
681 #endif // D_STR_SAMSUNG36
+
682 #ifndef D_STR_SAMSUNG_AC
+
683 #define D_STR_SAMSUNG_AC "SAMSUNG_AC"
+
684 #endif // D_STR_SAMSUNG_AC
+
685 #ifndef D_STR_SANYO
+
686 #define D_STR_SANYO "SANYO"
+
687 #endif // D_STR_SANYO
+
688 #ifndef D_STR_SANYO_LC7461
+
689 #define D_STR_SANYO_LC7461 "SANYO_LC7461"
+
690 #endif // D_STR_SANYO_LC7461
+
691 #ifndef D_STR_SHARP
+
692 #define D_STR_SHARP "SHARP"
+
693 #endif // D_STR_SHARP
+
694 #ifndef D_STR_SHARP_AC
+
695 #define D_STR_SHARP_AC "SHARP_AC"
+
696 #endif // D_STR_SHARP_AC
+
697 #ifndef D_STR_SHERWOOD
+
698 #define D_STR_SHERWOOD "SHERWOOD"
+
699 #endif // D_STR_SHERWOOD
+
700 #ifndef D_STR_SONY
+
701 #define D_STR_SONY "SONY"
+
702 #endif // D_STR_SONY
+
703 #ifndef D_STR_SONY_38K
+
704 #define D_STR_SONY_38K "SONY_38K"
+
705 #endif // D_STR_SONY_38K
+
706 #ifndef D_STR_SYMPHONY
+
707 #define D_STR_SYMPHONY "SYMPHONY"
+
708 #endif // D_STR_SYMPHONY
+
709 #ifndef D_STR_TCL112AC
+
710 #define D_STR_TCL112AC "TCL112AC"
+
711 #endif // D_STR_TCL112AC
+
712 #ifndef D_STR_TECO
+
713 #define D_STR_TECO "TECO"
+
714 #endif // D_STR_TECO
+
715 #ifndef D_STR_TOSHIBA_AC
+
716 #define D_STR_TOSHIBA_AC "TOSHIBA_AC"
+
717 #endif // D_STR_TOSHIBA_AC
+
718 #ifndef D_STR_TROTEC
+
719 #define D_STR_TROTEC "TROTEC"
+
720 #endif // D_STR_TROTEC
+
721 #ifndef D_STR_UNUSED
+
722 #define D_STR_UNUSED "UNUSED"
+
723 #endif // D_STR_UNUSED
+
724 #ifndef D_STR_VESTEL_AC
+
725 #define D_STR_VESTEL_AC "VESTEL_AC"
+
726 #endif // D_STR_VESTEL_AC
+
727 #ifndef D_STR_WHIRLPOOL_AC
+
728 #define D_STR_WHIRLPOOL_AC "WHIRLPOOL_AC"
+
729 #endif // D_STR_WHIRLPOOL_AC
+
730 #ifndef D_STR_WHYNTER
+
731 #define D_STR_WHYNTER "WHYNTER"
+
732 #endif // D_STR_WHYNTER
+
733 #ifndef D_STR_ZEPEAL
+
734 #define D_STR_ZEPEAL "ZEPEAL"
+
735 #endif // D_STR_ZEPEAL
+
736 
+
737 // IRrecvDumpV2+
+
738 #ifndef D_STR_TIMESTAMP
+
739 #define D_STR_TIMESTAMP "Timestamp"
+
740 #endif // D_STR_TIMESTAMP
+
741 #ifndef D_STR_LIBRARY
+
742 #define D_STR_LIBRARY "Library"
+
743 #endif // D_STR_LIBRARY
+
744 #ifndef D_STR_MESGDESC
+
745 #define D_STR_MESGDESC "Mesg Desc."
+
746 #endif // D_STR_MESGDESC
+
747 #ifndef D_STR_IRRECVDUMP_STARTUP
+
748 #define D_STR_IRRECVDUMP_STARTUP \
+
749  "IRrecvDump is now running and waiting for IR input on Pin %d"
+
750 #endif // D_STR_IRRECVDUMP_STARTUP
+
751 #ifndef D_WARN_BUFFERFULL
+
752 #define D_WARN_BUFFERFULL \
+
753  "WARNING: IR code is too big for buffer (>= %d). " \
+
754  "This result shouldn't be trusted until this is resolved. " \
+
755  "Edit & increase `kCaptureBufferSize`."
+
756 #endif // D_WARN_BUFFERFULL
+
757 
+
758 #endif // LOCALE_DEFAULTS_H_
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/deprecated.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/deprecated.html new file mode 100644 index 000000000..58f8129ca --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/deprecated.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: Deprecated List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Deprecated List
+
+
+
+
Member IRsend::sendPanasonic (const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
+
This is only for legacy use only, please use sendPanasonic64() instead.
+
Member IRsend::sendSharp (const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
+
Only use this if you are using legacy from the original Arduino-IRremote library. 99% of the time, you will want to use sendSharpRaw() instead
+
Member resultToTimingInfo (const decode_results *const results)
+
This is only for those that want this legacy format.
+
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html new file mode 100644 index 000000000..6b30372c6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,80 @@ + + + + + + + +IRremoteESP8266: docs Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
docs Directory Reference
+
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 000000000..9d915e190 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,373 @@ + + + + + + + +IRremoteESP8266: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + + + +

+Directories

directory  locale
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  i18n.h [code]
 
file  ir_Airwell.cpp
 Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
 
file  ir_Aiwa.cpp
 Aiwa based protocol. Based off the RC-T501 RCU Inspired by IRremoteESP8266's implementation.
 
file  ir_Amcor.cpp
 Amcor A/C protocol.
 
file  ir_Amcor.h [code]
 Amcor A/C protocol.
 
file  ir_Argo.cpp
 Argo A/C protocol. Controls an Argo Ulisse 13 DCI A/C.
 
file  ir_Argo.h [code]
 Support for Argo Ulisse 13 DCI Mobile Split ACs.
 
file  ir_Carrier.cpp
 Carrier protocols.
 
file  ir_Carrier.h [code]
 Carrier A/C.
 
file  ir_Coolix.cpp
 Coolix A/C / heatpump.
 
file  ir_Coolix.h [code]
 
file  ir_Corona.cpp
 Corona A/C protocol.
 
file  ir_Corona.h [code]
 
file  ir_Daikin.cpp
 Support for Daikin A/C protocols.
 
file  ir_Daikin.h [code]
 Support for Daikin A/C protocols.
 
file  ir_Delonghi.cpp
 Delonghi based protocol.
 
file  ir_Delonghi.h [code]
 Delonghi A/C.
 
file  ir_Denon.cpp
 Denon support Original Denon support added by https://github.com/csBlueChip Ported over by Massimiliano Pinto.
 
file  ir_Dish.cpp
 DISH Network protocol support DISH support originally by Todd Treece.
 
file  ir_Doshisha.cpp
 Doshisha protocol support.
 
file  ir_Electra.cpp
 Support for Electra A/C protocols.
 
file  ir_Electra.h [code]
 Support for Electra A/C protocols.
 
file  ir_Epson.cpp
 Support for Epson protocols. Epson is an NEC-like protocol, except it doesn't use the NEC style repeat.
 
file  ir_Fujitsu.cpp
 Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham & David Conran.
 
file  ir_Fujitsu.h [code]
 Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
 
file  ir_GICable.cpp
 G.I. Cable.
 
file  ir_GlobalCache.cpp
 Global Cache IR format sender Originally added by Hisham Khalifa (http://www.hishamkhalifa.com)
 
file  ir_Goodweather.cpp
 Support for Goodweather compatible HVAC protocols.
 
file  ir_Goodweather.h [code]
 Support for Goodweather compatible HVAC protocols.
 
file  ir_Gree.cpp
 Support for Gree A/C protocols.
 
file  ir_Gree.h [code]
 Support for Gree A/C protocols.
 
file  ir_Haier.cpp
 Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
 
file  ir_Haier.h [code]
 Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
 
file  ir_Hitachi.cpp
 Support for Hitachi A/C protocols.
 
file  ir_Hitachi.h [code]
 Support for Hitachi A/C protocols.
 
file  ir_Inax.cpp
 Support for the Inax Robot Toilet IR protocols.
 
file  ir_JVC.cpp
 Support for JVC protocols. Originally added by Kristian Lauszus Thanks to zenwheel and other people at the original blog post.
 
file  ir_Kelvinator.cpp
 Support for Kelvinator A/C protocols. Code to emulate IR Kelvinator YALIF remote control unit, which should control at least the following Kelvinator A/C units: KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, KSV70HRC, KSV80HRC.
 
file  ir_Kelvinator.h [code]
 Support for Kelvinator A/C protocols.
 
file  ir_Lasertag.cpp
 Support for Lasertag protocols.
 
file  ir_Lego.cpp
 Support for LEGO protocols.
 
file  ir_LG.cpp
 Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin.
 
file  ir_LG.h [code]
 Support for LG protocols.
 
file  ir_Lutron.cpp
 Support for Lutron protocols.
 
file  ir_Magiquest.cpp
 Support for MagiQuest protocols.
 
file  ir_Magiquest.h [code]
 Support for MagiQuest protocols.
 
file  ir_Midea.cpp
 Support for Midea protocols. Midea added by crankyoldgit & bwze. send: bwze/crankyoldgit, decode: crankyoldgit.
 
file  ir_Midea.h [code]
 Support for Midea protocols. Midea added by crankyoldgit & bwze.
 
file  ir_Mitsubishi.cpp
 Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran.
 
file  ir_Mitsubishi.h [code]
 Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran.
 
file  ir_MitsubishiHeavy.cpp
 Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.
 
file  ir_MitsubishiHeavy.h [code]
 Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.
 
file  ir_Multibrackets.cpp
 Support for Multibrackets protocols.
 
file  ir_MWM.cpp
 Disney Made With Magic (MWM) Support derived from ir_Lasertag.cpp.
 
file  ir_NEC.cpp
 Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.
 
file  ir_NEC.h [code]
 Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.
 
file  ir_Neoclima.cpp
 Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy Code by crankyoldgit.
 
file  ir_Neoclima.h [code]
 Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
 
file  ir_Nikai.cpp
 Nikai.
 
file  ir_Panasonic.cpp
 Support for Panasonic protocols. Panasonic protocol originally added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
 
file  ir_Panasonic.h [code]
 Support for Panasonic protocols.
 
file  ir_Pioneer.cpp
 Pioneer remote emulation.
 
file  ir_Pronto.cpp
 Pronto code message generation.
 
file  ir_RC5_RC6.cpp
 RC-5 & RC-6 support RC-5 & RC-6 support added from https://github.com/z3t0/Arduino-IRremote RC-5X support added by David Conran.
 
file  ir_RCMM.cpp
 Support for the Phillips RC-MM protocol.
 
file  ir_Samsung.cpp
 Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/.
 
file  ir_Samsung.h [code]
 Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/.
 
file  ir_Sanyo.cpp
 Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B originally added from https://github.com/shirriff/Arduino-IRremote/.
 
file  ir_Sharp.cpp
 Support for Sharp protocols.
 
file  ir_Sharp.h [code]
 Support for Sharp protocols.
 
file  ir_Sherwood.cpp
 Support for Sherwood protocols.
 
file  ir_Sony.cpp
 Support for Sony SIRC(Serial Infra-Red Control) protocols. Sony originally added from https://github.com/shirriff/Arduino-IRremote/ Updates from marcosamarinho.
 
file  ir_Symphony.cpp
 Support for Symphony protocols.
 
file  ir_Tcl.cpp
 Support for TCL protocols.
 
file  ir_Tcl.h [code]
 Support for TCL protocols.
 
file  ir_Teco.cpp
 Support for Teco protocols.
 
file  ir_Teco.h [code]
 Support for Teco protocols.
 
file  ir_Toshiba.cpp
 Support for Toshiba protocols.
 
file  ir_Toshiba.h [code]
 Support for Toshiba protocols.
 
file  ir_Trotec.cpp
 Support for Trotec protocols.
 
file  ir_Trotec.h [code]
 Support for Trotec protocols.
 
file  ir_Vestel.cpp
 Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
 
file  ir_Vestel.h [code]
 Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
 
file  ir_Whirlpool.cpp
 Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
 
file  ir_Whirlpool.h [code]
 Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
 
file  ir_Whynter.cpp
 Support for Whynter protocols. Whynter A/C ARC-110WD added by Francesco Meschia Whynter originally added from https://github.com/shirriff/Arduino-IRremote/.
 
file  ir_Zepeal.cpp
 Support for Zepeal protocol. This protocol uses fixed length bit encoding. Most official information about Zepeal seems to be from Denkyosha.
 
file  IRac.cpp
 
file  IRac.h [code]
 
file  IRrecv.cpp
 
file  IRrecv.h [code]
 
file  IRremoteESP8266.h [code]
 
file  IRsend.cpp
 
file  IRsend.h [code]
 
file  IRtext.cpp
 
file  IRtext.h [code]
 
file  IRtimer.cpp
 
file  IRtimer.h [code]
 
file  IRutils.cpp
 
file  IRutils.h [code]
 
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html new file mode 100644 index 000000000..fc5e7c1db --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html @@ -0,0 +1,106 @@ + + + + + + + +IRremoteESP8266: src/locale Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
locale Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  de-CH.h [code]
 
file  de-DE.h [code]
 
file  defaults.h [code]
 
file  en-AU.h [code]
 
file  en-IE.h [code]
 
file  en-UK.h [code]
 
file  en-US.h [code]
 
file  es-ES.h [code]
 
file  fr-FR.h [code]
 
file  it-IT.h [code]
 
file  zh-CN.h [code]
 
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doc.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen.css b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen.css new file mode 100644 index 000000000..73ecbb2cb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen__index_8md.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen__index_8md.html new file mode 100644 index 000000000..ad1a690b3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/doxygen__index_8md.html @@ -0,0 +1,76 @@ + + + + + + + +IRremoteESP8266: docs/doxygen_index.md File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
docs/doxygen_index.md File Reference
+
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dynsections.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dynsections.js new file mode 100644 index 000000000..ea0a7b39a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/dynsections.js @@ -0,0 +1,120 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +IRremoteESP8266: src/locale/en-AU.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-AU.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-AU_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-AU_8h_source.html new file mode 100644 index 000000000..0484fcd20 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-AU_8h_source.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: src/locale/en-AU.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-AU.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - David Conran (@crankyoldgit)
+
2 // Locale/language file for English / Australia.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_EN_AU_H_
+
5 #define LOCALE_EN_AU_H_
+
6 // Nothing should really need to be set here, as en-AU is the default
+
7 // locale/language.
+
8 #endif // LOCALE_EN_AU_H__
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h.html new file mode 100644 index 000000000..fe4574abc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/en-IE.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-IE.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h_source.html new file mode 100644 index 000000000..27678a585 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-IE_8h_source.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: src/locale/en-IE.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-IE.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - David Conran (@crankyoldgit)
+
2 // Locale/language file for English / Ireland.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_EN_IE_H_
+
5 #define LOCALE_EN_IE_H_
+
6 // Nothing should really need to be set here, as en-IE is the same as en-AU,
+
7 // which is the default locale/language.
+
8 #endif // LOCALE_EN_IE_H__
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h.html new file mode 100644 index 000000000..a18db62c2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/en-UK.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-UK.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h_source.html new file mode 100644 index 000000000..e46cdbc56 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-UK_8h_source.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: src/locale/en-UK.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-UK.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - David Conran (@crankyoldgit)
+
2 // Locale/language file for English / United Kingdom.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_EN_UK_H_
+
5 #define LOCALE_EN_UK_H_
+
6 // Nothing should really need to be set here, as en-UK is the same as en-AU,
+
7 // which is the default locale/language.
+
8 #endif // LOCALE_EN_UK_H__
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h.html new file mode 100644 index 000000000..ac8bce965 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/en-US.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-US.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h_source.html new file mode 100644 index 000000000..fd8ed5161 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/en-US_8h_source.html @@ -0,0 +1,93 @@ + + + + + + + +IRremoteESP8266: src/locale/en-US.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
en-US.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - David Conran (@crankyoldgit)
+
2 // Locale/language file for English / United States of America.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_EN_US_H_
+
5 #define LOCALE_EN_US_H_
+
6 // Not much should really need to be set here, as English is the default
+
7 // locale/language.
+
8 
+
9 // Overrides to the default.
+
10 #define D_STR_CENTRE "Center"
+
11 #define D_STR_MOULD "Mold"
+
12 
+
13 #endif // LOCALE_EN_US_H__
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h.html new file mode 100644 index 000000000..4d9de7fab --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/es-ES.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
es-ES.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h_source.html new file mode 100644 index 000000000..fe7a1d618 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/es-ES_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + +IRremoteESP8266: src/locale/es-ES.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
es-ES.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - Carlos (@charlieyv)
+
2 // Locale/language file for Spanish / Spain.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_ES_ES_H_
+
5 #define LOCALE_ES_ES_H_
+
6 
+
7 #define D_STR_UNKNOWN "DESCONOCIDO"
+
8 #define D_STR_PROTOCOL "Protocolo"
+
9 #define D_STR_POWER "Poder"
+
10 #define D_STR_PREVIOUS "Anterior"
+
11 #define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
+
12 #define D_STR_ON "Encendido"
+
13 #define D_STR_OFF "Apagado"
+
14 #define D_STR_MODE "Modo"
+
15 #define D_STR_TOGGLE "Palanca"
+
16 #define D_STR_SLEEP "Dormir"
+
17 #define D_STR_LIGHT "Luz"
+
18 #define D_STR_POWERFUL "Poderoso"
+
19 #define D_STR_QUIET "Silencio"
+
20 #define D_STR_ECONO "Econo"
+
21 #define D_STR_SWING "Oscilar"
+
22 #define D_STR_SWINGH D_STR_SWING"(H)"
+
23 #define D_STR_SWINGV D_STR_SWING"(V)"
+
24 #define D_STR_BEEP "Bip"
+
25 #define D_STR_MOULD "Molde"
+
26 #define D_STR_CLEAN "Limpiar"
+
27 #define D_STR_PURIFY "Purificar"
+
28 #define D_STR_TIMER "Temporizador"
+
29 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
+
30 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
+
31 #define D_STR_CLOCK "Reloj"
+
32 #define D_STR_COMMAND "Comando"
+
33 #define D_STR_HEALTH "Salud"
+
34 #define D_STR_MODEL "Modelo"
+
35 #define D_STR_TEMP "Temperatura"
+
36 #define D_STR_HUMID "Humedo"
+
37 #define D_STR_SAVE "Guardar"
+
38 #define D_STR_EYE "Ojo"
+
39 #define D_STR_FOLLOW "Seguir"
+
40 #define D_STR_FRESH "Fresco"
+
41 #define D_STR_HOLD "Mantener"
+
42 #define D_STR_8C_HEAT "8C " D_STR_HEAT
+
43 #define D_STR_BUTTON "Boton"
+
44 #define D_STR_NIGHT "Noche"
+
45 #define D_STR_SILENT "Silencio"
+
46 #define D_STR_FILTER "Filtro"
+
47 #define D_STR_UP "Arriba"
+
48 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
+
49 #define D_STR_DOWN "Abajo"
+
50 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
+
51 #define D_STR_CHANGE "Cambiar"
+
52 #define D_STR_START "Comenzar"
+
53 #define D_STR_STOP "Parar"
+
54 #define D_STR_MOVE "Mover"
+
55 #define D_STR_SET "Fijar"
+
56 #define D_STR_CANCEL "Cancelar"
+
57 #define D_STR_COMFORT "Comodo"
+
58 #define D_STR_WEEKLY "Semanal"
+
59 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
+
60 #define D_STR_LAST "Ultimo"
+
61 #define D_STR_FAST "Rapido"
+
62 #define D_STR_SLOW "Lento"
+
63 #define D_STR_AIRFLOW "Flujo de Aire"
+
64 #define D_STR_STEP "Paso"
+
65 #define D_STR_OUTSIDE "Afuera"
+
66 #define D_STR_LOUD "Ruidoso"
+
67 #define D_STR_UPPER "Superior"
+
68 #define D_STR_LOWER "Inferior"
+
69 #define D_STR_BREEZE "Brisa"
+
70 #define D_STR_CIRCULATE "Circular"
+
71 #define D_STR_CEILING "Techo"
+
72 #define D_STR_WALL "Pared"
+
73 #define D_STR_ROOM "Cuarto"
+
74 #define D_STR_6THSENSE "6to. Sentido"
+
75 #define D_STR_ZONEFOLLOW "Zona Seguir"
+
76 #define D_STR_FIXED "Fijo"
+
77 #define D_STR_AUTOMATIC "Automatico"
+
78 #define D_STR_COOL "Frio"
+
79 #define D_STR_HEAT "Calor"
+
80 #define D_STR_FAN "Ventilador"
+
81 #define D_STR_FANONLY "ventilador_solamente"
+
82 #define D_STR_DRY "Seco"
+
83 #define D_STR_MAX "Max"
+
84 #define D_STR_MAXIMUM "Maximo"
+
85 #define D_STR_MIN "Min"
+
86 #define D_STR_MINIMUM "Minimo"
+
87 #define D_STR_MED "Med"
+
88 #define D_STR_MEDIUM "Medio"
+
89 #define D_STR_HIGHEST "Mas Alto"
+
90 #define D_STR_HIGH "Alto"
+
91 #define D_STR_HI D_STR_HIGH
+
92 #define D_STR_MIDDLE "Medio"
+
93 #define D_STR_MID D_STR_MIDDLE
+
94 #define D_STR_LOW "Bajo"
+
95 #define D_STR_LO D_STR_LOW
+
96 #define D_STR_LOWEST "Mas Bajo"
+
97 #define D_STR_RIGHT "Derecha"
+
98 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
+
99 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
+
100 #define D_STR_LEFT "Izquierda"
+
101 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
+
102 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
+
103 #define D_STR_WIDE "Ancho"
+
104 #define D_STR_CENTRE "Centro"
+
105 #define D_STR_TOP "Tope"
+
106 #define D_STR_BOTTOM "Fondo"
+
107 #define D_STR_DAY "Dia"
+
108 #define D_STR_DAYS D_STR_DAY "s"
+
109 #define D_STR_HOUR "Hora"
+
110 #define D_STR_HOURS D_STR_HOUR "s"
+
111 #define D_STR_MINUTE "Minuto"
+
112 #define D_STR_MINUTES D_STR_MINUTE "s"
+
113 #define D_STR_SECOND "Segundo"
+
114 #define D_STR_SECONDS D_STR_SECOND "s"
+
115 #define D_STR_NOW "Ahora"
+
116 #define D_STR_THREELETTERDAYS "DomLunMarMieJueVieSab"
+
117 #define D_STR_YES "Si"
+
118 #define D_STR_NO "No"
+
119 #define D_STR_TRUE "Cierto"
+
120 #define D_STR_FALSE "Falso"
+
121 #define D_STR_REPEAT "Repetir"
+
122 #define D_STR_CODE "Codigo"
+
123 
+
124 // IRrecvDumpV2+
+
125 #define D_STR_TIMESTAMP "marca de tiempo"
+
126 #define D_STR_LIBRARY "Libreria"
+
127 #define D_STR_IRRECVDUMP_STARTUP \
+
128  "IRrecvDump esta ahora corriendo y esperando por comando IR en Pin %d"
+
129 #ifndef D_WARN_BUFFERFULL
+
130 #define D_WARN_BUFFERFULL \
+
131  "WARNING: Codigo IR es muy grande para el buffer (>= %d). "\
+
132  "Este resultando no debe ser reconocido hasta que esto sea resuelto." \
+
133  "Edite & incremente `kCaptureBufferSize`."
+
134 #endif // D_WARN_BUFFERFULL
+
135 
+
136 #endif // LOCALE_ES_ES_H_
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/files.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/files.html new file mode 100644 index 000000000..b77a4f9f9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/files.html @@ -0,0 +1,194 @@ + + + + + + + +IRremoteESP8266: File List + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 docs
  src
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/folderclosed.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h.html new file mode 100644 index 000000000..14793daa2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/fr-FR.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fr-FR.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h_source.html new file mode 100644 index 000000000..5913604c0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/fr-FR_8h_source.html @@ -0,0 +1,197 @@ + + + + + + + +IRremoteESP8266: src/locale/fr-FR.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fr-FR.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - Mathieu D(@Knackie)
+
2 // Locale/language file for French / Quebec.
+
3 // This file will override the default values located in `defaults.h`.
+
4 #ifndef LOCALE_FR_FR_H_
+
5 #define LOCALE_FR_FR_H_
+
6 
+
7 #define D_STR_UNKNOWN "INCONNU"
+
8 #define D_STR_PROTOCOL "Protocole"
+
9 #define D_STR_TOGGLE "Bascule"
+
10 #define D_STR_SLEEP "Pause"
+
11 #define D_STR_LIGHT "Lumière"
+
12 #define D_STR_POWERFUL "Puissance"
+
13 #define D_STR_PREVIOUS "Precedente"
+
14 #define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
+
15 #define D_STR_QUIET "Silence"
+
16 #define D_STR_ECONO "Economie"
+
17 #define D_STR_BEEP "Bip"
+
18 #define D_STR_MOULD "Moule"
+
19 #define D_STR_CLEAN "Nettoyer"
+
20 #define D_STR_PURIFY "Purifier"
+
21 #define D_STR_ON "On"
+
22 #define D_STR_OFF "Off"
+
23 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
+
24 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
+
25 #define D_STR_CLOCK "Heure"
+
26 #define D_STR_COMMAND "Commandement"
+
27 #define D_STR_HEALTH "Santé"
+
28 #define D_STR_TEMP "Temporaire"
+
29 #define D_STR_HUMID "Humidité"
+
30 #define D_STR_SAVE "Sauvegarder"
+
31 #define D_STR_EYE "Oeil"
+
32 #define D_STR_FOLLOW "Suivre"
+
33 #define D_STR_FRESH "Frais"
+
34 #define D_STR_HOLD "Maintenir"
+
35 #define D_STR_BUTTON "Bouton"
+
36 #define D_STR_NIGHT "Nuit"
+
37 #define D_STR_SILENT "Silence"
+
38 #define D_STR_UP "En haut"
+
39 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
+
40 #define D_STR_DOWN "En bas"
+
41 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
+
42 #define D_STR_CHANGE "Changement"
+
43 #define D_STR_SET "Mettre"
+
44 #define D_STR_CANCEL "Annuler"
+
45 #define D_STR_COMFORT "Confort"
+
46 #define D_STR_WEEKLY "Chaque semaine"
+
47 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
+
48 #define D_STR_FAST "Rapide"
+
49 #define D_STR_SLOW "Lent"
+
50 #define D_STR_AIRFLOW "Ebauche"
+
51 #define D_STR_STEP "Etape"
+
52 #define D_STR_OUTSIDE "Plein air"
+
53 #define D_STR_LOUD "Fort"
+
54 #define D_STR_UPPER "Au dessus"
+
55 #define D_STR_LOWER "En dessous"
+
56 #define D_STR_BREEZE "Brise"
+
57 #define D_STR_CIRCULATE "Faire circuler"
+
58 #define D_STR_CEILING "Plafond"
+
59 #define D_STR_WALL "Mur"
+
60 #define D_STR_ROOM "Pièce"
+
61 #define D_STR_6THSENSE "6ter Sens"
+
62 #define D_STR_FIXED "Fixer"
+
63 
+
64 #define D_STR_AUTOMATIC "Automatique"
+
65 #define D_STR_MANUAL "Manuel"
+
66 #define D_STR_COOL "Frais"
+
67 #define D_STR_HEAT "Chaleur"
+
68 #define D_STR_FAN "Ventillateur"
+
69 #define D_STR_FANONLY "Seul_fan"
+
70 #define D_STR_DRY "Sec"
+
71 
+
72 #define D_STR_MEDIUM "Moyen"
+
73 
+
74 #define D_STR_HIGHEST "Le plus haut"
+
75 #define D_STR_HIGH "Haut"
+
76 #define D_STR_HI "H"
+
77 #define D_STR_MID "M"
+
78 #define D_STR_MIDDLE "Moitié"
+
79 #define D_STR_LOW "Bas"
+
80 #define D_STR_LO "B"
+
81 #define D_STR_LOWEST "Le plus bas"
+
82 #define D_STR_RIGHT "Droite"
+
83 #define D_STR_MAX "Max"
+
84 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
+
85 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
+
86 #define D_STR_LEFT "Gauche"
+
87 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
+
88 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
+
89 #define D_STR_WIDE "Large"
+
90 #define D_STR_TOP "Au-dessus"
+
91 #define D_STR_BOTTOM "En-dessous"
+
92 
+
93 #define D_STR_DAY "Jour"
+
94 #define D_STR_HOUR "Heure"
+
95 #define D_STR_SECOND "Seconde"
+
96 #define D_STR_NOW "Maintenant"
+
97 #define D_STR_THREELETTERDAYS "LunMarMerJeuVenSamDim"
+
98 
+
99 #define D_STR_YES "Oui"
+
100 #define D_STR_NO "Non"
+
101 #define D_STR_TRUE "Vrai"
+
102 #define D_STR_FALSE "Faux"
+
103 
+
104 #define D_STR_REPEAT "Répetition"
+
105 
+
106 // IRrecvDumpV2+
+
107 #define D_STR_TIMESTAMP "Horodatage"
+
108 #define D_STR_LIBRARY "Bibliothèque"
+
109 #define D_STR_MESGDESC "Rèférence"
+
110 #define D_STR_IRRECVDUMP_STARTUP \
+
111  "IRrecvDump fonctionne et attend l’entrée IR sur la broche %d"
+
112 #define D_WARN_BUFFERFULL \
+
113  "ATTENTION: IR Code est trop gros pour le buffer (>= %d). " \
+
114  "Le résultat ne doit pas être approuvé avant que cela soit résolu. " \
+
115  "Modifier et agrandir `kCaptureBufferSize`."
+
116 
+
117 #endif // LOCALE_FR_FR_H_
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions.html new file mode 100644 index 000000000..8c1ce9777 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions.html @@ -0,0 +1,262 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- _ -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_a.html new file mode 100644 index 000000000..6b205ec13 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_a.html @@ -0,0 +1,90 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_b.html new file mode 100644 index 000000000..f6295fb16 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_b.html @@ -0,0 +1,142 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- b -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_c.html new file mode 100644 index 000000000..399846159 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_c.html @@ -0,0 +1,377 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_d.html new file mode 100644 index 000000000..d430dbd7d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_d.html @@ -0,0 +1,360 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_e.html new file mode 100644 index 000000000..111809dc6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_e.html @@ -0,0 +1,153 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- e -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_f.html new file mode 100644 index 000000000..2987a747c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_f.html @@ -0,0 +1,98 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func.html new file mode 100644 index 000000000..03a682390 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func.html @@ -0,0 +1,121 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_a.html new file mode 100644 index 000000000..f9827ebb4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_a.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_b.html new file mode 100644 index 000000000..7d6b5234b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_b.html @@ -0,0 +1,130 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_c.html new file mode 100644 index 000000000..7f83216f8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_c.html @@ -0,0 +1,356 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_d.html new file mode 100644 index 000000000..9795c7095 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_d.html @@ -0,0 +1,351 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_e.html new file mode 100644 index 000000000..bd4c8e138 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_e.html @@ -0,0 +1,150 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_f.html new file mode 100644 index 000000000..5a3c52eb6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_f.html @@ -0,0 +1,89 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_g.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_g.html new file mode 100644 index 000000000..96cde27c8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_g.html @@ -0,0 +1,777 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_h.html new file mode 100644 index 000000000..eac317665 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_h.html @@ -0,0 +1,106 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_i.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_i.html new file mode 100644 index 000000000..67add7234 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_i.html @@ -0,0 +1,258 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_k.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_k.html new file mode 100644 index 000000000..4d4c3a736 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_k.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

    +
  • kelvinator() +: IRac +
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_l.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_l.html new file mode 100644 index 000000000..c29455324 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_l.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_m.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_m.html new file mode 100644 index 000000000..fb1e3e368 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_m.html @@ -0,0 +1,133 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

    +
  • mark() +: IRsend +
  • +
  • markAsSent() +: IRac +
  • +
  • match() +: IRrecv +
  • +
  • matchAtLeast() +: IRrecv +
  • +
  • matchBytes() +: IRrecv +
  • +
  • matchData() +: IRrecv +
  • +
  • matchGeneric() +: IRrecv +
  • +
  • matchGenericConstBitTime() +: IRrecv +
  • +
  • matchManchester() +: IRrecv +
  • +
  • matchManchesterData() +: IRrecv +
  • +
  • matchMark() +: IRrecv +
  • +
  • matchSpace() +: IRrecv +
  • +
  • midea() +: IRac +
  • +
  • minRepeats() +: IRsend +
  • +
  • mitsubishi() +: IRac +
  • +
  • mitsubishi112() +: IRac +
  • +
  • mitsubishi136() +: IRac +
  • +
  • mitsubishiHeavy152() +: IRac +
  • +
  • mitsubishiHeavy88() +: IRac +
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_n.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_n.html new file mode 100644 index 000000000..1ed8fdb21 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_n.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

    +
  • neoclima() +: IRac +
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_o.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_o.html new file mode 100644 index 000000000..98b0c7c35 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_o.html @@ -0,0 +1,157 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_p.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_p.html new file mode 100644 index 000000000..fb659551b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_p.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

    +
  • panasonic() +: IRac +
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_r.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_r.html new file mode 100644 index 000000000..ba2940aba --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_r.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_s.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_s.html new file mode 100644 index 000000000..b94617c0c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_s.html @@ -0,0 +1,1156 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_t.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_t.html new file mode 100644 index 000000000..19764a1f2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_t.html @@ -0,0 +1,297 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_u.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_u.html new file mode 100644 index 000000000..eb9d2cbfa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_u.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_v.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_v.html new file mode 100644 index 000000000..5c3693e4f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_v.html @@ -0,0 +1,119 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_w.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_w.html new file mode 100644 index 000000000..863296b9e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_w.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

    +
  • whirlpool() +: IRac +
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_~.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_~.html new file mode 100644 index 000000000..be24e6f9f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_func_~.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- ~ -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_g.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_g.html new file mode 100644 index 000000000..d62a98dee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_g.html @@ -0,0 +1,777 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- g -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_h.html new file mode 100644 index 000000000..327b474a4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_h.html @@ -0,0 +1,109 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_i.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_i.html new file mode 100644 index 000000000..fa40ebe60 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_i.html @@ -0,0 +1,265 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_k.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_k.html new file mode 100644 index 000000000..d234e9b83 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_k.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- k -

    +
  • kelvinator() +: IRac +
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_l.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_l.html new file mode 100644 index 000000000..e97cda96f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_l.html @@ -0,0 +1,97 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_m.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_m.html new file mode 100644 index 000000000..7a5beaee5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_m.html @@ -0,0 +1,148 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- m -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_n.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_n.html new file mode 100644 index 000000000..76f6bd78a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_n.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- n -

    +
  • neoclima() +: IRac +
  • +
  • next +: IRac +
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_o.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_o.html new file mode 100644 index 000000000..59c01849d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_o.html @@ -0,0 +1,173 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_p.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_p.html new file mode 100644 index 000000000..d52453d58 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_p.html @@ -0,0 +1,94 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_q.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_q.html new file mode 100644 index 000000000..82dc51deb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_q.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- q -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_r.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_r.html new file mode 100644 index 000000000..ede8716ba --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_r.html @@ -0,0 +1,151 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- r -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_rela.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_rela.html new file mode 100644 index 000000000..568f1564c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_rela.html @@ -0,0 +1,77 @@ + + + + + + + +IRremoteESP8266: Class Members - Related Functions + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_s.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_s.html new file mode 100644 index 000000000..91e9f3159 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_s.html @@ -0,0 +1,1193 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_t.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_t.html new file mode 100644 index 000000000..64393dccc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_t.html @@ -0,0 +1,309 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_u.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_u.html new file mode 100644 index 000000000..aeda54c2d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_u.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_v.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_v.html new file mode 100644 index 000000000..3ef7c39c6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_v.html @@ -0,0 +1,122 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- v -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars.html new file mode 100644 index 000000000..1eb24f7c7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars.html @@ -0,0 +1,563 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+ + +

- z -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_a.html new file mode 100644 index 000000000..420e56269 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_a.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_b.html new file mode 100644 index 000000000..0a3196ab1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_b.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_c.html new file mode 100644 index 000000000..2def7a087 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_c.html @@ -0,0 +1,97 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_d.html new file mode 100644 index 000000000..9a9ddc836 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_d.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_e.html new file mode 100644 index 000000000..0cab373d2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_e.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_f.html new file mode 100644 index 000000000..a53f124b0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_f.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_h.html new file mode 100644 index 000000000..d365bf7e4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_h.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_i.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_i.html new file mode 100644 index 000000000..000576cfe --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_i.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_l.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_l.html new file mode 100644 index 000000000..a8027a466 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_l.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_m.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_m.html new file mode 100644 index 000000000..2959960d3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_m.html @@ -0,0 +1,91 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_n.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_n.html new file mode 100644 index 000000000..598b08dd6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_n.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_o.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_o.html new file mode 100644 index 000000000..82097786b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_o.html @@ -0,0 +1,92 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_p.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_p.html new file mode 100644 index 000000000..997a6d00c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_p.html @@ -0,0 +1,91 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_q.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_q.html new file mode 100644 index 000000000..21d49182e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_q.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_r.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_r.html new file mode 100644 index 000000000..8a7baf613 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_r.html @@ -0,0 +1,140 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_s.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_s.html new file mode 100644 index 000000000..0518f87fc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_s.html @@ -0,0 +1,113 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_t.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_t.html new file mode 100644 index 000000000..2ed112f2c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_t.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_u.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_u.html new file mode 100644 index 000000000..a52e0c8a4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_u.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_v.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_v.html new file mode 100644 index 000000000..094dd4c27 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_v.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_w.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_w.html new file mode 100644 index 000000000..9da5476dd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_w.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_z.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_z.html new file mode 100644 index 000000000..a3501487e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_vars_z.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- z -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_w.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_w.html new file mode 100644 index 000000000..efd7bd622 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_w.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- w -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_z.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_z.html new file mode 100644 index 000000000..2b16d459f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_z.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- z -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_~.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_~.html new file mode 100644 index 000000000..dc46b16b7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/functions_~.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: Class Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- ~ -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals.html new file mode 100644 index 000000000..7ea1c71d3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- _ -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_a.html new file mode 100644 index 000000000..ae8115d60 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_a.html @@ -0,0 +1,106 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- a -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_c.html new file mode 100644 index 000000000..121baa0db --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_c.html @@ -0,0 +1,100 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- c -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_d.html new file mode 100644 index 000000000..34d34bc20 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_d.html @@ -0,0 +1,121 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- d -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_e.html new file mode 100644 index 000000000..d7bb8acf2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_e.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- e -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_enum.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_enum.html new file mode 100644 index 000000000..2b3c7b53b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_enum.html @@ -0,0 +1,95 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_eval.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_eval.html new file mode 100644 index 000000000..41fffa21e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_eval.html @@ -0,0 +1,493 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+ + +

- y -

+ + +

- z -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_f.html new file mode 100644 index 000000000..d57b47a26 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_f.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- f -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_func.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_func.html new file mode 100644 index 000000000..1d31640cb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_func.html @@ -0,0 +1,184 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- x -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_g.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_g.html new file mode 100644 index 000000000..27ae53537 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_g.html @@ -0,0 +1,98 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- g -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_h.html new file mode 100644 index 000000000..fb077717b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_h.html @@ -0,0 +1,107 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- h -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_i.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_i.html new file mode 100644 index 000000000..4a0b8d8b6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_i.html @@ -0,0 +1,92 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- i -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_j.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_j.html new file mode 100644 index 000000000..7c90ed62d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_j.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- j -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_k.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_k.html new file mode 100644 index 000000000..a84fe0e7f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_k.html @@ -0,0 +1,7825 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- k -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_l.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_l.html new file mode 100644 index 000000000..7e56f59c1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_l.html @@ -0,0 +1,94 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- l -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_m.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_m.html new file mode 100644 index 000000000..57d34e5a0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_m.html @@ -0,0 +1,112 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- m -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_n.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_n.html new file mode 100644 index 000000000..715ffa0f0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_n.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- n -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_p.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_p.html new file mode 100644 index 000000000..e3df36e7f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_p.html @@ -0,0 +1,91 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- p -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_r.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_r.html new file mode 100644 index 000000000..7d4e405db --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_r.html @@ -0,0 +1,121 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- r -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_s.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_s.html new file mode 100644 index 000000000..78989d651 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_s.html @@ -0,0 +1,124 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- s -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_t.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_t.html new file mode 100644 index 000000000..8c16fa974 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_t.html @@ -0,0 +1,92 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- t -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_type.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_type.html new file mode 100644 index 000000000..5f3e05a75 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_type.html @@ -0,0 +1,77 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_u.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_u.html new file mode 100644 index 000000000..860d132a7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_u.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- u -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_v.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_v.html new file mode 100644 index 000000000..5adfbfdf9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_v.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- v -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars.html new file mode 100644 index 000000000..4db0b55aa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_i.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_i.html new file mode 100644 index 000000000..47c235016 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_i.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_k.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_k.html new file mode 100644 index 000000000..48f17baeb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_vars_k.html @@ -0,0 +1,7798 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_w.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_w.html new file mode 100644 index 000000000..5a333bf99 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_w.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- w -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_x.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_x.html new file mode 100644 index 000000000..714a73193 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_x.html @@ -0,0 +1,80 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- x -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_y.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_y.html new file mode 100644 index 000000000..f28dd18c0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_y.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- y -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_z.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_z.html new file mode 100644 index 000000000..3a092ec10 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/globals_z.html @@ -0,0 +1,79 @@ + + + + + + + +IRremoteESP8266: File Members + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- z -

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.html new file mode 100644 index 000000000..8a04ec5bb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.html @@ -0,0 +1,136 @@ + + + + + + + +IRremoteESP8266: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.md5 new file mode 100644 index 000000000..8fcdccd1b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2cbcfb2d143e382be6ed65635a3d859e53bc36 GIT binary patch literal 20615 zcmbTe1z449w>CPFmQHCTM5Vh!Bt=3}q&ua%LApUYq`SKtX(>tR?v(EH%=LYH@Bf^= z|NlDYtmP#WSo59F`#$3tN2?gyjQ>Y9e?; z)aq4~lqPv;#Vl&?N;Q8M71U0D!L@m*tiFHSh)64fTWN;Uk2;9`2UGHIi`S>DezH|+ zYp=4QA#0VRRF~}ym!od|Fc!@BNECjU@Av4UMjhb53-Db5pHvYt^oK~MFaPURI8i=k zsE>Mm^2=C!la+TJ3#t2Wz<(Si{u)2jCiE|2+<2wF1UDa_9jSP=ik*VTK0dRDD~{jq zXYg>4i98!pcyPtvJC=)0{=2b41z~R$^IkGDN9{8w*Cxm8u_{sL*ql0RNW24=d_#&y zxV|)5sMv^}DVD)G^{-X2W4`(yU!lc*|Ne|DGB7L*wM+!MYDp>^TidQQ0k;Np-vX@v zynzgHnWE5;kdF1!qWkn4xqE)Tx$FAYvrM^IMR)gi zZiB~NU6s%?Q&E|@`|gnu^mLC)!T@yA=OQ8^Bs{ioTU%QV&Zk*=M3t(jVA&-l^gaCA z?x*kpXv7GapMtoS-Ep=@(?3h6$Hc(O$;qjH`I70dKdsv0%<}i_3FMOt<=T<4vADmI*bu9YM^&i%z~8-#%}zGA=cYe1iBR;q^WPUPz!%vMUu$(6GQOin6&U1}kGxV`WV4MnM{ zsXl{-`-|PM3O=G z7@t86?(^pv+cOlnXXl6WFUZ|bU}V$yzii$G_2{K?+dOl-Jn)H&!}EJj;dy^5!SC`H z4uf3qXUuCk>-Ao=ugh(uy}i8^m6e^h7yJ9IjLiFpBOoBq8A;{o z9~$zFjKr9$G4*BCY|^gwvsPMnlozSY-raazpz1qC6gs;cS?e1C=X{JFxO{;VM@;YhkrWTV}7*W4UYQc}`v zr9PrcxmIb-74^l;#)pgjQt1J&xD1Ap_xRj)@;h;Sd0i`+o9<2;9zBcKNRF4YHDho;be~5 zw0gySS!)M}p8K1#)9X`x17ldv1 zg(*?b{or-z0_Sn{=qRF~;0-P=?n`=lRB+(@L@9m3!_g4Xi2OE(5~u_ONGmHVuQy`k zh#Wkisdpn6L>d~%N9Y>Oj%baIjk6WHus`)!Xk=4W*WFuPFQ9t@V!jf@8uhDJ6fa+9 z2v@e49WS-Mp{M@|-iJv_8eZOZThyiLkmbrPSJc|t8XX-C1H!POsY&m5&IgC&<>h7a zR=2C(0{Ltm3ybiR6YG|XY4wVlnxBzEk3mUn#_!+Y>TM3j;l)3k_K~k2{HY$Bno?GJ zIypNNskdBYHu^;XB68gqL(sdqnXjg{76t+X0|Pw|;LbpXWicK}?frrUEmnm}V7qSB zYD};M?+)1PcgA24G01*`L@~rcRfwEE+82aHRRL-b?;>u=KyNtl>3(^;-b#m0c%5{X zJHLveenz&0&+Y`wt2#onXlMSHFCivBvH8K3gNnFa&)?+9rI$@|_Mzz-8wXAmf9@V0 z4&VP2YY7ewMCvXXD;Ig=UX}w|36UuFBEFk}FW@y%5E-u=G}q(5rlkC~k15F};`BdM z`Tr`HMsZ3B0=mJ_tK`Tt6V6~^a*UUJ-y0j__Ve$V;-`RKRMLX~HX7Spfv&dvv2*<` zOIYt|{5_mvIBJt1XLRJceA3x#2kYhffws0LPYPkG#U`Jy!9K1*_CC#gs%RFDt#{lM?ZOyeitQ+=q0J% zO}BMmd*Z$|QI39JgtepN7H`-VeZ^Lenv6!b^DfVP%aNh`oEi;#F?vWBjzv zNtX3DSxkW;TGHn709G=W75qu%!3pl_(ktu!=h98Ct_V?^32j@*-VMGBy&_6l)sjU| zSM7*Vl2W){AE^~I8Zx#7o{d}5H4IsS)>O8wQ9Gi^ud zjZc z5#l`~b;e3~a`5b>%LqWG7lj@Q9tX2OXwyI95J)ORu^6TT;&=O(n`TpT^3uH1Ijfi# znbRK}%*@c=zt^LPQKqkDNEpJx{tNf^?H>|Rap)UrV=+Ii(p-E*4LUO)GzlV--_N<- z7;xLz|dXm1vt1{~l!KiLya?gUMwfEy_^fpg>AMfRI$8=eEbn zN+_bEqlzOA&48G-ap_0~OE8}tEMZJymxgIJILuO%`udDlR=e|+J(J)dy#$Yse1xZ` zgfcG({<*wjmo8+A8XwXjRe+3C7>h6iGx_<`Cw5+Y=5HF0w%bg!v>uSKh=@Erg7i@l z@C$l|c@CE_@CcFQsR%p0)4ts3zH;$?hq%)Ioi%PFmJ?>2&1&vCNNSx$WwBN3qRRQy z6VfsA!;U8c`W}kmE($VcZpaRM_`YP28H&>U7WqFv_bYh*pNHyyfz$u5epd8bAMNEq zuLG_qTEStrHuO2Xj~%fTfF4HS|8{(1`vG17Wqy?xHOnAY2?u%r-^g2AGxPKFn+bS4 zJw8-gEemeKi^hKYS5}B}jT+i)u;0aASX^8^JY38yaO# z(;G&Jgn`l5;&KKs_sYhG(k?3iw*LblY#@)FME*Cp=a7_<>Dd}i886osYG`P9Nk@kg zh)(+c>sR`=yCXgThNnzjJUu;C+dTyo6cm_^M@W992@r>|K#}$3<>kr61-w3LXJ=>J z$a1x@-1YVKJ9>P50JMUFgM9$N6{W;-Je>0{DJki_p3OmjQwT)`NQHw`Rxh{7OTJVi zXlZFx)Ygic?@sVCNxa0=nJkcp zRtT^_wR+3&p3oQi0LWZ~giezG`;L@@RZ$GYy5{GJQ#dW&i;BY0)6-WN3}C~-!~3wP zl=l$*uP|r7g(OKj;B0$T|7fAHqOMNd$cP3k#0RAL89GJW0*CWr``a1Dp>-Bx|L^S}1x}c^pb8+=m84f|~9zZqVlXXwmdH`xv z&h8O03;cI5@a{|%zi0u4Gchp;Aa1I+Z;?TP3$JrmR8$ld7k^J1r@}M5)aoX$su~1x zE(I?yk+#PL9>5&L3JTtcwurPn@I5 zLW7NdcH3)H?thK^mAIP8bZY2Vy z<2vv2EQA7?f6ASt^1-wnDU3Xhef~dD>lcNP^{@E-|Nbh6HnPPh)vF=mTLH|!7g~f} ziQgZx0sX*##|=e}&;RdNg;J3m-W9|%@|YYMoeq$HQU&eM|L$o2-eB_~!O_HQ}7#|mpe&mDiuc5G61Cz3Qc(#PLR;O5W)FeZz~ z?KurfNDD3|W=2gYjm6B?Zf$q{_}F7sa%^qu1UM=?<5aoyDFyLl0jBf4**_3QYmBx>q%U;X8k?2(+SUtNl zKN&TbAyn+Hrn_tS8 zaw6G-T?S^EW!oHcucbHw?WD373op;l;q*}l1_mnX>-zxKj*gF?Rt>d^s+tW634yZB zuZvB1fE8@=(${7T&MPN@4<&b4)HZR$`E3vW=^#+NPvLiA#iv)zxK^i)vnAEb-LT~W zWDd^B$;sKxjceDfT&?!`#{|Zn!}fKb2;76m+HXQrIoa;fFZrd!M7gp{l-Iv}vRhKByrrRw@1>-3L~ zmNTaZ1Rwx100;!){lnFA$m;)7)le@JJO*z7?}PX7@CXv6TxfOs%)-dTgprn(R#8#$ zu2`jXWp6LU&(DvyjAQEaAIIA2>Tct7kAO^(z^<_|Oo<2*VKp_PCAVV%fZDr3y0qIK z5d+!uzt<(Wj4cP%sms#izkr$}eE$3yR57Uh(HB8l{MT+mP*JFMQCmwOzTRR!pv~hh zUR_p0g9Ppw3`nyuO6^Pg%|b09bx!NmU;!_*-FZ;t0>HxYGKS{3;!&Q!4#kSzDJVJ^(jo00Tyu7^ly&g$~9?oO*NFY!RXMB9T!S#X`P`B|?buQ^t?#iBf`}=vT_SL)N zb_o>~e4}59KBg0S6nuQdSXfvMcH8LRzkg>2Yk_n`Q%UGpSz%~vYcuy^l8~VO=QaWU zgAUmH&!0b6%G)1{E{(b7jEQFU?}mzvhLiol!T{5K&jKV352zwR&%p3s+f;9ReRHD= zDBz7YRhC;N-+# z_P8PifMf4GX|GAHr3`3rC#R=AfX{$~kBNf=%g4tD0{mdEws=8iaH}M9TRoTj;{gY# zy(Ql}r-*<^a&~@h5XKV!&_p`64Ct9B8+I-a4*!!S|eh`0xQ0;&!?Q4}Pew zu6{Z2Iz3k12ypg4BR}{E^}~30d8m>*c4>!EMy`^Vmt?IHjOsC@E`NASi6T_1ENp<&p3Z~=PvuAtka++`S zo9E`{s;t@{R9GH>jzj>#fAJ!p;BuuC7QtJ<<2IJ1H?g%<;Oyc;Ijr22bh^f4zo{iL zkpRIvH!qL2SG&bI8b)V#cQ<6Tbni~uqs~~9z2~t@wMX9#s7qgaLh!;^dO>EYuBgy? ze0)@H+b-V!QQ35iVQ5o-e)uCfd9X~QQ6b+29E90Xp(hR9hTz~2jTUC+=0lv83kBDF zY-}+wI(n52z3Y{Ec2Y9ifpZ#eK-bA3@Y)>2>s>!p)zV7Sn+2e676>Rq!`h3NB}Zqh zd8u|P7MhK=xeK;L>K^6#;Kq!A{;Lx<;kn7|JOXQ&W6CnsYdRXE)8mopWY z-HBS{=I2-2toO1&4ys25i_h){NBH)d?&ne!iEP^}O7shp&rZk1n-yCPhwx9F`Ju7^ zP*?#z64KGrQ`o;LEiI+HXTT3NPh}DmBzxuq;pF60mQ|eAQlN=h9f)}?DJ9hf4mjRA zkY}Or7$|byed|ExRXkl%QBmP`zh)M^-Jv=^UM2?svhU&U3MTfE9Sve+WE6sq53a|< z!xNHTJf$f!Uke1DkQop)V`F2V7L?(D(B@nsHPmMCu|1)Bb#-DYRw{NIF#p+ z=ebwau4DuRW^U(`mm#5{fO8re7#ivVWhLZvs`P4b($Qn$vW!ngMh0lIN(5RO8mJ5m zrMBH#0!u&=gMs+_`*V;*a{N%-bM-8czPmicD|fKB&&bb5^zeAF?FPCM%%rEA%7qKv zgz9$5R#x491LJ(DwB}z_P<6h})gXiH0P=pv_g5b=adDN({(RP)G)ymukf!MdS(e4= zNCT>Hv9aMmmD#y^gXv-&ONSZLH zBAx{9GBG7(=DICDK0X9RSLWJX5MWvsyDgBeY@WT_mE&hK9{HJ|?HLS?E|9>XnwN$| zFxcr;pa>(Oq4iYgcCW0hef#$982|v@quW$eRM{H&K!OI^&S!o8y^N;A=Ma7}xzi?q zo1>(1C8ed6P(y=*<-=g5>N|_g)B-symYWzyK@qsQx!Jtz+?&fC7gXeO_@hmGb~$e) zA|Zj8FZ-hlR3B!b_4mLRaPGI3-F5GqxXq;1)^dQ;JcKsX-`^4Xf{B)zNx5*>xnwt0 zVd5r}b0)3HBT>@0f#2w&z<_K5s0|E^GA^IJOfD#lDmw%Y0Cpt(Tv<& ze}J+8nR~OxOhg;(W@VfMUt2CWz>TH5FE@bE||DBVAUaVVlC zi7I+0W55#v8My+ep!{x^s37W9EA`+3JB0{%%zj1Qq590`pV?WR zu?%5VAj1Ein7|??4wVzU$r&6Ky_23;JG)6_Ge)noTnt(7i%e)%*O+ic+-nnRiKufr zWKgYuAfl6WfU^q3+sK?8YWgo#Z~|_Ze%aajrSb9;r>YY?xp`+I7G(ks;{@}Hf41oz z@_*^)wYi9wYqhQ%9)^P+#lcc5F<2uK5|YU$`f^w3cKkQerCi$HQWW~{%o3ts_~E-5 zI3@-L1|7eCp#m(m={dqsZ8A>je)-3EXDkyIos1va@kqFH$>#;RbZ4=dOFWzi-rU?A z^o`a_>z5S5nC?EPy~OMoAIAcH0B-voOz+=(i$agrR6w>y2K+LP?sI&oReux(wAlb2 zo-crB;3OadhUxF)1LOUB1aYy+p&O{sI$ytrVF+GBj*gDTrl&3YX%*E$Era5nbU_bj zMF(XIRN=S1UiYVc+-{fjAVJ`@rkbk-PFXD9(lY_M)5XOFv?6?={yXF=mFg2*~6~B++|JccZYh~mztz5^jqy3vNO2X54pk`za2P#npmiP(BGlmZMFgTQyl)lx}EF{1F=Vl6D zx6xo2MFgxUJ7g!p*uM2G5k+?iCb1=ijU4rj&xFjUmwY=)WH;HXO;w6HQY!ZT_Dv57 z?mad2#_C#+g!3amMpDvEe}8|^*|rP#BBG{-{(HhMI!+l9EE>Y1@2Y>ibi=`vim6aq zFp)p*GWq6&W5<40gSppwOPabjY!_CreRJUzl_()EI_vwj;R7|cvJC>Z_jrD#&#{u+dO6OSU2?@ zoq>zYhZodFb>>}lay&YZ&5lsge!@~YKuF&Set+bm$Z6JpB%E{{M{vkRq ziiClUsDTaTkv;-ulTVA^&F0F&nP^@kEc<%}J~M^sfQ7^K9$okK5gyryst%d|V- z2OnECMmh*!@2nI=L}chS=V0^laEM+V#g|m|rL{XNAe|m+1X*pb{8{Ah57`{EDD~-j z5x0!DhU`5(%}da>^jsXDH)NGzljtuknSR(_j`f?@`AGZI55XdV-#WL?q=>I)GGvH7 z_?=H=LK{L0_Q-_X!gPrPS6!CuV*AaU5@JTz_066NxvO@9zGqX_Zt@u*rS<*vX2N{8 zJWG(xW%12F6lF#?TJ1SXX!l@TAQt%(32PF`?JckK`Hs4YSzTBN?4H?pmIp{+!nIt{ zTDh5>fw_i!aB%cKg{E|`Bxb4%_!&F0JM4pe?V{4vo{>_aCGrq4iAWX1WiTs-9Kazr$(cnuJuLan_XrYPw&FEKSfR9DCNn$X$A2uiA>!Yuo$%f- zW3;~R2*cic8v9{}_dP~2$YEbr#cd{ebX!C*1_K=K2-0~_Ss4lV8&JS;d#A*RF+?!e{H_)}XRP0jhm>GX_t_IB)B z5;5^2+tn_S5;Z*UgM()Pa$23-+#L@wTk9A{P*OQiU_W@z&e|&_gq+;)w>&s9-QVt$ zn3yXDuH8m$^k*=XJiU-96h&{RxRQ5u(cj@MV?glyiY_B?`}a2Fom7$XSWjr=%BBMW z505_{BR&L}9E|&i8GeQn%QtumJg18*;JCO@6!FJ%96uu?5;2Lv zoE!uF!?|}F4JSzaWV8$JCKJ7ot7EUyodX%A&%(k$CPoLS0xN2Wu3dk49p-GSQD?Eq zsqp(pQps1gIpP~sJnV=A6pj5d@g0YH>J~DAVKXW=q zk7**v&_r}~ks&Ip2nxHV(SdPv%e_FQZbVW%YzboccC8}Yh#p|kv_m^5=0uFmY<%d%qORn26uJzYUTFg z%|Zi~KO)9YOeE)>@orQ~`Oggv_Ws$~95ppN#_WbVVV!gxDC$gB3|C;0?{Lz?Zs4-Y zD8Du~z~_^v2FSP(I|uPs%o?(&?T&MKF&e(6(YxyK**sQi59r%oN8{rQJ3SRn8JTR! zC=?Z?20i8Opb)9jO17&cHm!>4{Yla2=(+C$8x8I^ESCq35g8dKiHS%o=J7ZSi-`IU zw`|<5>`Kw92`W!3y8F{#61gkM`=W~@aV(!+9-Ff8qB8p>WmE8?W4~X{F;r$Ev2wS)#}U&jr5Jnn-3fb%*%cOo8As%=U3UMiRoD%LG0TK5jUdS>MN^97 zHtPZYVaL1`)!}%y*}T&;Z>{+{>vnr&*TZ=(c>{*emX=r=np{-8ytTci!@tz1=nsa7 z@~LEAGcdgH@yVR6Kc-0&80yLp)?C@z3aiw=dy~Aw?|P0)C4LW=Q6rKCLZbbFlUyXw zah=t^RxwKc*&-(qS`)Dhk>7VShriqDSD=!;s4+Jl%h;r*=I;w926yu9TUPYqBD{s1tsEug!RO@wB zS=`|@?izk`n&>$>9{s#HZY!=qMuMDhu^*a=voTu6ATa>TT)aKkErddQ6PM5BguJ-=!lg!PF`Etv?rHoe06Zk|H9RvGTzI5BzGfem*>XC3;qx3}v0$Eyj z?WboVpA)9*Wr;^E38+3@U2FK7wX}!F?x|Y1XoaE?oIf0Nk2K~wPr}=7F-_#RO*r0t z;3(9Rmq(_giowLk58R*0#w59id-bZycJnR()dlB$rkS9n`l8_rBmL!4k4g3%~o%o~RhlBL|;5zxs{dsn+V zL4EAn8E;($=epCkdF;glEi;eE+%mi*`hd@33s=WX#>J$xyn+nT*3B9JLKEJZc3&U2 zs95eh2?<4c^7+nAB3W6^^ZpfarD=A9(Qtt=OcR}6Z^9FzU4KifPjWZCwg$hc6VH#r zDYV^T+QfHXh!%=|>&BsZ#~8EP8uL1{@MHT3dt3`YGRQyOW1kTFA{Z27VGYAN`?mQ( zhOoZBMkJB=<36y7%4H?qz5K)p+*qQ`jsegh-x?*Cjzleg{{>Ox^pJ!fZP=e$0s&T$ zp`|(-#cyj)BTypN_q*Be1_ebsOd_ICVy-M};JM)UNCwRbi}QVnI58siFB6#QD1wrM z(ph;F;RP?LU|kPsFRMneLTz-;O;pi{11i<)Z85(LbrW=FiQQr0U9tE`4|(Oz!% z54_ExF_DT&OAF1G5Lw-JLeV=#K_$~rL$~^sC^$Bj!Pyq);!I5%8JU}~ucJE6*%bFm zz`HaFB#bvR#c^UF!@pNiftjmi^RBit7EAex5<2*iK6=ij*0jH;@5T634qbd(EiRd_ zKt_4#sDtyc>_P5F?$x7+XrX&=K}$=Gz=;Ek1!r{idaa-1*&kPTBn?qh-WwQT-#=JU zF*BorwlaZG8xudjMnRPn1HWLrPbxLC1M}A;(EOCiFR79=F(Cnm%lcwZ2t>iR;9yL2 z^l8lCCcW#EqjNhwSW#-Rm6_u9E}>a+qGxCg81{XERDyoWd~{_Z<|>w!v)*Ico}IsN zUY`W~Ae~udSAW6C|Fgx#?X(+15$N;p%DPRb|Nf;0LTU5K1zOj7pB&!i35{G`U>T!8 z90r7%M*+7rs;mFo5qFFf2(SjKxWUt%@u9yS|H5hU#q?`yzvEoL&xoi9<6kZ>Mapb* z3E#h$mJuN$j2W_VKhiL`Kf^Fe=R<6*J2(HR9~v&xH(M!4z)|#~?yF1WzIAeGVj?>n zoZni9k2-MloLtVgR#<1E++O7~tr?P{4w;GP3(=+ta-nmi}vb&eF+8!6H5k3yj) zfaEi1S>bkV11=?ezyIIhL!D%1(a!L=LVghL1gDB(_Wxr zphw;iAG+;!FZ_w(CHUTy0Ul9gO^t@1AActlR=Zx12lX%kJs952?W34sv{vh{&h3ew zOy1qb-Rr|Gt65J&zMo7#3Fh7C`6Zn7oaP%_0RzQK(v|Fg4WMNt3L#YgE=kESsaRB0m7>7Z(5Qbft+*{=RLiQVLRF3eGhfX zWwmLQ(qrS|hQDC?JDwLVcyP$D3N|ddfDW+ueuqTbk2DFZzkJ#7k^|^*8T``lYxT=R z&&;P+(uE#7N)+?Q>QHLyOUn0Wo_b2YG*?(IivCLB0{*l~HCb5-0BgIKT4$o8PDng% z?SFoQr);^iY{$Ra*Af;-{_blR?My{Hkl9Gk*!eu~GC(6xESX%Y=)>8m*>{h_IU$fA zzExIIkdRuu#CGUWw{kF#b}}+sw_MXaXsN5#n23s_`V7d308a&{K~E1izYS%`+20k% zTlN~%owo@Naj~(%7*XNC62sVyg&T#W?kT%pWp!YrHTkS6f zCo7B$ZHgoNzilU0+$LVMYuvyOFnupHl_cE|^az2?mdKu1>9k&K`vD$@lxG{>K zgM=0?1~L?g)ps;8*>=V_Vv5leB2B_?a?syGK2g$jl3zV`ly)G#QOp`(&-VovATR;hf(JyP!`MTlyKk^@ZP~}8Err5{g_A`T|RwiPm6!&T> zGc)u0sQDQ1Ss7r?%>XU&L=JO&sKZ-RQxouB4B%OUyb~8Evs{jlXMgcQ+8td}li~bW zTkVTM2ZRpb>+v<->z1Mt)Bd`l`4jg2!YtGNpd+dVbeUS_fSAx1R6O*k)uTUreS(o^ zunJ2+r94@3<2#-Dj02k0KrEwW;NU=Pe(T^bKe>TYMI=fSb^}`MU}FLhK<~BOl0LZyZpZD#osf~)EyezV3mR~~@Xgm9QZ{=D zMGtJ+mUVCV<%o7g1dtl~PGjhuK=zxoBy*WZs{Hx&O+{|9fWUaOneNZZ3DQ+(oe>V8G66r=vZN}^<4 zu{Jj!H}7}N2imlr)L{evq*qfT#-LT%($X@!(&?Mj)+V^W)XIl~j&4NE`4!mMjile; zR{5j6038mMV(wqRe$9e!aJ^o?dIkE6z-9)Tqjg{Zbb;=6Qd$}rF~2i23I@h!>6Da| zA!w7B*J1A`Xr0XRfwTyW3V7>4dmmhK*(NnIG3jq|IvxSd=Uzy~`MEt!!cY=$s;gHS ze5gJBk4EvM=k^aL0to1mCW7DHZKYTZYUUS();HPYOh+gv$Vf8$>@%)_MYOCG3%#tg zTog3S%OkH6^k~z8J_khf1wCYB;I8Qp<~wzorEC|IHV#HNKb}e}z41W%=$zK!ph~;y zV$VMRyOyr`uh&zb!yDTCii*V6hf4%b_v^@#jCasrdCk`xMapd*ibmR$mXz$-FCISE zk51Ci^BhHeo|jz^DS##N?y_FvFKrR75Sdd8CwTwW_fkf}YVI(7;dyX1<}35hLI+ z(et>wRHi;2Vy+_M(2J>~A1`~M}#wsf0EQ%8tNih>#2fi5he|%u; zXRD3BXaxSrQK(X!y{+C)x{=tDu8{1|sBfx5iDaDQ*Jr!Bjue`eBjv3K^zqRM%u-nL z@)Fu#dQikCUuJC&Q`vlc5WO6ifce$Cr9YiJL*st&8B&2VO zLHv}!0GbtbrV}(h%V3&Dm!B+hb93`;05JcDmTETFsSFh}7DoIpE&zAKiC3@N7aUoW z!jS#n;}a4NfWa98NPKc~5rNm~nwXe^$Hks9g7+&L8Wmz~0J#@RyA&CGG!ub z3+3%vorQ{5HY*+PRaHObMy~0-eY|RKUp@9B=CTy+?CmAc(y{{Hc|vjVJ#Ew1SEelA zMQmR}!PA(Aq^-di*R)@>Kj++)$^Gce|1>ay&>jiKX~5V~Sft=B5-^kPOypxgy-w!l zp$!e(5HJPx#s3DJJqq0CndRje`uh4k*2F0Zau^JEQ2*A>Y~>{eGni%hi2-0Z2-1!1 zZCD6!MJegGOodZ9hqwWLGtd->V9_> zrk>3>!(!GpeFGl=9&%4^|4~8WKp-^OkfP_Wt+QF5=rE&`ql*JIM?CT<+}ryVkZeCz z7a*tG(;?P#QB&{%hQgZDZ33=D2kJHRn=O!(L;dej2(CtQAq9PYS*l(<22#Km^OJZceIdYF%JbLsnL{ zHiUzN0}tAJKW=}D0Jf*@jt+==-PcZF3^EJ*4CbxoY;rD>mz95DM(pmIzCHQ``_9Nn z&~hnE9F%*g?8Vfs@ht!Wz!AaMuTzXZfBCu8Mdo?-aI(HZUiozCdGEe!{I#h9`S{Y~ zMW_aTZDJ7x5Y5BpD`64EBYVHd$+a{)F^!>q&ufyB_4Il5@qT5`EbwZXd=NB!qJ{{; z2lb{2%-Ec+Q4tWMu-N6{03L~|IH95uI8%Ts&8~Z+LYK>gB}Z@rl1ZJcC*hFD}67 z+>`}X10!Fj3-@o4jW4OD!yN;Qe+P?zsrvohRd$r`rNfLm+A0OI{KuTvN zPKiwMFpRD$q8Jh4W^?wwP@joBY^jUE!+l{*sum-Oj-sDJPp{g~)NV~G6+=f$tD7xh zWzZe)(Es;LU90bBO$`aCG-8}O9W$VYh03JV{rJJ}5*ZgeS@zt&Xy8M9MFSmE19~>J z;}5#0LuRbNdTs>VN1J(HDs*6g^QmO&FBqZf0?zG;i3xo$3#2z+Z}qvR5Li}!&CjPe z94#d6?(MNc-@o<~xu*rVT)tlHP5qjiOWxhzX9LaP%RX|iH@%@fdYr&*CROYei;Rq{ z3wpfz7IQVaAZSaRj+da9!o!VCW7D=$d;k-UEI2qgdAYegsi~>6f#jb3B&4K-`XzJD z=C}0F3i!k9J$F1n^IVp(oOsC3LwZAB+?dQyLtqgd10ze3=;3nC&?o_C2_LV$37HUHzCpgu)8WIct0^7pUsmQ$ z%lFk*M7F&XI5r84orecs2&OV|zBkRa-VwDu-pXCyF#N30U2H^`*aZ^M3D96y_T6BC zLt7+WkQ6HS48$B}78mz8I6M695JE$qsfr>>!e}fx@1)xr31GIvT|?u$`1)Ho2pf>| zAX>N9DoII6`jF7vP1?{PQO)t9I9Df{xAFMvqd`KIyInMJeF)v)oPqAYosmNJg$!u!<&_L((0L)jm1x(+B1bYXHoOc6OAmZx*|vsVJhP z3<+2pIEc$H&fN&2m*Ccbk z{7v!+tdjTbKfRIMf8W36W!wgG^VvH%T}grtPo-h_*QsK|=))@&k*^VVWTaEx>) zkRi~;+zu!j>`Z$4t3r)V8Sj%3c4%||w=cf4LkxM}^uq747qb)}A<7*E8;_~n0 z(MJc11eV-Jv8s)Ditk@6W_^9Tp@7g@mkjkL+X;grut(1%_s#7J8+Y@Lj2~0v^yU*$G2pzTNgAYH~Q#CUa;~da**fqRHa3K5XU=mKb<@MA}j)Jdq-W$Hd z;lT^U601wGLu3pL@pNV@j=*f3{I0FDEun~! z5(TJ=(Im;f#!i37%=1`CS|_h$c`0ZEz|cT)%=x(n9HP)oxxi(+q|~4v2-n-IdcV+* zri%X}@WosH?X1{^aIdLkIfwEnX4>!2ovx00ehEGKeK=kM@o%D1`n)5FEqb^}U+)VK zzt__|w;c`k;T)mPU@VNa6FD4P^|VId=fZDc*gsQ;MQtS+6^=HA)u;nOX$ITKY{x1Z z_!uz8YND0PkGu+<5N9_w{AbsILJ}Su`;~yeB-=_GMeO@xbA99BlBS#Hmx-uuioo&d z42A{7rgh&{@{W=?*Ch*mR>FwkwD4cA<(Tglcy{VkhBrzW-94;;pIcUESr7wEGx&mO zGkP$4B@r2*JDRpHDeWEsb`%hsZ{yi+#qJh2VSVu2&HMFW*zBJw}1 z-sQ_bgb&&l3l7Gb$yE738TaxfJtT$kYu7{0T}6FGU&tyQGiVI4!|zSN?Eh(X<7PF* zPE{%Ku1id^0F>?=SY*geBQT!Rm69{*R(OBUs?xR3614>b!2* znMSP{5q71Q5TnN<59r`v6zc+wJzo|W6F_T*FHLB)dv`($^Z8V9>0JyML$RgCMZ{PV z2VGY2@I81gE@P0C8qv}I1Y=V}St#`jx#Nv2ZaD-G9EL<5qOJvbq|i+9v9V0`alZlx z)LIiq_YXdEZycm_7sL>7Yx_s)L$k1$YWjG|zW>%yb6L5}G-w8ii5o;Wsap6*sYY<3 z-8S|sA}Jk5Sn1~B&WS%efsYl#$y)no5pvMs zKoNat9|I~-3@AxIm(27CCt@~0VP(?UG zH4I2a-Db1QVT(<1`_@HxWMq*8FkaGiXQ@3T&xrC$gq0xp^Huv{$ zTNc-I@$+59ITm?5^K{UqTLp8Cv(?+YSy>8W`EnA_2eUT`BQy8)txzq&+RE<{f6$bF z<4WN#YYxmG1YKK)oD~E`O+S2)DQd-`VSO5>jE{^KE~2VRQl|BQ*w`q>%z_0b&4@rt z8kKyBG%v4|JGi_c2T9_Xq$l9XqQiFsk@gS!##R6t(#?(WFK$Ov(%Y+T-c(y?bOTuf z7^!Tweo4jcC#tHTAJ0}=Bf;?lsZj`Mkp#d1Zt_=E>nHx|RbeF52NwJT=GTwM_EtBv zkS48l$fIT_ye^*T7tF?jx4JFNjdh4+gW6{PgD80jPWULop;xAcY5xe}WeRAiLTYYj*=G^JNEj0Rc zv-pQlVDN|CxTr6x2nQCSmW0HM=P1Wz$3p{eh1Jz1%7-a^e2#$gkJZ&mKtkjoaGr{n znaF&rw9_QGf(yp1sVS;W58f;!5a`ey*1IdS}um1l$7^i{Eb3GpD5$6J1j}wmu~5=u59z7Ib5hyq6Y2^ z3>IK&@yG}(w~B;vd~ukP%{T&hZ$u@jdr?GkIdW&6jL0vI4<%xnkUx4PtXn9Jf zXJ1&CPv5$d0OKd;$Ow{<^B6T_K=jZVkbi{_=IfuKym)@qysM(777kE#PF|XbzCPXi z_bp*n=yJ+)MT;*;8-~&1>+)*h1B1dMGLwV+W@Za|dqTY~)s~HoXu1^T7B!cRONJ>I zvnh_#UC9TZ=Q^?*G%njFVz78x7ctU{nyC`Bd@k)uZQ#yMUsm*dOjoTkz?d#^K_})4 zK$@2LoPc0FswJ+VK;wCx3A!>=n1nnibSiM5B^4|@^0mx#CSYf90fBw-YoMwg!t3 zC#(DsqqFk$v>@ zV2KMt;14jPB${oSxpJ_=9~frvQCoDYmVDPi9Y#{PT%7L~5x^a0-BH9-T;aH+7WSRs zXxCK4@D;kBUkAra2nr51s-vu&sp&QraY{(5o3^m(>;!_)@!w5i;Gs>o+4+PHW-(8@ zP~@m+w!S#KMocw2+FdL*?u4Wwu+P+V>-iDVFp$7M&HT6+6TlMaB`69uu{O1^kkHb4 zYisv0Dn&iSZo4e2x*7%NHLr<;*w)C!*u3Rt@zm!^Av+;#Hk|Q=>9E|kkCktoaawv^ zcXJpKZc8bCmpNb02pop~4|Er914~B9L12{slQc;DNs``Ocx5MH zp`BMN|D;PKNFMl7npdhFz42v{P}3X9j^YwH9YaiAF*Io1gM&#v>@}sJATwYlo(v6n zKWyoJ`SL-euMdRH{rioELX+_1GNU9W({q25>SjB;CE5X8H+_08U7R%3vgK%eJN}{#i)mBy4+@gL}-aol8U98WilWFMVB**VODXs6IvSm*3Lu%s5zi>Q)`!&k4tWMpNjf ze_wYi2@9z){MANd-&M-N-tB-W{6rmMQ;<~EZH?qt85q0hlFY?{lrfoU-|J__ zE4;O>DUGWF98;e5L!<4LcXpkX{f&f%hSZPag_pV233MJ$R$96Mb^>eAl~-pf`z$Oh zfJtqgi_2OIES$NDBlRacY+-*2x52WuKvr{F0(edru7;eikF(tBv|T#{g>v%ig3pC(h_l6SsNLR+uiQA5#e6 znt8Vzj>k(|1*&7kAu(k*#dgiuxJY{VnqGOI+p~@i%y9o14e;xLa zix%ggIEA>mxv{6e4&2)Sl#HpVX&N+N99-Ox!e8Kh;MMULyHL~zwk4HS5cILPTq(o;rad zCFOa$&ttk0wve7pg{Ko0AOD_bX<}08;h4jqTA{zuI9Vu?8L6E+HqnXA*Cu_mZ1pi# zbFS-o>|19L+{ovv!D(>ugNKIoo}FXpo1oL;WXl6gkMx!@7e{C+(1Y;fy(OBNwEG(bRNTTwEM`+7WQf7ne*28WObv%`~g4t1lE6Q@I8g8J)3cs3@sHZ5TyH zPIk$sBP~6 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/hierarchy.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/hierarchy.html new file mode 100644 index 000000000..225996d27 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/hierarchy.html @@ -0,0 +1,135 @@ + + + + + + + +IRremoteESP8266: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cdecode_resultsResults returned from the decoder
 CIRac
 CIRAmcorAcClass for handling detailed Amcor A/C messages
 CIRArgoACClass for handling detailed Argo A/C messages
 CIRCarrierAc64Class for handling detailed Carrier 64 bit A/C messages
 CIRCoolixACClass for handling detailed Coolix A/C messages
 CIRCoronaAcClass for handling detailed Corona A/C messages
 CIRDaikin128Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Vena
 CIRDaikin152Class for handling detailed Daikin 152-bit A/C messages
 CIRDaikin160Class for handling detailed Daikin 160-bit A/C messages
 CIRDaikin176Class for handling detailed Daikin 176-bit A/C messages
 CIRDaikin2Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering analysis by sheppy99
 CIRDaikin216Class for handling detailed Daikin 216-bit A/C messages
 CIRDaikin64Class for handling detailed Daikin 64-bit A/C messages
 CIRDaikinESPClass for handling detailed Daikin 280-bit A/C messages
 CIRDelonghiAcClass for handling detailed Delonghi A/C messages
 CIRElectraAcClass for handling detailed Electra A/C messages
 CIRFujitsuACClass for handling detailed Fujitsu A/C messages
 CIRGoodweatherAcClass for handling detailed Goodweather A/C messages
 CIRGreeACClass for handling detailed Gree A/C messages
 CIRHaierACClass for handling detailed Haier A/C messages
 CIRHaierACYRW02Class for handling detailed Haier ACYRW02 A/C messages
 CIRHitachiAcClass for handling detailed Hitachi 224-bit A/C messages
 CIRHitachiAc1Class for handling detailed Hitachi 104-bit A/C messages
 CIRHitachiAc3Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages
 CIRHitachiAc424Class for handling detailed Hitachi 53-byte/424-bit A/C messages
 CIRHitachiAc344Class for handling detailed Hitachi 344-bit A/C messages
 CIRKelvinatorACClass for handling detailed Kelvinator A/C messages
 CIRLgAcClass for handling detailed LG A/C messages
 CIRMideaACClass for handling detailed Midea A/C messages
 CIRMitsubishi112
 CIRMitsubishi136Class for handling detailed Mitsubishi 136-bit A/C messages
 CIRMitsubishiACClass for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done at: https://github.com/r45635/HVAC-IR-Control
 CIRMitsubishiHeavy152AcClass for handling detailed Mitsubishi Heavy 152-bit A/C messages
 CIRMitsubishiHeavy88AcClass for handling detailed Mitsubishi Heavy 88-bit A/C messages
 CIRNeoclimaAcClass for handling detailed Neoclima A/C messages
 CIRPanasonicAcClass for handling detailed Panasonic A/C messages
 Cirparams_tInformation for the interrupt handler
 CIRrecvClass for receiving IR messages
 CIRSamsungAcClass for handling detailed Samsung A/C messages
 CIRsendClass for sending all basic IR protocols
 CIRSharpAcClass for handling detailed Sharp A/C messages
 CIRTcl112AcClass for handling detailed TCL A/C messages
 CIRTecoAcClass for handling detailed Teco A/C messages
 CIRtimerThis class performs a simple timer in useconds since instantiated
 CIRToshibaACClass for handling detailed Toshiba A/C messages
 CIRTrotecESPClass for handling detailed Trotec A/C messages
 CIRVestelAcClass for handling detailed Vestel A/C messages
 CIRWhirlpoolAcClass for handling detailed Whirlpool A/C messages
 CmagiquestMagiQuest packet is both Wand ID and magnitude of swish and flick
 Cmatch_result_tResults from a data match
 CstdAc::state_tStructure to hold a common A/C state
 CTimerMsThis class performs a simple timer in milli-seoncds since instantiated
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h.html new file mode 100644 index 000000000..74c2dc9e0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/i18n.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
i18n.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h_source.html new file mode 100644 index 000000000..d0ee17951 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/i18n_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +IRremoteESP8266: src/i18n.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
i18n.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 - David Conran (@crankyoldgit)
+
2 
+
3 #ifndef I18N_H_
+
4 #define I18N_H_
+
5 
+
6 #include "IRremoteESP8266.h"
+
7 
+
8 // Load the appropriate locale header file.
+
9 #ifndef _IR_LOCALE_
+
10 #define _IR_LOCALE_ en-AU
+
11 #endif // _IR_LOCALE_
+
12 
+
13 #define ENQUOTE_(x) #x
+
14 #define ENQUOTE(x) ENQUOTE_(x)
+
15 
+
16 // Load the desired/requested locale.
+
17 #ifdef _IR_LOCALE_
+
18 #include ENQUOTE(locale/_IR_LOCALE_.h)
+
19 #endif // _IR_LOCALE_
+
20 
+
21 // Now that any specific locale has been loaded, we can safely load the defaults
+
22 // as the defaults should not override anything that has now set.
+
23 #include "locale/defaults.h"
+
24 
+
25 #endif // I18N_H_
+
+ + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/index.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/index.html new file mode 100644 index 000000000..42934a359 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/index.html @@ -0,0 +1,104 @@ + + + + + + + +IRremoteESP8266: IRremoteESP8266 Library API Documentation + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
IRremoteESP8266 Library API Documentation
+
+
+

+Getting Started

+

+The basics

+

For sending messages, look at the IRsend class.

+

For receiving messages, look at the IRrecv & decode_results classes.

+

+Air Conditioners

+

For generic Air Conditioner control, look at the IRac class & the stdAc::state_t structure.

+

For detailed Air Conditioner control, you need to determine what protocol the library detects your remote/Air Conditioner to be, look into the appropriate src/ir_Protocol.[h|cpp] files and use the appropriate class object. e.g. if IRrecvDumpV2 (or better) detects the protocol as KELVINATOR, open the src/ir_Kelvinator.* files, and examine the IRKelvinatorAC class the methods available to create/decode/send KELVINATOR messages with all the abilities the library offers. You can also select it from the Classes menu above.

+

Various native constants & options for a given Protocol's class object can be found in the associated header file for that protocol.

+

+Examples

+

Most of the common uses of this library's APIs have demonstration code available under the examples directory. It ranges from trivial examples to complex real-world project code.

+

+Tuning

+

The most commonly used & needed knobs for controlling aspects of this library are available via run-time class methods or at class-object instantiation. Again, you are referred to the IRsend & IRrecv classes.

+

+Advanced

+

Certain addition constants and options are available as compile-time tweaks. You should inspect IRremoteESP8266.h, IRsend.h, & IRrecv.h for General, Sending, & Receiving tweaks respectively.

+

+Protocol timings

+

Generally you should never need to adjust the timing parameters for a given protocol or device. However, occasionally some individual devices just want to be special. If you are having problems decoding/receiving a message, look into the tolerance, kTolerance, or IRrecv::setTolerance constants/methods etc first. However, if your problems is sending, or adjusting the tolerance doesn't work you may need to tweak per-protocol timing values. These are stored as constants in the ir_ProtocolName.cpp file for the given protocol. This is typically a step of last resort.

+

+Reducing code size & flash usage.

+

You can disable most protocols by either modifying the appropriate #‍defines in IRremoteESP8266.h or passing the appropriate compile-time flags, as documented in the same file.

+

Avoid using the A/C classes, especially the IRac class as they will force the compiler to include large amounts of code you may not need.

+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.map new file mode 100644 index 000000000..a8b60bc08 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.md5 new file mode 100644 index 000000000..47dabebf8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +a846ea81466572d0dcd38c89e164f553 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6798ac0294f5fe01c7b96f26f12479d6946451 GIT binary patch literal 1406 zcmV-^1%djBP)P|0>U4%kLM77Pm>2yZUp$=*D`@aa!A6dT!$5@a*{!Hh;Do<4oLZ}ns|NW!i( zLm&`<)oMj$Kw(4a5#*vt}f{HdK^1; z4DIdhSY2HO00e_UT)lb~`T6-MC@8@7>(}w)$B$jBolJFgHSXQJhx+<@>C-1JEiJLXzn^d3ydgJ;C-d&g)rnlj&)FJE}%$PrFVOfV9O&~CT0ySrQDD=I4D*w~o3_W67S zz@?=nlBCIG;=sUwh@U%mj)Q}P;yP9SbR=0{o9bq8I2;7Pg@pw%Han%=ah)ok z%jKe0t4)|&Z8N0GpN?eBp!#LP@ApHi)gnJXUyM~$REW=KW@Z2YMMXtW6a|W+ATu)) z;cyskw;OJ^8=0AzTkhH9^ZB6BXi!#GCdMi&D@9Cg?R4mLy0r7@^?JN`@d9`5+=0<( zL|a=MK79C)R-JV0b^e6!O{A;1xEQOes|W^zVo_W!mxz~^mLek~1HoVrCr+G*yWi{e zA{L9m>2!*P-c(Xjf@m}fuh%OU#o=&>*xK5fs@myL6lF*G8XFtY*w~1TjSW11{v366 zbqE9k$j;72R#p}wk%;)(U@(}pc1A}0&uX&#YN_5CDk>^){``4#c6MTMaS<+;3q3tO zBCgZv(A3m~*49>h{rVMaYioG_{ymzTo3XyW4xLU1tJR9Owl;kJ{29y3%NQ6Kz}vTP zQC?n-y1F{tym=FWKmb0U54UdJg2iG%VPT=_+B=mh-`Lm~dV71}a5(Vu=TF39F+?H} zY;0@*_;ny192`U_6oSX&!QH!elh!LNEX4HmG@{Wc0Hn;X+74b*67u`~v{)?6$;sjA z)2I39(W5PgxNtbk?(S}umzPtk)zV}#addQ4+#d>s*wN9!l9Cc0KYpC;?d@DySs_UV z0s*$Pv@kC(k0(!_wva*s{Sy?m~3>+C5 z5%)TsPMXbTW@l&f?Afz?{P=OwGsDEh1gom5sL^O>GMQ55Psg4fAf>})PY;mN-{YTc z2DjTSo(Q&ow6?Y$^z;sd>Zggrs;sOGlz%_8#Xq| + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.md5 new file mode 100644 index 000000000..bd11ebe19 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +327933a92eeebe9fdbbc6b40d5ab778a \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..559fc0217e7185417012714eca5189f40e90ad54 GIT binary patch literal 674 zcmV;T0$u%yP)<)x#b{z+(IXiclnl~ylUXSi z0~t(6io_!mvyp{`y2DL~lG|ObLiu;z;VC`uz2576@gAw?GoAD8bbg;szw`8TAVLV- zA)H$aoC)iVmwWYoU{0FNW-J!FmCDcPbUMG^f0+Ju-sADOQmJ59I!&w9YBrn9^FoqC92>E>e^Ye3|P`IkzAGyMLlO%}{ z`uO;8yWLKwv)AigzUN7<)+c;E-|O{42)o@botR7}2qA~Vk;~=baQN`UJfF`=l9bEk zVzJoc@hldLTY4{-%VaVMA=GNMbW*F;5JH>HrdqA$a=Bu$NaqfRqtofs>-E84pwVa= zjmA0k5Q9>w^d&ip!C;_!gB~BY;_-O2>vs}~gw19{2#rP~0KnVZ+sP_S2!bF8f|*>c zzu({A&1Q2b6x!`}bWTx}TCElc1Q0@!Bqx&z0AM&Aa=BckQh8y~tM!RQB1xyy{eC}_ z$p8Rmvzgs)4+ewN>2$x}$K&zsb_)QI$z;3TuHWxpSnitNZ;?n82m~UL$a=kAtycT} z{_*jV$K$nHt#~|6uX%cUGMP*+m+STQ_4D&Hl}goWwHtc_0DL~*a=FZAvoe`18jafR zcA-${_xmjt%VAAEpI50=27^JNP_)}^yt<8 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.map new file mode 100644 index 000000000..3c6cfb9c1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.md5 new file mode 100644 index 000000000..18f33803c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.md5 @@ -0,0 +1 @@ +ef00148bc0f51868126f49db7c64045c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_10.png new file mode 100644 index 0000000000000000000000000000000000000000..1321a6dfd7a7a9709cdc0d4e46fb9a44fd9c0a1a GIT binary patch literal 1281 zcmV+c1^)VpP);K~!jg?V4*Sdtn^MpJ&$C#!R_Hl>6R{+!E4+l(3ddNo?iLSd*4F zq7+&b5iM=VW$qzFd7(&nfj6YQ@Cq}FSTSYh{9l~@Yi4tOa_f9vo#*%b&U3!!+w=U+ zbIt}a3QmU(~qobpZ%_lST`1p8g zYU;}+{bHu3rjCz~O(W#zNt2V4U!~{Q10ghv5H%DrgrSHb3`NY3HZ&w8WO#V^yH&i8 zA7^M(RFp!Y_i&CAQ%-rjz7 z@U5+_qN1YD=Tuf!;#Vh=pX_9qOeTEF$;k=cwYIhv8ykz?$jZvft5Pk3V1|mtVhqDB zE-s3TivCDW`^z`({u8VBR(`dAciV6tf-rk;B7llG$u~@CGtpb5S zBog5t4AaumAcQ0m$;Zd1v9Zzk7182y*6DOS9xpXD_4fAGEGHx+q^_lo!3ckI)9UdMoEiJ{HwY9Yc1qG$0rA|&xetv#kU0olt0iB^bovypP8$uWn5n(MS zH#hh6^z`uX5CE{Suz+EhUay~?o*oz&7#$t8c9vSLj*E-)@bH+Mo1@d|&l3g*2c=S} zTCElc1bjaKjbC_2Mn)(UN@ivz06?$TudlB=J3F)4Y&xAD85y~{y84zuo`b;9j*bop zA)QW_NF=kfvjG7C)-t`kyZ``~mzTzfjg3ucXsAdenwy)mc*?=SK}<|cR#uiwCbO}z zv6v$kiz6c=X*8NpDAZ^)DwXOjvU_@Z^7Hd;ZEXPnTCMis;Xy8!4-5>b)oLD(mzI`h ztgY_?Sq;@_G+ZvXp`pQGFj&jPUwfUModE!olapa#VfOa+5JIt7Y)yS%UmspfUJ&5w z>WUvwsZ;>K-QC@*nzy&NcXxM7N=oo1olb`k78VwUhle{jIMmkG+S%EC?74(&$-B6? zC=`mLqody5UTZl@rP9;WGcYjl{QNv8C#Sx?{_O1R@$s>}z5U_g!Qv@WsWd1kC@CrF z>go!WQ~-cXCQD3A^!NA2n^Y>5#bOzI@kbVk^bvDV?n9YOrbHrXYHGT_zc-ER_4>oZ z!&ddOoKw9P%fA6?Cjj!+%z{g8w`fT#KaE_j(B4)5{Yy=U4MT+-o(qRgM&kIagwu@jEt8gl1Os7JRu>0!{NNWt|=4>2qBltH5d%| ze)Hnu0`D3c8e%XQJRZ+Xd3kv`m&^=m;<8pJg00000NkvXXu0mjfI=ymM literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.map new file mode 100644 index 000000000..82841d494 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.md5 new file mode 100644 index 000000000..42c49f978 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.md5 @@ -0,0 +1 @@ +be983b2a61d65504f4b34c48e356ed36 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_11.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe436b03a2ba1abe386d22c6940501dce873766 GIT binary patch literal 1088 zcmV-G1i$-%}XEY?Wv_l1bK_8?CD>NdqLy;f|6;T8sm8ZNI zi(%3w3L-N}NJ^q0E0QEksgNMBAhd%Xx)p(kE?H($L{SP^?t2i#*R*{zDdFAUY4@3D zX8+Hhondwqq9_V*5<~cH0qG8I5C*tG7~lqBkP&_3a5!dXXMamdnjn+OxLj`J_OCa{ z?RJ~Z<{y`oMwrcJx7!^Z$@rLLGMRo#Puc+?jEUfD5C*tG7~lqBkk$sV+3bytjo;Of zb_O*xH0X4?@8_h7WDF7r1VckZk!uJcgpfj^)YQ}%42I~ma1)tKE-x?d>+3r?Il&y< z>2wYZ417PwX0r(d0y>>uR8%C9NS>aaFdrS46ud!FsT4)gySqEFSS%8W&d$zanjRk? z_xJY;3JSPf?#|B6_n-JLC=`m};bFJiZM9nMb~}O~$&Hh;DMq1C1_uWrgr}#cF-;^A ziOFQD)oPJQgdj-xfTgXi4MIpD5X#ER6beP;)Ftlp@%#N99UZN$tuHSxF*$5Ddu(is z$K%mxG$xa2wOYgRgM$M;pHHLFSS*%UEIvLyPOh$$8RYl-7Zw&EgmrawiE?^-d#|sr zT`m^@U~g{^MbTg|xV^o-zP`S>xtXY!*XwO=ZZ0e=v{)=uD)nQ6UawcFR9>%FBog)a z_kTR$ve|5GHaoexQee>B+#H0EN~Ox>^4;Ct%F4<_nI$D90D$}Z`$&XHByu<$1VJno zOWZE!=jV-$josbdi;IgyA~9}`R4T2nucuHb5{bm;^Lad;=vJ*(YqQzZYIQQTrEm@M z`F!o|?GqCd@9*!4GQ*!axw*Lj0F%j7TU(ozl?5S`N~KpL% zD-;UH$H#AOZbG4uMx%LqdyCserBYQ_SM&M&hlhu+N}8UYRw|W8M@JkE=c|1qq;emW zlanKt%crKMUSD6MXokSuzolcELlW5G0j0}Up zP*qjc($eDd`TkwZ=;-Lu(vsb7XR%nxmz462B7z`(zkh9QEqohZp0cyE1pQkfYQ>^nVA`(P)MWEWHMP-SJ!6}354b4Wgd^$)YOz{CdTmm{H# + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.md5 new file mode 100644 index 000000000..965dce765 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.md5 @@ -0,0 +1 @@ +4d7d1c5757d6d8c2ba1dee85111694e8 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e8860a43afbfc726982e32c419215d3b1ef734fd GIT binary patch literal 1317 zcmV+=1={+FP)E0@>;5No3{Y~001hL8Wk0#QmHIuSQmvt2@Vb}Dk|FD z-FgVSt5D4z>?y!1QRTbunNVHzzXf&GSZ+`)jL+vE92{76-QM0VEiL)@_#`GK&dkhw{)q2EB9YYA)@rrd z<>h6KMk5pov3hTBFN&h`^Yd2vt*x!h%uF7ScXoC*Gcz+iJ^iucLc8UuRBB~qB>-T5 zf8VN$L?SU544F*E=ktX^A@;$L!{Gn`2n0e

@6-F@Ht0c{>{nhV1O@tgNhuhX*SS zlgVsoXh=^_r_<>S24i`78LO|Xtgu)tI-MRK9$r>fwz09{*uPjTE-o%EFE4j@cMk~( z>Fw?PSPswvH5d$ieSH9cxVSibn!>`uv$M0Kqay@C78Vvz6g3)+)6>%5fKqI z8ZACPUaeNYal&?h5NKCd7XW}pqt(^b&Cbq-hKAZx1_T5k2y%UWZLT;uIYmcD3x&eD zxjCCd4i68Ll9KZB^7{Mxot&I(YD6MYe0)5WN)-qMdcFSq{M@p)r>94)R?B2E2d8j* zd;9$SESJkiMn-fxU3PXhhr>BNJ#{d|9?<4cynMhPjEN zD2k#4!bie^xej%6bE~VXYiVhDdU~>~8;!=JqoexzdZkj?-Q5iUczk?(d3kYlbtREV zJ3Bj_ot^gfNhA_gDpf>8L|R&!Uax<@8L?PAFfgFeXu`w8-=h}@1ai52Z*TAZ{=T)f z)nqbdWMsVmaAqJc?1e(1!C)939>$v3^y=c`!e+D2&(F8Fw{voG5CjPf3~X<2FDNLW z)9E!eHMzODjw})ga=AP`Jv}8Q<(=~y7Rt%VNmy7Iw(2C4$yk>{p#T7Ixm=UUgmqnA zU182EDk`{KuD7@M;^N}s;-Zg_&qpFaEf^mkx2oVc20@VV@o~$_k9+m}?cjkz1`iZ6 zc%YEM1BDD8C}i+JA!Flbb{@HrGRc%YEM1BDD8 bC}jQvT~HCrEM + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.md5 new file mode 100644 index 000000000..ece2dd31c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.md5 @@ -0,0 +1 @@ +bac1b057abc6acdf006c520a2648695e \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_13.png new file mode 100644 index 0000000000000000000000000000000000000000..29dd07a689fffd7d67f1ecc55429f74a69bde3fe GIT binary patch literal 1237 zcmV;`1Sw}Kmo5!^V8;KpGj$g^>DbR?6>zDvpvMk4X z|Jrdzqj7zG{mUi&0@l~pjYgwqBG?H42;W5T8ix_wIE>)NVdO^}$6~RT zmX^L-g?E0Oak;sm^1Og!;Az@%( z!2Nd1>oK(3?Uj|4<>lp1Pfu@hSS(g=Z!d?#q0wkeCUa+J2aQW4lIG^-_V)IOh=`=5 zq^YSX_iP4(K`xh%jg9%U-hdfrx7(+ury+#d+1b8w8X6i*CX>Nn003-mZXyWcbUM{) z^}@o!^768;Q5K7Z&1T2O#%i@%3Wf4MVR3O$DwSF+7CxWf*w~0pdvI_N85x?<=qJ{|yYe}C_e z5Q)T$j0}N5pw()<4$=l```OG`^uRu+{?l}IEZ zAtAfFyL!D|p-{->a?Fc$6R@Ki6%{ozGjnxyH9I@&D@UbL#l^*?q@>*5-qzRG_x1JN z+}ymrzK)HJy}Z159U_%V)6&vPN=hCc9zHLIL?SVnOm`DO5ClO81j6a*smWxb)9Dbx zn3xy@pFQJFr_*3C^z`&BE-p?^PC^JB4#(^3 zYgkxVaB#3rr~9Bz2L%PGRI1d})S{vytJV5>F`b>AN~QATL zwcJ z;rjY|8jU6riE3(UK9WcvD3wYMhf`Qs=<7s#RnpPX!R2zJqocRBwzjsm&@C1)5D!*X zR^CK#PyhfcD=VInANR=hTfmLO2yPrkaN{t78;23xIE>)NVZ_Vl!PV8(uh;SG@M2tD zUESB~_;o-8|9>1N@EV5^+&GNj#$g0E4kLd6VA0}La@q##00000NkvXXu0mjfQ)5>8 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.map new file mode 100644 index 000000000..72e272f5c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.md5 new file mode 100644 index 000000000..3857a757f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.md5 @@ -0,0 +1 @@ +beb2e4a39c2932d475766be916f606b6 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_14.png new file mode 100644 index 0000000000000000000000000000000000000000..28f2cbc5c1c23d2d3de726c7c1fb90c1d7adf752 GIT binary patch literal 1264 zcmV+UyDYiH5-AaqHYNX%LP}=Cn&h_0ZQnmmt^M}he1CXy>%9It=Q;1^dER@U z^L%#B*`V2M1_bDE`f3Be4I)s)5P>3w2oy2S);lVds~GdVe_(P*q&oc|V0OiX;1pC1o|(58i`p@<;@MGO%rV!m~tQBhGNBO_n! z;%$7pKv^tSZ*T9%HDASh0!>RxtE#H9Y(oekgk&-~GBQ%3P*}_GL$0o_!NI{LB_*4i zoBteKtyY(omVR7gncc$T;vxWGe}6wOFON>Adw6)Hr>C#2t=Z^lG#ZD)SzTTIr&YTk zxI#rDk=blE7z|})Wdea6BdW+5dd1pttdkwK+W zx3;#9kB`M-u}mhj(QCEZ*x1;doE*Jg|BgwKEqOATTv=HOA>7{HwmIbD;u01X*3!}< z5D0`qA^yTJD=P~^=;Y)S6cp6Z&|rCsXm>dqjmF&E+|10(ySqCZO;l7=U0ofQ%f&D( zEG%qcVc`{%=jZ2#hlkbG)qZ|{G#V{6HFa)o&PIb_SW{Ee&CQKUrFusW$O1JQjh&sH z5W={)I7b>DkEhjY_xAPx0JF2RX0!S6@o{QuYG`O^bad2Fud}nWq@*NYU*DOT8488+ zw_td9SSFL5ot+5;0zRMr${Sufoz7%3rBbO{t-im%f8$5|Umysyt*s40NTE<95{Xi& zWHOnKl>Ywy0Dy~&3rh=$M2e1%77B$kGc$I(?C$PzIGlolg08ME5{YD2BNB zaz#ajUa!~bbk@c!7z_po;qvk_gTdhQ`51R$Hsr2^teq#~< zAYAfZUS7Suy@!W~eSLk7Gzx{n&(AM3H1z!ZytufyzP|qS^z`NBMJ|^=Jw4g&B9qA? zA|g^#Q!g(sQCY>oFs!n&GB7Z3eSIBo!B4>L?X6m^=5o338y4k#sJpwnL?UTyY2xZUDlab&01y}$*xcM)TwIJ{m{=^%&(D9&qLWikPY;*NO-xL5R2l4IQ$q&_2N?`T zd3kwLQ&UJtNI*b9PfyRlzyN+bg$(N|Gd4D6(?ak%0D!TvG3%CZ_vrc4Ap%7V5h!Aa zKoLU(iWnkL#1MfZ#?H^k@8j2CC(xpzqR;p7Yk+3r|Di}BYA9leKoLU(iWnkL a#QXulG!^CDXaN@h0000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.md5 new file mode 100644 index 000000000..02c096729 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.md5 @@ -0,0 +1 @@ +82db646c1e50878e4bc1d2d8e42f9084 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_15.png new file mode 100644 index 0000000000000000000000000000000000000000..d952333e9902c1b6e96b9120908f07a47f780507 GIT binary patch literal 1482 zcmV;*1vUDKP)P#zwl*(a`}Rv{)>xuf@WSHW&;PMR~p6 z+qZ9Pwc5G4ImVRF=X?3`Wol}wTrM9O8Ts=SkBML~Xf~T~-MVEo8d*=yTI-05i___J z5JH>H#+bq|EGH+YySrPf)#~+n^kH^$bJJijNTt%m#6*=!_2tW#{W(`xSFc^WCKij& zoH=vz=FM;4z9GG!prEa-O`%W-g~FVioY${kBb_A4%a<<;g~GhNyeChdKnT5FFPgI3 z?fc^ytz&F#?DXl=y}i9|x0}9QHa0d42E(~?=aQ0=nwpxnwziJo4{JvI{r;yt2=e-l+)?7TCI%JFKj#mqtV#X(t=@_PN(bZ>kH`` zjb>(MW^{Da?RFOy7QTD;?kEOPG;kbeC}F9ns6agdU58R(7-qFv!-gRi78U>i6B85Y z=P5~&NDl-8LZR^E$Bz_66&Dxx_xDp2<#aj$0B*M%#h?epnObehfPgJK2;2hW~8d;a`+sZ<&j73KAM>G!<4 zx|$xGo}Rw9x3{#kgod9#e@5a#$t4oW=H_OoDZ5;*!xtY622Cc@{QP{Vm^W|Upze{G znHdNK(Bt(du=yUHn3#C)-o4Jw&Yhhdy1u)+Yq#6)-@k9MSROxq3?a-B4E zYc7}T!Gi~ful&`kR{(&#yu6T7T3Twe*=#mjMn;B8rD|ws`1I+M&*$s!@3&g5htC{> zXZkudioiWmQ#GUAb}v0DxiGVahfdjY_4Gu3#9Z zP$^ls@e2@Nj z!Esz55R{jfyIii;*4C?6uby;8KZ&Ss9c5)@LqkJSsZ^y>DHMvHo}QDg=qC}iqmz@9 zpFe+o(p7{fqIUG(3~w|?@J4e4Z!|}QISgOCc)@)g5l+0&buOs4t6#xIxoWS>J kj^K^v2;OLp;Em>pAKIN$tCM2aIsgCw07*qoM6N<$g0ke=)Bpeg literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.map new file mode 100644 index 000000000..79bd99c23 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.md5 new file mode 100644 index 000000000..c95f62f61 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.md5 @@ -0,0 +1 @@ +8f9d660abbc70be4c1cf621adf15df03 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_16.png new file mode 100644 index 0000000000000000000000000000000000000000..e55a8da5344f547af9fd43693510e908a4c02aaa GIT binary patch literal 1334 zcmV-615*e2pBqN1R;7Ni~;MX;2#rd8A&v}nX?@_vW!b7`8S z)|#{~%mV|Nd1v1J?f$a6GwiMs5kX@ILXL%2pqV||EE}QCvJu)W8}ZNdhQ7W&E?&I2 z5Lz@-2!%o!Z5d})EEePT?c4JrNR!Ff*jUcvpK)gWB%8CE!V?SzX>4rF8q@bI8==jz z5!x&p@z@&4Idh{qClG3QIuIAdcYkAA(@pw>5(cRshx16(~U}u(TnurMTc$_0gj?mK5!t>|P zv-X)<_UzeHC`oxCl}h3F`#F60FkY{BUbkKF%V2SFF>P&aD5Z!*B6H63`SWK?)1FMdg<#G`S1P~GW`}?h&SFc{>{Q2{I{P>ZkrY6GSFe1YD@87v|=MLAe zU+31XTWLDHUN6UwAIC5Z+S=Ng?>4#>PggK0ZD!>(;H4$;n9(5sAm+vS!U1NhA^?BEQrz z8)i8E!Ghnj-oJlOeSJM=&z>cjOlIvfwUm{WW#o!RqX4X3yVjbB6crUQF)_i&$Ot1N zBNP=Cv0=l8-_q!GI@9W*P>5~Ywy|W%5|mPyrpegYm=*W?{lsE148uSvMOj%HZ{ED2 zx3?Ey&N^mG!7qa=SFXh8^D#U;jNk8{Q;zcTavTl^@pwGL-1_=@Dk>^SCX);g4`&_k zaAe<2rIhvi-Me=*H#c+U%o*OkeM>5pqNAgOA3uHo|4l4>J|8b$yhz*r!-o&8OX06{ z{3-LY&MGY}<>bkeoI7`p$;rvz9`AHI*|%>Wt*x!Rdi9D#BEi$APibgq;M=!vIGs-1 zZa0Sx9pdH7mwfv4iLS0L!r?Fgt5>gPaB$E%@Y(qK^((1Vie<}|VHgJe{rz-wbXf8G z_wNI+apT6caXWVGAQFiXi9~*><4>8lMR9w3JBdVsKpgqDa8HT~`-Mg)6{7gFjnBTa;Y36|i znP6!0k2cFjXtQjDHp@n6vuuPm%SLFkY(&mi(SpI?eCp8rPhVeO&R9;fa=p8zSvZu4 s{yxhl= + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.md5 new file mode 100644 index 000000000..e94efc85c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.md5 @@ -0,0 +1 @@ +8463fec8e273d2b003400f5fc52905d2 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_17.png new file mode 100644 index 0000000000000000000000000000000000000000..24448b28b7f2e7f9b91b36ad0f98af6b910b1428 GIT binary patch literal 1280 zcmV+b1^@bqP)pY`VzC&CqHyuzMLZr) zQh6{K#NlvIT3X7B7cYoLqda=_h#xd9xp(g#k|bfb+qDkIz`y`Dn+>1OhY*67FJJQM({p7yLJte$wXsgBYk~+iL#F$KQcW%O?`d+c3;jWG&8HWw--s0uvjd(-EKxkMkp;U zO<5eE2YazdtLT*|H=1EUVRu+wG>Kql4Ae)h+9nmzU%7`B++7;_KJ1w6?Zp z74P7|gS>n9jtQOR*1!7TgHn&p&mPSY*P$}!$Bw% zA`}WCNfHkpJU~$tu3x{-=g*%}Rh4i!OnZAffj}TD{pr}TP4U&MS5Z|JpU<~t-OkQV zqR}YD#l=)tS5sSCn^mlqmKMgw#xR@B$g<3-Q>U<6tyEQ2v48)5dU|>Y1Onve=WiL$ zriO}&id@Utank-${5Mij zQNi-^a;|0M3|-Bv|2u|RI>InZM;K=5h_nwF+qLU9$c~ALiL_;D%}V#*HG|wC31NJn qr4x+rv-E^vmX0vY(h-JPI^q|CrMqc~qAI)q0000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.md5 new file mode 100644 index 000000000..e976aad9e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.md5 @@ -0,0 +1 @@ +494470899dc7bc1f09771a91824eb25c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_18.png new file mode 100644 index 0000000000000000000000000000000000000000..aee74feca7b275cdd69716670a9dc4d8d75dac59 GIT binary patch literal 1904 zcmV-$2aouPP)pk`$uhP|ELY^AGL9JtaNvGmz9fh#{!C-j){Q0_fiRM@7>FMe2?sin%{~6TK(6CUI-o0nfo+Zl& zA%u{ZmsdGI?*TR*+Lyb22o5kdn40{}n}#HmxK3JMC!%E}@lB3LX| zSXfv=K|xhj6^@^to<4Nw5SPo{wr$&yBS*e{`?k71F)<;PO4)37R8&-BVDRAcalBM2MF=q%jNstl zl9Ceq9xW#)r?0Q?=+UDHp~S>Q9QozT7m-NBX0yY?!{5AlgGFa)^P%9#^ZYs~uY$9v%jO(a}--DW0<9 zYyfY0ZX-&Ltp27`ggWFmyNZrwUQK8`1ePN#Eob920qwc)b$)7RIx zva)h`cvz)U0YGGAq(C5W_Th#@1ONu(-^avRTKp+O2p8;jdu3(i=g*(XnAX--yo3q_0-Mc-*PB1VmCt`Z zK0fEqpD!&fU0hs52vt;6s8p&87cOWtnuUdhsi~>AZ{Om`kdTnn)YQVl!ik9qgTZj- z%o&M9;^*h*Ob-nWO-@ceefspw%*@Eh$fZk{$VO9AQp{#^b#*nKaAL9e)~#E(3;=vS zfB*jd`T6-8jmB!V_V)H>W@audEX>c(+wFD^hr?ttdwP1x%gf1xetv%a{r#k!E8;Be zvanaLUI9Qz+ zW^QgSo6RmRF3!rzBI7S!yx7vx!eX(=^XH1Jn08r=QmK?kB#sJ`$rOo1_(7tkrY1T% zIz2r-BqXG-uW!$uJ-;{B004jphyS0|*Vp51d<}_c)&czf$ngaq{refUq5Y#aw13ow z_K(`o{!ts+KWan!M{QR4|6qN6{rdNV=2tKpje&uIj>-!DWoKuvSAS@J8<|YzSVi=& qEtH1d|ELY^AGM+Vqc*gE)aEaYUPA9-4r{Cc0000I2T literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.map new file mode 100644 index 000000000..eabd6a84c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.md5 new file mode 100644 index 000000000..62bb81d6a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.md5 @@ -0,0 +1 @@ +ef1756185927c9dc031ac38fa0bd7314 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_19.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bd0654fd6574445a63458b47793bbf174212f4 GIT binary patch literal 1214 zcmV;v1VQ_WP)2g@uzkDgfX%s-*@0i@ z0|(CgK0Dv@>^U#*c@MlwL<9>n7_Ttf!M}_ZzKK}jn}`*@iTw9_$IQ$O4<9}>!^{7g z@$vD3zJigTOeUF_nD{G({soqnmWt+CF!Fz~*^{!^KEYs+%a<>2s#$ZsiCE#Ah!wtx zSmB$96~2j-CH$6_7P`8+Hnf#eD5co9ZyzU4oZ$KM=LOeAqfsthx=9) z+`M^{`T6;B*eXeXe?LkohKGkY)!)B=&&7)uaX1{t|9J4=0Y85HD9inKZRB@$b|NCA z(`jzpxPjN}<>SYXhW_Tw8_t|LgUjV&dU~2~-@ftc)hiks8yOfF*ezQI`FtKt)3|>9 zI)1;uK%bhLqPe-5BS((#_U&8J=`>?wW2~;OGC4U}9ux8#fj~eu>E4p_=g&)LXJ^rN zE|-(a%1Rj<8xs+cd_FHOmrL5)+e_ANXlRh0o*p@S_N-J@RmqDNFJygvU2fmLEl#IX z>~_1fwzf(lkua_)rHhEXe*Icbo;)d;OhyhII3TfD%+R*uuM}J48Qk?bU)OaWJ$i&v zic_af0r2_rXA+47Ua$9$YCL=PjQjWR^ZomGu3Wi-*Xw0&ZjNv`%;MrA_4W0%wY8DY z=K)IU0DixpJ9qA2v)QlRO+J~g!M`r9$vcv3~#Y~%yRVYAuf<;$0b9u9{Ekj2GC zqiDyZdj zI*s!$U%miv=+GhKrCwQC$=cc)iA18L4xnio$z&3n&4yA6hr_}0@-l%yps2syVArRe znwlC02M1YLSU}S>0FE6yhRfw*baeEOYAB_Q^TUS^Q&CYtI-N#DHXI(0r=*_G=NTLv zWOjCTgBA*fjHze4{&vb=S?BNHzn{Bz?=mnjKsK92DaGT*kI^)Zd-v`UkH^VmGOVnu z5Q#*#tmSk%xp3hEKA(?xJdUpGM59sK+S{)EQV5w zCr_TBX&T+#-OSC+q3b%cv$OQ}_7V&R%aY4q`^f6(=s?$XhK7a!aJ$`1Pfs&HKhNpY zr>U;4rm3lkcs$O#cki~WH9R~_eSJM{x0~A9S~@y9@cDe~*|Vpl?)Up~yWIsfZ8jU{ z&Yd%soh>abL?RJBefmUWVNEO z_$Fe7Zz5LsCSrweB1N~3l + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.md5 new file mode 100644 index 000000000..7f14e3836 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +fd77e92eb539b07b298ba28c872ed33a \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f6da0e6ffb0cda9e52d906c565b42d0a897bb3b1 GIT binary patch literal 1068 zcmV+{1k?M8P)#EGVjl zlqD^KR)Muk+7wt?5CvIAiwueuE+eprEFwy*E?G!KMj1$Ye~W?3eZKqrJ?CfrUi{{> znserO&hhKa+!2Kg!vI3!{PnvV_^uG)Fd@QWLWILaz%};w_swSW?`q|Lj?rkWuC8Xy zzpXf$rX3E)m$&o{a5x+^O>;ehe+I3uuYXlP-v$U_jE9_Ym=NJGA;Muogu{dghY5~w zjg5^%LqqHsLI@!g3WZ9ga%E*DCfH;$K?s+YmVUKUEIzM#5>}kSU|<;L@$s>@x3{yi z^YrwTor*@IHk+-dr^jNk{Cc58`PAx3+p0pLP_NfR2t6JT>)hSl&CbrAot^dhd|W{* zDk_XdV@*wsNF-7y6bAJPl zAP{J8Z_mxm&CAQ{>gsxWdSY{qjg8gT)~2VYudc4fsm_}=QIaNHC={BRnSl^iR#vi3 zi^VcLJWNrPUay~_qG&EdXT%4SoxZUopt*woX4HTo(>5h($ zwzs!^KA%dZa=BapfR>h)U@&-meC&3+X`0sQbZpLrg@wt<$>-q*)f z7YGEJo14eS$0Lyl^4n}Snx-j=f)M89dMlgT2H2wGw+5{cyF_8VoK>bz+&Naj5* zGc$8!WMpDuA{-9y?Cbyl6bc19t5&N$9uN1?5g(~k+SJt4-Q9hDejW@4=jZ30PN!Th zSF6=}z5f3Go~G%+!9lH7o1dQ_^V&GodDCLN*(6_p2L=X0q0r*uqQzp-YPH-cilXZ4 z>l3;eEH5vYm6d5U8o6A4cz9S>R|f#F+wCHeNU2n+RI0+lLf$)C{OY`E6NY=>{l|yH z9|-u2hr^!<5e^d~9416KOo(up5aBQ(!ePSm^WfUr+Sm8-?cfovwYBx@`}lT1hWtMc m3v$L`LWIMF2!{y~4wE0fWx}yS=X;+30000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.md5 new file mode 100644 index 000000000..43f0e4cbd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.md5 @@ -0,0 +1 @@ +b7a5f99a38a961494782496866818bd7 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_20.png new file mode 100644 index 0000000000000000000000000000000000000000..fa378ff6502425b66ba9681fcb577fd81f2098bb GIT binary patch literal 1300 zcmV+v1?&2WP)2TVc{NsEff86)Y-nP`&>qm6A+YS&~z5}M-_#Vjh~N|yI&)qS02#@9(F z?@Q+g2j-mTdFDL#{O6o=&v3625kcbwVy?x`K=UtJ3?8m?ixFLoLW!h(oVQ&U50Yin9vDTPuBx7*F;&6~M-^X9BEKk<6K zoH})C&V3IJ4RPquq2JDZCc$73r4&6qJz4Efo;+dCo;`Rx9{ak^o;}Otv~zn|*rYSyh=$K%J3Nu^TU zx^;_BpFVN_{{02Xq2SAu+wG>gxf!Jt@pwG%_`13}lv21{F4nGHOE4H@=D+^GE>mB= zd?64BP+ne6Nl6KHb#=UX^TxJs-MW?b_I7sc*unDU%eiys4ge1xJYdC&6%R$aOB7l4jeeZ`Sa&lzkWS#x0_9yHqp`1!M=U_erIShD7YA=X>#e(C6rQZ-@ZNX z_`beAM1*hOzH#r~J+5EB&h6W`bNc)Jenv({7#J8}e0-eB%1Rm<8n7(O_UZ2KrlX^S zj~_p>fB${}LZJ|CZEYBaL3496SFc{R{a?O($=KK!e!oBO{PRM7p|`hJvNX@iu3ft% z5D28z0lOH6A$@&)88I_`W|osDPv-3F;>C;7*w|>-tE#G`tE)>yL=uUF0Fq25ZTs}} zv=kK;$+KtAL_}oEmMszt2GhPXnM}%>HEU#QYDz>zQmK@zTD3|{(-aYrfq?-5WPE%) zuW`x7EaMw3_@43M!w2f?>p6Y;G}F`5S$$@fs;a6qpI9u$wr$&3wrm+nDFT526B83z z`y3q|1z`2+)%Fd(@jgk-TExzkiR<=i|hQ6TEx(4$HFW?Cj+G_wQN# z%gf7gxm=`DsSJ_p>+5YlrIh{IvMj>kFvG*cY5or%KD3vr4I4I4QBlE-8#jJq1m?~k zIcJoVlyL0WG0vPh!_?H&oZ}`ZC$TJx;^JZq!(eD=h|bQ=oc?8HW$fO)o2I5FUcGvS zX_`EJ`jm!-2EKm%nl+}szaM~&8#ku4S65dPkH?9}<0z%La^(tO^HEe(#L=Ti*}He|tT8=3 zJycd!Qd?Wg%9Sf=X=$OUsfndamuB@3g+kQU)@HODhQZFAJMG)tnwlCOJ$l587ccO7 zy?8txd_Et=#l>l}ZeHZE!DtqMMcKeL`J=^f5Lyfep~Y|zS_}uF#c&W>3 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.md5 new file mode 100644 index 000000000..1e63f137d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.md5 @@ -0,0 +1 @@ +1a4371fa075bf61e18fb4a59f6c1ee8b \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_21.png new file mode 100644 index 0000000000000000000000000000000000000000..797a53002e9742e1e1c7811d595d508fa83e7863 GIT binary patch literal 1924 zcmV-~2YdL5P)$-l|_gwq^&Ue>!UN(dv2tY$Aync5AH2)adGwMNmMm=cHsK;N`&0{Z;wUEX>}$ zdtD;*^^AJZo>33lGwMNmMm_#G&*J0btE#GgcNTv%o_HpeN>83VNwyILK@h~p$7l2A z&G+uzb1Q?y$H!m1cya#8J32ZJA3p3sRz*cc2!hnq)VRbuJ3G_T(gFhmVTM<(T$!4h z+Oua*YHBK}!Ern>F%f?5Tosjv?N~Ka3i^bt^f+bmJIXO85L0GNUBS(&8Wo5m4 z_wN6n^Phs_xJIKnbm)*;t#*z#HZ}?bg7EP0*RNk&t=8Jw+KGvYM~@y=R#tX*cUM$Y zKv_vi$@utqd3ibPx~)hekqiwDefsnXYFb)aqNAgAIvwo3di4s&@q~l~06=kZaeaM# zb93|H;Go@Z-@ku9)D#sJ<>lp>Os410pSQKODHIA1t0kPMudjEBxMkO_U9c*bw!`6I zFc`J9wX=sHd_Moeg$uBqoSX~*KoEq>{5X94`Ph(?a?RI-`aInE(fHEA%xm@nCW5?W9q0{M@ zOs3Ij?C$PnGMSy7oeNeJ92~6CXb6IsnVIqT_t$E*adB~QC_g_xAt3>_IUJ5krGjmv z(Fg!||Ngzpr(e5vZSC5%^PcAalAfNPo}TU;S+eUHhG92u+&~Z{E-r2{`p1tS69n<| z=g)@^AKtlhr>?GUwk9hpYhYkNuh)-^j6_C8%49Me$KlZJ+qacUrOjr8-(s~|ed^RH z6h)68KYr`hEvV`1>l+>(&dSPin}A3plFQ`>4jedm@L)kf!M1JN7OY4l62XP_=FOX+ zprEw0wEq77Z{NNF0CYN?SS$treEs@$Y;262jmP8p`1thn^tepk+Sk!)@9w6;)SP z2L%NY1ff(a<#IVe5K^i1!Gi}jn~lL>ynOkRAczkiJ^%oWMk9GtNJt2|b3jxo)ykDC z2L}h|Imsmd$~uGoefjbwB_-w3rArQn!)1ts&*zgvTCFxVHrChI7eSDmoSf0oQI}~y ze*6dk;BYwbj)1{nOioS?4-do9u&^*vsnKXmCKHOH2!aF#29A%9!!IA3&4#Yel{t!{ zJRWb;rcGX6e>)FzRU{UR&1SRFXl!X|5s5?qfSo&c>U282UcX|+itXFC0|5N|`~UzG z6BFcYHk%CwA=j^8FDxu>mgYPCAMo|2LRM-c>p4IIa-s;YW>dr3`GQxn`Cc|0DM z%e{N|?ow408X6iA5%J{7llJ!Z#Kc7Kzui)&(+P#bWy_WU00II6I2=w_R~I~_udffo zu$Y(_*exzDRw|V*UcA`4b*pDtfu(&u^Y`~Zefsp}%a^C8r{`BrO-UliBTd7g=LtBLE;ODvFE<1OkJ>U@#aE1gWT~ z&}cOI`S}9_0~m(&_VyMO6f`t6cwCWKEG{iA4G#|w2nYZG#Ky*2EEcU+3omAnqeqXH zl$7-J^q9@&yu3W2P`Gj9MgTxTLBY+NH{06UqNAf1nSfiC_?cRvP+%BVU0prDjLYR- zy?Qk>GtT5k&%%}NlB|#tx_ly+1c64moInGsMYGEq$KAEilQQs z2;THdrP9{cR-@4vA0HnW7?_!v$zrj{#p*#t5{blYHp7h(0N~~2B@hVAX0t>hArCow z_UyiW`@~}Lx^?SN6oni0j~_pjO6ADNNJK;g-0i)+y%(Q`GYH}IzpI9Z26!*v*<3XL z2Jp8S=O4)axOZ1H3qpHFJ!sFU2kja4pgp4=v}e?V_KbSC`LEpKUlY*$0!BwiSFc{} z9C71WMn=Z3%7hT{ + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.md5 new file mode 100644 index 000000000..865f0a8cc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.md5 @@ -0,0 +1 @@ +8fe022190fb8b4af703989db74b3df09 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_22.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3377afeccf3381da61bec65b478277c51e2be1 GIT binary patch literal 1089 zcmV-H1it%;P)b3fHe7NOVco12@N z!~a}~p-{-}c7JM6$fRoIxj_z}80?3*8@sMG0antptI?C&;cXt|%My*ySeM4$8nTCgl34+jSwM$D& zO#XM8=|Qt_I-Lobq{!uRw1iR2ND%~qzW>J|hVk)nG%A%!&1N%-852J;KR>TjDruU& zy1D`YTwGiv6f`t6%+AiD`042h01ys`6ZEgIuPZ7lVzC(7cFN1kBaz4_nx6vza5|mr z47NS-;o+g9qhoS%G9Hg73^7Qh(o_UpE>}}iQ(j&kgixo`g~MS0z~$v-ZfU2OZ*M7zG8&EV@9zKrp->o)#{+>ty5bZ?SuB>*(^KYL?(grT6`iqW zV*g*9&!(WDU}R)uYHBJLi={QOtgP(#_!yZLjYcVo%FoXy2*T_28jVI&Q(0N5P$+tO zdd|+yo}Zu1X0ylRNkx2TX9oaKTU*OyT3TBCe!t)E&sZ}7%n#dxgM*Ps#AdUlHEVQq zbbEW7$K#PCDHIB4W@c0>l|UfS>-C+TolKd-;i#*tlgs5*RaHKpueG%`6>*cv)ZX6C z&JYA4lgZGtPG*{ku=lJKZ!CW~;QzR>aBwDKfHM&ToQW9VOvC_ZA_h1UF_7dZ(~XUd z@9!h4Nn)Z>sr>#vvKmNp|4;lf+@6R5&O{7wCSrgy5d;4KN|Linw23Ph00000NkvXX Hu0mjf(GmI0 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.map new file mode 100644 index 000000000..5c7828789 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.md5 new file mode 100644 index 000000000..84388b9e5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.md5 @@ -0,0 +1 @@ +1cc4c4dcff122c327c69c3c13dedc3fa \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_23.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd34695a8b6cfcf9a97313e58a8f907ce8f61d2 GIT binary patch literal 1144 zcmV-;1c&>HP)tBj z=lp%xCqm8X@oJCMi_Hx$X~`FVmM91h1HerVd-0-McNsZ+5_z z-()fo1mSYI002&>lOTxK*VoO>&6SmvwY4=eQ=w2C9UX0LZTWmYKA(SZa6rb*X7kk4 z)ZN{kQmIrZ6bau@>-GAfp&q6#7Jy#NlwTSgbGIpa1|^t=8B`+IsH8!-G^RotT)2Mx$|4 z6hfge89|%P*4WsXo0|(ERIAm2KmY)6d3niVv8t-7-shK;l#qj*oE!i^I2?{kFdB`1 zzaK#m2w_oC(ap^bc^iGAnHJL47K)3DF%0v1y+)%k?RFzod7l)A?I`}<^P__k(}q;sE}pPxTGJUlr$8Hq$v zT3A|IdVG9Lnivj;aU9Rf%R>;v<#OqCIx?rCqCz5(bai!|ot-^BJsAuJr_-5?_|DD_ z0HCI(hKe*dH+wuDkH_Q)w29rM9+KEEZQ*R=VBpmX?-e#Pxc8TU%Rf1VIpyNJQ?*5^7=?1|gJ6 zrO{}V-0%j2!IaMEUt)V=k`FY7gaA4oXbd00m`fv!xirFU3a*O8GVFjpp%{d^r62_%^R=h6n#b7_Pzmqr+KX@oJCM*aanhVSZGR8q?T0000< KMNUMnLSTZg9wK1? literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.map new file mode 100644 index 000000000..efdf67e75 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.md5 new file mode 100644 index 000000000..705c5ba93 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.md5 @@ -0,0 +1 @@ +8cd321ec10c446c399675698b2c22573 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_24.png new file mode 100644 index 0000000000000000000000000000000000000000..407da85421065d82d759dee3035ca42329837804 GIT binary patch literal 1273 zcmVDlccfa z!i7;&QnOs3v4u4;eaA_AN8A-NSoB5NJ#c1rD=i>Y8JbPvjo8JySIC@3f)Az@=b7WO%jV+}vDxdivz#BtZ}wjRpX) zyu3^h#Pjp>($doO^z`iPEUM)3c)Pp1D=RCfr>E)Z>04V{D6dp12L=W%FE9CgK99$9 z`-WO3lXY}-U>Mfg+B!ZyPUioniLh8KQ&Ur=rKMgS(QgPR)M~X$#w`T}1!xqYn3TdW z4EgeU6^TeBLTfWKGbbh{P)wTpn&IJLE|*IXgwbdO0GynhxD=$Mq(~$Z6yM(70szcr zvy1-u`FV77wB2q;<0~pE%4V~@p-B+L&KL|ve0==t`ta~@6!`o50{|W$ zA6*I*3WdpJ!Y~X%7#0?0u~^V$^oC|_Z7q)D7KZ-cBx~He-;^G3waj8`L^6~-zh>eYPI2;Cp!CP@0$K`VQ;o%{9 zjyE?q(PVgA6G9jn8QI<4Z8RG7dcC*%1-^aGWipwaot^#t{dT+Es|_O~Blq|Bk%^Cw zk2sD82M1#qrqO7mQYos5iHRvLF0QYyKRPxv)Rajh%IE|bZMii(^w z7>4EN=c8w`*P09lgU92ww6uhVhGu1DS*_Nst*xIwe|mL9|KU6nJ-ngOxCKygL!Qn@b_IxfDX1OChwm6hfOzA#Q$JpP!%q{64-VZp`I!xu4(1w*(UO|8psWp1Bl4 jn@b_IxfDX1OCi4iz(FC4v8gEK00000NkvXXu0mjfnOjtX literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.map new file mode 100644 index 000000000..d41d30f1c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.map @@ -0,0 +1,4 @@ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.md5 new file mode 100644 index 000000000..880e7c145 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.md5 @@ -0,0 +1 @@ +a08686bcc5f729a82c296a6cc288080f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_25.png new file mode 100644 index 0000000000000000000000000000000000000000..bc365a65d4a851153b0ab9bcee29ffed158703fb GIT binary patch literal 2195 zcmV;E2yFL>P)92zy>9{ zK*3O`3L0byZyq1e^CeVq4euzV3IR!tv~+QIqlW@n7WhEpQD9r-PC-En3Tj-_!*&;F z=RVA(cA+h8sSK3=FMgQ*=b4A6JUnzdbVM)=0}uoe%7N$tAP9nU2tmsLoI?mA9-Ko6 zBA%oEgYNF`;^JbWN?C=nv$KPPgNd%<|6*cdh%R9j2@Vd<&d%07{L|~9LZJ|g#YReT~Ai^s;sh^}H)kVqum-QD^tj`M>W8ylCZo>dJ&5TZ+%D=RB2Ha3>% zD(v6uih_~YBkjZ2U1OlR~fCykuttV^_Su9p{b@j^44_OVi zem-mFFg!dwGc!}SjUWhuATBO03gueh z#035PI3ACOAV__Ey_p#>4BNA34}u{5{r&h#M@L6^c(|*p>xK;*PMtcXR4Pr!FW!d_ zDuJN;n{TfD@yD#KaxRA5w|;nd_{fnXR4SE9rLx)V@$qr}y~bL+_}1It^)MqN1H-U) z@7|@Pq$DOL4h#$|KBvuTwc47Rn&Zch^Z9%;4=F7zb#`{vU*Yk1IXO8Bg`%aUrL(g$ zJw4rYywy~y>AQD(Ih>nx`ag1W8@s!oEzjFx?637zRaG%DF+)Q`QmJ%mYAP-+PJgel z7B9Z_HajnMadAmYOG6MuE|;4VuRD2&i;I&=rALn*MG%C=VgUdmBO?(6ad2?(@$upD zc)A}!rBa!Zk>TUxT$^5n^nA3x&jPo6vp4Gkre$^QQSEiEl`^5Y&pd`O{CDl02T zMn?31TukJwsHi9@DbcUFwY7Es{{3V!IUpb)B_*Y+t4p`bV7#R?8f{nC)AV!!oqqP) zZw0^n@*j;x3&3)mKz;Vq`l6zuLx&Ezxw(0Hc_k+&_w@AW;*GV~Cat&G9I8~R>({R% z2oe+&WYK{Q4Gn>Tfwi@@7=}qC5&*!xd-pI5o0*wuYHGT5>(-q+ckoCKhtu2Jd;k9Z zk&%(Wz`*wQc6`0QzW&OUD-#nFiHV6E4#(h22cOT+%F04fG%YRd#*G`gb%QxI8ckAC zQgLyyySuxwvO79Dm`oKP2fG#afH*_NI? zwO;4dt5zo=1qKC*Npkf%F5VmHils@Uc3MR3=Iv<3D~h?M^RA`zWx6FdjP=L*w~!>~P$=Ybxdw9%4h~jTRrU4t z87r@%q9Q*(zpbqeKXAc#gMRv{pGr;o?z>+B_!VE7nK5-G#@9F3qWo5Hbfj2%h@G__ z$K`U9l9DDSCU`tvNJz-w;Na-!sKFLn*Ls6&Fo!rQm0De0?dRuLQ&V%|#0iUzb#VA} zdOSHf86O`n7K``o+qZ7ry0WsehK2?JfVa1|Mx%N5?Ahkcn=MMN)oQD&s~1OOBi6qJ{jx3{+k1O%89Z_L4i z%nu*_85{fefq|(vZC=}kUE*@N`oDn|M5EDUGTH3xtfQl&TCLV< zwXUwND2hrXl9G}V8jS`3@bdDCjEp>X>=>WV_w@7>i9|FSEiy84!Q>AfJOBXbIspLK zy?eJ@E|<&YbUJ;0&V+=7goFemwo};^X7< z^76KA+cr5lnV+A(e*JoXe}4vpVXVd0wSGPu{~bR)Jzb?z>CUjtl$)E|+}!N!?95`Z zyuH1zUcDM0A5SKev$L}gA3m%L69@!!Iz22b%-7dfDwXctyVsoLd_F%SB0_%!MbXgE zQ2Z*k`8lVirY>K;{PN|?ty{O^e>Zb-a&%g z!anL`2dyWONE{9)H8qt&p#%p9E0xOj_V%@F*IM+9tb<^BmzYE%5&oug3BE9dAc#;X zoPVFu@4wHqwm$y;d+Eifo15h#(Z3!&dQNmv(B}o`aQPyWo!RWK*zB*~y!kJR!cN&U*xePt!{aYR zmjHcUE9_zb1lc7xhY&YP3SWj8ynlWapRws z^gr~C-){jenFa4}SV}~HGgg;5_gf&a0T4tu`2G-rhzI8of`|v_5Q2yY=MaL3_dgZf V#SJuhcb)(M002ovPDHLkV1m|DDf$2a literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.map new file mode 100644 index 000000000..ae7dc8f2e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.md5 new file mode 100644 index 000000000..3ee74b3a2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.md5 @@ -0,0 +1 @@ +f936b6c8bdc58c028bb8933191b34c6c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_26.png new file mode 100644 index 0000000000000000000000000000000000000000..5db982d56e0d9d0186516cac62246704b7d6c911 GIT binary patch literal 1725 zcmV;u215CXP)Q5d200006VoOIv0RI60 z0RN!9r;`8x269P6K~!jg?V4{$Q(YX#&zW+|p;KZm%ycuXEW$FSW-pc*q=U^c*4zr$ zwhD@&D~T9LL9oQ4vZ6n%wp?SDf5JCPSy8wb<){R4Ga-}N?&eBHXvD0g_dYMq!+ma3 zo=1D6+w*ikug>}2bAR`D&-b1`_im6RNx;G=9HtXsVLkW-U_D?S)&u5=r&oGiG!p?{OE+wDGZ;J}ZaTToD7x7&a0T(j8>A#^w#G5U)aFLv(S$>;OY z?VmYwW^!_JzQGq@92kv8k|e|7@WF!zH5!fA>y2p;4u`jG+xF$l7njSGmX`MKulSQ8 z2*PHw?ccxOVzJQmuC6YLM6z<_%ID9Yhr{7JckWC~OmuW~%s2jm%|%=;*I+O}2t6JT zUHAEXTefV;&d$Dn|2~h$0|0#f{Ml$U3WdUyloXjv_U_%gm{3=)T*=GJqeqB~iyIjk z0pHI>8#Zh>apFXAaWRj_TfKVqqeqXBE|bY1gd7ehD=W)vHlvU8DwV3Yw^ygrK?ucS zF#up}Y;4b-JpzGX>C&b9_U-%l@go(swzjsYs3<8Zskyls0PyhP!zD|WT)TG7=krld z7)g?c4csZ`UoD2a!nR>eZ_d!h(VVO7wcYg@uJ> zWo1sM6T>hhYBZXmp`q^XZol83lao_kUQQ4MJ=EU4dj|&x`}+D&)o!;J6%~m@qL~+U zI2`r$_3z)m*Jw1Am6fQwJ3Bi`lKl4VTYG!^?c2BS-n|O|Xl`!K&(CjcY$Qq2?REnI zluG5q#6(|T->X-za2&6!tfa!;x^=6ru5NsMT%}S004x^E(W6H(3^N!EH*VZOZ3YJi zM@B|88qEUq9Z935r6oq0m6DPYH2ull;rh#DG|qU06;JpMAhl( zX&#T)-``J?RU0qF*BtZ~Dq0s4cBAwo5{rdIi&!0zS^b`jIftXY; zUAk0JQGv>o2P8=j4-W$Xd_EtlqOm(VI*P)g(SryEgBcka(P$LSx676-i$o$MNp^R4 z0|5Mf|37wD3<`xpp-|A31zQis#>V7w`KeQtS14+s2I> z6B835ghrz=5D3gX5y$cP_;_k;WoKt25mhrYGpUv~n+?Zt48tIVd_I44bQC?Qsi~;| zfM75+tZf&1R!S2;s$x7Y`jew0-;bXV0Di0E9vzhrC+QJ3H-myGo@(T|5^)eE6VNt52Rh84866f@o-Hn3|eGhd7+SZZ;z$ zV`^&3@AsqX+qZ9#NTrPm1VLD>)`5WmD%Ho2AEW7L&6+hLk;v(E&a2qHN-8N)EQ+uhL6Kpjd;OY86NN0zKuu|gt|7z~C`D1_s9 zb#=8=DxJA!>+0$P0IXfRmQo}ViO1vdcsvlo>({T_Y&Mh0G&D36i9`kl25M_-TU%S_ zp6#DEJKq!jo~o*tO*chXmOs4w!dbwQQ(b3^>IC64wq*AFsAgHRU(rUGf7A=|? zN~hDgT&}FFtWBFX%{>8;NObn>S+!ct0YUq>L@#DuIJa~|hkbw3@EiEmHiHW(n zx%v6|>FMb+_x=C?i^U?9O6dxQVa3J8Xp>r6TIzDSUcY`V7K{0OzFMtLPEMXVrvDL0 z(*9S`+S-a%u=z$|nLFs)HT?&I|Jb*R|0S#k%)@%XJgf)I!+O9xtOv})dcZuh{I}%? z-t<`JP9P9izI-`dnZ<*Oii)3=&u@xCp`ceG`&P_2?0UdFtOv})dcZua2h8&acHeOp T?v*Nt00000NkvXXu0mjfi1Svf literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.map new file mode 100644 index 000000000..975bb02bf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.md5 new file mode 100644 index 000000000..04d962ad6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.md5 @@ -0,0 +1 @@ +87662e5ac3f382c4e9890e2f0c246809 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_27.png new file mode 100644 index 0000000000000000000000000000000000000000..1ff0ee12323852716c57adc37169794085afc8c8 GIT binary patch literal 911 zcmV;A191F_P)i zsv?M^pre9_LbO4U3dTC7polouMVC|@N>Zi9!FEv5423rDa1iop^p%)KNb{TSdG6uv z|J-Me08tdN65!8o3(yHOPh(Lkd0ON~JRVf#=^|gSg6UfzrTNGW=1Ll00011tF@z} zV}E~NG3=WxFE0ZC_V)HvsQMZW<}(xuiK3XzW~Zj6#>dAKiG;d#3WWkml9Q8@1VQ{< z)jKp>w^pk)5C{MO7>4;GjOY2m!NH1(3YW{Zv9SRF$Y!&s>g434y1II6Yb%vX$p`D@ z9@Bx74kI8QxJsB%}oG6S69~;VSc~Ava*t8S(>IJk%+vCAc)!7 zSqNbu5ZK<{mi%L5V^>#Ku~;mXN_BR2o}Ztq(I?8FDC(U@5wF*a)+#DXO+g50npO-$ zB$G)D!!nr+GSAM=B$Ma)#>U26E{C>2U0t0Z2%;$7-Q8grmP{u9t4a=z<2a7XJ(}&$ z$H&Lv;o+sFrF=gBStQT%<>lpeyB(PhheN6&Niv;ILkIx?cDw!I;QtA1Ar47k(94ZtFg>X20eSIwr|LN%|TDmPQE%|(& zW!WFf)AIhTs;ZiwpI=#7$>nm20c~w=7m@$?_!z@5m&+wZc6WC( z48t%?Q&W@A=bM0rxkK?$7g@w`4QGNQ=`}?-Hw>KJ%Ha9o>d_IrIv%0#f zPrrK4XH8Ab!NGyfonq#D#b}s$8ViMU=;6Hh002ovPDHLkV1gwTwc!8& literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.map new file mode 100644 index 000000000..e760517d6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.md5 new file mode 100644 index 000000000..1c90a6e8a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.md5 @@ -0,0 +1 @@ +ba89299cb349c224517905a60a70be44 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_28.png new file mode 100644 index 0000000000000000000000000000000000000000..d6dfbd599b8e0999656c21f927b9c50e0d9f85d0 GIT binary patch literal 1369 zcmV-f1*ZCmP)K~!jg?V3+W8%rF=XVS7Qi6kO1hpJHtEh;64QfQ>;!AldGRPR-ZZaPx}Vd`cmCw}`|i%{Y!b*Y4B+|i2u?eIvkGq z|7nHto73LjUR+$vR{wFwg+d{(*Za#uIsM*4EbI2LC;*Rx5;XaB%R5J~ua4US2MhN>RW)Jw5Sw z9Ao|z+;Jw8iD4L$BP?uOB)*-Mx!w`2{Rl#9?ucwL~h->g_b8Ovr`cSfs$dHEEY>R9F|BV zpFVw3DwUIylYYNnBoeWGZrr%>bZ2J=-4L0X zndln)e99n&OEohy)8%q~`0&B)b{}bKYHITNd<_i^$KUu^va_>evDp6pKB}&*t)W70 zZmvKeAW4#YwRJjOI2<+@44s{wySuwIP1|g?!^1-W08P^_mn#?yvYlVQevMXZVPRoj zUf#=>FH@3lD$jB0>FH*(`QgKdi9~{{mz0z+3}ZH%zcW^$P~5zE^Zxz&kw|21ZSBE> z2S}I8<#+DfsjjYGUS6gsYJPscqN3unoTh1sL_!e6?Ch+~W<&j_rltS@MMXvI z%%!EJfj|JAgd7fs+wJb?=vY}i71W{I2hR!8wwR&b|W^r**rBX?yQiH)Dkw|np9Zss;CGamF4u2rv|9Ck3nefJ8 z!W)MPZyYAPahUMNVZs}S$q7FX;+>@bG)^#1uh;+jIL;i9;r}0p1;58(!W)MPZyYAP bahUuC>r&o#Wi+7b00000NkvXXu0mjf# + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.md5 new file mode 100644 index 000000000..854d22bae --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.md5 @@ -0,0 +1 @@ +ad82d3480a6e94b8a6c77c6da65217a4 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_29.png new file mode 100644 index 0000000000000000000000000000000000000000..e0006ac9da42db098adeac09c655b009d6b8fafd GIT binary patch literal 1340 zcmV-C1;hG@P)MDv6q8x0Xd z@ks6wx$nU=xik$?5}`EGmZDrzHB*0{eHgR&-;AN zd3P?~a}Fd30w5@f%}*DA_z>g`bwS=x7vv3fu_bp@DphN1>ra(}2oDc0DJd~_U!6Cn zr>A3MV^%K-0RRAMwOXZ8kt4Q$PZ}K^wN^cdKcuCly@{av4Rt}@P#5G4b@?UUuvo02 zp&@G~T7e(-hQr}VrBVv&e|KS~V2(F&adE}P#l|*-5JE_&)0s@>@bEBs8ibI%hg(}) z5JD#>Cu2mdR_Em87}{($yT8BRjCwwStZ#N=K|z6GA8l=4J=T5{S1OfpadFPh&I|@a zBof`++?ZFq1>Y0KR+KrxV5!q3??QfYPH(c)l~q% z-QAsBF3-))C1)8g9qH-mYiny+Sy>Q54u=B(=;-M1@$qqVbmVfm>+9==`CeXL3kwT| zHjd*E!t3j6Lw9Fqhs)(+7#0!|va+)BM*ky00Ko3A!M`Jf7ESkghF9YPY(cKaBz^z<$8O2zneZX zG7=gZDwD|wf>5i~dwY9gv3O``=<@Qixw%;`mw#D+L?WrFsljoa&*vv3BwSovkViie z92gjAY-~I~KhMm}%*e>F><2BSQpsYm%*(ZaH|_215JE>sN3mEuIXUU??@t~T2n3Up zlUG+)5{X145}BxJXJ=<`Z;xS^gM$Ny!)b1A{xT&mFE1)83d699iV6mUF)=Y=qF_-` zQCL_QolX~tL>i6e?Ci|MBEO`wvs0;5no|6`SnPhI(P(%)UUhY~Uau#Qy1To_$HxnW z!u$LC*w|PTHGO=1*x2|o#n;!D+{SU-L_v3VcSD0lqX7UO9v)0A z@^d;nJ8Noc78Vx#{QS&Qu-G-t&CN|Jl^z@%^!4?<84`&^+4TWP67e~3_%A62Q!Wa005F7OB4zPpU+2s-uwuLZv^BI zG{5A1+OGt8LtT(J)CGA%U641_1$jeVkT=xjoqwPd3WfFSK;St3<~`Fp-thT+Yt@5z yMQUm)xeL)-0Lp^yH`E1rLtT(J)CGA%UH$`sK_Gc%dR1ot0000b{i literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.map new file mode 100644 index 000000000..769988ee6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.md5 new file mode 100644 index 000000000..a26a3b99a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +c57cc0030c7d3a9e44b4f20708a8d83f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e44e05dd8d0b8a002cfad686446f623efa164b39 GIT binary patch literal 1161 zcmV;41a|w0P)p!jZ6Ti!RetzEB*~w%wK}mCS zbFZ(jUrnBYeiv`t1J9cDwQ&u&Aq+7Mx*iPHzM-8%npY`B9YY8 z)SRB4Mj{c5#S)9f_V)I^d;^St)oT3^A*HRY4QTPfP9~ED1qBw11s{2Ea8O@g|MvFA zX0u%`7ap&xtDBshY;JC*)9G7VTY*48E|(V-6$ypH#l=Mkg2Lf2hGCD7j~b1J#bT9} zm1(uw=jZ42nNz70kH_op@Bh~+d_bvGDwRrNBxCzaJRVk8jZ%`;b8

gww3>})g|Rjbu1m5RY&c)eb`-M+E0fsg6#?vBM`mzS3p7Z)gs_Vo0m z&wO)pbANxY)oL>^AEHR#>lZu~f*^Lg9Um492Dw~rB9Xu_EE0*7mzT%malBs)1_Q7? z9uM?SgJ2kTbaVt zn4X?aCX*m;Hk(ltMGyprVJ4Fq3Wb2~fXd2BU<89fI-SmBGJ(tI^MQe)D2+zr@p!-$ z2m~OQCNqo00ttUUsf?{77K>#vnY>=F*=&X&D3wZ?OeVM6jsF6Nhlj+a1j8^eI2_K) z%S$8@0j|&I0|uANeSd%V`~ASZy}bp&G?|4$A&+7bb zCMJ`q(P$V9hC-qE@=S=E&41i?|0w(W`z0kMS-$D#eV63>OZKr^tuz{~wYAmf^No#- zsnzOSSCk*`M=dQaHk+-gs;Z--Ln@Wd&(G(&BC_vw*{8I$bbEU{*H!#NUi3>ILg_*d zr3*QfF65BxyWcn+{@)1%0u>b%#0ZHlDwQf*_2dysrIP5v81?@bGN}E997-2*C|$^* bbRp+&GutLWmQr^u00000NkvXXu0mjfN|7aN literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.map new file mode 100644 index 000000000..8756dabf2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.md5 new file mode 100644 index 000000000..cc64f617c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.md5 @@ -0,0 +1 @@ +388b2bb7b074fbc6b23cb65b17a2d52c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_30.png new file mode 100644 index 0000000000000000000000000000000000000000..00d80fd2a815c93944aa1ea1917ae9c0108239cd GIT binary patch literal 1573 zcmV+=2HN?FP)kOK~!jg?V4{$Q(qXz&rvhC*_h(AH4#k0H!?(rOmr6ZqBMsX=|q^6 zf2OWNk(uCLgosg?g`sWWVyl$J`lAq;lo(3s5EcIsRO`>^I%F-;vMK5H_Tv6n*QK`B ze)AIN^Xi=EInQ&Sd%oOz&$;(Pf*=5bmiX;-0f;R@+RzuI4Shk{(3b#eXLxw{%9SfS zRSF_GIk~#J+S%Q3-F*D`@!q|AJ}(IY001VFX?S>;Y6 zp)W`q`hv8fFaL-(@$vB;9UZ<5^Z`4pjYuTYYPB@X|9=R^x&{XaQ&UsPIqC23_pEp?TsM`Kl>|Z9?e@~r(!#>R znVA`?GyGMT4OpN0@lPft6I$BrGd+wCJGBLIMP^7He@#>P&aIt3vVi9`T^YuBztM@O?*EU{QTK0Z#4kBp4$>+2)i7=}Rz z7Zw)C?#q`i#bPm=%}z*2c=6(eOa84A0svmUdX=7@&StY?V`HB@dGc%ERx~#^=j7yY zIGm`csFISB(a}-Tu2QLrii*n0%0fayVq#)iTU-BdF8{-8+Bh7Jwzf71p-?FNncdG% zE|*`wejNaC`}S?ISR54GkW^N~N-+qvP}E&rMBD27}?Z z1!y#yhK2?V!=zGaW@hH6PoJpXZ4%zPb?f5Ai*s{xg@uJOnaqO^T2`x7uh(a1X9ECM zS681ue;yVV78e)CVzH8vk_H9_{xl(p7qn? zZdZ!mhGHZVNpElO$jC@~dU{$~n#17$05BK~=iJ$BHtP8I@83Jy@7}$OjEr>2ziGn1 z2SUi>@#^a8EEbE|Y-TVRv9YmEFF_ClLAacnn|O17!{Kn0N@ZhX+O|7l10RWypeOgynXEvKxS66WyUtV5bUtb3R#K*_$bh?Fw1&hT}TU$#F z*Jv~Y0|Q^be!YD8GKOI}IXP7CRtY@@$ML+pyorg4m6a8X#d7}q`MrDhlBy^aiuU$) za`ATI!UY`142w~%o;!E$@#Dt~216tg9XxoD!{KCPWQ2r- zT)leLXf%?$qDz-9+3j{dpP!YLb^Q2oYPei3SE*F{_U-HJ?0od-5tqxQdbdjG4qB}i zLMV|)a2zK$I(EC=-``&*lT}nygocJDCntaT^5xmHXS;XrCMThyqCz5(L_|dN^z`)f z^ze8*4<-asmnBA{Q7V<9KW}yf@*4s51I<73KJA|bX+vL-HuME)Ltl_K^aW`{UywHR zWs`rPj7FpH>p)-_=JK9t6K$kYsjuomY~aL+6Vxt5Zvkivdfw0%qz!#R+RzuI4So3m XG|P30+vN2;00000NkvXXu0mjfrZ)w> literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.map new file mode 100644 index 000000000..eb655359d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.md5 new file mode 100644 index 000000000..994f3c528 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.md5 @@ -0,0 +1 @@ +5a2b620ebe4a488c39b0491478c216ee \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_31.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2c7f0096cb4f04de03012932251d6e726c97fe GIT binary patch literal 1583 zcmV+~2GIG5P){LYK~#90?VMjoQ*9i_KaaePoUtsXP?N~OqKFYCv74>%CRa(+MbG4Sahxl4Q z8L_p@co7JNRRroFAL4V%qIPEHOtZ{8#l ziE#GpS>C*P!=+1?#wCZOUncZ=J*B0k2q6dtgQMD3ty)DS5}~`h8-RE3-qF<5#I|kQ zG;zLMS~qOiz^z-i*t~f&LI^At3jilhoFF?po3ykvtX3;MJw592Sy@?JzkXdUhe9EQ z5DX0ssdasQeORql37cb_?Gzo!Lo|NedQ^71ek49uH1k89VijTsBz>eZ`E zpFW+Mni~51`$zq76h&eC_U#lG7gJqb&D^_a_aj>M_4OP%a)cKz zUQkq2#HLM~_|~frNmo7!G*W+@z2#3QA4i3iE9UL5_r>95V z8FV_Gw6wIS_X7VL(qu9vG@e9B`aMH99HyY4fc^XTGcq!w>6e+AiQR6;;c)Q&{d-od zSn*SO+1c4NH8rt&_il1?b15z^=JxH|3B{N*XO5;E3Wa`3D>E}w{hped3NYr4p5O0h zU|;~9PKOWzqtVFV;2_P-%>ZO%WB~B|`SXOvlPF2QOk`waP+MEeAod_X*C~iuMHuZvn0@~Wz=Ry}c-kqJG-j+to|O{Q2{lJ$rW2_bw)6pCLUx9k<)fp+krG z@Zp1|-DC<<=3`-fxBm@$Jpckb}%(uiXkBp3rFg!d=EEWSk zZv@rV)iE?Q#ItA5C@(M9#PoW-baZs^_U&7$tE&lxLabf8R@3i$T8Yrs)&{_W1q(*i z+iW(1!Jzu6?eTc<`~B?QyO)O#9}Fw>MqN0L8Ads+bJSJ?@X~&KoM59sa>gvWN z-kv>sxN_wRsi~=0EEbk6TSj_%I(ECAY15{0?AS2^fq=SSQCV3@Boe`7GO>E~YSyh= zr-|usIH;(oVCKx3G&VMJ`SN9TiT;xBX(fWs=fiHdYwC469eH_q>SJbpem)%?9rX3} zVX;^+8jWn+xRI$-r&3T*kg#rCl&@%RZdT${Oa2nRF~5O7W;E ziZp{nMVdjPBF!LC8S_>7@!Hjr{9bf+c8=LLrWwY1w_fu1A{0gbKZ692|IZ-#5@`mB hiZp{nMVdjP@-IgbS)YLiCV>C|002ovPDHLkV1mT-1H1qL literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.map new file mode 100644 index 000000000..5e69d0b66 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.md5 new file mode 100644 index 000000000..f6848c29b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.md5 @@ -0,0 +1 @@ +a45b337701fd72c704017f44bd397e8d \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_32.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8c7f7b0c0a28d91def468c57cc989a7f70d088 GIT binary patch literal 2616 zcmY*bc|4R`A0IE-vSlx2U(2;*r>GHQia|;)Wvqkj%Fb|^!i*tfi$StxsiC==3WKo@ z*A`ylGL{f7LW8l)+~@vv-}iGq&+q(o&Ut>{^IcAw9Sp+Hdw~}O0`WtwZruguPT*7G z<^(Fs2m$XL_HB>HTH_BhA(;cHritYR*w5gS(hXDUS3{cdo&tte`&ZoeY&{gag#i% zeIca5iz@tOY>dG?-qtf79UZNQx4DjeK%T~wm6t=Vs8jDZAOgvKW(_-i~HorJ(| zmMMyws;ct^J|(Z~>M+G7k?(zmrNf>)(L0?DGN`Pqyv96S5|xn1oOa^$9M6Zcv9UR+ zi;G&kuB^0Bz?(#B2&5#(AMdk;9R2jGt*iU>^V6FA;Rowc%pXkvAxiF|GH&vz!xY^tKcwziqm`%9T-xR)3wH0Y5zCs?QRa7YQak59whD(@4Ze9HH-w>ntBVEV3+`c}mq~v6%jZI~Fxp{7N zRTXfaaj`)8sMXDzZ0xT_;6w!f!CWk%$JNC}%GA{KcM{2y`1Pf6c&+8!^fa14AoTQ3 zjEs!5*Z)e?lH{{4xcW@#PTmj3>MQ@Jri^bQU@+K;6m%&tFwix)6u{o;tz){S!cuRh z&)S#DBBLjWTZ>Y3uMp$n`bW*;7WSza%$V`yTHnwRV)k=5DB#bJSzTSXFEDVKIBZ%@BxX~yRXp|aq0O_P z@ySUARB2n=tG6zs-BE~4P3ZOgDbI`7qFw~IojNu>aCIF@7BscGcTe=JghmCC=&;9W z_weB#01Bz;=@%o?#l*x88H{u1&UL)^9x#mF{r2KB7K`ob>hhgNV=&Q2Yt^G0bbtz` zhx6>%IN)b=4Gf5ZGy2oh)2Udj_rca|XT~-z6*Kj_U$$fg1E;8>a<*=wwub#Nu&#_u zo~yG(BFToxlaJiIyu!1yv+~Bq&H*&?BY>M}?d>+8aahXAxFA+R-G-=^gU zPXWlpY)u&zLSSyv%rEi^3Krhpm6u6Q>K+S}XJBr*p<)x2ATk5d=sh5=*&H4oPU-FS zv3mvP9;MMV$;>1Fb0Q)ND}#80H!yqqEN&j2b18x{jx!mTOq7F~H}yv+Csj~Fl!cH~ z9uZ~k>M=Ex5Fk-=P+3z`xD_pbNqDarF@C_O0xN3wy1KJoM_3H|)bf);p;$qoawaBt z9iO2WMMWp1lk-?hKzGsmUwzUr7=BQ!K<(Ss8b5_?J;#y>SP>E6bHwI!_a=$l$j67W68l1Xt;lg<3T|iqJ`4|OA zM!K&xdph;W^Z9u!e_YT{^XdpwsuZ#?&#Q>ONN**F{pxF|Js^@^%0 z%XrtF6@2hwh#|M2po*T}ed0AqSwIITCvnQwFK^txFE;ZbP(fFB{LXe5*%E_B^D5hx zSl_+bIUZDj?QmDPbYnES`>>KxyCbR?aT>@d@j_6zS`wq@<*ZPNI5ImcwcW^in$6+84VqjZW&Q=g&R#@t;`C6+)Pb z0n7clPa`72R*NHR<4;dc68EH5b8 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.md5 new file mode 100644 index 000000000..851893b9d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.md5 @@ -0,0 +1 @@ +189c2435c324f1057aaf97e832f8d5e8 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_33.png new file mode 100644 index 0000000000000000000000000000000000000000..d094da5283f35378a97baccd14a7440d68cd879d GIT binary patch literal 2503 zcmV;&2{`tNP)3KNz?lQJTqjod;? z8DOFV@w8FR-1;$XD@&Oy^hgLI7y;@(;=Kv3{mvcL)zxg@zWqVeB9StBZ}`yfM| z84}6Ao$~T>;^X6o)a067;xb6HOI!wNc8SX%&HjI8&z?roU1Z*OnA z{WUc;yz#~xYCAMEl)}P7XOur8?#%DZSa;6fAmQQReDJ{sPRZ#EIyyRd?X}nN_4P%k z)3I>jLQb4GF=Bm?EnBvrC<;YIMPph1=v~>3Mk7K9EEWr^R;?m2F_F`!Puukg3JPM^ zu3dKfcJ10lP*Bill_j|k)~;PkOG^v2wY8YdW`cu*S+Zma0|Nsi(gAEX8~OS9tX#R0 z+}zwTt$);)F`k~Dq^GB&C<^uU^>*5lB}=eaEF3#_41gOqZctiU%Iejt9pc>n*1v4o zGHPpUNls2iQ53?%!vV<7&c@4owP*jOXw#*G^ojYjl( zJw84@#KgqV+}y0{F)=YHih@R?!C)}3Wy=-@Kf(R^=btlY&K$dVjg5`Cxw+BQ)P%`o zV%Dr#c6viY1McqbYL2?PIua5R2nYy3r_+&^mPSWM2Uo9N9gz<3?YG}DapFXF?%YXZ zW23_bu)Dh(qtS@LU|_<839Medn%>^tzdct&G3sWwTCL>d|H{X0iNJt0;1qBEpsHv&p!i5WDW@b`cTuf(YC!c=$DW#>Q zf2&rL$;9T(n=zZs#K*_;(n~LK{rYu>ej~|MR8+*rAAiiXYu89jOk~B172NMv2NDw# zX=rHR@ZrO>w6ri|#th=(;;`9l09001B7~s7zn^{k_VLwMU#WGy{`%{jJ9my#r%tKy z3JVK)_St6%3=CxX^5wL&wAh{Cxw*M4Uc4B+UJt<1rAsL*E5mFy)7{;T$zo&oFdB_^Z9v_$TCJ$8taKQ&Y11ar-rg?8j~_2OJ3B>CP>?uy@Sxbgf4}hZ z^0Mn678WLU@7}GpLqbACK|z7qzI^$z@bdB!b#-+^*68o=FRH4l)OKrYs{q7rzx^hJ z5F$7@SZv(5(QeGlnKMOhZmvWAd*uoa4i?+CZByI7{`#u`gxPE!@>uSiuiLlx-+$k( z-YZwGsN)6(282$h8@7%eJ9dcp_;|Jb>Z`Acb?ep%A%w8mY(lTsi{j#9RZmY(7t5C~ z7eWYe>((vt*kg~0y?ghndQVS}c<#C9)Y|lVy*P8`%!u_XSFVW1AAel*_4NrMgs@mF zV(QeX!fLe&A%tjdZWe%OXlNMnct*lq{98WiYxa(g4q{_t`S8OJ?bdFC`1$z}9UV<- zYAU_Gy+lPt{iA#agMrf0Qr>#&EkZ*>Nl8iJmtTJQTQR0jpYG5$o6Y|ym!F@X`nQLN z2LLy3-W)df;C$V_g@uKwdShcF0RH~|>dn8Kn;YHT-83~d0e^kOWA5C!czb)JC<;cS z(XRgFRjR8-*Z?oMoMtg1i%{PXzv z`O((aMo&)gDyEsCNrY0@Ox+S({9D+8dZsR=hXH=cOn ziDBpIei-#-jIXaRd3kwUx^#*B{QM#Nq@|^?ckf=-tXYGiC?kri(KwbK8ym}^Lx(ta z>===ekt|rS0ISss{AIY?&DPP;;V^#CP=j2)e3@y}rVW|@Zn;JSyvDs{7Wo7Z_pMR<`UU=aJ9)0vtDl01~EG%T%vSsRt2=MgN zPZJgvMqyzgCX+7Ssy852F&1NGn zFOM^4&e+vnRaK=fWdZ{O85kJg(xpqIGKXXGoZZLAhs?}OKKke*`uh4D^oWQEgb-wA zW{x=KlqplFtE*FA%&Mv?-hKC7E?&Gye}6v%0|VT=c~f1_&YnG+f`S6Ny1Hm?ZswhL z-f@U&GMPAXZe)`Go z@#v&UlL!n9Bqt|__V#vqdwa>w&ZfV=pWxu&d+LV{9RmJ3p>Aivf(6vq*Hd3#Pe4Eb zF)=Zuq@-}}+&O;#{dacn-c4m?rBmi`%>JpAk&%JbYNeo{z$x+Ge*0|>9z2MLhX>)| z;VfLZ5FZ~OqNAgkFku2&Sy_~qm#fd~Kl$VnEEWs?{{FY)-0l;qL@B?I<>X6ELyb48Pn&S z8&t`|!>wDl#KegcMQLg2gD&MC@jz}+CI3By5ai_K;NjuH(xpoubU99E*e`ELTn|rA zPkelQ`0~py)f>}?32AnT%H1A~J`BiZjKpP-W|z1O((DqKL7H9SG7NizT3%j0mUT!Z zPNBNGdRT2(vk&*%8xqNX6-5a7`|J{zK>j|v#C4Enm$(el>=KtjnqA^D{13>}(sVbc RyK?{l002ovPDHLkV1h+q06zc# literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.map new file mode 100644 index 000000000..2668a5553 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.md5 new file mode 100644 index 000000000..4eda18e00 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.md5 @@ -0,0 +1 @@ +db104ffd0bed1c2b2b66be9a2d94884c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_34.png new file mode 100644 index 0000000000000000000000000000000000000000..842798e42ab3725cc0ea4103aaba9261996bb4b1 GIT binary patch literal 1440 zcmV;R1z-A!P)a~}>2xzYA& zotvR`eoyCo=gY}|{yFEHGhrY}l7PjraF`bG5MfPc0M>K{U`=NLXWP#7^mKcBJ5y5r zViXF+ix)4b?!Q(#j^o3_!w#49moq#(jN`a%#QA#C(9n>h^gIY4gmw|OrZWI*Is>q# zGr*s1dR$zbTCHYU#hv-HO}FI_`T>5&^wiYU^73-34IzXOa=F}yh={(vKHD@1;l#uQ z6^V(7X=`h{r{bS6Gc!|ISV-f94Gj$t!rtCq8s|jNu+rsnIZ2X7M@L0PMR|F7%gf8u z(6eXHs;a82R_p!0#la8+q0wmGym_Nisc4^^w(`Q|a%D0Zgixo`Q9-FxYBHHVeE4uZ z-)uI^GgWsW%QpiZUb$mTP&8&&Q1tnOiTp? zcKLaEc^exWQ&UqrJ3B(5Fe4)ad6Ai!d2({HxVSh!Kab;hZf-8h&&|zUSXlV_^{Za5 z7l}lZlas&JGdeo@?%lin{r$MOxa8#IwY9aSrKS1#`7d9-jEsz+oUySnk|ZxLFF$|& z{PE+*{{DXI<0_S^qM`!BFqur&-Q7*a?<(VFNE@_TtzG0sQc_Y-NkMIDDh$KWWl%#k zH8li5#Ky+f*4C0FDH4fVTU$wzM32P=g8^k)tyWi8*QKSUt*tEpfL^ahakOcSMkCq> z8yg#TN}fM|-qX`_y&V}D+1}oc+LM!$5JI!rjJi2FIn~wG*Dvb*`}bK{S*UF=82Eht z#l;0Go4&rj7K?=>$)CyiH2?suR%;uft)?Fy9;T(G)z{bCRd5KQQmIrbl?H=>3hMQG z0DzyLAG!%UIXRh3rtR%*9LJrVodp5`N(&7Q1pweUzP-KeaFv>bm!#*NTc zUOYWL)oS(D)|N)2u^Wnyk55fat*NP@B7uQ{91iE`=*af>PfJVV^Z8d-S35g9C~b3d z69B;H^92Hd)oMlifG!RW4zjbe>+0(E_Vx&Z=;-LUy1D`Y5CoxCt5;T5C}H2eeM1$7 zE*W&5)7{2!3-p!wmbw6xS>v0Oi{gocK`efyR= ziU0t5dwYdKp;#>T^71MzEtN{8j~+b&0BE&Z9*-9h5g`(Z{QUf=WAdj@pTfh#Q&Lib zgM+_+|Nipj%X>-{2m~!HE!o-GuCA^Mh2qt#S17Jhsl;NjZ6=0cNl8iQ>`0Fc+YNrp z8!5}30RP90l;y6lrZWI*Is>q#GXQHk1F)tu0Bbq}-0%v<;NYO+bv!6;Fg+_P%kerM u6p&=!Pj@(MO=kesbOvBeX8_i82KWcQGK80AIh@u20000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.md5 new file mode 100644 index 000000000..5af67464a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.md5 @@ -0,0 +1 @@ +47e03bef0106d920f6df1a4650c42161 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_35.png new file mode 100644 index 0000000000000000000000000000000000000000..356ddb54bcddde9e44a7f258c6cae2ac2d9b718a GIT binary patch literal 1494 zcmV;{1u6Q8P))teC%Z=T43sIWnm&NfMGIQBY7oWo0Ed zZ{Ez%{KzRPDq`!_tvr1Aa5l=BSAxMH2M!#Vk*1}k1xb=~=enBoPXQvgYV?I?kOt$Jei42?PSv)YKqJ5(^eAz-Tnm($d1ucb+$H+{nq3C$U&8 z=yW>Pu3gLh`}gJe@AQ{1U&d%OQdn5Xwr$(!?d_Fg@pzoQd-qaWT1r`28T1jg2Um!Xf#q%Qo^A_hxq>eyBxoF?;cB+F6HXgt3)D^i~;gH{hyF`^OMOW zSFT(^k|e6Cs&dl!{eFZHjE|3V`}S>a+_*t!XXm7x_V#wpo;}OZ&=3s`4cKfp+2HB) zZ{ED2xw)B+jt)M5{>+677bb0c&z?Ob5(%C?d&ZL|Pl!gN*lf0(`~DT1%|>r;FL&?W zB@&5XGMRYr;DH=>xm+AQdK8UDgWYcD+O=yl(*F_S7rb7t$g+A`s;jGo!{M0J2INJf z(FniaKcyy-NQkDUCQ(#WB!-5DGPd8^+A8Ym>g4u@4I9M8ix=hg$jFEQL@XA|THnw5 zckkYb!oouF;>C-Myl^-y01=5q+0|C7ka&3jE#*6A%qwn9v0>0t%tJCv1`(bd((rcImBYPCp`gu~$=7K=^NmX?;vpBFD)48Z8v!bwc!)-$XfzrmNn+WuWef}q;PrZQ(*G%WpZ1q8Uyj@DCL9jq@pvZ1e*8ebefvf* z7{p?+@afYh>g(${b?Ov@gM*~gX`D_c6B83T^_Ppjwzih;?rt7GevHLp!E82@OeWFm z^-N4m@bTkEIk&H`4*5-@Y>GZR~ zoLuJ@7Z=mq+{~FXXBZnBn>KfJbd+>D&5|Wc&}cLSgF&25XU={7PT$kh!-*3o==2$m`dyNhA`q zwYA~*`|0lP24LN~b(1t^vzbsRL?{%RRzDle*`GXz4<9C(OmhAD^=b1A1_S5MpQpaQ z9-U6dv17;By?b}g{rpb9efxHbi;J;Zt(26M;B-3i`Fv=#S^&IWFIugZ%F0SiCKD@H zuKc6x?~aZR)~{brb#*lr6%{;v`jj0zcHnZkuv)Dd`5KJ|i^U>e_D!Xq6=raPpzF&^Fsk_qMm1l-sOBq}DIeYT`FwL(hf1CZ1OijWrZj)5XT4Sa wKS)BT@8>HN_5FM$qnfW^RPz;#YQBQ`2XT4QA9uR~`~Uy|07*qoM6N<$f_FdqK>z>% literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.map new file mode 100644 index 000000000..e7394ad03 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.md5 new file mode 100644 index 000000000..629a81748 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.md5 @@ -0,0 +1 @@ +f161f3f640d27ec87610fe7e0258daa2 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_36.png new file mode 100644 index 0000000000000000000000000000000000000000..14d655e7ba0a3c2a1320a8b6d109441f43648a04 GIT binary patch literal 1122 zcmV-o1fBbdP)dFE6pQw3LtuQ2?LM7qQ;2R?h#tEka2$uay1F;}=ywi}q2}-yY7UQ~=J1%f zm}4*)Ff}z54=Kts;$n`+<3V$Cb3CN}TJ(B7W@cvMs!6vs9`h~RT47-!`uh4{GMONi zN-;k_kHW%2*zI;0jYhC63$0cQm&+B-sj8|1!!SrnN`hLg#=yV;o#@JT z4~xYDhGAeZ7`|H4-;h68SXdx$gx{sOxR^{%PKMhWjfN-`3gU9PNH7=-$K-N3+1%VD zcXxMWaBz^YEK6=~ZeC~wgF)i;dP!bh9&tLI?`p=9qf)8J-rgSZ`~AdXu@I?LN?KZ4 z$nEVdIXO8Y3Wb7j97hNtjf-Ij>^5xw)^}KA#W3@7qOMtrilA1PsHVv$HeY7fCagoQ#Z&@OzO+gw)hj zh{fU;u|OaI08p#dn46nJcXv1RdOez&ns9h{_=&5J58q}E!!WO6=jZ1y+Gl5HP%4$U zzP^UpY({^7Kd!E>5DJCha5xYQ1|w?5n)6YrtE;iTzK-49U6hxXqqMXX4-XGf^OBO{ zU&@4@)+Qz* zq@?icv=$2*jfTw5&c9-&roxC3^j+xP;+?9FKqG+rT^b1b^rhX07*qoM6N<$f + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.md5 new file mode 100644 index 000000000..6aec8ecfb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.md5 @@ -0,0 +1 @@ +2ba122d741860d8a73f208c9d30316bb \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_37.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3154f570ba2ed94a15eb2eb37c0865386d7de6 GIT binary patch literal 878 zcmV-!1CjiRP)5fL8*f-O491mrCzWIZgsH=tx$?va1yMwWLQ6@sx=4pwG+-f(Lm=d@!jEmNrsSEv^PR(& z_szLM0tG<;WeW1!0)7z9n>s0HZx!-JBobL!S@|s~#naQ%GdnvgHUF8nWHNblbX0Ol z%5Z*u9*IQcnTpSY4i67YrAJAIhller<-FfCZ|X$zrcMg+*5BVhGczN_5JCu{PN!>Y zYYPU0ipnbr1?G*SC_xZXsno>81WA&2cX!3tR0PG=q)w-snwo+T-rnAdnU0Q*`T2RP z)mmFyySKOZ`ua*y6prJ1z20uO-{0Sh!!nr+MNvkhvA({3a&q$R?QLyst+TUJs?0D9 zilQvbepixW-Z+k1Utfn1S}YbRxxKx;yu6%Fr(G@=Ns{q+{Pgtn;o-q#GC7^jTrLLy z7#|ua%y-|x3ttpID#Ol zR7(C{9S(=VVBmQ^kx1lK>+9>QuCAtO+VA(fT&|j$ngS##dB5rP`nkEerKP28Hk;Rl zVc6i{pxf<^#bO-CU0hr^ozD07cMQYqcDvW>jYgv{FE1M#8#GM=01yNrNpf{{H53YY zz23s~D13MOd_Iojc6N3?ckS-(noOpFfq}-xMxW2;cDt*pssI3iK)`G^+ibR$mX^!Q z%ii8zalFUlIXgQu8jaoE-36*C;4Jx@{K#4IXVJW=6V01C(Y&dXFTUX&92}HhNAWy9 zJ~lTu%QIhi8yy`jl^%s52twY3g7*JSjcDG~NjZD_0HcV1Yj0z;VgLXD07*qoM6N<$ Ef>TSRDgXcg literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.map new file mode 100644 index 000000000..0bef81fa9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.md5 new file mode 100644 index 000000000..dbc1c97ac --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.md5 @@ -0,0 +1 @@ +094d47bf89b4692d513b3c18447ea38c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_38.png new file mode 100644 index 0000000000000000000000000000000000000000..58a4979bb6bb0510e2adc6580570174fefcc2a52 GIT binary patch literal 1648 zcmV-$29NoPP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1|>;EK~!jg?V4{$Q+*W2f4{OzZnw>q?nPU+IU^WUQbO&8MnkjN_M(_9 z5q)9w2ZpScVFd+(ffjT9hoxgA3!BS&(FWEMg9umDAXh}LO>KAOpOrIg3vIj4iyvI} zm`^?H*>eNEpI7I1?%DYrzV~qMy*~y?k^~I2u;fn{u!vx^rVmDI`e3xCkBsC+e}8{# zYwMpXW#J){$@F?XwftLO2ZO=ew{O#4(!#{;cK7%9Cwnq}46@tpbk(zvsi>%!<6-7C zeK1x+tta2%IPrB9zeH5d#+p^(ev z9z1w3kw~DhOP4N*#bP#_T~t)$@pzC^C=@9yK|ly2kqF9p`t)hJT+ZQe)~{dx z;K2hF6AFdO%gZ?&j#MhWeEBkjFdPn}OZV^JU%7JSwQJXghK8uV0RVjY@`j|CwYIh*yRWYgLO4A=jh0naRVPlIAW1S1 z2(a1gfq{WJc?1H1%jH6LFc<^?OioUsoCbpd`9FXD3;-Yq!sqh=0463TkiWOLms*BG zp*3sP%*@Q7sknOe>S#1dlH|z92mrw6^ZimB3bk6TR;!aeX`9#M)ai5tK~Sl3a&nNdeED(~i^XQM zsbwq{0|1D{;?B;_5OC=J?e-SEeGbAS`r@g)1@AsR{<~f%*9FA72 z6^TSoo;(>F8>_6WJagvE$B!QqiGtf-NF=yiE{0)lx7%nm zrnH62mmH#HE&1Q>4A`*#Y_wL>3Kn}w&lgXq| zD3Zf443o>{=;hC9wQkt3p{%SdFE8)Kix)d~>`19{0DkM)xWI5aoje{d?P-5}HqLW? zy%@0BY#A9DJ9q931Og2W4g2=(qhZrUdLB|zQewB;*REZwR4V0ixxrwdVbew0*Q-{o zx^?Ro&6_ULzWyUHTGI!kHGMEz)5ko|#;&d|`s-MD5CkC<3X?taXsyv`=&EOdqgJbv umyl%se@z$6yrvIEYx-ccrVmDI`uGcWk&qO=0p^te0000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.md5 new file mode 100644 index 000000000..569a1d5be --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.md5 @@ -0,0 +1 @@ +091acded027244d4f3129e0f10946f38 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_39.png new file mode 100644 index 0000000000000000000000000000000000000000..c39529cd3c9fd578b82c90443be7fb0ba8cbf687 GIT binary patch literal 925 zcmV;O17iG%P)rfbm&r$KGkq`&FSS%%j#X%jqh^Wv-3yDyObTSmd zNlQiQpy1#j2%>`ErYJ=ztvcx->flyU5d4{Hj6aQ7+vp%QMJ3H04wPQ6-U~6-Yujf! z-`kUq_iav2+5{?!0&;+Y?>3Mj@;S4MT*+CKUIc@|si~>&vZ5`Gjg12X1F7=2^BE3@ zS65dvZb^Ig_V$9oV7gND=cJXDl}!2hDmptm-zd3qedcp!7e6UyBocuTilV6E*q@a1 zGpNbg-rnBd-=7*o2qAFMWtYK~^> zR;SbT_Vz*uPfkvdGBYz{GMO+8Yi@2nJUm2VJRWzu-A1F4AP9=0uCA_--q6r6GBRSd zT5%k&sj1o8+Cuv6?JY%7IF8rW)~>CsskWzCPDzqxXJ;XV7K;S{5DJAn9?#O!(*6DY z#KeTp=R?z2mOVQ=+uhy0zP>h_&33yznM|UOyk774_;@4|VOh4Ts|)=xb~qfRrKKFl zt*@^yE-tF~r=;Qc``;+<($?07)+!pOS``-;Z)|KJo#%NB!;X)S(+>=X!vKJrn;TTh zvW(+6np0n2KRG#x^oNHB0DvF}9LE6w?(Xi8zO%Cf0Eoq6|8&SO48t(#ie}emG#aI8 zdUSMDmSq5d$z<~Re1n677K^33yZh+q2mo+#aRC6Rs;WX;S7Bk{bV^)wg^Pft(LXcUz^&#Shl<^7W&2#?1zHa7P1^0K|XJv=hGNl_Hbvg)0w*oXdqzGNTz5#)1b7x|poMLuVC@y>J2Kp>ELAKD@ag27-& zSKi6#a5ysM=L=yNCcT78{{3e*k + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.md5 new file mode 100644 index 000000000..07028de7e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +d0bba657e71229bb0975d1d5e96b55e1 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ed97ecbf8e19133ba633e858c4abcbe4e9ed7f5b GIT binary patch literal 1579 zcmV+`2Gse9P)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1>i|UK~!jg?V4>!Q*9W>@7u*Gb2)=)m^x2IWRXcKX%O1W2j5y@EOd}l zv;>W5i625C5SNgM77?-_oe;@-|Sh!6rioZz$50{$X+uepQwnmc%}xnmzY7#tj|t*zZD zDSMBL7cZ8SlrZ7H=Gtbny?ghLb4hy>qtQ4xILOZI+g#Mv*2a~dz0B>~w_P&)dCeWX z*WAH-%^keg+_9Uyj*pMmYPCD9!gDvBz!q(C5OX=yJrAq#c4Dey7Kq$-$g}55{X145~Zc3S*=#L9S}kWgCROPdUbU*I5^m3 zGBFyQPG?b35su>l0Rj2>`OC}82%*cDFDsQwx0)v>CyyOFW;UAv0HdR$Te>8Z$z(Da zJL9$UnjnamFJD3kV`F0h0231vR;yK^P`EAb>gqxWt*@`Qx3|A}^QN`6m04CMG84+Ajf{bI5B?Afz^ets7&TgnD~>0RXeJvs-q1{``4HMh1Ny6&0mYshA~~keO?n%?1Fl+wF9o zBuRgN|FN;L&0FktdstZ5+S(dI$l-7tJ$jTN2!zo0@81Cc7K??gWN~p301z4)Iy5x2 zw6vsBsf0qI&1ORgsZ=UjT$6%`~&0ssO718FvTE*!0FScaU5@IYT8`+^XE^wT>kj+NYkum{kZN zyVxb92@enV@$qpu9PFu)N~JDaD2mc*wd3RCOwET6ALwHQ$8nM*r>CdcZGC-xPn|l& zg#QeqkI%@+h}~`v3JQV{1_uWN0M4I3Us_taU5mW=`8psVptQ8~$&)8*Yikg~`ucjE zPWR~1Ba6jC5XAWSczJobUawzSS)nLOBobj5W;7b>>gu+8BZ)+EQdI--3uv@$q7@ST2`~L?WqFisN{7b+ueB_xJZNDJi*i>y`&MYHVzbh=@o@NeK!HQYw`> zIXV0H?{}$DtJNtfDeMe}VOOtSr9b>NH8n*>MkXaC9Y212czF2Al`FLVf`S66RC?sd z5re^CFc|1T_6iWOen;2q_4GS{x4Qq$(BG-Dzo6bt&*-}y-fQmQz2*+yYwqB^<__L# z?%=)V4mbZ<(ChWw>)3nD&CP{|hO#qmyw1qT;7ZRPM<$c8L&!fRat421a|iD=cko_w d2k$j^`~l(Y2!Ax%lV1P;002ovPDHLkV1l=f754xD literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.map new file mode 100644 index 000000000..548a598d9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.md5 new file mode 100644 index 000000000..655ca8cf2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.md5 @@ -0,0 +1 @@ +6be102575488e73fd84b8d956f0802b7 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_40.png new file mode 100644 index 0000000000000000000000000000000000000000..8021f07714f8fd58a6da9d8ead5a398d4d4d8331 GIT binary patch literal 1459 zcmV;k1x)&hP)L7Q5UyZRN)h5shfof5=3gnK5fve;KN4X|q%1YBg))*Ab0G7c_m7wE``)&h zQk(aEy&t%+=XuV#&)NCzx##}aWkf{KPy>B&n;n71KWJj82u%zXp^2d);(zXNxm;*z zY1xcewiJDReIb1zD`ReM4v!x{j!8gU5m6K)<~L+z{2-ii8o!Uz=|p*XdDtBe?p(0c(hQ(q*cX#(@hY?d$E5=sjkBD*V)G1uKaz)W*jDazR#Kc4#I&=sQheP2r zIXQ{4vN9M92I%#A6crWW_3PJvBAnlb=Xo&3@bKZon9duum0`2lKt%9*y|{Gg5-wi6 zi1G1pdHnS0(@086!szHIK7IOxy1F_vH#bKsoOL5f66|(6s;a6W2trKfj{0FLF)iUi`}Xa_@bIua zR$N>R#u(z_;*gn{37+Ti@23G4iv{)d^~lf9M{;s9dU|?bu~=~9#tj@jdK4VTAvZS{ zBO@bC!&e!6$>9>vGU)8ynN5fMp}M0@w{rL$+xlFQ|yKp+sZPqW!fMx&A5 zzI{u6zn^%XCxgL2k|ZhYg25n-j*e1JP7XO74u${j-MeXIWQ2mjpxmd|>*>Xd7v%H# zsJXeBIF6&m#YNfg%$YOv=+Pr0BI0?TYHMp1^OcsCQeIvjO-xMC($W$Mf(0&3tR+U&YsTW@B1%e1(Ae0B)zwvbJUu-f_wV1w)YKHb zUN0_OxPbHL&*SCGm$Hq)V30p2BqRU;0)YU4zi-#%=H?6Pc*jjMUUr zbar;aCbC?T;TnA|oRMk|d$Cvl9~&6Cfgad-m)Z9z1ve05F+MSY2I($KzS=*WVB^xz5J`3!|BlC>kGfCC2(DD00NI|jGg4Y%73 zqtS@s;$l=*R^t8p_wf0A=;-Lcz`(%9lM;rQUG&w~)?#^i8C_jnNKa2kO-&7M-n@zI z>}(i~Ms##^psTA3Cr+IB<-SZN6K>tQg^G#_a2$uax;mUYcWzyAT)uo6_4V~gOG|^p z;lSYFAW~CPAqWDBii$$)bvhji3JT=Y-0tpf96Wdsg@uL4%F4pKckgig`0zv{`IQ0oT|#niwh~;*-ArBV%J@n;pWMXe&cSXkw@cO$-&GiJ>AQ7I3H2 z8Ou1f3@(=|;#fp6BK@~VBYH3*?fndupuL}=CNwcrgeHcH(8N#?e*rY?XTOI$Q8fSn N002ovPDHLkV1l*{x~l*H literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.map new file mode 100644 index 000000000..567ca90a3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.md5 new file mode 100644 index 000000000..a60a6f7ec --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.md5 @@ -0,0 +1 @@ +513e53cdbd67e1c3be296e616b5088fe \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_41.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8afa3a54998330c4c48e926a2594d03eaa52b2 GIT binary patch literal 1014 zcmVp%d}4trgS?rFE!_E>#?~RE;`F7K;`sruT;MLS9>ao(A>7{ieJB z9e4lyxw~Ey03jqW@8;Kc8~D$_d7**xLIdZ8Muxl+3eH&!oAzd1Pcns{XaU zIF8%e+WK-!KbOP9!(cEdS29vNZEkLUm7kwZcXxM^g3m8Ba9(KOywLdOyqcPt7>4;? z4@ltkg~mtn((Cm@Lqk#-0000`tJO6%HS6o^&(F^w9T^#Eev9P{4i2X6`I_$c`}KN# zc6N4QVd22QKr|Yax7zJ?0Kn?%>IWY14HQ^kHk%DX$n(6}Z0_yty|}o5f9UG!GMP+b z`Q_#1?Q!Pk=OKh{xBH#C-EJQp9pyM~Z*MOU2w1IFsVR|2uq;t|Mc|q$r-&~Z+m-tR#ui)t2LX=2L}gI)9&uB zMx$9=T#Q5_CnqNgdQdE{SS+@%umAvPXlO{=p{J+k`1p8xdpi<|)YsShd_JY7CJ4gs z_t)0eN>!SshlhtrlC)SX%gf73dVn%EHa3!!wCHp?aSw`RX(*B;Jsyv|r?elhuC54z zI6ps68mh6e(dl%`6}Q{1QmIlWeNBfD&d$ziG#cp~xV^nCE-sG8;}Alg=L-r7VzJm8 z9^QbWD2k%wiel&2{r$bcV3?Sg5CkE$&*kN%N~Nl(sQCPJNzBd7O-@ek@9#^4vnkKHnp|1v{Vp;a5${gbRyH!(+-Ej=kwLo z)rm?Xkzg3+^z>9(5niuX+>(lTQ1bqjlan(xHa0ai6_3Z0no3GaIy*c2`ufh!&K@2f zoKC05@VLZOf%9u&T>TCLVtEVi<; zlG?PkwpLwTt<&ks%gc|Bj#^t=lR7XA0{}1>41yqt7cQRXU(+8S9~}X^cX%$B>+5~|Om1#&ii(QlN}9ZkM&noc`46BdN?rx{Hje~8 kztF&Wp@H*41LuXtZ$YMQX$d~A;{X5v07*qoM6N<$g7#MO?f?J) literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.map new file mode 100644 index 000000000..f53df572a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.md5 new file mode 100644 index 000000000..8d243e0ac --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.md5 @@ -0,0 +1 @@ +8496a1131f5933bedde7a327a5d4457d \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_42.png new file mode 100644 index 0000000000000000000000000000000000000000..437f5dcc4db1fa1df22fd5d89ec6bde26e9db351 GIT binary patch literal 1059 zcmV+;1l;?HP)R&+44# zJbr!n&N{${zvd$Fz{Y5@Ln(o*^^Kxw6?ZZt5T}Zz`(%b;vzl$ z$G#v4;^5$*>Lt~N^YimiD8!BkzbEbQ?^mmyS~4~^_9epi3kKc`2Hpz>-U|la3x?nE zVt9CXetw=FLkJ;+B9Ta=(d_Q-etdjDE`&mkch>K*va$jp^!xpl5=2yBU%1_FilQ=^ z%*@P;&1Q>6qts7EM@JnF2O1X&g+Ko;06?i!^7(uYhr{FXR78-bVrN7o5;>ht2w^xJ z=1h2ddvm+p3WY)}78{Mmr>7?r&*gG%x4WyWtEs7Jc6Rpt{T%?1PNyd)CnXX|TU*=I z)YR+iE3I>UeB9jJys@!?+9>o!$Ta$wOZ}z=_vqUe0)5c&EDMHTwY!h1YxyWX&sNpv#_v$ zVVKkD+}zxxL9qw~0$(DW==FMZF3^~k!Z0it46-xnGeQsq03ex6qIj`bY;0`2 zy}d=dBNB5Z{>zeFE*}{gvD@vBkB=ltUR+$5&F0U~Pq|!fG#aO;rym|3vf1p`)>beW zRH;-tozCfWzP!8;1Ti-^XD}Gr+uM(hjsO6?y}h)oPNxfp!{Kn4Q>WbeD}2{-xm+Yk zZf|dYU-J9?YPH&6Fi0d4m&;|h+w1G=0RTHYJAHk9dc9tyQe9nL4GsTR2!|IF6BE^{r^Z+;7WNcU{Qob0!uJaX-U|la d3kKc`h9B{;TY|t#CO!ZF002ovPDHLkV1k2R`b+=- literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.map new file mode 100644 index 000000000..7cf417931 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.md5 new file mode 100644 index 000000000..df2bca32a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.md5 @@ -0,0 +1 @@ +fbbd125722f48899a4de6646741795f2 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_43.png new file mode 100644 index 0000000000000000000000000000000000000000..c3582874cd84a8870abfbf6abe950f53d3526cc3 GIT binary patch literal 869 zcmV-r1DgDaP)2uM+!GTbEgkW-V@&9j$dA0 z*59+C@HV#*1aZ6F5W8`?=lM*XQ^92L}h0N~OtUIz2rN zg+dyQrlX@{W@hH??Tsm`R;xarPp8wVRI2gu@j{`%4qsSU7#bRCYio-{B0rVNn`erm zHa0dOgcgeh01$~p%w}^q9HwcSB+1Y9(P(sSZSD5<7DdsKk&&ybt8_Yjc6N4ha&mNZ z#MIz8esgmZkH?F}qS0uy*=+3T*xK4!US7VxzjrtsKb6XZ=k@h<2%$ou2m}Jh$HxYP z;X9*dXJ^f3vr?(ValBfsuCA_jc6J&JhT-AiR4N4kD3{C8Xp|rbydYCm*E|)(%Jmm9vrcA5V)-0H}xvf^K34+LGvzwcne_PAyYOd4iWHMQ$QlU9m ztyX3)gs|q$d_JF5Dpep5SXx?oetrf3ba!{B)9II&m)g2%wc3e^38&L}eSJ+)R5F>g z*=$cwPxb5M`JKe;^->fS4u=5%^YinuSgf_Rm07oIU}tB?Xf%$EjdgW(dA(kz)7jkI z%!5kq%-P%9`;hq$z%UHMFm6VA-xddwXK^5T76)SV{KdE4{r!F6bu^B0xvbG>xS20J v+wFFt^auooVcZbX(*I{MAbA!CV)Xn6g*f?OQWOn400000NkvXXu0mjfTlc9r literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.map new file mode 100644 index 000000000..543dea86a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.md5 new file mode 100644 index 000000000..280ca8256 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.md5 @@ -0,0 +1 @@ +0bd47951338d799baa7faad737d93c2f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_44.png new file mode 100644 index 0000000000000000000000000000000000000000..aa25f7705a00fcff9d0edad30a57c5ccaea77fc8 GIT binary patch literal 1428 zcmV;F1#9|=P)E9S}3AoLi2?a_NFZwp@L(< z7B~%Jm?Z|8AcPwEuaRJFxe<=7F_qp_u<}j5u!clbOU0ZnJoCQ=A{;~K&VBK4$L_X! zuXjGzGS27K@A;nJ^XGhd{_QYG(==efN6OD0!0!fQC}tQ#F~b;&8CG=R?c2Ba?%n%Y zLph{0G&GcylthYunV}>}4i66>_>c}U!^6WQNk%KI_@tqsp@SOFp$9@3qcD3YW*9>; z!x)O0U)0dT!a|3`vHzTd=NC2f?~uu4R;%@AkK&(5#!#hFdF|S@NDLu_5VG0q{QP{U z)A{4a510rRE5VK8zvA_JYiert(?VNY8-&nqx5wz?gwvnix<<=(~loNe(BPs z@87>8y|=elB9Ww~rk0kLzJLEdl0Q8?txzbqT<)n;r(V5!g~XU8KRG#BT3X8Ga*K+J z#>U2wc>er(2w_S}ibNu5Yio=CKKb(H%VWomJ$UdS5D0w!{27TfO<%ckrMkMhySw}3 z$&+k0J1;Nq&Ye3|RaHs&fXz^fqWb#!AcV!m#R(Its;V|NHa>j#@b29^k|cFH9RT3V zmoJTtjSh$7+qZ9BU0p7hE0S-w+wb1JyS%)t*XwmUUBd6SX0y4qwKW(FYBZX2=gzII ztpNa@KYvcs^v=%C)2B}d1_q+rv{)?HuU{t!!e}%;dh`g1Q&Ur4zkb#0^>~b+qj0<3 zF-k(to;{0}If^4q5d?u=CVt7!&dve=0)YV1(JWqET%4PmOHEDv^yyPf7X<|cJv}`r zMsqnB4AL}x=FFM?{{Bc#Q&UrNLx>guXmt-gKx_U`U(d=5#HEEY>F7NcTTRu&Q^ z5{b*@x^d%1adB~Vb@j)OA0t)L)6-FKRTVll2OEzWyrT3T9TV`F=J`}X#B%p<8( zDwoTRM&r`b5=oL*uU=KDR3}cH7#SJ4b?cVj@88+k+1=gU+S&?-!+Y=1Y&MUMj&5#l zc6WCNgTeCha?}Ek$0G>B>-CyUCY0&%cmM#oxw(Sy@_I zno6ZQdi1EtWEvbCB7wLBhAtyU*vLG*^Y$3uxB0{A}; zC5C7iLove`iW$aG%rJ&xhA|W~jG>rG@XXIjP|PrfV&)G)$UJHe?|py(0000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.md5 new file mode 100644 index 000000000..bf09ae4c3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.md5 @@ -0,0 +1 @@ +e2cd65da5815253bc9bf312036b6aaa3 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_45.png new file mode 100644 index 0000000000000000000000000000000000000000..e34bb58b381862d407a4d55be92445d14af5c1bb GIT binary patch literal 1328 zcmV-01<(44P)$LwW@bJ;r7yjuFaR(e(86XXW!H!7$7zLY|2TAWcL7X(9qh6A?g~ zhyZs?%*n}VY;3f*F$}{n%-7d9K0bb8V&d`f5ql2`<(-$nTew{A=;){$Sve+SXK85( z0H9K-ghC;M!SMI@=kxjN>+4Q>DwUd=n!2{O=H9#rR-#lYB?!V~GS$@7h{fXL<7474 z3JMCUtE*xA<>lq$bNym6cCxav006nUxqg0rdwY9&y}qfbsk^(|NpCP1I2=xXe!kIY zbYoIv+u7IGS0a&M7M*N~KOtP8yBI($Z1}gAo)IR9;?weSHl8 zC@Cq~-QBIMti&)ZIXM{saDRUke}8{xX9ve|kw^ppn4FyCa5!?goFE9LQV9SMi^XcS zdUbVGuh+-M#tMbP*Vk77fJh|T+uK`MSkP*<91dq?WyRH`3f5((^YinLO2_S-kdV;P(E-~UjRpXq)oNiEF5a`V zGlC%OCK3bzzg-y&2H3UPY&06};NSqRN3~l0HZiB_uCA^Kf;c@rl}IGf(a~OBUMVRl zv$L~Kg_zCehK2?zm3nb;@ze4F01Ab|F@o$&G#ZTpfuOy;-Db17QnFYq*uZg|LZPtP zY}k#Cj)p-ey;iFQ05F+Mc>H^MdRiqoSf*C1WQbAOMcg*Vm_3t4$_T zSy@?OVd3iPD%AJ(_F@kJDE zdwF@$>-DgEe0&Up000k2yg+NeBx^{MfFqueVyQa=HAcN`*q<=jRt6 zAJ5@%m`vu_*cgnrwze)VF8cWRz}tCjY%Df5me1!i7>xS*`ihDQZ*Ok^!1(xhTwENF z$BT@N+}+*H$jE>nhuhQ6=;$bu$*ilZlgVUJQBf=wYjAK-E|BBg$}e6l|8u~< zaj}q)CL(||5dox$2p~;F0BIruND~q8&JU$iQ&XRx$Cu_E6N`(BKR=Hz4MvdvPy8_C mnTP<=LpR0000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.md5 new file mode 100644 index 000000000..efe4879d6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.md5 @@ -0,0 +1 @@ +40c25360d6e911f460499817a1f66d2f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_46.png new file mode 100644 index 0000000000000000000000000000000000000000..ff087624b598e18b2be1e0ae889690e7f0166afa GIT binary patch literal 1310 zcmV+(1>yRMP) z@B2Le_ha79KnQ{WlK&0mS10hBLFz>eQZHhVdJ!WUf3vZ%F*G#vt5W%%6c-nFc6MU7 z|CwKYzkhyy{>xMPzSwNGjg1YwCHke)+}zw(<@4RCsi}EpA@?t0ka`h=)QcE@h+bSS zSFhK9K}UaxUSGyX^b!aJ?d|Q@H3UHr1kq?THk&;)HHF%%s;Xo%*|Wg%^76K}HbQ-I zIGpkE@ed@~-`@{GkjZ5FKE6mN~ z@vN_}x3;!^zQ>;u4u=f}LvwSpMx%*r%Mn|TG#X8*R6-Esa=8Ei0)c?ZWKK>_Vh&oZ zmdoX`+3effTeVu9nVCta(?ufD@$oV0Ffua2VzFXlV@pa(91aHnpsudYZnrl!HbM}@ z<#GW4Z^b@id3iZ8F>!2c%2LJ>D0n{fH3dP6AJDtv>qodf^Sf|tZtS?M21VP@4MG&N@s7R;NVg073rw4;U zbeBj;Nr7P)K@fB@dOV(=7KkC0N~KaM-V(9>>-_v&EEf0m^@Tzq)Si-(Qc+QX4zE_L zt*@`A(P&<;7XXl&nu6thRy?@&leRHm6Mb6nPMZh9+^z0UavnqJTw>#m{Fln%+AhkZ*Q-z zuA+-EGc%JypWN zJzdH$l)>0Mo20|NuWU=X$N`FsY0QC(eKTwI)=pAP`Y z$jGRytZZm#aJ$_w3~z01NhFeohliDwmEPXogM)*|$H!18bbo)3ZcNF^$xf&9>FMd6 zSbPpvs}%r{mzRfGN=r*!E|<&Y%E-tNi9}6JP5b-%*VorNoo-=afoP2pKCh}&Dj0^1 zM&sYDQz&w|-0St?j}a!5DK|G)C=@0oC8<=ZhK7b8KYo;zmC@;Rp-`BRkT5(vY_VA4 z;^F`RJv}{3OG_~^G3fL0)mVH28jVIM6yhyZDwW6Mp$7}I*<4Uiz~}R`v$O4XdwF>| z(E=d^_kGA>vDDVqBIFmNe?Z^o;9qc&|A&Y{>O~AvFJh2-5rfo=7^GgrAoU`~E8o*B z7R%S?@jW>`JxxnX!&_d_tG2fGtMd5`kV>WaTZlZ(6N22oh(YQ_3{o#*ka`j0F9m(p UF!s_?C;$Ke07*qoM6N<$f_~U$AOHXW literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.map new file mode 100644 index 000000000..acdbbcaac --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.md5 new file mode 100644 index 000000000..a3fc301c1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.md5 @@ -0,0 +1 @@ +8e6e75ba5587c932001eae5a688a6d27 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_47.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3fc9762c1078931bd3a4339c12b2160c53f77e GIT binary patch literal 1480 zcmV;(1vmPMP)r4C@4H`Q}7Qo|J*tHGtN{{^ddu8f9TJedX`O%+7u^<+j%b@-ots< z)|+$fylgwuOuU-KF7qM8}($Z2`Sa{&Tfya*@ zGxrsX#m&vl1qB5$F)_Khxl>b9NMBi5xp3h^LPElkBS$V?y!h?gx1Z}?JbU&mHa7Or zqeoV&6_pWUZEa1hR;Q(<9XfQVwzhU-Vgu9(rBeCwmVxZUSy%e7m6&0bDg2r?x9*;LVI!Z6=>FG&K zOr$8Pt*!0awQCebDHMv4kr9W(5gr~sIXQ`ziA17%_wJ!Fsymy_Mp4w6GiNj!4ZWtd zwUv(Sb*ZVTiN18=#0eb7Efxy^z-qN35q3W~RYln4X?4EGz_nHynZ>&Ye5AZ{NNh#sBdQ294EfrN^H>eM(MF76=5}+uMta zi%9(V@gvH|pU#Zt@p!aa?d#XC>B2M`ji|$SBR$g8%6bdC0 ziAtsV^5qLjlJ)iV#l^)*NlE^6X0)eIp8^1~va)DJB9WNQX0zFxl9F=%{P|0lF1>yG z*6DO=G@8-T(Et(-@|UB!x;mH3)zj01rgFL5ZnvY}0ssgL3zJABcDr3Jmj`jvnwpxH zmKHvrKQJ(0Fc{+F;{gDAy*@fRIwvP5FE8)t(WCU^wm+Q)$MNFgVy435@h}WS&yM~5 z{U=YJEGjAz3Wc+?vr?%vkc^oP{ud9@{}dvTsIRY&?JRx<_#Fo+$4=o)X8|9-9R0tT zo10@hg&o6HIty^7vjAs03vi~hfRBT8aBwj6dF&~Cm|j^~8Tvf-6p-TnpB{3!p3VZC i=`6sR&H|k2EbtdXsd7>DTemX+0000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.md5 new file mode 100644 index 000000000..527fc865e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.md5 @@ -0,0 +1 @@ +912bf27b3c1ff508088dbbabcad26cef \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_48.png new file mode 100644 index 0000000000000000000000000000000000000000..6d77adeec558412e66be9778344324d7222178a5 GIT binary patch literal 1310 zcmV+(1>yRMP)TO>-z0`-TVE% z_qE@(-Gc-{0E&Nx_T35mFetysLHR`v$}e&Rdrq`k?bz7Zccl`T_?Dv!c7oAS0)oMK>!QLW`M&qx10-c(gns*VZf02XoiyV|+Z_M*#Vio0~f` zGxOb9{DlDWOQ+K{H#hs?jYJ~R+}xaRYXiuyAAv7^357z1LLnB584QL%AlTX2866$v za5&M?(XFkmE|&|*Fbsnb(r7duk2f?lk3NKH7>z~-u`wzts->mn z_V)JVcir?Pe4i67gQ&Sff7EmNVKVL4FTP&8dv$O2%YyiN`%?&{iIXOAg z)6+;J7K^K^tIcM!!C(-HL~ae6&0b$$N1CgvD*(XV-5o&?m6eqei3G>-`}_OO&d!XC z45!n1e0&@d60*I$?Ql4>T5VTX7h0H=l{Gs%``0oFf{;q3QmNE4;-g<L85v2Z)7?{t!-2*cjV3cQlfhs> z2s=7Dj7B4>iosyS#l<1buV25sFK#p%>2!KRLIRrd`TWn5IX^!K0I=C?2qA{nwOW?-rjz5bA#h} ze}BLCT0WnjpP%2>*5<7d3Wc+?vo@RU^768`w-*JIlanhdDjFIZPEJmqpP%>k_9`nY zUtV6;*VhLI1`Gzn>+7r2=|m|30FsiD^m;wIe`NV8zfw|CMn*gsAlM1-Ht$N!O) zm6e#7n9nsPlL>en5&p!x-+%D@>#I?zRKdZ)B_$;|j`#NV%H?wZ=ioEn@cq8HxLBjn zaJgIz!-|TEMn^~epM%eQ!~Tkmja^z=`geU|Vj>YRe=1YIAIU-aMGnd@a!`Je literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.map new file mode 100644 index 000000000..28a530cd0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.md5 new file mode 100644 index 000000000..1371e210d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.md5 @@ -0,0 +1 @@ +8d39cd46dd30d6c731fd7374f101062f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_49.png new file mode 100644 index 0000000000000000000000000000000000000000..97cbab8ac15d7dfde4bf9b0f350b988e6a7c6f70 GIT binary patch literal 1308 zcmV+%1>^dOP)Q5d200006VoOIv0RI60 z0RN!9r;`8x1kp)EK~!jg?V3wSa$6XN*V4a>X{LjuP)sW*g2*mVLH9`rDilUZ6AP+Q z2zI5QQIi6dnnghoMP|VcA_GFK4jM@$8cp9;0^u?|w$#TKik; zd$;diuI=7Jx7!T}aD{}o00P2;9{}M2{tzDE&o694uh*;9YP_Tb54pLyN~O}%{LeZ# zJ3E`1nfZ1}!NuCznqIHR_Wbfrnx3BiE~^?nV#EtE#HDx3_C*Y9NF;IXM7; z`}=!^Lc!UVAJ3EVtiXtN;CnqN#A0HJ8 zMO<7QgTWAqM5m{xD6PN0pU>x0snq=Z{GFX0)XCv+mX?-KY_V7%gtxc1*vY*Gd*e^e zN4POeO-;S&@kv@*8jr`@+S+<}c&MqViHwY_tE;=dzBZXmF)=Y(trnZ?a5#2$b`ld4 z$H&J}PiAK3@bIuFK_Zdl<>l?|?b&R$fq{Y9*;!PA%jK@GuRlFKb$55OSS**z^?{z4 zn3&boRfogjcDu{U%7jAU@$vE9-Ca{tQ+j&3)9ExCjUgc+D=RB@yIrr>H#aw4Pr*L%CkG*wN~KaMwkJRj)M_<~mzS3zgpZGps99ZI z-QM2rJ*2O%ud=ezTQ0gt4-O8zOQ=*T6yMz3po{baJ!qY||M?ux&(BfQ>2%WRbc4Zg ze0)r$QVj;fo3TH^g8=t~=;&w^golSmL_|=jR8P}xx1)G^dO9N`gGQr42o(y2#bWWE z$80u}$>fBD1n)yE77GOw3Izb*nbs#^Hk%D0gb2w|) z9euJKgb)RBad9LP$!fJ?FEp`O3;+;|#S04y8yg!XB_#y~1<%jV000Vw;&J!t>dNQj zSi$e%PtLnz10MM?cDvo>az#Z&g@%T%t*vP^8qcBF*jR(XfGpv1xgwFMwzhVEfB)|8 zZg6mLZf@=~b-7%wL?V&PEG(?Bu#mxE2!%o> zlc~{Yv|25VMgsu!^z>M*RyLb05{a-PvAhu+aL#)`H|Bp8TCEoCod0(g0{=nJuCXr& zh~H@V^V@h}Hk+Xra=H8u(BR`e+Ruc?`12PNtI2Pw S*odG20000 + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.md5 new file mode 100644 index 000000000..6010a609d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +bc950b2a380edb2222e6039af29b1619 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_5.png new file mode 100644 index 0000000000000000000000000000000000000000..716877088edbf915379a5dbae082b0df9414cdd5 GIT binary patch literal 1141 zcmV-*1d98KP)J<)I#V3vWR8w^SVX{eGX%M^#Eb7I{3Lukuq&=ybXqg}vS}hs};TYj#DvpKsBK@bE%rKP1(snp?cP%F>R&pSIixm+%}cVS`S z?d|Ok9sB+M{{H@7skB%u5Cqxn_8h%Xt_sk1V`F0kLB!+nfq?;|(Rg)rMe1I!S1y-J zB$BhUvv@r2bUG7>#P06ypU?O!WHK29LHhdotX3;kFQhAig3IN~QS#E>-cII~vz<<- zIUJ7D=_CjulgWt1;-R6TyhnI?dNLRcJRXnF=Npa2mzNiMy|uMIEIIZgTbKPZr|VE-`?Kl za5&^%tJOL_J`TgM$z)nxT_r_&SHBH4NM?PPJroSXdwYANesXdG0Ek2)AAcSWhXDY$ zx3}aFMNt4iEEfArCqC&rlG)i=i9}LSQE_y1log}Vs7NGACX)m~#N%AC=y{mua zKj}L%$LHr~jYcy!H-nY_h&y)T zk&zJ`$2T@M001hL>h$#V`ubWXlX1CRgTYW)S*g)z001tRtGv8iDwQ@jH&<6zXP01~ z>3KOmK3-g0^msgFWn~J5Vrptir_;T@zFMtTwOUQBgke~zRFaDo8dtvyL{Pqyx!rEP zUQe)J&hkONgQC8mE52v4p97m6bJ*;d!)C`EHaq69*)fOBjyZY0F)~|Z|L=Ktc&MqV zp(=T@)9dwL<)_HdYPHlM#6CqZhP~b~hs};TY + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.md5 new file mode 100644 index 000000000..30529d258 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.md5 @@ -0,0 +1 @@ +f1bcb75b933276ee5fde30f34c416529 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_50.png new file mode 100644 index 0000000000000000000000000000000000000000..6d81796fb0c98be5fe1f1503f2b7a33ae54a626a GIT binary patch literal 1307 zcmV+$1?2jPP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1kg!DK~!jg?U`RFdv6@apT}4+f4)hCnZtI08)1d~xp23}B$M1N%F3S+ zbHRlh3Mo=<{EJBPrzn!*a5R#;fLzrT+Vs;;hfcbJ=-ix4uK%|f9tA|fI^ zJ$-a^6aZkgT8Z+_&CTrWY^T#1A0MyLXx!b}?RJ?=hGE#RU%%?>>mMH<5kh@^eOxY= zNFZPPqd_PX0stU{7>4!q^x!z|GwtEwK_-)NIGm`cD4|fO*X!S#xOeRbh{a;DSWJ!t z?DfgXNk~YDLZNtmepV`#a=Dy{=j7x}Pfxqkii(OVD=RG)i&m@U^Z8`2%gf8>=H?JW zy}iB7&CTu-kw{cnSa@`FbbEU{Ha51tzK-7U+D{DxZ*Ol02M0VJZ+?E>XIe!?g+L(C z>2!9xy}i9XD=W+8a=kZwpF{ZM3%u6pbSxH2tyX^^LaWsR04x>@(cIbDaeHktnUa!{ zUS3`hLN=Q%AtAxxa3F*(FE0TAXJ=>rOv4`y9*m5PR99Dfrx^?e0D#G4BAPCjD>5?D zyJvrf@W9*afcNW^l$3>qg^rF6KA&G(TYGqT=$&IU8d)q>Y-}vi-~`tD1UM`mX(!lZEfxD?v|946c-me91Z|LP|!bJvDxgWr>C2n8=|Sx z>4*y)$0sKzkB*Mqw|aYfdwhHx0Dxhb%jG&hKmRHX7K^2(rlz~Q`|9cn$MNCe;kUQ9 zzvoO!OHNJ>3JS8>Y~%%4R#x`jxa8VE3Al25d%LTvORLqszP`F#uIJ}x9LE6w@$vC$ zwVId@m&+|EC}?VGvRbV=ovyR9lc?R=+5!M%WMsH|D=se9Xfzs)hQr~MmX_Am)*c@p z+wJy=iHVJk4FEuYe?O1MBa+?M{%9bAQBhG$CR3$S4G#~y2PLO*I2@5kB#}r?Pfr~V z$KKvvMMZ_v>3nbc zd{ZTVpr+r^se|^~2YS68dLfZWKH060|7B<}4Er}WQhHre2kkX=&|Xsq?KO4yI2)Ii zmZ;b9^Dr8XY&M%5@!>W3D=p1u5R1j+CZyjIDTCgxse|^KI%uz{gZ7#_{sQWTUO2|y R`hEZa002ovPDHLkV1gajbuIt^ literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.map new file mode 100644 index 000000000..082401084 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.md5 new file mode 100644 index 000000000..5e164cba6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.md5 @@ -0,0 +1 @@ +636d74cd7d8543185699996922cb3512 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_51.png new file mode 100644 index 0000000000000000000000000000000000000000..c156a9810b293fc2ffa59fb2c5f7aeb0dfbfa78c GIT binary patch literal 985 zcmV;~119{5P)VjRZ-1ONa4L9zw>hd^FHkQWf-1w_aX+-~>i=xDN}B%ZReGK<9$4*zj4 zE-o%sR#p-&DLHsN9=F@g&j`OyT3%jGl%8Z_Fc`jMP`!X4FCfSZ2=W3FOD{;0oSK@7 z;f4w3XI{L%zG9IO3WWdwkH^#2))o(ywY9YvhVhNw-`~eDOe_}1@RXl$Z7J5pR+Y_V7j(6pzgr{3OPrBW%8Nb2kB&(6-m%LfJqDl029GBOqy7Xbiub#=G5w_96V zp;au)c64;`Pahv2SE*D4K~NOs^?IYwAIIA1a=FIF#;&igNs_Ftu0A|G+}qpR+1XiJ zTU%XS4b3qcjYmgE8yg$v=jUp*TCdlKZJM5*9vmEecz9@TZUz7d1Ol_!JTWl=0GOMb zqbN$DP=wF&`FvKZb$)*S?(WWJv#~52h2RK%XRPSy=_x5G0RR|{#+jKJyWLI@M0R#| zRaKSO>oph*e!t)4a$R0t=H=x90EUN$rBdm^!9h_`5dfg8tE;@coWEgvdwW4a!TtUH zCc(Y5bo(giI!*Y1(WyKR-X$)YR~YR4NtAvVDDhrKP1UEiJpd zyHN;^)e5Y_{*CI-O3Z(*=XUg@pyJR(o}I zB@&5#q$ioZmO`OuXlO8*Og^9Q<>h62dt0y9zrDTv%MyyBIF7SgtzYu%>+Ajf{l~}0 z@9*!QpPzw1AY6C;o+S63v$L~mwVI}BnM~H*-EA_N($mwU*r%eRLL!mSG%b}%?RLA< z>5QiJ;CL)8Eq%%Sk6{>wVHkb}eUCtp7ZBtH1bG2LUOIDRO0YP3skQb0&;`%ZEDY-p-00000NkvXX Hu0mjf@qEvD literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.map new file mode 100644 index 000000000..078ab7b14 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.md5 new file mode 100644 index 000000000..06179feb6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +b8916d3b51e3fb200c11a55d0ce781f3 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6ff436a8b2b37819da9d17825284fcb69786ae GIT binary patch literal 1277 zcmVDc)z!APwm+51H=?YpEG8z# zKK)lGavV1?G4bUoeKRH|COD3BjJUiOjgOCiRX*PmgwTtKuqRSLFp&a+i4+h_q<~-| z1)MQ4F)^{Eq{Kc(2qA=AU0vmJ`S9?tqjG(HJuNLwB9V}*&CSggi-khgPElW9j}RIh z9HhQ7g-$FkF2)!ejmF&ET(w%gv$I3ub8~YFg(4^@Xk}%^Xf%$DjF?QOsi~>Y-_Z$p zp4V!%IXO8RjfVc}*a4kR_agEp2?+_rxEEua%_b6wMn*<3#yronESsO7|Kf75}5)Tg#udJ+$jg1wH#iOI6@5rjFtK;J0+}zxPgM;Vi=Se&{IT-*D zLM+SH)z$GlZ@=U0>}*6t#N*?mx3{-mueZldCR0&S5zDfko}PJmc@GZ{zbqdBbUK}5 zgxa2HHk&&;I}t)rQBeS3Fc^-HkJW1Ro8pX&43o*Uy}iA$vB7biN~N-2>g(%kY;3&0 zzt76bdPg=mIM~$Gbai#5R;yJi6{&4{dKzQ=^z<}2IXN&eFgiMF*K0JI($Z3fVG0Tg zy1TpWag|E7wY4=fGjnuw6d4)0xVY#{@s5r<*NOI}7=|HbV2qcRmH^=N^z`+|4-XFk z;OOXxO!ay_09;&LV2s1V!|UtoKO$>wZ6)!$yE_0lJ3D)EmyV8(%*;$OK0iPA^YgP> ztr%mY(dgsjV>X*H#wRBy0I6o^Nk&e|~-j0G{W2dwX|xckPX{ zu&_X$XqIJdHXCXA&p`8>=;`TMUS8hN&|tM%5kg&EU0SWSqM~Adf8T62@9yqaRaK3R zjrsfgD-?=?f`ZG-OOE4;ii(nwlDxgWU##{)nH`J8!t=a`hX=zjYin!m?d>E!H#Y|W zp`oF6r9z?5>-BoQUM7>Jq@-kLXB!L#lgZT6(=$Ci?L^^}58H)>g=Vw4zrP;<5)%`b zmzVeU_M)SsB@&5Jsr2yhNKH)z0G&=J7K`O_d1PdyudnZao!vetBd{#n($b<-D&5`P z%gV~q)6+>@qtPTKB{?b?hKY}lCug0Zp`oy_u!MvJe}DhY&CR&DIA_Xs+#o;rV)@H~ z-*?3Mn-NT;fM6m81QRJBm`DM^L<$HdQs9lBOvlE?zCMp{%^N0WW@dhU9^V>-h5sjh n8evbQfM6m81QRJBm`H)2R1B>)gGQ~C00000NkvXXu0mjf0u^3r literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.map new file mode 100644 index 000000000..402f748ac --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.md5 new file mode 100644 index 000000000..3c6e51c78 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +8a2ff2afbd606f6ff99bf4a81ad27232 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf8e53c5f6e16b529937e1fd74e4dc0ce81dbec GIT binary patch literal 1330 zcmV-21he7$Uq@Ou^gz?>YkpSud?z(sjjZ(a5&GyzwS_t zMl&-r^XZm;Ff%hV8jZ$Mp}Z_oC={RN=f?v8uu{k#3K=p`$dG|T=358KX0sh=ne}8}9>eS`s<mGDbqvD@T__YDA0O}R>}a*x=;-Lo%*@Bf$9G&8+9OY+(JCq` z004V?dse5YRBC8wXm@uvpU=lIjQC)fm6ZhmaBy%42nc9xZGHZVX!CJ4nM^r3IhmQ6 zx3{-eHEcG!v9U2NEe%D{(9qE3<>j}1uB@zNWMrTy8Xg{AUS7Vju|ep&ySqFd&)?r4 zMNxr3U@#a?Pfy>G1GGR*CezT+5C9-9F7CCO;^N|ylas^4Lj*w<7Z-6HH=E6~v$GQu z6H`-Dugy9;J4;DP@%Hv!SXgj&c79nPl}bB1JI~I}_bv2z_uAOzai*9QP_c6P3g@py1Qw|Oe5)%^(3JQjYhaDXqZPtiHqWJiD8jVKWSvsB09@_&011goO zyStkh*4NilsZ>8dKRTU0KR+)Pi(kG4*#op5YA_hGv$LCIr+9U7b;USSoj*gB-M@L_)k;!DfzP>CLORv}Sc)X^j zrqk2Yr>Cdh-rk3Y2b)tmJ3AvIBQr8GE-o%$S?%cPXm4*{TU(2Xi6IoD(YUp>g<+VN zmzRr+OI20X{r$aKt$xSiF!!NuZf>=;wQX%}_xJafy4h?#JUpzctCLEl{r&v_fV;c9 zr>7@6old1vH#awXdwXA7lR}}$WU`2eh}6_ngTe4|lMM|GBO@d0>+9j+;m@MGyE~J~ z92y$Z>-D#{xBdP7X0tguI{F>!L*Ce97-lk=#>dBrA<@tJS%=xd?(V znar-PE*_7EqG)w>bzWZHTNWK0#A0z;T3T{)@@t*pB@&4Q0Fa%X{rLDuY)FkpgblD9z+L@t+G zD&Owa^QS`w3K=p`$dG|Th71%kWT22C1BHx@pOL4hr$67vufay3g@uKm@8j11aPt2{ op+fdh$dG|Th71%kWT24w4|ZxFDpnIidjJ3c07*qoM6N<$f}zBJJpcdz literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.map new file mode 100644 index 000000000..62ae05dc9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.md5 new file mode 100644 index 000000000..d2ddcd27c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.md5 @@ -0,0 +1 @@ +e31d247ca830d0fbc9b398310b889137 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f2784a51ca2a292ce86b832fdc92a6f0072b6ef7 GIT binary patch literal 1257 zcmV=P)po&?HdGVAKDUbbEWdva%8s6qJ#Xv9Pf4@hkop1_lN&3|m@SdOO79 z@vwh+xii|@+Uo1;^?Lp4>Z(?&6$k{LT^HFSPoYqFJRXE_e}Dhgke8PiolciXBy2WY zAQ0F;7#0;3K?n&1LS$rQTU*=9S45|ev&CX5DJdx|EWE$Jf2CnC7)?!0d3kwMDwR&B zudc3o=6`K%Ek8e>N~Old#c{dZ&CN~E`XCF`VzCSk4nhc1Q&U}ODl03`&d!dGjsO75 z%gY#s*=)A?`T2>7iRtNSSFzx7!3DKT!A3azP>&Pp^uM`SS(&#T#Si{ait6k3j+XL zUthmeh(uyiQj$O*P^;BWryL$0W@cuVm6Z(*4H1b%ry8M9n3k4Cp-^gTYmG*u!C-LX zc6fN$WHOn}=7oiYt*tFKoBc{4lgTt1jYJ}G)5HzP)=;C-SX^A(($ezu^yEruf9(wj z2mk=g&CMkzC;R&PLI{OI;pyqA(GoiOa=g0t=4xvlSrhLloY8{ zy0o-(cX#(vm&s(Ut*z_p>(SBC?>2D?vPYgqqsis+*>S65d;LPCCi{>{w|Dyy#O?Ck95=-AlUNJ>ibxCzRA z=$}7-#A0!Kd;7z~gJa!hvmG5BH8eCR6pH@-eh8t}YJGlw_V@Sq^77i=-tO(~b=8wZ zA}N*1`1ttT++3s4_;Hgg7HfBR*J82k?d^#~qJn|~KR-VJKx1R$@bIu!tBs3``$&Jp z8+(C3V6j-n$H(ob_T|;j&yUGu8Vm-VPRC-g000pY5#8P06%`d!Dpe#Bm6n#evq&I} zjEv;vGGinO7AY_W%H9W@a2K-|p4(r-KKI7(7tK;DI6r4-_$Y zpoqZ(MU0c5k!NRTKi|i%!AYRy<>jC6 TG;6AE00000NkvXXu0mjfUc70Y literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.map b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.map new file mode 100644 index 000000000..8eb29e24b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.md5 b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.md5 new file mode 100644 index 000000000..cb1829bbb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.md5 @@ -0,0 +1 @@ +e8d46fafad2734ff1ba6435e75760054 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/inherit_graph_9.png new file mode 100644 index 0000000000000000000000000000000000000000..686145aacb4a96a4544507a80223dce64148b351 GIT binary patch literal 1371 zcmV-h1*H0kP)XS5p&K=~`+IR=?6)@a z&%r-&Kd<-3>he5Xz>lJ)%xVglijki zPibpw6NyBz=Kroxr_(t!G_>QE_Ax_4Lr$kNzC!y`G&nf8Q-1b65W<8CxrQQ!3=}bB zporPif#&AszIpRzw_R+GJs0T3ix+h|-S#!R#a03>EiG+rZH*m62qA<_CiCpsvj&49 zUPhc^Fc^G3zow>UW@hHEgWGJj`uh6qYg$@bh}mhh#GTC4)YRq6mkGlbi-jmgB9Zp? zb}pBTVVG1ZU0PcDtJS0+xI&dmC641hpYQhV+cKH#>({Rdrvib%=;$bq#}kP}!^6Yd zpK&Af_4VO6{^7%ig!=UK^tEf(YHMrVZuju;u*qa1>JJ}2G#ZWLB@bTb{{eHa9mz2)}&!l5mPnrwasvo}M0=Or}sMh!=)sWn~aT3Wajw#EI_i?$}$z zq_=Z07?emP*RNk+U0qGkfj}@eHnzS`wOW1a)~$wyhJyzWo;-Q7 zudk1&_xJa=x3>$0LLQIz`0?Y3i3x|pv4tFv1sV(npFe*NAv}Nnd@4C;Rm({8tK{O89&5a`pVPa%XD zhN)Dl_wV1II&~_Q^7!%N006(=AFEKQ)V#brg+ehhGLp2*+}zxyOP6lkxbfn}3o4bG zRHIZX3knLDOr~5e_j^luC(V7=*B{t}Z`6KRrENtyUj6aKK`*uvjbrKp+r^DS!O< zK@>L&vRj_ZvZ7p`%BSe*XNKsL#*O2ZKSOP`HID zQ0_xBGBQ*u)&2YTfB*g+Uk``F4u_+oqhnxT;Much5W-L>6pcpNY&M-vx7lpHy}hZ% zq|s;wgCQp;=jzp~UaxoiCgpOuR;!(zon2X3dGO#tBoZkuE(QQJHa7P3^w{lokH>T8 z&Yi--!uaSn4&sfyLZJu-gRft|CYr?Znx39sT3WiWuwb=XrBW#XAS)~D(W6IIRaGn& ztF5iAyu5rpixi4ht1T)jx^m@8s+HkSbUGb`P%IWlA`xOk>ht*shfPgQVzKzhkt1fa z*=#oRcsu|=XJ= + + + + + + +IRremoteESP8266: Class Hierarchy + + + + + + + + + +

+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Airwell_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Airwell_8cpp.html new file mode 100644 index 000000000..baf4b7576 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Airwell_8cpp.html @@ -0,0 +1,172 @@ + + + + + + + +IRremoteESP8266: src/ir_Airwell.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Airwell.cpp File Reference
+
+
+ +

Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol. +More...

+ + + + + + + + + + + + +

+Variables

const uint8_t kAirwellOverhead = 4
 
const uint16_t kAirwellHalfClockPeriod = 950
 
const uint16_t kAirwellHdrMark = 3 * kAirwellHalfClockPeriod
 
const uint16_t kAirwellHdrSpace = 3 * kAirwellHalfClockPeriod
 
const uint16_t kAirwellFooterMark = 5 * kAirwellHalfClockPeriod
 
+

Detailed Description

+

Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.

+

Variable Documentation

+ +

◆ kAirwellFooterMark

+ +
+
+ + + + +
const uint16_t kAirwellFooterMark = 5 * kAirwellHalfClockPeriod
+
+ +
+
+ +

◆ kAirwellHalfClockPeriod

+ +
+
+ + + + +
const uint16_t kAirwellHalfClockPeriod = 950
+
+ +
+
+ +

◆ kAirwellHdrMark

+ +
+
+ + + + +
const uint16_t kAirwellHdrMark = 3 * kAirwellHalfClockPeriod
+
+ +
+
+ +

◆ kAirwellHdrSpace

+ +
+
+ + + + +
const uint16_t kAirwellHdrSpace = 3 * kAirwellHalfClockPeriod
+
+ +
+
+ +

◆ kAirwellOverhead

+ +
+
+ + + + +
const uint8_t kAirwellOverhead = 4
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Aiwa_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Aiwa_8cpp.html new file mode 100644 index 000000000..f5fd8eaba --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Aiwa_8cpp.html @@ -0,0 +1,157 @@ + + + + + + + +IRremoteESP8266: src/ir_Aiwa.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Aiwa.cpp File Reference
+
+
+ +

Aiwa based protocol. Based off the RC-T501 RCU Inspired by IRremoteESP8266's implementation. +More...

+ + + + + + + + + + +

+Variables

const uint16_t kAiwaRcT501PreBits = 26
 
const uint16_t kAiwaRcT501PostBits = 1
 
const uint64_t kAiwaRcT501PreData = 0x1D8113FULL
 
const uint64_t kAiwaRcT501PostData = 1ULL
 
+

Detailed Description

+

Aiwa based protocol. Based off the RC-T501 RCU Inspired by IRremoteESP8266's implementation.

+
See also
https://github.com/z3t0/Arduino-IRremote
+

Variable Documentation

+ +

◆ kAiwaRcT501PostBits

+ +
+
+ + + + +
const uint16_t kAiwaRcT501PostBits = 1
+
+ +
+
+ +

◆ kAiwaRcT501PostData

+ +
+
+ + + + +
const uint64_t kAiwaRcT501PostData = 1ULL
+
+ +
+
+ +

◆ kAiwaRcT501PreBits

+ +
+
+ + + + +
const uint16_t kAiwaRcT501PreBits = 26
+
+ +
+
+ +

◆ kAiwaRcT501PreData

+ +
+
+ + + + +
const uint64_t kAiwaRcT501PreData = 0x1D8113FULL
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8cpp.html new file mode 100644 index 000000000..cf51c2624 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8cpp.html @@ -0,0 +1,239 @@ + + + + + + + +IRremoteESP8266: src/ir_Amcor.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Amcor.cpp File Reference
+
+
+ +

Amcor A/C protocol. +More...

+ + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kAmcorHdrMark = 8200
 
const uint16_t kAmcorHdrSpace = 4200
 
const uint16_t kAmcorOneMark = 1500
 
const uint16_t kAmcorZeroMark = 600
 
const uint16_t kAmcorOneSpace = kAmcorZeroMark
 
const uint16_t kAmcorZeroSpace = kAmcorOneMark
 
const uint16_t kAmcorFooterMark = 1900
 
const uint16_t kAmcorGap = 34300
 
const uint8_t kAmcorTolerance = 40
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kAmcorFooterMark

+ +
+
+ + + + +
const uint16_t kAmcorFooterMark = 1900
+
+ +
+
+ +

◆ kAmcorGap

+ +
+
+ + + + +
const uint16_t kAmcorGap = 34300
+
+ +
+
+ +

◆ kAmcorHdrMark

+ +
+
+ + + + +
const uint16_t kAmcorHdrMark = 8200
+
+ +
+
+ +

◆ kAmcorHdrSpace

+ +
+
+ + + + +
const uint16_t kAmcorHdrSpace = 4200
+
+ +
+
+ +

◆ kAmcorOneMark

+ +
+
+ + + + +
const uint16_t kAmcorOneMark = 1500
+
+ +
+
+ +

◆ kAmcorOneSpace

+ +
+
+ + + + +
const uint16_t kAmcorOneSpace = kAmcorZeroMark
+
+ +
+
+ +

◆ kAmcorTolerance

+ +
+
+ + + + +
const uint8_t kAmcorTolerance = 40
+
+ +
+
+ +

◆ kAmcorZeroMark

+ +
+
+ + + + +
const uint16_t kAmcorZeroMark = 600
+
+ +
+
+ +

◆ kAmcorZeroSpace

+ +
+
+ + + + +
const uint16_t kAmcorZeroSpace = kAmcorOneMark
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h.html new file mode 100644 index 000000000..6ec44115a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h.html @@ -0,0 +1,615 @@ + + + + + + + +IRremoteESP8266: src/ir_Amcor.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Amcor.h File Reference
+
+
+ +

Amcor A/C protocol. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRAmcorAc
 Class for handling detailed Amcor A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kAmcorModeFanByte = 1
 
const uint8_t kAmcorFanMin = 0b001
 
const uint8_t kAmcorFanMed = 0b010
 
const uint8_t kAmcorFanMax = 0b011
 
const uint8_t kAmcorFanAuto = 0b100
 
const uint8_t kAmcorFanOffset = 4
 
const uint8_t kAmcorFanSize = 3
 
const uint8_t kAmcorCool = 0b001
 
const uint8_t kAmcorHeat = 0b010
 
const uint8_t kAmcorFan = 0b011
 
const uint8_t kAmcorDry = 0b100
 
const uint8_t kAmcorAuto = 0b101
 
const uint8_t kAmcorModeOffset = 0
 
const uint8_t kAmcorModeSize = 3
 
const uint8_t kAmcorTempByte = 2
 
const uint8_t kAmcorMinTemp = 12
 
const uint8_t kAmcorMaxTemp = 32
 
const uint8_t kAmcorTempOffset = 1
 
const uint8_t kAmcorTempSize = 6
 
const uint8_t kAmcorPowerByte = 5
 
const uint8_t kAmcorPowerOffset = 4
 
const uint8_t kAmcorPowerSize = 4
 
const uint8_t kAmcorPowerOn = 0b0011
 
const uint8_t kAmcorPowerOff = 0b1100
 
const uint8_t kAmcorSpecialByte = 6
 
const uint8_t kAmcorMax = 0b11
 
const uint8_t kAmcorMaxOffset = 0
 
const uint8_t kAmcorMaxSize = 2
 
const uint8_t kAmcorVentOn = 0b11
 
const uint8_t kAmcorVentOffset = 6
 
const uint8_t kAmcorVentSize = 2
 
const uint8_t kAmcorChecksumByte = kAmcorStateLength - 1
 
+

Detailed Description

+

Amcor A/C protocol.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/834
+
Remarks
Kudos to ldellus; For the breakdown and mapping of the bit values.
+

Variable Documentation

+ +

◆ kAmcorAuto

+ +
+
+ + + + +
const uint8_t kAmcorAuto = 0b101
+
+ +
+
+ +

◆ kAmcorChecksumByte

+ +
+
+ + + + +
const uint8_t kAmcorChecksumByte = kAmcorStateLength - 1
+
+ +
+
+ +

◆ kAmcorCool

+ +
+
+ + + + +
const uint8_t kAmcorCool = 0b001
+
+ +
+
+ +

◆ kAmcorDry

+ +
+
+ + + + +
const uint8_t kAmcorDry = 0b100
+
+ +
+
+ +

◆ kAmcorFan

+ +
+
+ + + + +
const uint8_t kAmcorFan = 0b011
+
+ +
+
+ +

◆ kAmcorFanAuto

+ +
+
+ + + + +
const uint8_t kAmcorFanAuto = 0b100
+
+ +
+
+ +

◆ kAmcorFanMax

+ +
+
+ + + + +
const uint8_t kAmcorFanMax = 0b011
+
+ +
+
+ +

◆ kAmcorFanMed

+ +
+
+ + + + +
const uint8_t kAmcorFanMed = 0b010
+
+ +
+
+ +

◆ kAmcorFanMin

+ +
+
+ + + + +
const uint8_t kAmcorFanMin = 0b001
+
+ +
+
+ +

◆ kAmcorFanOffset

+ +
+
+ + + + +
const uint8_t kAmcorFanOffset = 4
+
+ +
+
+ +

◆ kAmcorFanSize

+ +
+
+ + + + +
const uint8_t kAmcorFanSize = 3
+
+ +
+
+ +

◆ kAmcorHeat

+ +
+
+ + + + +
const uint8_t kAmcorHeat = 0b010
+
+ +
+
+ +

◆ kAmcorMax

+ +
+
+ + + + +
const uint8_t kAmcorMax = 0b11
+
+ +
+
+ +

◆ kAmcorMaxOffset

+ +
+
+ + + + +
const uint8_t kAmcorMaxOffset = 0
+
+ +
+
+ +

◆ kAmcorMaxSize

+ +
+
+ + + + +
const uint8_t kAmcorMaxSize = 2
+
+ +
+
+ +

◆ kAmcorMaxTemp

+ +
+
+ + + + +
const uint8_t kAmcorMaxTemp = 32
+
+ +
+
+ +

◆ kAmcorMinTemp

+ +
+
+ + + + +
const uint8_t kAmcorMinTemp = 12
+
+ +
+
+ +

◆ kAmcorModeFanByte

+ +
+
+ + + + +
const uint8_t kAmcorModeFanByte = 1
+
+ +
+
+ +

◆ kAmcorModeOffset

+ +
+
+ + + + +
const uint8_t kAmcorModeOffset = 0
+
+ +
+
+ +

◆ kAmcorModeSize

+ +
+
+ + + + +
const uint8_t kAmcorModeSize = 3
+
+ +
+
+ +

◆ kAmcorPowerByte

+ +
+
+ + + + +
const uint8_t kAmcorPowerByte = 5
+
+ +
+
+ +

◆ kAmcorPowerOff

+ +
+
+ + + + +
const uint8_t kAmcorPowerOff = 0b1100
+
+ +
+
+ +

◆ kAmcorPowerOffset

+ +
+
+ + + + +
const uint8_t kAmcorPowerOffset = 4
+
+ +
+
+ +

◆ kAmcorPowerOn

+ +
+
+ + + + +
const uint8_t kAmcorPowerOn = 0b0011
+
+ +
+
+ +

◆ kAmcorPowerSize

+ +
+
+ + + + +
const uint8_t kAmcorPowerSize = 4
+
+ +
+
+ +

◆ kAmcorSpecialByte

+ +
+
+ + + + +
const uint8_t kAmcorSpecialByte = 6
+
+ +
+
+ +

◆ kAmcorTempByte

+ +
+
+ + + + +
const uint8_t kAmcorTempByte = 2
+
+ +
+
+ +

◆ kAmcorTempOffset

+ +
+
+ + + + +
const uint8_t kAmcorTempOffset = 1
+
+ +
+
+ +

◆ kAmcorTempSize

+ +
+
+ + + + +
const uint8_t kAmcorTempSize = 6
+
+ +
+
+ +

◆ kAmcorVentOffset

+ +
+
+ + + + +
const uint8_t kAmcorVentOffset = 6
+
+ +
+
+ +

◆ kAmcorVentOn

+ +
+
+ + + + +
const uint8_t kAmcorVentOn = 0b11
+
+ +
+
+ +

◆ kAmcorVentSize

+ +
+
+ + + + +
const uint8_t kAmcorVentSize = 2
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h_source.html new file mode 100644 index 000000000..6bf1b93e7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Amcor_8h_source.html @@ -0,0 +1,274 @@ + + + + + + + +IRremoteESP8266: src/ir_Amcor.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Amcor.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 David Conran
+
2 
+
7 // Supports:
+
8 // Brand: Amcor, Model: ADR-853H A/C
+
9 // Brand: Amcor, Model: TAC-495 remote
+
10 // Brand: Amcor, Model: TAC-444 remote
+
11 
+
12 #ifndef IR_AMCOR_H_
+
13 #define IR_AMCOR_H_
+
14 
+
15 #define __STDC_LIMIT_MACROS
+
16 #include <stdint.h>
+
17 #ifndef UNIT_TEST
+
18 #include <Arduino.h>
+
19 #endif
+
20 #include "IRremoteESP8266.h"
+
21 #include "IRsend.h"
+
22 #ifdef UNIT_TEST
+
23 #include "IRsend_test.h"
+
24 #endif
+
25 
+
26 
+
27 // Constants
+
28 
+
29 // state[1]
+
30 const uint8_t kAmcorModeFanByte = 1;
+
31 // Fan Control
+
32 const uint8_t kAmcorFanMin = 0b001;
+
33 const uint8_t kAmcorFanMed = 0b010;
+
34 const uint8_t kAmcorFanMax = 0b011;
+
35 const uint8_t kAmcorFanAuto = 0b100;
+
36 const uint8_t kAmcorFanOffset = 4;
+
37 const uint8_t kAmcorFanSize = 3;
+
38 // Modes
+
39 const uint8_t kAmcorCool = 0b001;
+
40 const uint8_t kAmcorHeat = 0b010;
+
41 const uint8_t kAmcorFan = 0b011; // Aka "Vent"
+
42 const uint8_t kAmcorDry = 0b100;
+
43 const uint8_t kAmcorAuto = 0b101;
+
44 const uint8_t kAmcorModeOffset = 0;
+
45 const uint8_t kAmcorModeSize = 3;
+
46 
+
47 // state[2]
+
48 const uint8_t kAmcorTempByte = 2;
+
49 // Temperature
+
50 const uint8_t kAmcorMinTemp = 12; // Celsius
+
51 const uint8_t kAmcorMaxTemp = 32; // Celsius
+
52 const uint8_t kAmcorTempOffset = 1;
+
53 const uint8_t kAmcorTempSize = 6; // Bits
+
54 
+
55 // state[5]
+
56 // Power
+
57 const uint8_t kAmcorPowerByte = 5;
+
58 const uint8_t kAmcorPowerOffset = 4;
+
59 const uint8_t kAmcorPowerSize = 4;
+
60 const uint8_t kAmcorPowerOn = 0b0011; // 0x3
+
61 const uint8_t kAmcorPowerOff = 0b1100; // 0xC
+
62 
+
63 // state[6]
+
64 const uint8_t kAmcorSpecialByte = 6;
+
65 // Max Mode (aka "Lo" in Cool and "Hi" in Heat)
+
66 const uint8_t kAmcorMax = 0b11;
+
67 const uint8_t kAmcorMaxOffset = 0;
+
68 const uint8_t kAmcorMaxSize = 2;
+
69 
+
70 // "Vent" Mode
+
71 const uint8_t kAmcorVentOn = 0b11;
+
72 const uint8_t kAmcorVentOffset = 6;
+
73 const uint8_t kAmcorVentSize = 2;
+
74 // state[7]
+
75 // Checksum byte.
+ +
77 
+
78 // Classes
+
79 
+
81 class IRAmcorAc {
+
82  public:
+
83  explicit IRAmcorAc(const uint16_t pin, const bool inverted = false,
+
84  const bool use_modulation = true);
+
85 
+
86  void stateReset();
+
87 #if SEND_AMCOR
+
88  void send(const uint16_t repeat = kAmcorDefaultRepeat);
+
93  int8_t calibrate(void) { return _irsend.calibrate(); }
+
94 #endif // SEND_AMCOR
+
95  void begin();
+
96  static uint8_t calcChecksum(const uint8_t state[],
+
97  const uint16_t length = kAmcorStateLength);
+
98  static bool validChecksum(const uint8_t state[],
+
99  const uint16_t length = kAmcorStateLength);
+
100  void setPower(const bool state);
+
101  bool getPower();
+
102  void on();
+
103  void off();
+
104  void setTemp(const uint8_t temp);
+
105  uint8_t getTemp();
+
106  void setMax(const bool on);
+
107  bool getMax(void);
+
108  void setFan(const uint8_t speed);
+
109  uint8_t getFan();
+
110  void setMode(const uint8_t mode);
+
111  uint8_t getMode();
+
112  uint8_t* getRaw();
+
113  void setRaw(const uint8_t state[]);
+
114  uint8_t convertMode(const stdAc::opmode_t mode);
+
115  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
116  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
117  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
118  stdAc::state_t toCommon(void);
+
119  String toString();
+
120 #ifndef UNIT_TEST
+
121 
+
122  private:
+ +
124 #else
+
125  IRsendTest _irsend;
+
128 #endif
+
129  uint8_t remote_state[kAmcorStateLength]; // The state of the IR remote.
+
130  void checksum(void);
+
131 };
+
132 #endif // IR_AMCOR_H_
+
+
IRAmcorAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Amcor.cpp:96
+
const uint8_t kAmcorSpecialByte
Definition: ir_Amcor.h:64
+
void setMode(const uint8_t mode)
Set the desired operation mode.
Definition: ir_Amcor.cpp:247
+
void send(const uint16_t repeat=kAmcorDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Amcor.cpp:106
+
const uint8_t kAmcorCool
Definition: ir_Amcor.h:39
+
const uint16_t kAmcorStateLength
Definition: IRremoteESP8266.h:818
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Amcor.cpp:303
+
const uint8_t kAmcorPowerOn
Definition: ir_Amcor.h:60
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)
Calculate the checksum for the supplied state.
Definition: ir_Amcor.cpp:115
+
const uint8_t kAmcorMax
Definition: ir_Amcor.h:66
+
IRsend _irsend
Definition: ir_Amcor.h:123
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Amcor.cpp:285
+
const uint8_t kAmcorHeat
Definition: ir_Amcor.h:40
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Amcor.cpp:101
+
uint8_t getFan()
Get the current fan speed setting.
Definition: ir_Amcor.cpp:233
+ +
const uint8_t kAmcorMaxOffset
Definition: ir_Amcor.h:67
+
const uint8_t kAmcorFanAuto
Definition: ir_Amcor.h:35
+
uint8_t * getRaw()
Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
Definition: ir_Amcor.cpp:145
+
const uint8_t kAmcorVentSize
Definition: ir_Amcor.h:73
+
uint8_t getMode()
Get the current operation mode setting.
Definition: ir_Amcor.cpp:240
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Amcor.cpp:217
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kAmcorTempByte
Definition: ir_Amcor.h:48
+
void on()
Set the internal state to have the power on.
Definition: ir_Amcor.cpp:157
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kAmcorPowerSize
Definition: ir_Amcor.h:59
+
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:81
+
const uint8_t kAmcorMinTemp
Definition: ir_Amcor.h:50
+
void setMax(const bool on)
Control the current Maximum Cooling or Heating setting. (i.e. Turbo)
Definition: ir_Amcor.cpp:195
+
const uint8_t kAmcorMaxSize
Definition: ir_Amcor.h:68
+
const uint8_t kAmcorChecksumByte
Definition: ir_Amcor.h:76
+
void stateReset()
Reset the internals of the object to a known good state.
Definition: ir_Amcor.cpp:134
+
const uint8_t kAmcorFan
Definition: ir_Amcor.h:41
+
void setRaw(const uint8_t state[])
Set the raw state of the object.
Definition: ir_Amcor.cpp:152
+
const uint8_t kAmcorVentOn
Definition: ir_Amcor.h:71
+
const uint8_t kAmcorFanMin
Definition: ir_Amcor.h:32
+ +
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Amcor.cpp:267
+
const uint8_t kAmcorVentOffset
Definition: ir_Amcor.h:72
+
const uint8_t kAmcorDry
Definition: ir_Amcor.h:42
+
const uint8_t kAmcorFanMed
Definition: ir_Amcor.h:33
+
uint8_t remote_state[kAmcorStateLength]
Definition: ir_Amcor.h:129
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Amcor.cpp:178
+
const uint8_t kAmcorPowerByte
Definition: ir_Amcor.h:57
+
const uint8_t kAmcorTempSize
Definition: ir_Amcor.h:53
+
void off()
Set the internal state to have the power off.
Definition: ir_Amcor.cpp:160
+
void setPower(const bool state)
Set the internal state to have the desired power.
Definition: ir_Amcor.cpp:164
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Amcor.cpp:187
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Amcor.h:93
+
bool getPower()
Get the power setting from the internal state.
Definition: ir_Amcor.cpp:171
+
const uint8_t kAmcorPowerOff
Definition: ir_Amcor.h:61
+
const uint8_t kAmcorModeSize
Definition: ir_Amcor.h:45
+
void checksum(void)
Update the checksum value for the internal state.
Definition: ir_Amcor.cpp:128
+
const uint8_t kAmcorFanSize
Definition: ir_Amcor.h:37
+
const uint8_t kAmcorModeOffset
Definition: ir_Amcor.h:44
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Amcor.cpp:123
+
const uint8_t kAmcorPowerOffset
Definition: ir_Amcor.h:58
+
const uint8_t kAmcorAuto
Definition: ir_Amcor.h:43
+
const uint8_t kAmcorModeFanByte
Definition: ir_Amcor.h:30
+
const uint8_t kAmcorMaxTemp
Definition: ir_Amcor.h:51
+
const uint16_t kAmcorDefaultRepeat
Definition: IRremoteESP8266.h:820
+
const uint8_t kAmcorFanOffset
Definition: ir_Amcor.h:36
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Amcor.cpp:327
+
const uint8_t kAmcorFanMax
Definition: ir_Amcor.h:34
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
String toString()
Convert the current internal state into a human readable string.
Definition: ir_Amcor.cpp:353
+
bool getMax(void)
Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on?
Definition: ir_Amcor.cpp:210
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Amcor.cpp:316
+
const uint8_t kAmcorTempOffset
Definition: ir_Amcor.h:52
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8cpp.html new file mode 100644 index 000000000..7acafb331 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8cpp.html @@ -0,0 +1,188 @@ + + + + + + + +IRremoteESP8266: src/ir_Argo.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Argo.cpp File Reference
+
+
+ +

Argo A/C protocol. Controls an Argo Ulisse 13 DCI A/C. +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kArgoHdrMark = 6400
 
const uint16_t kArgoHdrSpace = 3300
 
const uint16_t kArgoBitMark = 400
 
const uint16_t kArgoOneSpace = 2200
 
const uint16_t kArgoZeroSpace = 900
 
const uint32_t kArgoGap = kDefaultMessageGap
 
+

Detailed Description

+

Argo A/C protocol. Controls an Argo Ulisse 13 DCI A/C.

+

Variable Documentation

+ +

◆ kArgoBitMark

+ +
+
+ + + + +
const uint16_t kArgoBitMark = 400
+
+ +
+
+ +

◆ kArgoGap

+ +
+
+ + + + +
const uint32_t kArgoGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kArgoHdrMark

+ +
+
+ + + + +
const uint16_t kArgoHdrMark = 6400
+
+ +
+
+ +

◆ kArgoHdrSpace

+ +
+
+ + + + +
const uint16_t kArgoHdrSpace = 3300
+
+ +
+
+ +

◆ kArgoOneSpace

+ +
+
+ + + + +
const uint16_t kArgoOneSpace = 2200
+
+ +
+
+ +

◆ kArgoZeroSpace

+ +
+
+ + + + +
const uint16_t kArgoZeroSpace = 900
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h.html new file mode 100644 index 000000000..4e754d73f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h.html @@ -0,0 +1,747 @@ + + + + + + + +IRremoteESP8266: src/ir_Argo.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Argo.h File Reference
+
+
+ +

Support for Argo Ulisse 13 DCI Mobile Split ACs. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRArgoAC
 Class for handling detailed Argo A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kArgoHeatBit = 0b00100000
 
const uint8_t kArgoTempLowOffset = 5
 
const uint8_t kArgoTempLowSize = 2
 
const uint8_t kArgoModeOffset = 3
 
const uint8_t kArgoModeSize = 3
 
const uint8_t kArgoCool = 0b000
 
const uint8_t kArgoDry = 0b001
 
const uint8_t kArgoAuto = 0b010
 
const uint8_t kArgoOff = 0b011
 
const uint8_t kArgoHeat = 0b100
 
const uint8_t kArgoHeatAuto = 0b101
 
const uint8_t kArgoHeatBlink = 0b110
 
const uint8_t kArgoTempHighOffset = 0
 
const uint8_t kArgoTempHighSize = 3
 
const uint8_t kArgoFanOffset = 3
 
const uint8_t kArgoFanSize = 2
 
const uint8_t kArgoFanAuto = 0
 
const uint8_t kArgoFan1 = 1
 
const uint8_t kArgoFan2 = 2
 
const uint8_t kArgoFan3 = 3
 
const uint8_t kArgoRoomTempLowOffset = 5
 
const uint8_t kArgoRoomTempLowSize = 3
 
const uint8_t kArgoRoomTempHighOffset = 0
 
const uint8_t kArgoRoomTempHighSize = 2
 
const uint8_t kArgoTempDelta = 4
 
const uint8_t kArgoMaxRoomTemp
 
const uint8_t kArgoNightBitOffset = 2
 
const uint8_t kArgoMaxBitOffset = 3
 
const uint8_t kArgoPowerBitOffset = 5
 
const uint8_t kArgoIFeelBitOffset = 7
 
const uint8_t kArgoMinTemp = 10
 
const uint8_t kArgoMaxTemp = 32
 
const uint8_t kArgoFlapAuto = 0
 
const uint8_t kArgoFlap1 = 1
 
const uint8_t kArgoFlap2 = 2
 
const uint8_t kArgoFlap3 = 3
 
const uint8_t kArgoFlap4 = 4
 
const uint8_t kArgoFlap5 = 5
 
const uint8_t kArgoFlap6 = 6
 
const uint8_t kArgoFlapFull = 7
 
+

Detailed Description

+

Support for Argo Ulisse 13 DCI Mobile Split ACs.

+

Variable Documentation

+ +

◆ kArgoAuto

+ +
+
+ + + + +
const uint8_t kArgoAuto = 0b010
+
+ +
+
+ +

◆ kArgoCool

+ +
+
+ + + + +
const uint8_t kArgoCool = 0b000
+
+ +
+
+ +

◆ kArgoDry

+ +
+
+ + + + +
const uint8_t kArgoDry = 0b001
+
+ +
+
+ +

◆ kArgoFan1

+ +
+
+ + + + +
const uint8_t kArgoFan1 = 1
+
+ +
+
+ +

◆ kArgoFan2

+ +
+
+ + + + +
const uint8_t kArgoFan2 = 2
+
+ +
+
+ +

◆ kArgoFan3

+ +
+
+ + + + +
const uint8_t kArgoFan3 = 3
+
+ +
+
+ +

◆ kArgoFanAuto

+ +
+
+ + + + +
const uint8_t kArgoFanAuto = 0
+
+ +
+
+ +

◆ kArgoFanOffset

+ +
+
+ + + + +
const uint8_t kArgoFanOffset = 3
+
+ +
+
+ +

◆ kArgoFanSize

+ +
+
+ + + + +
const uint8_t kArgoFanSize = 2
+
+ +
+
+ +

◆ kArgoFlap1

+ +
+
+ + + + +
const uint8_t kArgoFlap1 = 1
+
+ +
+
+ +

◆ kArgoFlap2

+ +
+
+ + + + +
const uint8_t kArgoFlap2 = 2
+
+ +
+
+ +

◆ kArgoFlap3

+ +
+
+ + + + +
const uint8_t kArgoFlap3 = 3
+
+ +
+
+ +

◆ kArgoFlap4

+ +
+
+ + + + +
const uint8_t kArgoFlap4 = 4
+
+ +
+
+ +

◆ kArgoFlap5

+ +
+
+ + + + +
const uint8_t kArgoFlap5 = 5
+
+ +
+
+ +

◆ kArgoFlap6

+ +
+
+ + + + +
const uint8_t kArgoFlap6 = 6
+
+ +
+
+ +

◆ kArgoFlapAuto

+ +
+
+ + + + +
const uint8_t kArgoFlapAuto = 0
+
+ +
+
+ +

◆ kArgoFlapFull

+ +
+
+ + + + +
const uint8_t kArgoFlapFull = 7
+
+ +
+
+ +

◆ kArgoHeat

+ +
+
+ + + + +
const uint8_t kArgoHeat = 0b100
+
+ +
+
+ +

◆ kArgoHeatAuto

+ +
+
+ + + + +
const uint8_t kArgoHeatAuto = 0b101
+
+ +
+
+ +

◆ kArgoHeatBit

+ +
+
+ + + + +
const uint8_t kArgoHeatBit = 0b00100000
+
+ +
+
+ +

◆ kArgoHeatBlink

+ +
+
+ + + + +
const uint8_t kArgoHeatBlink = 0b110
+
+ +
+
+ +

◆ kArgoIFeelBitOffset

+ +
+
+ + + + +
const uint8_t kArgoIFeelBitOffset = 7
+
+ +
+
+ +

◆ kArgoMaxBitOffset

+ +
+
+ + + + +
const uint8_t kArgoMaxBitOffset = 3
+
+ +
+
+ +

◆ kArgoMaxRoomTemp

+ +
+
+ + + + +
const uint8_t kArgoMaxRoomTemp
+
+Initial value: +
+
+ +

◆ kArgoMaxTemp

+ +
+
+ + + + +
const uint8_t kArgoMaxTemp = 32
+
+ +
+
+ +

◆ kArgoMinTemp

+ +
+
+ + + + +
const uint8_t kArgoMinTemp = 10
+
+ +
+
+ +

◆ kArgoModeOffset

+ +
+
+ + + + +
const uint8_t kArgoModeOffset = 3
+
+ +
+
+ +

◆ kArgoModeSize

+ +
+
+ + + + +
const uint8_t kArgoModeSize = 3
+
+ +
+
+ +

◆ kArgoNightBitOffset

+ +
+
+ + + + +
const uint8_t kArgoNightBitOffset = 2
+
+ +
+
+ +

◆ kArgoOff

+ +
+
+ + + + +
const uint8_t kArgoOff = 0b011
+
+ +
+
+ +

◆ kArgoPowerBitOffset

+ +
+
+ + + + +
const uint8_t kArgoPowerBitOffset = 5
+
+ +
+
+ +

◆ kArgoRoomTempHighOffset

+ +
+
+ + + + +
const uint8_t kArgoRoomTempHighOffset = 0
+
+ +
+
+ +

◆ kArgoRoomTempHighSize

+ +
+
+ + + + +
const uint8_t kArgoRoomTempHighSize = 2
+
+ +
+
+ +

◆ kArgoRoomTempLowOffset

+ +
+
+ + + + +
const uint8_t kArgoRoomTempLowOffset = 5
+
+ +
+
+ +

◆ kArgoRoomTempLowSize

+ +
+
+ + + + +
const uint8_t kArgoRoomTempLowSize = 3
+
+ +
+
+ +

◆ kArgoTempDelta

+ +
+
+ + + + +
const uint8_t kArgoTempDelta = 4
+
+ +
+
+ +

◆ kArgoTempHighOffset

+ +
+
+ + + + +
const uint8_t kArgoTempHighOffset = 0
+
+ +
+
+ +

◆ kArgoTempHighSize

+ +
+
+ + + + +
const uint8_t kArgoTempHighSize = 3
+
+ +
+
+ +

◆ kArgoTempLowOffset

+ +
+
+ + + + +
const uint8_t kArgoTempLowOffset = 5
+
+ +
+
+ +

◆ kArgoTempLowSize

+ +
+
+ + + + +
const uint8_t kArgoTempLowSize = 2
+
+ +
+
+
+
const uint8_t kArgoRoomTempHighSize
Definition: ir_Argo.h:79
+
const uint8_t kArgoRoomTempLowSize
Definition: ir_Argo.h:74
+
const uint8_t kArgoTempDelta
Definition: ir_Argo.h:81
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h_source.html new file mode 100644 index 000000000..c042059f9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Argo_8h_source.html @@ -0,0 +1,373 @@ + + + + + + + +IRremoteESP8266: src/ir_Argo.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Argo.h
+
+
+Go to the documentation of this file.
1 // Copyright 2017 Schmolders
+
4 
+
5 // Supports:
+
6 // Brand: Argo, Model: Ulisse 13 DCI Mobile Split A/C
+
7 
+
8 #ifndef IR_ARGO_H_
+
9 #define IR_ARGO_H_
+
10 
+
11 #ifndef UNIT_TEST
+
12 #include <Arduino.h>
+
13 #endif
+
14 #include "IRremoteESP8266.h"
+
15 #include "IRsend.h"
+
16 #ifdef UNIT_TEST
+
17 #include "IRsend_test.h"
+
18 #endif
+
19 
+
20 
+
21 // ARGO Ulisse DCI
+
22 
+
23 /*
+
24  Protocol Description:
+
25  All in LSB first as it is sent. argo message array will be stored MSB first!
+
26  do LSB-MSB conversion in sendData
+
27  Byte 0: const 0 0 1 1 0 1 0 1
+
28  Byte 1: const 1 0 1 0 1 1 1 1
+
29  Byte 2: 0 0 0, 3bit Cool/Heat Mode, 2bit start SetTemp LSB first
+
30  Byte 3: 3bit End SetTemp, 2bit Fan Mode, 3bit RoomTemp LSB first
+
31  Byte 4: 2bit RoomTemp, 3bit Flap Mode, 3bit OnTimer
+
32  Byte 5: 8bit OnTimer
+
33  Byte 6: 8Bit OffTimer
+
34  Byte 7: 3bit OffTimer, 5bit Time
+
35  Byte 8: 6bit Time, 1bit Timer On/Off, 1bit Timer Program
+
36  Byte 9: 1bit Timer Program, 1bit Timer 1h, 1 bit Night Mode, 1bit Max Mode, 1bit Filter, 1bit on/off, 1bit const 0, 1bit iFeel
+
37  Byte 10: 2bit const 0 1, 6bit Checksum
+
38  Byte 11: 2bit Checksum
+
39 */
+
40 
+
41 // Constants. Store MSB left.
+
42 
+
43 // byte[2]
+
44 const uint8_t kArgoHeatBit = 0b00100000;
+
45 // kArgoTempLowMask = 0b11000000;
+
46 const uint8_t kArgoTempLowOffset = 5;
+
47 const uint8_t kArgoTempLowSize = 2;
+
48 
+
49 // Mode 0b00111000
+
50 const uint8_t kArgoModeOffset = 3;
+
51 const uint8_t kArgoModeSize = 3;
+
52 const uint8_t kArgoCool = 0b000;
+
53 const uint8_t kArgoDry = 0b001;
+
54 const uint8_t kArgoAuto = 0b010;
+
55 const uint8_t kArgoOff = 0b011;
+
56 const uint8_t kArgoHeat = 0b100;
+
57 const uint8_t kArgoHeatAuto = 0b101;
+
58 // ?no idea what mode that is
+
59 const uint8_t kArgoHeatBlink = 0b110;
+
60 
+
61 // byte[3]
+
62 // kArgoTempHighMask = 0b00000111;
+
63 const uint8_t kArgoTempHighOffset = 0;
+
64 const uint8_t kArgoTempHighSize = 3;
+
65 // Fan 0b00011000
+
66 const uint8_t kArgoFanOffset = 3;
+
67 const uint8_t kArgoFanSize = 2;
+
68 const uint8_t kArgoFanAuto = 0; // 0b00
+
69 const uint8_t kArgoFan1 = 1; // 0b01
+
70 const uint8_t kArgoFan2 = 2; // 0b10
+
71 const uint8_t kArgoFan3 = 3; // 0b11
+
72 // kArgoRoomTempLowMask = 0b11100000;
+
73 const uint8_t kArgoRoomTempLowOffset = 5;
+
74 const uint8_t kArgoRoomTempLowSize = 3;
+
75 
+
76 // byte[4]
+
77 // kArgoRoomTempHighMask = 0b00000011;
+
78 const uint8_t kArgoRoomTempHighOffset = 0;
+
79 const uint8_t kArgoRoomTempHighSize = 2;
+
80 
+
81 const uint8_t kArgoTempDelta = 4;
+
82 const uint8_t kArgoMaxRoomTemp =
+ +
84  kArgoTempDelta; // 35C
+
85 
+
86 // byte[9]
+
87 const uint8_t kArgoNightBitOffset = 2;
+
88 const uint8_t kArgoMaxBitOffset = 3;
+
89 const uint8_t kArgoPowerBitOffset = 5;
+
90 const uint8_t kArgoIFeelBitOffset = 7;
+
91 
+
92 const uint8_t kArgoMinTemp = 10; // Celsius delta +4
+
93 const uint8_t kArgoMaxTemp = 32; // Celsius
+
94 
+
95 const uint8_t kArgoFlapAuto = 0;
+
96 const uint8_t kArgoFlap1 = 1;
+
97 const uint8_t kArgoFlap2 = 2;
+
98 const uint8_t kArgoFlap3 = 3;
+
99 const uint8_t kArgoFlap4 = 4;
+
100 const uint8_t kArgoFlap5 = 5;
+
101 const uint8_t kArgoFlap6 = 6;
+
102 const uint8_t kArgoFlapFull = 7;
+
103 
+
104 // Legacy defines. (Deperecated)
+
105 #define ARGO_COOL_ON kArgoCoolOn
+
106 #define ARGO_COOL_OFF kArgoCoolOff
+
107 #define ARGO_COOL_AUTO kArgoCoolAuto
+
108 #define ARGO_COOL_HUM kArgoCoolHum
+
109 #define ARGO_HEAT_ON kArgoHeatOn
+
110 #define ARGO_HEAT_AUTO kArgoHeatAuto
+
111 #define ARGO_HEAT_BLINK kArgoHeatBlink
+
112 #define ARGO_MIN_TEMP kArgoMinTemp
+
113 #define ARGO_MAX_TEMP kArgoMaxTemp
+
114 #define ARGO_FAN_AUTO kArgoFanAuto
+
115 #define ARGO_FAN_3 kArgoFan3
+
116 #define ARGO_FAN_2 kArgoFan2
+
117 #define ARGO_FAN_1 kArgoFan1
+
118 #define ARGO_FLAP_AUTO kArgoFlapAuto
+
119 #define ARGO_FLAP_1 kArgoFlap1
+
120 #define ARGO_FLAP_2 kArgoFlap2
+
121 #define ARGO_FLAP_3 kArgoFlap3
+
122 #define ARGO_FLAP_4 kArgoFlap4
+
123 #define ARGO_FLAP_5 kArgoFlap5
+
124 #define ARGO_FLAP_6 kArgoFlap6
+
125 #define ARGO_FLAP_FULL kArgoFlapFull
+
126 
+
127 
+
129 class IRArgoAC {
+
130  public:
+
131  explicit IRArgoAC(const uint16_t pin, const bool inverted = false,
+
132  const bool use_modulation = true);
+
133 
+
134 #if SEND_ARGO
+
135  void send(const uint16_t repeat = kArgoDefaultRepeat);
+
140  int8_t calibrate(void) { return _irsend.calibrate(); }
+
141 #endif // SEND_ARGO
+
142  void begin(void);
+
143  void on(void);
+
144  void off(void);
+
145 
+
146  void setPower(const bool on);
+
147  bool getPower(void);
+
148 
+
149  void setTemp(const uint8_t degrees);
+
150  uint8_t getTemp(void);
+
151 
+
152  void setFan(const uint8_t fan);
+
153  uint8_t getFan(void);
+
154 
+
155  void setFlap(const uint8_t flap);
+
156  uint8_t getFlap(void);
+
157 
+
158  void setMode(const uint8_t mode);
+
159  uint8_t getMode(void);
+
160 
+
161  void setMax(const bool on);
+
162  bool getMax(void);
+
163 
+
164  void setNight(const bool on);
+
165  bool getNight(void);
+
166 
+
167  void setiFeel(const bool on);
+
168  bool getiFeel(void);
+
169 
+
170  void setTime(void);
+
171  void setRoomTemp(const uint8_t degrees);
+
172  uint8_t getRoomTemp(void);
+
173 
+
174  uint8_t* getRaw(void);
+
175  void setRaw(const uint8_t state[]);
+
176  static uint8_t calcChecksum(const uint8_t state[],
+
177  const uint16_t length = kArgoStateLength);
+
178  static bool validChecksum(const uint8_t state[],
+
179  const uint16_t length = kArgoStateLength);
+
180  static uint8_t convertMode(const stdAc::opmode_t mode);
+
181  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
182  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
183  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
184  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
185  stdAc::state_t toCommon(void);
+
186  String toString();
+
187 #ifndef UNIT_TEST
+
188 
+
189  private:
+ +
191 #else
+
192  IRsendTest _irsend;
+
194 #endif
+
196  // # of bytes per command
+
197  uint8_t argo[kArgoStateLength]; // Defined in IRremoteESP8266.h
+
198  void stateReset(void);
+
199  void checksum(void);
+
200 
+
201  // Attributes
+
202  uint8_t flap_mode;
+
203  uint8_t heat_mode;
+
204  uint8_t cool_mode;
+
205 };
+
206 
+
207 #endif // IR_ARGO_H_
+
+
const uint8_t kArgoFanOffset
Definition: ir_Argo.h:66
+
void setTime(void)
Set the time for the A/C.
Definition: ir_Argo.cpp:253
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Argo.cpp:74
+
uint8_t flap_mode
Definition: ir_Argo.h:202
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Argo.cpp:185
+
IRsend _irsend
instance of the IR send class
Definition: ir_Argo.h:190
+
const uint8_t kArgoHeatBlink
Definition: ir_Argo.h:59
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
const uint8_t kArgoMaxTemp
Definition: ir_Argo.h:93
+
const uint16_t kArgoDefaultRepeat
Definition: IRremoteESP8266.h:823
+
void setTemp(const uint8_t degrees)
Set the temperature.
Definition: ir_Argo.cpp:162
+
void setFlap(const uint8_t flap)
Set the flap position. i.e. Swing.
Definition: ir_Argo.cpp:198
+
uint8_t getMode(void)
Get the current operation mode setting.
Definition: ir_Argo.cpp:210
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Argo.cpp:279
+
const uint8_t kArgoPowerBitOffset
Definition: ir_Argo.h:89
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kArgoTempHighOffset
Definition: ir_Argo.h:63
+
const uint8_t kArgoFlap2
Definition: ir_Argo.h:97
+
void stateReset(void)
Reset the internals of the object to a known good state.
Definition: ir_Argo.cpp:101
+
const uint8_t kArgoFlap4
Definition: ir_Argo.h:99
+
const uint8_t kArgoTempHighSize
Definition: ir_Argo.h:64
+
const uint8_t kArgoHeatBit
Definition: ir_Argo.h:44
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Argo.h:140
+
uint8_t argo[kArgoStateLength]
Definition: ir_Argo.h:197
+ +
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Argo.cpp:360
+
const uint8_t kArgoFlap3
Definition: ir_Argo.h:98
+
const uint8_t kArgoMaxBitOffset
Definition: ir_Argo.h:88
+
bool getiFeel(void)
Get the status of iFeel mode.
Definition: ir_Argo.cpp:249
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Argo.cpp:85
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
uint8_t getFlap(void)
Get the flap position. i.e. Swing.
Definition: ir_Argo.cpp:206
+
bool getMax(void)
Is the Max (i.e. Turbo) setting on?
Definition: ir_Argo.cpp:157
+
const uint16_t kArgoStateLength
Definition: IRremoteESP8266.h:821
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kArgoFan1
Definition: ir_Argo.h:69
+
uint8_t getRoomTemp(void)
Get the currently stored value for the room temperature setting.
Definition: ir_Argo.cpp:269
+
bool getPower(void)
Get the power setting from the internal state.
Definition: ir_Argo.cpp:147
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Argo.cpp:336
+
const uint8_t kArgoOff
Definition: ir_Argo.h:55
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Argo.cpp:316
+
const uint8_t kArgoFlapFull
Definition: ir_Argo.h:102
+
const uint8_t kArgoRoomTempHighSize
Definition: ir_Argo.h:79
+ +
const uint8_t kArgoDry
Definition: ir_Argo.h:53
+
const uint8_t kArgoAuto
Definition: ir_Argo.h:54
+
void setRoomTemp(const uint8_t degrees)
Set the value for the current room temperature.
Definition: ir_Argo.cpp:259
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Argo.cpp:298
+
const uint8_t kArgoTempLowOffset
Definition: ir_Argo.h:46
+
void off(void)
Set the internal state to have the power off.
Definition: ir_Argo.cpp:137
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Argo.cpp:191
+
void setPower(const bool on)
Set the internal state to have the desired power.
Definition: ir_Argo.cpp:141
+
const uint8_t kArgoRoomTempLowOffset
Definition: ir_Argo.h:73
+
const uint8_t kArgoFlap1
Definition: ir_Argo.h:96
+
const uint8_t kArgoModeOffset
Definition: ir_Argo.h:50
+
uint8_t * getRaw(void)
Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
Definition: ir_Argo.cpp:122
+
const uint8_t kArgoTempLowSize
Definition: ir_Argo.h:47
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Argo.cpp:176
+
const uint8_t kArgoRoomTempLowSize
Definition: ir_Argo.h:74
+
uint8_t heat_mode
Definition: ir_Argo.h:203
+
const uint8_t kArgoMinTemp
Definition: ir_Argo.h:92
+
void on(void)
Set the internal state to have the power on.
Definition: ir_Argo.cpp:134
+
void setNight(const bool on)
Turn on/off the Night mode. i.e. Sleep.
Definition: ir_Argo.cpp:233
+
bool getNight(void)
Get the status of Night mode. i.e. Sleep.
Definition: ir_Argo.cpp:239
+
const uint8_t kArgoFan2
Definition: ir_Argo.h:70
+
const uint8_t kArgoIFeelBitOffset
Definition: ir_Argo.h:90
+
const uint8_t kArgoCool
Definition: ir_Argo.h:52
+
void send(const uint16_t repeat=kArgoDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Argo.cpp:65
+
const uint8_t kArgoHeatAuto
Definition: ir_Argo.h:57
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Argo.cpp:349
+
const uint8_t kArgoHeat
Definition: ir_Argo.h:56
+
void setRaw(const uint8_t state[])
Set the raw state of the object.
Definition: ir_Argo.cpp:129
+
const uint8_t kArgoFlap5
Definition: ir_Argo.h:100
+
IRArgoAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Argo.cpp:55
+
const uint8_t kArgoTempDelta
Definition: ir_Argo.h:81
+
const uint8_t kArgoRoomTempHighOffset
Definition: ir_Argo.h:78
+
void checksum(void)
Update the checksum for the internal state.
Definition: ir_Argo.cpp:91
+
const uint8_t kArgoFlap6
Definition: ir_Argo.h:101
+
const uint8_t kArgoModeSize
Definition: ir_Argo.h:51
+
uint8_t cool_mode
Definition: ir_Argo.h:204
+
void setiFeel(const bool on)
Turn on/off the iFeel mode.
Definition: ir_Argo.cpp:243
+
void setMax(const bool on)
Control the current Max setting. (i.e. Turbo)
Definition: ir_Argo.cpp:151
+
String toString()
Convert the current internal state into a human readable string.
Definition: ir_Argo.cpp:386
+
const uint8_t kArgoFlapAuto
Definition: ir_Argo.h:95
+
const uint8_t kArgoFanSize
Definition: ir_Argo.h:67
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kArgoFan3
Definition: ir_Argo.h:71
+
Class for handling detailed Argo A/C messages.
Definition: ir_Argo.h:129
+
const uint8_t kArgoNightBitOffset
Definition: ir_Argo.h:87
+
const uint8_t kArgoFanAuto
Definition: ir_Argo.h:68
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Argo.cpp:60
+
void setMode(const uint8_t mode)
Set the desired operation mode.
Definition: ir_Argo.cpp:216
+
const uint8_t kArgoMaxRoomTemp
Definition: ir_Argo.h:82
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8cpp.html new file mode 100644 index 000000000..23c897e70 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8cpp.html @@ -0,0 +1,400 @@ + + + + + + + +IRremoteESP8266: src/ir_Carrier.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Carrier.cpp File Reference
+
+
+ +

Carrier protocols. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kCarrierAcHdrMark = 8532
 
const uint16_t kCarrierAcHdrSpace = 4228
 
const uint16_t kCarrierAcBitMark = 628
 
const uint16_t kCarrierAcOneSpace = 1320
 
const uint16_t kCarrierAcZeroSpace = 532
 
const uint16_t kCarrierAcGap = 20000
 
const uint16_t kCarrierAcFreq = 38
 
const uint16_t kCarrierAc40HdrMark = 8402
 
const uint16_t kCarrierAc40HdrSpace = 4166
 
const uint16_t kCarrierAc40BitMark = 547
 
const uint16_t kCarrierAc40OneSpace = 1540
 
const uint16_t kCarrierAc40ZeroSpace = 497
 
const uint32_t kCarrierAc40Gap = 150000
 
const uint16_t kCarrierAc64HdrMark = 8940
 
const uint16_t kCarrierAc64HdrSpace = 4556
 
const uint16_t kCarrierAc64BitMark = 503
 
const uint16_t kCarrierAc64OneSpace = 1736
 
const uint16_t kCarrierAc64ZeroSpace = 615
 
const uint32_t kCarrierAc64Gap = kDefaultMessageGap
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kCarrierAc40BitMark

+ +
+
+ + + + +
const uint16_t kCarrierAc40BitMark = 547
+
+ +
+
+ +

◆ kCarrierAc40Gap

+ +
+
+ + + + +
const uint32_t kCarrierAc40Gap = 150000
+
+
+ +

◆ kCarrierAc40HdrMark

+ +
+
+ + + + +
const uint16_t kCarrierAc40HdrMark = 8402
+
+ +
+
+ +

◆ kCarrierAc40HdrSpace

+ +
+
+ + + + +
const uint16_t kCarrierAc40HdrSpace = 4166
+
+ +
+
+ +

◆ kCarrierAc40OneSpace

+ +
+
+ + + + +
const uint16_t kCarrierAc40OneSpace = 1540
+
+ +
+
+ +

◆ kCarrierAc40ZeroSpace

+ +
+
+ + + + +
const uint16_t kCarrierAc40ZeroSpace = 497
+
+ +
+
+ +

◆ kCarrierAc64BitMark

+ +
+
+ + + + +
const uint16_t kCarrierAc64BitMark = 503
+
+ +
+
+ +

◆ kCarrierAc64Gap

+ +
+
+ + + + +
const uint32_t kCarrierAc64Gap = kDefaultMessageGap
+
+ +
+
+ +

◆ kCarrierAc64HdrMark

+ +
+
+ + + + +
const uint16_t kCarrierAc64HdrMark = 8940
+
+ +
+
+ +

◆ kCarrierAc64HdrSpace

+ +
+
+ + + + +
const uint16_t kCarrierAc64HdrSpace = 4556
+
+ +
+
+ +

◆ kCarrierAc64OneSpace

+ +
+
+ + + + +
const uint16_t kCarrierAc64OneSpace = 1736
+
+ +
+
+ +

◆ kCarrierAc64ZeroSpace

+ +
+
+ + + + +
const uint16_t kCarrierAc64ZeroSpace = 615
+
+ +
+
+ +

◆ kCarrierAcBitMark

+ +
+
+ + + + +
const uint16_t kCarrierAcBitMark = 628
+
+ +
+
+ +

◆ kCarrierAcFreq

+ +
+
+ + + + +
const uint16_t kCarrierAcFreq = 38
+
+ +
+
+ +

◆ kCarrierAcGap

+ +
+
+ + + + +
const uint16_t kCarrierAcGap = 20000
+
+ +
+
+ +

◆ kCarrierAcHdrMark

+ +
+
+ + + + +
const uint16_t kCarrierAcHdrMark = 8532
+
+ +
+
+ +

◆ kCarrierAcHdrSpace

+ +
+
+ + + + +
const uint16_t kCarrierAcHdrSpace = 4228
+
+ +
+
+ +

◆ kCarrierAcOneSpace

+ +
+
+ + + + +
const uint16_t kCarrierAcOneSpace = 1320
+
+ +
+
+ +

◆ kCarrierAcZeroSpace

+ +
+
+ + + + +
const uint16_t kCarrierAcZeroSpace = 532
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h.html new file mode 100644 index 000000000..a8953bf3e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h.html @@ -0,0 +1,568 @@ + + + + + + + +IRremoteESP8266: src/ir_Carrier.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Carrier.h File Reference
+
+
+ +

Carrier A/C. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRCarrierAc64
 Class for handling detailed Carrier 64 bit A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kCarrierAc64ChecksumOffset = 16
 
const uint8_t kCarrierAc64ChecksumSize = 4
 
const uint8_t kCarrierAc64ModeOffset
 
const uint8_t kCarrierAc64ModeSize = 2
 
const uint8_t kCarrierAc64Heat = 0b01
 
const uint8_t kCarrierAc64Cool = 0b10
 
const uint8_t kCarrierAc64Fan = 0b11
 
const uint8_t kCarrierAc64FanOffset
 
const uint8_t kCarrierAc64FanSize = 2
 
const uint8_t kCarrierAc64FanAuto = 0b00
 
const uint8_t kCarrierAc64FanLow = 0b01
 
const uint8_t kCarrierAc64FanMedium = 0b10
 
const uint8_t kCarrierAc64FanHigh = 0b11
 
const uint8_t kCarrierAc64TempOffset
 
const uint8_t kCarrierAc64TempSize = 4
 
const uint8_t kCarrierAc64MinTemp = 16
 
const uint8_t kCarrierAc64MaxTemp = 30
 
const uint8_t kCarrierAc64SwingVOffset
 
const uint8_t kCarrierAc64PowerOffset = kCarrierAc64SwingVOffset + 6 + 1
 
const uint8_t kCarrierAc64OffTimerEnableOffset
 
const uint8_t kCarrierAc64OnTimerEnableOffset
 
const uint8_t kCarrierAc64SleepOffset
 
const uint8_t kCarrierAc64TimerSize = 4
 
const uint8_t kCarrierAc64TimerMax = 9
 
const uint8_t kCarrierAc64TimerMin = 1
 
const uint8_t kCarrierAc64OnTimerOffset
 
const uint8_t kCarrierAc64OffTimerOffset
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kCarrierAc64ChecksumOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64ChecksumOffset = 16
+
+ +
+
+ +

◆ kCarrierAc64ChecksumSize

+ +
+
+ + + + +
const uint8_t kCarrierAc64ChecksumSize = 4
+
+ +
+
+ +

◆ kCarrierAc64Cool

+ +
+
+ + + + +
const uint8_t kCarrierAc64Cool = 0b10
+
+ +
+
+ +

◆ kCarrierAc64Fan

+ +
+
+ + + + +
const uint8_t kCarrierAc64Fan = 0b11
+
+ +
+
+ +

◆ kCarrierAc64FanAuto

+ +
+
+ + + + +
const uint8_t kCarrierAc64FanAuto = 0b00
+
+ +
+
+ +

◆ kCarrierAc64FanHigh

+ +
+
+ + + + +
const uint8_t kCarrierAc64FanHigh = 0b11
+
+ +
+
+ +

◆ kCarrierAc64FanLow

+ +
+
+ + + + +
const uint8_t kCarrierAc64FanLow = 0b01
+
+ +
+
+ +

◆ kCarrierAc64FanMedium

+ +
+
+ + + + +
const uint8_t kCarrierAc64FanMedium = 0b10
+
+ +
+
+ +

◆ kCarrierAc64FanOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64FanOffset
+
+
+ +

◆ kCarrierAc64FanSize

+ +
+
+ + + + +
const uint8_t kCarrierAc64FanSize = 2
+
+ +
+
+ +

◆ kCarrierAc64Heat

+ +
+
+ + + + +
const uint8_t kCarrierAc64Heat = 0b01
+
+ +
+
+ +

◆ kCarrierAc64MaxTemp

+ +
+
+ + + + +
const uint8_t kCarrierAc64MaxTemp = 30
+
+ +
+
+ +

◆ kCarrierAc64MinTemp

+ +
+
+ + + + +
const uint8_t kCarrierAc64MinTemp = 16
+
+ +
+
+ +

◆ kCarrierAc64ModeOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64ModeOffset
+
+
+ +

◆ kCarrierAc64ModeSize

+ +
+
+ + + + +
const uint8_t kCarrierAc64ModeSize = 2
+
+ +
+
+ +

◆ kCarrierAc64OffTimerEnableOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64OffTimerEnableOffset
+
+Initial value: +
+
+ +

◆ kCarrierAc64OffTimerOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64OffTimerOffset
+
+Initial value: +
+
+ +

◆ kCarrierAc64OnTimerEnableOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64OnTimerEnableOffset
+
+Initial value: +
+
+ +

◆ kCarrierAc64OnTimerOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64OnTimerOffset
+
+Initial value: +
+
+ +

◆ kCarrierAc64PowerOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64PowerOffset = kCarrierAc64SwingVOffset + 6 + 1
+
+ +
+
+ +

◆ kCarrierAc64SleepOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64SleepOffset
+
+Initial value: +
+
+ +

◆ kCarrierAc64SwingVOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64SwingVOffset
+
+Initial value: +
+
+ +

◆ kCarrierAc64TempOffset

+ +
+
+ + + + +
const uint8_t kCarrierAc64TempOffset
+
+Initial value: +
+
+ +

◆ kCarrierAc64TempSize

+ +
+
+ + + + +
const uint8_t kCarrierAc64TempSize = 4
+
+ +
+
+ +

◆ kCarrierAc64TimerMax

+ +
+
+ + + + +
const uint8_t kCarrierAc64TimerMax = 9
+
+ +
+
+ +

◆ kCarrierAc64TimerMin

+ +
+
+ + + + +
const uint8_t kCarrierAc64TimerMin = 1
+
+ +
+
+ +

◆ kCarrierAc64TimerSize

+ +
+
+ + + + +
const uint8_t kCarrierAc64TimerSize = 4
+
+ +
+
+
+
const uint8_t kCarrierAc64SleepOffset
Definition: ir_Carrier.h:60
+
const uint8_t kCarrierAc64FanSize
Definition: ir_Carrier.h:43
+
const uint8_t kCarrierAc64OnTimerEnableOffset
Definition: ir_Carrier.h:58
+
const uint8_t kCarrierAc64OnTimerOffset
Definition: ir_Carrier.h:65
+
const uint8_t kCarrierAc64OffTimerEnableOffset
Definition: ir_Carrier.h:56
+
const uint8_t kCarrierAc64TimerSize
Definition: ir_Carrier.h:62
+
const uint8_t kCarrierAc64ChecksumSize
Definition: ir_Carrier.h:34
+
const uint8_t kCarrierAc64ModeOffset
Definition: ir_Carrier.h:35
+
const uint8_t kCarrierAc64PowerOffset
Definition: ir_Carrier.h:55
+
const uint8_t kCarrierAc64ModeSize
Definition: ir_Carrier.h:37
+
const uint8_t kCarrierAc64TempOffset
Definition: ir_Carrier.h:48
+
const uint8_t kCarrierAc64TempSize
Definition: ir_Carrier.h:50
+
const uint8_t kCarrierAc64ChecksumOffset
Definition: ir_Carrier.h:33
+
const uint8_t kCarrierAc64FanOffset
Definition: ir_Carrier.h:41
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h_source.html new file mode 100644 index 000000000..aa44f135b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Carrier_8h_source.html @@ -0,0 +1,275 @@ + + + + + + + +IRremoteESP8266: src/ir_Carrier.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Carrier.h
+
+
+Go to the documentation of this file.
1 // Copyright 2020 David Conran
+
6 
+
7 // Supports:
+
8 // Brand: Carrier/Surrey, Model: 42QG5A55970 remote
+
9 // Brand: Carrier/Surrey, Model: 619EGX0090E0 A/C
+
10 // Brand: Carrier/Surrey, Model: 619EGX0120E0 A/C
+
11 // Brand: Carrier/Surrey, Model: 619EGX0180E0 A/C
+
12 // Brand: Carrier/Surrey, Model: 619EGX0220E0 A/C
+
13 // Brand: Carrier/Surrey, Model: 53NGK009/012 Inverter
+
14 
+
15 #ifndef IR_CARRIER_H_
+
16 #define IR_CARRIER_H_
+
17 
+
18 #define __STDC_LIMIT_MACROS
+
19 #include <stdint.h>
+
20 #ifndef UNIT_TEST
+
21 #include <Arduino.h>
+
22 #endif
+
23 #include "IRremoteESP8266.h"
+
24 #include "IRsend.h"
+
25 #ifdef UNIT_TEST
+
26 #include "IRsend_test.h"
+
27 #endif
+
28 
+
29 
+
30 // Constants
+
31 
+
32 // CARRIER_AC64
+
33 const uint8_t kCarrierAc64ChecksumOffset = 16;
+
34 const uint8_t kCarrierAc64ChecksumSize = 4;
+ + +
37 const uint8_t kCarrierAc64ModeSize = 2;
+
38 const uint8_t kCarrierAc64Heat = 0b01; // 1
+
39 const uint8_t kCarrierAc64Cool = 0b10; // 2
+
40 const uint8_t kCarrierAc64Fan = 0b11; // 3
+ + +
43 const uint8_t kCarrierAc64FanSize = 2;
+
44 const uint8_t kCarrierAc64FanAuto = 0b00; // 0
+
45 const uint8_t kCarrierAc64FanLow = 0b01; // 1
+
46 const uint8_t kCarrierAc64FanMedium = 0b10; // 2
+
47 const uint8_t kCarrierAc64FanHigh = 0b11; // 3
+ +
49  kCarrierAc64FanSize; // 24
+
50 const uint8_t kCarrierAc64TempSize = 4;
+
51 const uint8_t kCarrierAc64MinTemp = 16; // Celsius
+
52 const uint8_t kCarrierAc64MaxTemp = 30; // Celsius
+ +
54  kCarrierAc64TempSize + 1; // 29
+
55 const uint8_t kCarrierAc64PowerOffset = kCarrierAc64SwingVOffset + 6 + 1; // 36
+ +
57  kCarrierAc64PowerOffset + 1; // 37
+ + +
60 const uint8_t kCarrierAc64SleepOffset =
+ +
62 const uint8_t kCarrierAc64TimerSize = 4;
+
63 const uint8_t kCarrierAc64TimerMax = 9; // Hours.
+
64 const uint8_t kCarrierAc64TimerMin = 1; // Hours.
+ +
66  kCarrierAc64SleepOffset + 12 + 1; // 52
+ +
68  kCarrierAc64TimerSize + 4; // 60
+
69 
+
70 
+
71 // Classes
+
72 
+ +
75  public:
+
76  explicit IRCarrierAc64(const uint16_t pin, const bool inverted = false,
+
77  const bool use_modulation = true);
+
78 
+
79  void stateReset();
+
80 #if SEND_CARRIER_AC64
+
81  void send(const uint16_t repeat = kCarrierAc64MinRepeat);
+
86  int8_t calibrate(void) { return _irsend.calibrate(); }
+
87 #endif // SEND_CARRIER_AC64
+
88  void begin();
+
89  static uint8_t calcChecksum(const uint64_t state);
+
90  static bool validChecksum(const uint64_t state);
+
91  void setPower(const bool on);
+
92  bool getPower();
+
93  void on();
+
94  void off();
+
95  void setTemp(const uint8_t temp);
+
96  uint8_t getTemp();
+
97  void setSwingV(const bool on);
+
98  bool getSwingV(void);
+
99  void setSleep(const bool on);
+
100  bool getSleep(void);
+
101  void setFan(const uint8_t speed);
+
102  uint8_t getFan();
+
103  void setMode(const uint8_t mode);
+
104  uint8_t getMode();
+
105  void setOnTimer(const uint16_t nr_of_mins);
+
106  uint16_t getOnTimer(void);
+
107  void setOffTimer(const uint16_t nr_of_mins);
+
108  uint16_t getOffTimer(void);
+
109  uint64_t getRaw();
+
110  void setRaw(const uint64_t state);
+
111  uint8_t convertMode(const stdAc::opmode_t mode);
+
112  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
113  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
114  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
115  stdAc::state_t toCommon(void);
+
116  String toString();
+
117 #ifndef UNIT_TEST
+
118 
+
119  private:
+ +
121 #else
+
122  IRsendTest _irsend;
+
124 #endif
+
126  uint64_t remote_state;
+
127  void checksum(void);
+
128  void _cancelOnTimer(void);
+
129  void _cancelOffTimer(void);
+
130 };
+
131 #endif // IR_CARRIER_H_
+
+
const uint8_t kCarrierAc64MinTemp
Definition: ir_Carrier.h:51
+
const uint8_t kCarrierAc64TimerMin
Definition: ir_Carrier.h:64
+
void off()
Change the power setting to Off.
Definition: ir_Carrier.cpp:318
+
uint16_t getOffTimer(void)
Get the current Off Timer time.
Definition: ir_Carrier.cpp:474
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Carrier.cpp:304
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Carrier.cpp:259
+
bool getSwingV(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Carrier.cpp:412
+
IRCarrierAc64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Carrier.cpp:228
+
void on()
Change the power setting to On.
Definition: ir_Carrier.cpp:315
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kCarrierAc64SleepOffset
Definition: ir_Carrier.h:60
+
stdAc::state_t toCommon(void)
Convert the A/C state to it's common stdAc::state_t equivalent.
Definition: ir_Carrier.cpp:523
+
uint64_t remote_state
The state of the IR remote.
Definition: ir_Carrier.h:126
+
const uint8_t kCarrierAc64Heat
Definition: ir_Carrier.h:38
+ +
const uint8_t kCarrierAc64FanSize
Definition: ir_Carrier.h:43
+
uint64_t getRaw()
Get a copy of the internal state as a valid code for this protocol.
Definition: ir_Carrier.cpp:277
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
void _cancelOnTimer(void)
Clear the On Timer enable bit.
Definition: ir_Carrier.cpp:436
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Carrier.cpp:265
+
const uint8_t kCarrierAc64Cool
Definition: ir_Carrier.h:39
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's common stdAc::opmode_t equivalent.
Definition: ir_Carrier.cpp:355
+
uint8_t getMode()
Get the operating mode setting of the A/C.
Definition: ir_Carrier.cpp:322
+
uint8_t getFan()
Get the current fan speed setting.
Definition: ir_Carrier.cpp:365
+
const uint8_t kCarrierAc64OffTimerOffset
Definition: ir_Carrier.h:67
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kCarrierAc64OnTimerEnableOffset
Definition: ir_Carrier.h:58
+
void setTemp(const uint8_t temp)
Set the temp in deg C.
Definition: ir_Carrier.cpp:288
+
const uint8_t kCarrierAc64OnTimerOffset
Definition: ir_Carrier.h:65
+
uint16_t getOnTimer(void)
Get the current On Timer time.
Definition: ir_Carrier.cpp:443
+
void send(const uint16_t repeat=kCarrierAc64MinRepeat)
Send the current internal state as an IR message.
Definition: ir_Carrier.cpp:270
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Carrier.cpp:381
+
void setOffTimer(const uint16_t nr_of_mins)
Set the Off Timer time.
Definition: ir_Carrier.cpp:486
+
const uint8_t kCarrierAc64TimerMax
Definition: ir_Carrier.h:63
+
const uint8_t kCarrierAc64FanHigh
Definition: ir_Carrier.h:47
+ +
static bool validChecksum(const uint64_t state)
Verify the checksum is valid for a given state.
Definition: ir_Carrier.cpp:252
+
bool getPower()
Get the value of the current power setting.
Definition: ir_Carrier.cpp:310
+
const uint8_t kCarrierAc64FanMedium
Definition: ir_Carrier.h:46
+
const uint8_t kCarrierAc64MaxTemp
Definition: ir_Carrier.h:52
+
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:74
+
uint8_t getTemp()
Get the current temperature from the internal state.
Definition: ir_Carrier.cpp:297
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Carrier.h:120
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Carrier.cpp:234
+
const uint8_t kCarrierAc64OffTimerEnableOffset
Definition: ir_Carrier.h:56
+
const uint8_t kCarrierAc64SwingVOffset
Definition: ir_Carrier.h:53
+
static uint8_t calcChecksum(const uint64_t state)
Calculate the checksum for a given state.
Definition: ir_Carrier.cpp:239
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Carrier.h:86
+
void setRaw(const uint64_t state)
Set the internal state from a valid code for this protocol.
Definition: ir_Carrier.cpp:284
+
const uint8_t kCarrierAc64TimerSize
Definition: ir_Carrier.h:62
+
const uint8_t kCarrierAc64Fan
Definition: ir_Carrier.h:40
+
const uint8_t kCarrierAc64ChecksumSize
Definition: ir_Carrier.h:34
+
const uint8_t kCarrierAc64ModeOffset
Definition: ir_Carrier.h:35
+
bool getSleep(void)
Get the Sleep mode of the A/C.
Definition: ir_Carrier.cpp:431
+
void setOnTimer(const uint16_t nr_of_mins)
Set the On Timer time.
Definition: ir_Carrier.cpp:455
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode into its native mode.
Definition: ir_Carrier.cpp:344
+
const uint16_t kCarrierAc64MinRepeat
Definition: IRremoteESP8266.h:831
+
const uint8_t kCarrierAc64FanLow
Definition: ir_Carrier.h:45
+
const uint8_t kCarrierAc64FanAuto
Definition: ir_Carrier.h:44
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Carrier.cpp:395
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Carrier.cpp:371
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Carrier.cpp:328
+
void setSwingV(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Carrier.cpp:406
+
void setSleep(const bool on)
Set the Sleep mode of the A/C.
Definition: ir_Carrier.cpp:418
+
void _cancelOffTimer(void)
Clear the Off Timer enable bit.
Definition: ir_Carrier.cpp:467
+
String toString()
Convert the internal state into a human readable string.
Definition: ir_Carrier.cpp:500
+
const uint8_t kCarrierAc64PowerOffset
Definition: ir_Carrier.h:55
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kCarrierAc64ModeSize
Definition: ir_Carrier.h:37
+
const uint8_t kCarrierAc64TempOffset
Definition: ir_Carrier.h:48
+
const uint8_t kCarrierAc64TempSize
Definition: ir_Carrier.h:50
+
const uint8_t kCarrierAc64ChecksumOffset
Definition: ir_Carrier.h:33
+
const uint8_t kCarrierAc64FanOffset
Definition: ir_Carrier.h:41
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8cpp.html new file mode 100644 index 000000000..d09e7f0cf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8cpp.html @@ -0,0 +1,301 @@ + + + + + + + +IRremoteESP8266: src/ir_Coolix.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Coolix.cpp File Reference
+
+
+ +

Coolix A/C / heatpump. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kCoolixTick = 276
 
const uint16_t kCoolixBitMarkTicks = 2
 
const uint16_t kCoolixBitMark = kCoolixBitMarkTicks * kCoolixTick
 
const uint16_t kCoolixOneSpaceTicks = 6
 
const uint16_t kCoolixOneSpace = kCoolixOneSpaceTicks * kCoolixTick
 
const uint16_t kCoolixZeroSpaceTicks = 2
 
const uint16_t kCoolixZeroSpace = kCoolixZeroSpaceTicks * kCoolixTick
 
const uint16_t kCoolixHdrMarkTicks = 17
 
const uint16_t kCoolixHdrMark = kCoolixHdrMarkTicks * kCoolixTick
 
const uint16_t kCoolixHdrSpaceTicks = 16
 
const uint16_t kCoolixHdrSpace = kCoolixHdrSpaceTicks * kCoolixTick
 
const uint16_t kCoolixMinGapTicks = kCoolixHdrMarkTicks + kCoolixZeroSpaceTicks
 
const uint16_t kCoolixMinGap = kCoolixMinGapTicks * kCoolixTick
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kCoolixBitMark

+ +
+
+ + + + +
const uint16_t kCoolixBitMark = kCoolixBitMarkTicks * kCoolixTick
+
+ +
+
+ +

◆ kCoolixBitMarkTicks

+ +
+
+ + + + +
const uint16_t kCoolixBitMarkTicks = 2
+
+ +
+
+ +

◆ kCoolixHdrMark

+ +
+
+ + + + +
const uint16_t kCoolixHdrMark = kCoolixHdrMarkTicks * kCoolixTick
+
+ +
+
+ +

◆ kCoolixHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kCoolixHdrMarkTicks = 17
+
+ +
+
+ +

◆ kCoolixHdrSpace

+ +
+
+ + + + +
const uint16_t kCoolixHdrSpace = kCoolixHdrSpaceTicks * kCoolixTick
+
+ +
+
+ +

◆ kCoolixHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kCoolixHdrSpaceTicks = 16
+
+ +
+
+ +

◆ kCoolixMinGap

+ +
+
+ + + + +
const uint16_t kCoolixMinGap = kCoolixMinGapTicks * kCoolixTick
+
+ +
+
+ +

◆ kCoolixMinGapTicks

+ +
+
+ + + + +
const uint16_t kCoolixMinGapTicks = kCoolixHdrMarkTicks + kCoolixZeroSpaceTicks
+
+ +
+
+ +

◆ kCoolixOneSpace

+ +
+
+ + + + +
const uint16_t kCoolixOneSpace = kCoolixOneSpaceTicks * kCoolixTick
+
+ +
+
+ +

◆ kCoolixOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kCoolixOneSpaceTicks = 6
+
+ +
+
+ +

◆ kCoolixTick

+ +
+
+ + + + +
const uint16_t kCoolixTick = 276
+
+ +
+
+ +

◆ kCoolixZeroSpace

+ +
+
+ + + + +
const uint16_t kCoolixZeroSpace = kCoolixZeroSpaceTicks * kCoolixTick
+
+ +
+
+ +

◆ kCoolixZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kCoolixZeroSpaceTicks = 2
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h.html new file mode 100644 index 000000000..47a8b96fa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h.html @@ -0,0 +1,768 @@ + + + + + + + +IRremoteESP8266: src/ir_Coolix.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Coolix.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRCoolixAC
 Class for handling detailed Coolix A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kCoolixCool = 0b000
 
const uint8_t kCoolixDry = 0b001
 
const uint8_t kCoolixAuto = 0b010
 
const uint8_t kCoolixHeat = 0b011
 
const uint8_t kCoolixFan = 0b100
 
const uint8_t kCoolixModeOffset = 2
 
const uint8_t kCoolixModeSize = 2
 
const uint8_t kCoolixZoneFollowMaskOffset = 19
 
const uint8_t kCoolixFanOffset = 13
 
const uint8_t kCoolixFanSize = 3
 
const uint8_t kCoolixFanMin = 0b100
 
const uint8_t kCoolixFanMed = 0b010
 
const uint8_t kCoolixFanMax = 0b001
 
const uint8_t kCoolixFanAuto = 0b101
 
const uint8_t kCoolixFanAuto0 = 0b000
 
const uint8_t kCoolixFanZoneFollow = 0b110
 
const uint8_t kCoolixFanFixed = 0b111
 
const uint8_t kCoolixTempMin = 17
 
const uint8_t kCoolixTempMax = 30
 
const uint8_t kCoolixTempRange = kCoolixTempMax - kCoolixTempMin + 1
 
const uint8_t kCoolixFanTempCode = 0b1110
 
const uint8_t kCoolixTempOffset = 4
 
const uint8_t kCoolixTempSize = 4
 
const uint8_t kCoolixTempMap [kCoolixTempRange]
 
const uint8_t kCoolixSensorTempMin = 16
 
const uint8_t kCoolixSensorTempMax = 30
 
const uint8_t kCoolixSensorTempIgnoreCode = 0b1111
 
const uint8_t kCoolixSensorTempOffset = 8
 
const uint8_t kCoolixSensorTempSize = 4
 
const uint8_t kCoolixPrefix = 0b1011
 
const uint8_t kCoolixUnknown = 0xFF
 
const uint32_t kCoolixOff = 0b101100100111101111100000
 
const uint32_t kCoolixSwing = 0b101100100110101111100000
 
const uint32_t kCoolixSwingH = 0b101100101111010110100010
 
const uint32_t kCoolixSwingV = 0b101100100000111111100000
 
const uint32_t kCoolixSleep = 0b101100101110000000000011
 
const uint32_t kCoolixTurbo = 0b101101011111010110100010
 
const uint32_t kCoolixLed = 0b101101011111010110100101
 
const uint32_t kCoolixClean = 0b101101011111010110101010
 
const uint32_t kCoolixCmdFan = 0b101100101011111111100100
 
const uint32_t kCoolixDefaultState = 0b101100100001111111001000
 
+

Variable Documentation

+ +

◆ kCoolixAuto

+ +
+
+ + + + +
const uint8_t kCoolixAuto = 0b010
+
+ +
+
+ +

◆ kCoolixClean

+ +
+
+ + + + +
const uint32_t kCoolixClean = 0b101101011111010110101010
+
+ +
+
+ +

◆ kCoolixCmdFan

+ +
+
+ + + + +
const uint32_t kCoolixCmdFan = 0b101100101011111111100100
+
+ +
+
+ +

◆ kCoolixCool

+ +
+
+ + + + +
const uint8_t kCoolixCool = 0b000
+
+ +
+
+ +

◆ kCoolixDefaultState

+ +
+
+ + + + +
const uint32_t kCoolixDefaultState = 0b101100100001111111001000
+
+ +
+
+ +

◆ kCoolixDry

+ +
+
+ + + + +
const uint8_t kCoolixDry = 0b001
+
+ +
+
+ +

◆ kCoolixFan

+ +
+
+ + + + +
const uint8_t kCoolixFan = 0b100
+
+ +
+
+ +

◆ kCoolixFanAuto

+ +
+
+ + + + +
const uint8_t kCoolixFanAuto = 0b101
+
+ +
+
+ +

◆ kCoolixFanAuto0

+ +
+
+ + + + +
const uint8_t kCoolixFanAuto0 = 0b000
+
+ +
+
+ +

◆ kCoolixFanFixed

+ +
+
+ + + + +
const uint8_t kCoolixFanFixed = 0b111
+
+ +
+
+ +

◆ kCoolixFanMax

+ +
+
+ + + + +
const uint8_t kCoolixFanMax = 0b001
+
+ +
+
+ +

◆ kCoolixFanMed

+ +
+
+ + + + +
const uint8_t kCoolixFanMed = 0b010
+
+ +
+
+ +

◆ kCoolixFanMin

+ +
+
+ + + + +
const uint8_t kCoolixFanMin = 0b100
+
+ +
+
+ +

◆ kCoolixFanOffset

+ +
+
+ + + + +
const uint8_t kCoolixFanOffset = 13
+
+ +
+
+ +

◆ kCoolixFanSize

+ +
+
+ + + + +
const uint8_t kCoolixFanSize = 3
+
+ +
+
+ +

◆ kCoolixFanTempCode

+ +
+
+ + + + +
const uint8_t kCoolixFanTempCode = 0b1110
+
+ +
+
+ +

◆ kCoolixFanZoneFollow

+ +
+
+ + + + +
const uint8_t kCoolixFanZoneFollow = 0b110
+
+ +
+
+ +

◆ kCoolixHeat

+ +
+
+ + + + +
const uint8_t kCoolixHeat = 0b011
+
+ +
+
+ +

◆ kCoolixLed

+ +
+
+ + + + +
const uint32_t kCoolixLed = 0b101101011111010110100101
+
+ +
+
+ +

◆ kCoolixModeOffset

+ +
+
+ + + + +
const uint8_t kCoolixModeOffset = 2
+
+ +
+
+ +

◆ kCoolixModeSize

+ +
+
+ + + + +
const uint8_t kCoolixModeSize = 2
+
+ +
+
+ +

◆ kCoolixOff

+ +
+
+ + + + +
const uint32_t kCoolixOff = 0b101100100111101111100000
+
+ +
+
+ +

◆ kCoolixPrefix

+ +
+
+ + + + +
const uint8_t kCoolixPrefix = 0b1011
+
+ +
+
+ +

◆ kCoolixSensorTempIgnoreCode

+ +
+
+ + + + +
const uint8_t kCoolixSensorTempIgnoreCode = 0b1111
+
+ +
+
+ +

◆ kCoolixSensorTempMax

+ +
+
+ + + + +
const uint8_t kCoolixSensorTempMax = 30
+
+ +
+
+ +

◆ kCoolixSensorTempMin

+ +
+
+ + + + +
const uint8_t kCoolixSensorTempMin = 16
+
+ +
+
+ +

◆ kCoolixSensorTempOffset

+ +
+
+ + + + +
const uint8_t kCoolixSensorTempOffset = 8
+
+ +
+
+ +

◆ kCoolixSensorTempSize

+ +
+
+ + + + +
const uint8_t kCoolixSensorTempSize = 4
+
+ +
+
+ +

◆ kCoolixSleep

+ +
+
+ + + + +
const uint32_t kCoolixSleep = 0b101100101110000000000011
+
+ +
+
+ +

◆ kCoolixSwing

+ +
+
+ + + + +
const uint32_t kCoolixSwing = 0b101100100110101111100000
+
+ +
+
+ +

◆ kCoolixSwingH

+ +
+
+ + + + +
const uint32_t kCoolixSwingH = 0b101100101111010110100010
+
+ +
+
+ +

◆ kCoolixSwingV

+ +
+
+ + + + +
const uint32_t kCoolixSwingV = 0b101100100000111111100000
+
+ +
+
+ +

◆ kCoolixTempMap

+ +
+
+ + + + +
const uint8_t kCoolixTempMap[kCoolixTempRange]
+
+Initial value:
= {
+
0b0000,
+
0b0001,
+
0b0011,
+
0b0010,
+
0b0110,
+
0b0111,
+
0b0101,
+
0b0100,
+
0b1100,
+
0b1101,
+
0b1001,
+
0b1000,
+
0b1010,
+
0b1011
+
}
+
+
+
+ +

◆ kCoolixTempMax

+ +
+
+ + + + +
const uint8_t kCoolixTempMax = 30
+
+ +
+
+ +

◆ kCoolixTempMin

+ +
+
+ + + + +
const uint8_t kCoolixTempMin = 17
+
+ +
+
+ +

◆ kCoolixTempOffset

+ +
+
+ + + + +
const uint8_t kCoolixTempOffset = 4
+
+ +
+
+ +

◆ kCoolixTempRange

+ +
+
+ + + + +
const uint8_t kCoolixTempRange = kCoolixTempMax - kCoolixTempMin + 1
+
+ +
+
+ +

◆ kCoolixTempSize

+ +
+
+ + + + +
const uint8_t kCoolixTempSize = 4
+
+ +
+
+ +

◆ kCoolixTurbo

+ +
+
+ + + + +
const uint32_t kCoolixTurbo = 0b101101011111010110100010
+
+ +
+
+ +

◆ kCoolixUnknown

+ +
+
+ + + + +
const uint8_t kCoolixUnknown = 0xFF
+
+ +
+
+ +

◆ kCoolixZoneFollowMaskOffset

+ +
+
+ + + + +
const uint8_t kCoolixZoneFollowMaskOffset = 19
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h_source.html new file mode 100644 index 000000000..570f91033 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Coolix_8h_source.html @@ -0,0 +1,365 @@ + + + + + + + +IRremoteESP8266: src/ir_Coolix.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Coolix.h
+
+
+Go to the documentation of this file.
1 // Coolix A/C
+
2 //
+
3 // Copyright 2018 David Conran
+
4 
+
5 // Supports:
+
6 // Brand: Beko, Model: RG57K7(B)/BGEF Remote
+
7 // Brand: Beko, Model: BINR 070/071 split-type A/C
+
8 // Brand: Midea, Model: RG52D/BGE Remote
+
9 // Brand: Midea, Model: MS12FU-10HRDN1-QRD0GW(B) A/C
+
10 // Brand: Midea, Model: MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
+
11 // Brand: Tokio, Model: AATOEMF17-12CHR1SW split-type RG51|50/BGE Remote
+
12 // Brand: Airwell, Model: RC08B remote
+
13 
+
14 #ifndef IR_COOLIX_H_
+
15 #define IR_COOLIX_H_
+
16 
+
17 #define __STDC_LIMIT_MACROS
+
18 #include <stdint.h>
+
19 #ifndef UNIT_TEST
+
20 #include <Arduino.h>
+
21 #endif
+
22 #include "IRremoteESP8266.h"
+
23 #include "IRsend.h"
+
24 #ifdef UNIT_TEST
+
25 #include "IRsend_test.h"
+
26 #endif
+
27 
+
28 // Ref:
+
29 // https://github.com/crankyoldgit/IRremoteESP8266/issues/484
+
30 // Kudos:
+
31 // Hamper: For the breakdown and mapping of the bit values.
+
32 
+
33 // Constants
+
34 // Modes
+
35 const uint8_t kCoolixCool = 0b000;
+
36 const uint8_t kCoolixDry = 0b001;
+
37 const uint8_t kCoolixAuto = 0b010;
+
38 const uint8_t kCoolixHeat = 0b011;
+
39 const uint8_t kCoolixFan = 0b100; // Synthetic.
+
40 // const uint32_t kCoolixModeMask = 0b000000000000000000001100; // 0xC
+
41 const uint8_t kCoolixModeOffset = 2;
+
42 const uint8_t kCoolixModeSize = 2;
+
43 // const uint32_t kCoolixZoneFollowMask = 0b000010000000000000000000 0x80000
+
44 const uint8_t kCoolixZoneFollowMaskOffset = 19;
+
45 // Fan Control
+
46 // const uint32_t kCoolixFanMask = 0b000000001110000000000000; // 0x00E000
+
47 const uint8_t kCoolixFanOffset = 13;
+
48 const uint8_t kCoolixFanSize = 3;
+
49 const uint8_t kCoolixFanMin = 0b100;
+
50 const uint8_t kCoolixFanMed = 0b010;
+
51 const uint8_t kCoolixFanMax = 0b001;
+
52 const uint8_t kCoolixFanAuto = 0b101;
+
53 const uint8_t kCoolixFanAuto0 = 0b000;
+
54 const uint8_t kCoolixFanZoneFollow = 0b110;
+
55 const uint8_t kCoolixFanFixed = 0b111;
+
56 // Temperature
+
57 const uint8_t kCoolixTempMin = 17; // Celsius
+
58 const uint8_t kCoolixTempMax = 30; // Celsius
+ +
60 const uint8_t kCoolixFanTempCode = 0b1110; // Part of Fan Mode.
+
61 // const uint32_t kCoolixTempMask = 0b11110000;
+
62 const uint8_t kCoolixTempOffset = 4;
+
63 const uint8_t kCoolixTempSize = 4;
+
64 const uint8_t kCoolixTempMap[kCoolixTempRange] = {
+
65  0b0000, // 17C
+
66  0b0001, // 18c
+
67  0b0011, // 19C
+
68  0b0010, // 20C
+
69  0b0110, // 21C
+
70  0b0111, // 22C
+
71  0b0101, // 23C
+
72  0b0100, // 24C
+
73  0b1100, // 25C
+
74  0b1101, // 26C
+
75  0b1001, // 27C
+
76  0b1000, // 28C
+
77  0b1010, // 29C
+
78  0b1011 // 30C
+
79 };
+
80 const uint8_t kCoolixSensorTempMin = 16; // Celsius
+
81 const uint8_t kCoolixSensorTempMax = 30; // Celsius
+
82 const uint8_t kCoolixSensorTempIgnoreCode = 0b1111;
+
83 // kCoolixSensorTempMask = 0b000000000000111100000000; // 0xF00
+
84 const uint8_t kCoolixSensorTempOffset = 8;
+
85 const uint8_t kCoolixSensorTempSize = 4;
+
86 // Fixed states/messages.
+
87 const uint8_t kCoolixPrefix = 0b1011; // 0xB
+
88 const uint8_t kCoolixUnknown = 0xFF;
+
89 const uint32_t kCoolixOff = 0b101100100111101111100000; // 0xB27BE0
+
90 const uint32_t kCoolixSwing = 0b101100100110101111100000; // 0xB26BE0
+
91 const uint32_t kCoolixSwingH = 0b101100101111010110100010; // 0xB5F5A2
+
92 const uint32_t kCoolixSwingV = 0b101100100000111111100000; // 0xB20FE0
+
93 const uint32_t kCoolixSleep = 0b101100101110000000000011; // 0xB2E003
+
94 const uint32_t kCoolixTurbo = 0b101101011111010110100010; // 0xB5F5A2
+
95 const uint32_t kCoolixLed = 0b101101011111010110100101; // 0xB5F5A5
+
96 const uint32_t kCoolixClean = 0b101101011111010110101010; // 0xB5F5AA
+
97 const uint32_t kCoolixCmdFan = 0b101100101011111111100100; // 0xB2BFE4
+
98 // On, 25C, Mode: Auto, Fan: Auto, Zone Follow: Off, Sensor Temp: Ignore.
+
99 const uint32_t kCoolixDefaultState = 0b101100100001111111001000; // 0xB21FC8
+
100 
+
101 // Classes
+
102 
+
105 class IRCoolixAC {
+
106  public:
+
107  explicit IRCoolixAC(const uint16_t pin, const bool inverted = false,
+
108  const bool use_modulation = true);
+
109  void stateReset();
+
110 #if SEND_COOLIX
+
111  void send(const uint16_t repeat = kCoolixDefaultRepeat);
+
116  int8_t calibrate(void) { return _irsend.calibrate(); }
+
117 #endif // SEND_COOLIX
+
118  void begin();
+
119  void on();
+
120  void off();
+
121  void setPower(const bool state);
+
122  bool getPower();
+
123  void setTemp(const uint8_t temp);
+
124  uint8_t getTemp();
+
125  void setSensorTemp(const uint8_t desired);
+
126  uint8_t getSensorTemp();
+
127  void clearSensorTemp();
+
128  void setFan(const uint8_t speed, const bool modecheck = true);
+
129  uint8_t getFan();
+
130  void setMode(const uint8_t mode);
+
131  uint8_t getMode();
+
132  void setSwing();
+
133  bool getSwing();
+
134  void setSleep();
+
135  bool getSleep();
+
136  void setTurbo();
+
137  bool getTurbo();
+
138  void setLed();
+
139  bool getLed();
+
140  void setClean();
+
141  bool getClean();
+
142  bool getZoneFollow();
+
143  uint32_t getRaw();
+
144  void setRaw(const uint32_t new_code);
+
145  uint8_t convertMode(const stdAc::opmode_t mode);
+
146  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
147  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
148  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
149  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL);
+
150  String toString();
+
151 #ifndef UNIT_TEST
+
152 
+
153  private:
+ +
155 #else
+
156  IRsendTest _irsend;
+
158 #endif
+
160  // internal state
+
161  bool powerFlag;
+
162  bool turboFlag;
+
163  bool ledFlag;
+
164  bool cleanFlag;
+
165  bool sleepFlag;
+ +
167  bool swingFlag;
+ + +
170 
+
171  uint32_t remote_state;
+
172  uint32_t saved_state;
+
173  void setTempRaw(const uint8_t code);
+
174  uint8_t getTempRaw();
+
175  void setSensorTempRaw(const uint8_t code);
+
176  void setZoneFollow(const bool on);
+
177  bool isSpecialState(void);
+
178  bool handleSpecialState(const uint32_t data);
+
179  void updateSavedState(void);
+
180  void recoverSavedState(void);
+
181  uint32_t getNormalState(void);
+
182 };
+
183 
+
184 #endif // IR_COOLIX_H_
+
+
void setLed()
Toggle the Led (light) mode of the A/C.
Definition: ir_Coolix.cpp:325
+
const uint8_t kCoolixFanSize
Definition: ir_Coolix.h:48
+
const uint8_t kCoolixZoneFollowMaskOffset
Definition: ir_Coolix.h:44
+
bool zoneFollowFlag
Definition: ir_Coolix.h:166
+
const uint8_t kCoolixFanZoneFollow
Definition: ir_Coolix.h:54
+
uint32_t getNormalState(void)
+
void setTempRaw(const uint8_t code)
Set the raw (native) temperature value.
Definition: ir_Coolix.cpp:206
+
void setSensorTempRaw(const uint8_t code)
Set the raw (native) sensor temperature value.
Definition: ir_Coolix.cpp:237
+
bool getTurbo()
Get the Turbo setting of the A/C.
Definition: ir_Coolix.cpp:310
+
const uint8_t kCoolixFanMin
Definition: ir_Coolix.h:49
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Coolix.h:116
+
void setZoneFollow(const bool on)
Change the Zone Follow setting.
Definition: ir_Coolix.cpp:352
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Coolix.cpp:365
+
const uint32_t kCoolixSwingH
Definition: ir_Coolix.h:91
+
uint32_t remote_state
The state of the IR remote in IR code form.
Definition: ir_Coolix.h:171
+
void send(const uint16_t repeat=kCoolixDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Coolix.cpp:112
+
bool getZoneFollow()
Get the Zone Follow setting of the A/C.
Definition: ir_Coolix.cpp:345
+
const uint8_t kCoolixFanAuto0
Definition: ir_Coolix.h:53
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kCoolixDry
Definition: ir_Coolix.h:36
+
void setClean()
Toggle the Clean mode of the A/C.
Definition: ir_Coolix.cpp:337
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Coolix.cpp:227
+
const uint8_t kCoolixFanMed
Definition: ir_Coolix.h:50
+
bool getSwing()
Get the Swing setting of the A/C.
Definition: ir_Coolix.cpp:287
+
const uint8_t kCoolixTempSize
Definition: ir_Coolix.h:63
+
uint8_t getSensorTemp()
Get the sensor temperature setting.
Definition: ir_Coolix.cpp:253
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Coolix.h:154
+
bool turboFlag
Definition: ir_Coolix.h:162
+
const uint8_t kCoolixSensorTempMin
Definition: ir_Coolix.h:80
+ +
bool ledFlag
Definition: ir_Coolix.h:163
+
const uint32_t kCoolixSwing
Definition: ir_Coolix.h:90
+
const uint8_t kCoolixCool
Definition: ir_Coolix.h:35
+
const uint8_t kCoolixAuto
Definition: ir_Coolix.h:37
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
bool cleanFlag
Definition: ir_Coolix.h:164
+
uint32_t getRaw()
Get a copy of the internal state as a valid code for this protocol.
Definition: ir_Coolix.cpp:122
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Coolix.cpp:488
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
void updateSavedState(void)
Backup the current internal state as long as it isn't a special state.
Definition: ir_Coolix.cpp:189
+
const uint8_t kCoolixHeat
Definition: ir_Coolix.h:38
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode into its native mode.
Definition: ir_Coolix.cpp:448
+
const uint32_t kCoolixOff
Definition: ir_Coolix.h:89
+
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
Convert the A/C state to it's common stdAc::state_t equivalent.
Definition: ir_Coolix.cpp:500
+
std::string String
Definition: IRremoteESP8266.h:1093
+
void recoverSavedState(void)
Restore the current internal state from backup as long as it isn't a special state.
Definition: ir_Coolix.cpp:195
+
void setTurbo()
Toggle the Turbo mode of the A/C.
Definition: ir_Coolix.cpp:313
+
const uint8_t kCoolixSensorTempSize
Definition: ir_Coolix.h:85
+
const uint8_t kCoolixFanTempCode
Definition: ir_Coolix.h:60
+
bool swingVFlag
Definition: ir_Coolix.h:169
+
bool getClean()
Get the Clean setting of the A/C.
Definition: ir_Coolix.cpp:334
+
void on()
Change the power setting to On.
Definition: ir_Coolix.cpp:280
+ +
const uint8_t kCoolixTempMap[kCoolixTempRange]
Definition: ir_Coolix.h:64
+
void clearSensorTemp()
Clear the Sensor Temperature setting..
Definition: ir_Coolix.cpp:358
+
const uint32_t kCoolixClean
Definition: ir_Coolix.h:96
+
const uint8_t kCoolixFanFixed
Definition: ir_Coolix.h:55
+
const uint8_t kCoolixModeSize
Definition: ir_Coolix.h:42
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Coolix.cpp:93
+
const uint32_t kCoolixDefaultState
Definition: ir_Coolix.h:99
+
const uint16_t kCoolixDefaultRepeat
Definition: IRremoteESP8266.h:825
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Coolix.cpp:461
+
void setSleep()
Toggle the Sleep mode of the A/C.
Definition: ir_Coolix.cpp:302
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's common stdAc::opmode_t equivalent.
Definition: ir_Coolix.cpp:475
+
uint32_t saved_state
Copy of the state if we required a special mode.
Definition: ir_Coolix.h:172
+
bool isSpecialState(void)
Is the current state is a special state?
Definition: ir_Coolix.cpp:142
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Coolix.cpp:218
+
const uint8_t kCoolixTempOffset
Definition: ir_Coolix.h:62
+
Class for handling detailed Coolix A/C messages.
Definition: ir_Coolix.h:105
+
uint8_t getMode()
Get the operating mode setting of the A/C.
Definition: ir_Coolix.cpp:393
+
uint8_t getFan()
Get the current fan speed setting.
Definition: ir_Coolix.cpp:403
+
const uint32_t kCoolixLed
Definition: ir_Coolix.h:95
+
const uint8_t kCoolixUnknown
Definition: ir_Coolix.h:88
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Coolix.cpp:107
+
void setRaw(const uint32_t new_code)
Set the internal state from a valid code for this protocol.
Definition: ir_Coolix.cpp:126
+
uint8_t getTempRaw()
Get the raw (native) temperature value.
Definition: ir_Coolix.cpp:212
+
const uint8_t kCoolixFanOffset
Definition: ir_Coolix.h:47
+
const uint32_t kCoolixCmdFan
Definition: ir_Coolix.h:97
+
const uint8_t kCoolixTempMax
Definition: ir_Coolix.h:58
+
bool swingFlag
Definition: ir_Coolix.h:167
+
const uint8_t kCoolixFan
Definition: ir_Coolix.h:39
+
const uint32_t kCoolixSwingV
Definition: ir_Coolix.h:92
+
bool swingHFlag
Definition: ir_Coolix.h:168
+
void off()
Change the power setting to Off.
Definition: ir_Coolix.cpp:283
+
bool sleepFlag
Definition: ir_Coolix.h:165
+
const uint32_t kCoolixSleep
Definition: ir_Coolix.h:93
+
void setSensorTemp(const uint8_t desired)
Set the sensor temperature.
Definition: ir_Coolix.cpp:243
+
IRCoolixAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Coolix.cpp:88
+
const uint8_t kCoolixPrefix
Definition: ir_Coolix.h:87
+
const uint8_t kCoolixTempRange
Definition: ir_Coolix.h:59
+
const uint8_t kCoolixTempMin
Definition: ir_Coolix.h:57
+
const uint8_t kCoolixSensorTempMax
Definition: ir_Coolix.h:81
+
const uint8_t kCoolixModeOffset
Definition: ir_Coolix.h:41
+
const uint8_t kCoolixFanMax
Definition: ir_Coolix.h:51
+
const uint8_t kCoolixSensorTempOffset
Definition: ir_Coolix.h:84
+
const uint8_t kCoolixFanAuto
Definition: ir_Coolix.h:52
+
bool powerFlag
Definition: ir_Coolix.h:161
+
String toString()
Convert the internal state into a human readable string.
Definition: ir_Coolix.cpp:559
+
bool getPower()
Get the value of the current power setting.
Definition: ir_Coolix.cpp:260
+
void setFan(const uint8_t speed, const bool modecheck=true)
Set the speed of the fan.
Definition: ir_Coolix.cpp:410
+
bool handleSpecialState(const uint32_t data)
Adjust any internal settings based on the type of special state we are supplied. Does nothing if it i...
Definition: ir_Coolix.cpp:160
+
bool getSleep()
Get the Sleep setting of the A/C.
Definition: ir_Coolix.cpp:299
+
void setPower(const bool state)
Change the power setting.
Definition: ir_Coolix.cpp:267
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void setSwing()
Toggle the Swing mode of the A/C.
Definition: ir_Coolix.cpp:290
+
const uint8_t kCoolixSensorTempIgnoreCode
Definition: ir_Coolix.h:82
+
const uint32_t kCoolixTurbo
Definition: ir_Coolix.h:94
+
bool getLed()
Get the Led (light) setting of the A/C.
Definition: ir_Coolix.cpp:322
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8cpp.html new file mode 100644 index 000000000..ba795e56d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8cpp.html @@ -0,0 +1,256 @@ + + + + + + + +IRremoteESP8266: src/ir_Corona.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Corona.cpp File Reference
+
+
+ +

Corona A/C protocol. +More...

+ + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kCoronaAcHdrMark = 3500
 
const uint16_t kCoronaAcHdrSpace = 1680
 
const uint16_t kCoronaAcBitMark = 450
 
const uint16_t kCoronaAcOneSpace = 1270
 
const uint16_t kCoronaAcZeroSpace = 420
 
const uint16_t kCoronaAcSpaceGap = 10800
 
const uint16_t kCoronaAcFreq = 38000
 
const uint16_t kCoronaAcOverheadShort = 3
 
const uint16_t kCoronaAcOverhead = 11
 
const uint8_t kCoronaTolerance = 5
 
+

Detailed Description

+

Corona A/C protocol.

+
Note
Unsupported:
    +
  • Auto/Max button press (special format)
  • +
+
+

Variable Documentation

+ +

◆ kCoronaAcBitMark

+ +
+
+ + + + +
const uint16_t kCoronaAcBitMark = 450
+
+ +
+
+ +

◆ kCoronaAcFreq

+ +
+
+ + + + +
const uint16_t kCoronaAcFreq = 38000
+
+ +
+
+ +

◆ kCoronaAcHdrMark

+ +
+
+ + + + +
const uint16_t kCoronaAcHdrMark = 3500
+
+ +
+
+ +

◆ kCoronaAcHdrSpace

+ +
+
+ + + + +
const uint16_t kCoronaAcHdrSpace = 1680
+
+ +
+
+ +

◆ kCoronaAcOneSpace

+ +
+
+ + + + +
const uint16_t kCoronaAcOneSpace = 1270
+
+ +
+
+ +

◆ kCoronaAcOverhead

+ +
+
+ + + + +
const uint16_t kCoronaAcOverhead = 11
+
+ +
+
+ +

◆ kCoronaAcOverheadShort

+ +
+
+ + + + +
const uint16_t kCoronaAcOverheadShort = 3
+
+ +
+
+ +

◆ kCoronaAcSpaceGap

+ +
+
+ + + + +
const uint16_t kCoronaAcSpaceGap = 10800
+
+ +
+
+ +

◆ kCoronaAcZeroSpace

+ +
+
+ + + + +
const uint16_t kCoronaAcZeroSpace = 420
+
+ +
+
+ +

◆ kCoronaTolerance

+ +
+
+ + + + +
const uint8_t kCoronaTolerance = 5
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h.html new file mode 100644 index 000000000..62a551867 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h.html @@ -0,0 +1,730 @@ + + + + + + + +IRremoteESP8266: src/ir_Corona.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Corona.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRCoronaAc
 Class for handling detailed Corona A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kCoronaAcSectionBytes = 7
 
const uint8_t kCoronaAcSections = 3
 
const uint8_t kCoronaAcSectionHeader0Pos = 0
 
const uint8_t kCoronaAcSectionHeader0 = 0x28
 
const uint8_t kCoronaAcSectionHeader1Pos = 1
 
const uint8_t kCoronaAcSectionHeader1 = 0x61
 
const uint8_t kCoronaAcSectionLabelPos = 2
 
const uint8_t kCoronaAcSectionLabelBase = 0x0D
 
const uint8_t kCoronaAcSectionData0Pos = 3
 
const uint8_t kCoronaAcSectionData0InvPos = 4
 
const uint8_t kCoronaAcSectionData1Pos = 5
 
const uint8_t kCoronaAcSectionData1InvPos = 6
 
const uint8_t kCoronaAcSectionData0Base = 0x10
 
const uint8_t kCoronaAcSettingsSection = 0
 
const uint8_t kCoronaAcFanOffset = 0
 
const uint8_t kCoronaAcFanSize = 2
 
const uint8_t kCoronaAcFanAuto = 0b00
 
const uint8_t kCoronaAcFanLow = 0b01
 
const uint8_t kCoronaAcFanMedium = 0b10
 
const uint8_t kCoronaAcFanHigh = 0b11
 
const uint8_t kCoronaAcPowerSaveOffset = 3
 
const uint8_t kCoronaAcSwingVToggleOffset = 6
 
const uint8_t kCoronaAcTempOffset = 0
 
const uint8_t kCoronaAcTempSize = 4
 
const uint8_t kCoronaAcMinTemp = 17
 
const uint8_t kCoronaAcMaxTemp = 30
 
const uint8_t kCoronaAcPowerOffset
 
const uint8_t kCoronaAcPowerButtonOffset
 
const uint8_t kCoronaAcModeOffset
 
const uint8_t kCoronaAcModeSize = 2
 
const uint8_t kCoronaAcModeHeat = 0b00
 
const uint8_t kCoronaAcModeDry = 0b01
 
const uint8_t kCoronaAcModeCool = 0b10
 
const uint8_t kCoronaAcModeFan = 0b11
 
const uint8_t kCoronaAcOnTimerSection = 1
 
const uint8_t kCoronaAcOffTimerSection = 2
 
const uint16_t kCoronaAcTimerMax = 12 * 60
 
const uint16_t kCoronaAcTimerOff = 0xffff
 
const uint16_t kCoronaAcTimerUnitsPerMin = 30
 
+

Variable Documentation

+ +

◆ kCoronaAcFanAuto

+ +
+
+ + + + +
const uint8_t kCoronaAcFanAuto = 0b00
+
+ +
+
+ +

◆ kCoronaAcFanHigh

+ +
+
+ + + + +
const uint8_t kCoronaAcFanHigh = 0b11
+
+ +
+
+ +

◆ kCoronaAcFanLow

+ +
+
+ + + + +
const uint8_t kCoronaAcFanLow = 0b01
+
+ +
+
+ +

◆ kCoronaAcFanMedium

+ +
+
+ + + + +
const uint8_t kCoronaAcFanMedium = 0b10
+
+ +
+
+ +

◆ kCoronaAcFanOffset

+ +
+
+ + + + +
const uint8_t kCoronaAcFanOffset = 0
+
+ +
+
+ +

◆ kCoronaAcFanSize

+ +
+
+ + + + +
const uint8_t kCoronaAcFanSize = 2
+
+ +
+
+ +

◆ kCoronaAcMaxTemp

+ +
+
+ + + + +
const uint8_t kCoronaAcMaxTemp = 30
+
+ +
+
+ +

◆ kCoronaAcMinTemp

+ +
+
+ + + + +
const uint8_t kCoronaAcMinTemp = 17
+
+ +
+
+ +

◆ kCoronaAcModeCool

+ +
+
+ + + + +
const uint8_t kCoronaAcModeCool = 0b10
+
+ +
+
+ +

◆ kCoronaAcModeDry

+ +
+
+ + + + +
const uint8_t kCoronaAcModeDry = 0b01
+
+ +
+
+ +

◆ kCoronaAcModeFan

+ +
+
+ + + + +
const uint8_t kCoronaAcModeFan = 0b11
+
+ +
+
+ +

◆ kCoronaAcModeHeat

+ +
+
+ + + + +
const uint8_t kCoronaAcModeHeat = 0b00
+
+ +
+
+ +

◆ kCoronaAcModeOffset

+ +
+
+ + + + +
const uint8_t kCoronaAcModeOffset
+
+Initial value: +
+
+ +

◆ kCoronaAcModeSize

+ +
+
+ + + + +
const uint8_t kCoronaAcModeSize = 2
+
+ +
+
+ +

◆ kCoronaAcOffTimerSection

+ +
+
+ + + + +
const uint8_t kCoronaAcOffTimerSection = 2
+
+ +
+
+ +

◆ kCoronaAcOnTimerSection

+ +
+
+ + + + +
const uint8_t kCoronaAcOnTimerSection = 1
+
+ +
+
+ +

◆ kCoronaAcPowerButtonOffset

+ +
+
+ + + + +
const uint8_t kCoronaAcPowerButtonOffset
+
+Initial value: +
+
+ +

◆ kCoronaAcPowerOffset

+ +
+
+ + + + +
const uint8_t kCoronaAcPowerOffset
+
+Initial value: +
+
+ +

◆ kCoronaAcPowerSaveOffset

+ +
+
+ + + + +
const uint8_t kCoronaAcPowerSaveOffset = 3
+
+ +
+
+ +

◆ kCoronaAcSectionBytes

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionBytes = 7
+
+ +
+
+ +

◆ kCoronaAcSectionData0Base

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionData0Base = 0x10
+
+ +
+
+ +

◆ kCoronaAcSectionData0InvPos

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionData0InvPos = 4
+
+ +
+
+ +

◆ kCoronaAcSectionData0Pos

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionData0Pos = 3
+
+ +
+
+ +

◆ kCoronaAcSectionData1InvPos

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionData1InvPos = 6
+
+ +
+
+ +

◆ kCoronaAcSectionData1Pos

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionData1Pos = 5
+
+ +
+
+ +

◆ kCoronaAcSectionHeader0

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionHeader0 = 0x28
+
+ +
+
+ +

◆ kCoronaAcSectionHeader0Pos

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionHeader0Pos = 0
+
+ +
+
+ +

◆ kCoronaAcSectionHeader1

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionHeader1 = 0x61
+
+ +
+
+ +

◆ kCoronaAcSectionHeader1Pos

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionHeader1Pos = 1
+
+ +
+
+ +

◆ kCoronaAcSectionLabelBase

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionLabelBase = 0x0D
+
+ +
+
+ +

◆ kCoronaAcSectionLabelPos

+ +
+
+ + + + +
const uint8_t kCoronaAcSectionLabelPos = 2
+
+ +
+
+ +

◆ kCoronaAcSections

+ +
+
+ + + + +
const uint8_t kCoronaAcSections = 3
+
+ +
+
+ +

◆ kCoronaAcSettingsSection

+ +
+
+ + + + +
const uint8_t kCoronaAcSettingsSection = 0
+
+ +
+
+ +

◆ kCoronaAcSwingVToggleOffset

+ +
+
+ + + + +
const uint8_t kCoronaAcSwingVToggleOffset = 6
+
+ +
+
+ +

◆ kCoronaAcTempOffset

+ +
+
+ + + + +
const uint8_t kCoronaAcTempOffset = 0
+
+ +
+
+ +

◆ kCoronaAcTempSize

+ +
+
+ + + + +
const uint8_t kCoronaAcTempSize = 4
+
+ +
+
+ +

◆ kCoronaAcTimerMax

+ +
+
+ + + + +
const uint16_t kCoronaAcTimerMax = 12 * 60
+
+ +
+
+ +

◆ kCoronaAcTimerOff

+ +
+
+ + + + +
const uint16_t kCoronaAcTimerOff = 0xffff
+
+ +
+
+ +

◆ kCoronaAcTimerUnitsPerMin

+ +
+
+ + + + +
const uint16_t kCoronaAcTimerUnitsPerMin = 30
+
+ +
+
+
+
const uint8_t kCoronaAcTempOffset
Definition: ir_Corona.h:67
+
const uint8_t kCoronaAcTempSize
Definition: ir_Corona.h:68
+
const uint8_t kCoronaAcPowerOffset
Definition: ir_Corona.h:71
+
const uint8_t kCoronaAcPowerButtonOffset
Definition: ir_Corona.h:73
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h_source.html new file mode 100644 index 000000000..61f778b49 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Corona_8h_source.html @@ -0,0 +1,319 @@ + + + + + + + +IRremoteESP8266: src/ir_Corona.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Corona.h
+
+
+Go to the documentation of this file.
1 // Corona A/C
+
2 //
+
3 // Copyright 2020 Christian Nilsson
+
4 
+
5 // Supports:
+
6 // Brand: Corona, Model: CSH-N2211 A/C
+
7 // Brand: Corona, Model: CSH-N2511 A/C
+
8 // Brand: Corona, Model: CSH-N2811 A/C
+
9 // Brand: Corona, Model: CSH-N4011 A/C
+
10 // Brand: Corona, Model: AR-01 remote
+
11 //
+
12 // Ref: https://docs.google.com/spreadsheets/d/1zzDEUQ52y7MZ7_xCU3pdjdqbRXOwZLsbTGvKWcicqCI/
+
13 // Ref: https://www.corona.co.jp/box/download.php?id=145060636229
+
14 
+
15 #ifndef IR_CORONA_H_
+
16 #define IR_CORONA_H_
+
17 
+
18 #define __STDC_LIMIT_MACROS
+
19 #include <stdint.h>
+
20 #ifndef UNIT_TEST
+
21 #include <Arduino.h>
+
22 #endif
+
23 #include "IRremoteESP8266.h"
+
24 #include "IRsend.h"
+
25 #ifdef UNIT_TEST
+
26 #include "IRsend_test.h"
+
27 #endif
+
28 
+
29 // Constants
+
30 
+
31 // CORONA_AC
+
32 const uint8_t kCoronaAcSectionBytes = 7; // kCoronaAcStateLengthShort
+
33 const uint8_t kCoronaAcSections = 3;
+
34 const uint8_t kCoronaAcSectionHeader0Pos = 0;
+
35 const uint8_t kCoronaAcSectionHeader0 = 0x28;
+
36 const uint8_t kCoronaAcSectionHeader1Pos = 1;
+
37 const uint8_t kCoronaAcSectionHeader1 = 0x61;
+
38 const uint8_t kCoronaAcSectionLabelPos = 2;
+
39 const uint8_t kCoronaAcSectionLabelBase = 0x0D; // 0b1101
+
40 const uint8_t kCoronaAcSectionData0Pos = 3;
+
41 const uint8_t kCoronaAcSectionData0InvPos = 4;
+
42 const uint8_t kCoronaAcSectionData1Pos = 5;
+
43 const uint8_t kCoronaAcSectionData1InvPos = 6;
+
44 const uint8_t kCoronaAcSectionData0Base = 0x10; // D0 Pos 4 always on
+
45 
+
46 const uint8_t kCoronaAcSettingsSection = 0;
+
47 // D0
+
48 const uint8_t kCoronaAcFanOffset = 0; // D0 LSB Pos 0-1
+
49 const uint8_t kCoronaAcFanSize = 2;
+
50 const uint8_t kCoronaAcFanAuto = 0b00; // 0
+
51 const uint8_t kCoronaAcFanLow = 0b01; // 1
+
52 const uint8_t kCoronaAcFanMedium = 0b10; // 2
+
53 const uint8_t kCoronaAcFanHigh = 0b11; // 3
+
54 
+
55 // One bit unknown // D0 Pos 2
+
56 const uint8_t kCoronaAcPowerSaveOffset = 3; // D0 Pos 3
+
57 // One bit unknown always on // D0 Pos 4
+
58 // One bit unknown // D0 Pos 5
+
59 const uint8_t kCoronaAcSwingVToggleOffset = 6; // D0 Pos 6
+
60 // One bit unknown // D0 MSB Pos 7
+
61 
+
62 // D1
+
63 /* full auto mode not supported by this code yet
+
64 const uint8_t kCoronaAcAutoD0 = 0b00010100; // only combined with power save
+
65 const uint8_t kCoronaAcAutoD1 = 0b10000011; // only combined with power
+
66 */
+
67 const uint8_t kCoronaAcTempOffset = 0; // D1 LSB Pos 0
+
68 const uint8_t kCoronaAcTempSize = 4;
+
69 const uint8_t kCoronaAcMinTemp = 17; // Celsius = 0b0001
+
70 const uint8_t kCoronaAcMaxTemp = 30; // Celsius = 0b1110
+
71 const uint8_t kCoronaAcPowerOffset =
+ + +
74  kCoronaAcPowerOffset + 1; // D1 Pos 5
+
75 const uint8_t kCoronaAcModeOffset =
+
76  kCoronaAcPowerButtonOffset + 1; // D1 MSB Pos 6-7
+
77 const uint8_t kCoronaAcModeSize = 2;
+
78 const uint8_t kCoronaAcModeHeat = 0b00; // 0
+
79 const uint8_t kCoronaAcModeDry = 0b01; // 1
+
80 const uint8_t kCoronaAcModeCool = 0b10; // 2
+
81 const uint8_t kCoronaAcModeFan = 0b11; // 3
+
82 
+
83 const uint8_t kCoronaAcOnTimerSection = 1;
+
84 const uint8_t kCoronaAcOffTimerSection = 2;
+
85 const uint16_t kCoronaAcTimerMax = 12 * 60; // 12H in Minutes
+
86 // Min value on remote is 1 hour, actual sent value can be 2 secs
+
87 const uint16_t kCoronaAcTimerOff = 0xffff;
+
88 const uint16_t kCoronaAcTimerUnitsPerMin = 30; // 30 units = 1 minute
+
89 
+
90 // Classes
+
91 
+
93 class IRCoronaAc {
+
94  public:
+
95  explicit IRCoronaAc(const uint16_t pin, const bool inverted = false,
+
96  const bool use_modulation = true);
+
97 
+
98  void stateReset();
+
99 #if SEND_CORONA_AC
+
100  void send(const uint16_t repeat = kNoRepeat);
+
105  int8_t calibrate(void) { return _irsend.calibrate(); }
+
106 #endif // SEND_CORONA_AC
+
107  void begin();
+
108  static bool validSection(const uint8_t state[], const uint16_t pos,
+
109  const uint8_t section);
+
110  void setPower(const bool on);
+
111  bool getPower();
+
112  bool getPowerButton();
+
113  void on();
+
114  void off();
+
115  void setTemp(const uint8_t temp);
+
116  uint8_t getTemp();
+
117  void setSwingVToggle(const bool on);
+
118  bool getSwingVToggle(void);
+
119  void setFan(const uint8_t speed);
+
120  uint8_t getFan();
+
121  void setMode(const uint8_t mode);
+
122  uint8_t getMode();
+
123  void setEcono(const bool on);
+
124  bool getEcono(void);
+
125  void setOnTimer(const uint16_t nr_of_mins);
+
126  uint16_t getOnTimer(void);
+
127  void setOffTimer(const uint16_t nr_of_mins);
+
128  uint16_t getOffTimer(void);
+
129  uint8_t* getRaw();
+
130  void setRaw(const uint8_t new_code[],
+
131  const uint16_t length = kCoronaAcStateLength);
+
132  uint8_t convertMode(const stdAc::opmode_t mode);
+
133  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
134  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
135  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+ +
137  String toString();
+
138 #ifndef UNIT_TEST
+
139 
+
140  private:
+ +
142 #else
+
143  IRsendTest _irsend;
+
145 #endif
+ +
148  static uint8_t getSectionByte(const uint8_t section);
+
149  static void checksum(uint8_t* data);
+
150  void setPowerButton(const bool on);
+
151  void _setPower(const bool on);
+
152  void _setTimer(const uint8_t section, const uint16_t nr_of_mins);
+
153  uint16_t _getTimer(const uint8_t section);
+
154 };
+
155 #endif // IR_CORONA_H_
+
+
bool getPowerButton()
Get the value of the current power button setting.
Definition: ir_Corona.cpp:346
+
uint16_t getOnTimer(void)
Get the current On Timer time.
Definition: ir_Corona.cpp:518
+
const uint8_t kCoronaAcSectionBytes
Definition: ir_Corona.h:32
+
const uint8_t kCoronaAcTempOffset
Definition: ir_Corona.h:67
+
void setFan(const uint8_t speed)
Set the operating speed of the A/C Fan.
Definition: ir_Corona.cpp:415
+
void setEcono(const bool on)
Change the powersave setting.
Definition: ir_Corona.cpp:425
+
const uint8_t kCoronaAcSectionHeader0Pos
Definition: ir_Corona.h:34
+
void setRaw(const uint8_t new_code[], const uint16_t length=kCoronaAcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Corona.cpp:285
+
const uint8_t kCoronaAcSectionLabelBase
Definition: ir_Corona.h:39
+
const uint8_t kCoronaAcModeFan
Definition: ir_Corona.h:81
+
void setPowerButton(const bool on)
Change the power button setting.
Definition: ir_Corona.cpp:339
+
Class for handling detailed Corona A/C messages.
Definition: ir_Corona.h:93
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kCoronaAcModeDry
Definition: ir_Corona.h:79
+
const uint8_t kCoronaAcSectionData0Base
Definition: ir_Corona.h:44
+
const uint8_t kCoronaAcPowerSaveOffset
Definition: ir_Corona.h:56
+
void setPower(const bool on)
Change the power setting. (in practice Standby, remote power)
Definition: ir_Corona.cpp:315
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Corona.cpp:155
+
const uint8_t kCoronaAcTempSize
Definition: ir_Corona.h:68
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Corona.cpp:255
+
const uint8_t kCoronaAcFanMedium
Definition: ir_Corona.h:52
+
const uint16_t kCoronaAcTimerUnitsPerMin
Definition: ir_Corona.h:88
+
void setOffTimer(const uint16_t nr_of_mins)
Set the Off Timer time.
Definition: ir_Corona.cpp:541
+
const uint8_t kCoronaAcFanLow
Definition: ir_Corona.h:51
+
stdAc::state_t toCommon()
Convert the A/C state to it's common stdAc::state_t equivalent.
Definition: ir_Corona.cpp:575
+ +
void setTemp(const uint8_t temp)
Set the temp in deg C.
Definition: ir_Corona.cpp:291
+
const uint8_t kCoronaAcSectionHeader0
Definition: ir_Corona.h:35
+
void setOnTimer(const uint16_t nr_of_mins)
Set the On Timer time.
Definition: ir_Corona.cpp:525
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
uint8_t remote_state[kCoronaAcStateLength]
The state of the IR remote.
Definition: ir_Corona.h:147
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a standard A/C Fan speed into its native fan speed.
Definition: ir_Corona.cpp:439
+
const uint8_t kCoronaAcSwingVToggleOffset
Definition: ir_Corona.h:59
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kCoronaAcOffTimerSection
Definition: ir_Corona.h:84
+
void on()
Change the power setting to On.
Definition: ir_Corona.cpp:352
+
const uint16_t kCoronaAcTimerMax
Definition: ir_Corona.h:85
+
static bool validSection(const uint8_t state[], const uint16_t pos, const uint8_t section)
Check that a CoronaAc Section part is valid with section byte and inverted.
Definition: ir_Corona.cpp:188
+
bool getPower()
Get the current power setting. (in practice Standby, remote power)
Definition: ir_Corona.cpp:326
+
const uint8_t kCoronaAcSectionHeader1
Definition: ir_Corona.h:37
+
uint8_t getTemp()
Get the current temperature from the internal state.
Definition: ir_Corona.cpp:300
+
bool getEcono(void)
Get the value of the current powersave setting.
Definition: ir_Corona.cpp:431
+
bool getSwingVToggle(void)
Get the Vertical Swing toggle setting.
Definition: ir_Corona.cpp:473
+ +
uint8_t getMode()
Get the operating mode setting of the A/C.
Definition: ir_Corona.cpp:359
+
void send(const uint16_t repeat=kNoRepeat)
Send the current internal state as an IR message.
Definition: ir_Corona.cpp:260
+
const uint8_t kCoronaAcSectionData1InvPos
Definition: ir_Corona.h:43
+
const uint8_t kCoronaAcPowerOffset
Definition: ir_Corona.h:71
+
const uint8_t kCoronaAcPowerButtonOffset
Definition: ir_Corona.h:73
+
const uint8_t kCoronaAcSections
Definition: ir_Corona.h:33
+
const uint8_t kCoronaAcSectionData0InvPos
Definition: ir_Corona.h:41
+
const uint16_t kNoRepeat
Definition: IRremoteESP8266.h:810
+
const uint8_t kCoronaAcFanHigh
Definition: ir_Corona.h:53
+
const uint8_t kCoronaAcSectionData1Pos
Definition: ir_Corona.h:42
+
const uint16_t kCoronaAcStateLength
Definition: IRremoteESP8266.h:833
+
static void checksum(uint8_t *data)
Calculate and set the check values for the internal state.
Definition: ir_Corona.cpp:240
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode into its native mode.
Definition: ir_Corona.cpp:385
+
uint16_t _getTimer(const uint8_t section)
Get the current Timer time.
Definition: ir_Corona.cpp:504
+
uint8_t getFan()
Get the operating speed of the A/C Fan.
Definition: ir_Corona.cpp:408
+
const uint8_t kCoronaAcFanSize
Definition: ir_Corona.h:49
+
void _setTimer(const uint8_t section, const uint16_t nr_of_mins)
Set the Timer time.
Definition: ir_Corona.cpp:483
+
const uint8_t kCoronaAcModeCool
Definition: ir_Corona.h:80
+
const uint8_t kCoronaAcMinTemp
Definition: ir_Corona.h:69
+
const uint8_t kCoronaAcSectionData0Pos
Definition: ir_Corona.h:40
+
const uint8_t kCoronaAcSectionLabelPos
Definition: ir_Corona.h:38
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's common stdAc::opmode_t equivalent.
Definition: ir_Corona.cpp:397
+
uint16_t getOffTimer(void)
Get the current Off Timer time.
Definition: ir_Corona.cpp:534
+
const uint8_t kCoronaAcSectionHeader1Pos
Definition: ir_Corona.h:36
+
IRCoronaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor for handling detailed Corona A/C messages.
Definition: ir_Corona.cpp:149
+
uint8_t * getRaw()
Get a copy of the internal state as a valid code for this protocol.
Definition: ir_Corona.cpp:277
+
const uint8_t kCoronaAcSettingsSection
Definition: ir_Corona.h:46
+
const uint8_t kCoronaAcFanOffset
Definition: ir_Corona.h:48
+
const uint8_t kCoronaAcModeHeat
Definition: ir_Corona.h:78
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Corona.h:141
+
void setSwingVToggle(const bool on)
Set the Vertical Swing toggle setting.
Definition: ir_Corona.cpp:466
+
const uint8_t kCoronaAcModeOffset
Definition: ir_Corona.h:75
+
static uint8_t getSectionByte(const uint8_t section)
Get the byte that identifies the section.
Definition: ir_Corona.cpp:172
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Corona.cpp:366
+
void off()
Change the power setting to Off.
Definition: ir_Corona.cpp:355
+
void _setPower(const bool on)
Change the power setting. (in practice Standby, remote power)
Definition: ir_Corona.cpp:307
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed to it's common equivalent.
Definition: ir_Corona.cpp:453
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Corona.h:105
+
const uint16_t kCoronaAcTimerOff
Definition: ir_Corona.h:87
+
const uint8_t kCoronaAcOnTimerSection
Definition: ir_Corona.h:83
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
String toString()
Convert the internal state into a human readable string.
Definition: ir_Corona.cpp:550
+
const uint8_t kCoronaAcMaxTemp
Definition: ir_Corona.h:70
+
const uint8_t kCoronaAcFanAuto
Definition: ir_Corona.h:50
+
const uint8_t kCoronaAcModeSize
Definition: ir_Corona.h:77
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8cpp.html new file mode 100644 index 000000000..3f6d4561f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8cpp.html @@ -0,0 +1,114 @@ + + + + + + + +IRremoteESP8266: src/ir_Daikin.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Daikin.cpp File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h.html new file mode 100644 index 000000000..5732dacd5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h.html @@ -0,0 +1,5674 @@ + + + + + + + +IRremoteESP8266: src/ir_Daikin.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Daikin.h File Reference
+
+
+ +

Support for Daikin A/C protocols. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  IRDaikinESP
 Class for handling detailed Daikin 280-bit A/C messages. More...
 
class  IRDaikin2
 Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering analysis by sheppy99. More...
 
class  IRDaikin216
 Class for handling detailed Daikin 216-bit A/C messages. More...
 
class  IRDaikin160
 Class for handling detailed Daikin 160-bit A/C messages. More...
 
class  IRDaikin176
 Class for handling detailed Daikin 176-bit A/C messages. More...
 
class  IRDaikin128
 Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Vena. More...
 
class  IRDaikin152
 Class for handling detailed Daikin 152-bit A/C messages. More...
 
class  IRDaikin64
 Class for handling detailed Daikin 64-bit A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kDaikinAuto = 0b000
 
const uint8_t kDaikinDry = 0b010
 
const uint8_t kDaikinCool = 0b011
 
const uint8_t kDaikinHeat = 0b100
 
const uint8_t kDaikinFan = 0b110
 
const uint8_t kDaikinModeOffset = 4
 
const uint8_t kDaikinModeSize = 3
 
const uint8_t kDaikinMinTemp = 10
 
const uint8_t kDaikinMaxTemp = 32
 
const uint8_t kDaikinFanMin = 1
 
const uint8_t kDaikinFanMed = 3
 
const uint8_t kDaikinFanMax = 5
 
const uint8_t kDaikinFanAuto = 0b1010
 
const uint8_t kDaikinFanQuiet = 0b1011
 
const uint8_t kDaikinFanOffset = 4
 
const uint8_t kDaikinFanSize = 4
 
const uint8_t kDaikinSwingOffset = 0
 
const uint8_t kDaikinSwingSize = 4
 
const uint8_t kDaikinSwingOn = 0b1111
 
const uint8_t kDaikinSwingOff = 0b0000
 
const uint16_t kDaikinHeaderLength = 5
 
const uint8_t kDaikinSections = 3
 
const uint8_t kDaikinSection1Length = 8
 
const uint8_t kDaikinSection2Length = 8
 
const uint8_t kDaikinSection3Length
 
const uint8_t kDaikinByteComfort = 6
 
const uint8_t kDaikinByteChecksum1 = 7
 
const uint8_t kDaikinBitComfortOffset = 4
 
const uint8_t kDaikinBitComfort = 1 << kDaikinBitComfortOffset
 
const uint8_t kDaikinByteClockMinsLow = 13
 
const uint8_t kDaikinByteClockMinsHigh = 14
 
const uint8_t kDaikinClockMinsHighOffset = 0
 
const uint8_t kDaikinClockMinsHighSize = 3
 
const uint8_t kDaikinDoWOffset = 3
 
const uint8_t kDaikinDoWSize = 3
 
const uint8_t kDaikinByteChecksum2 = 15
 
const uint8_t kDaikinBytePower = 21
 
const uint8_t kDaikinBitPowerOffset = 0
 
const uint8_t kDaikinBitPower = 1 << kDaikinBitPowerOffset
 
const uint8_t kDaikinTempOffset = 1
 
const uint8_t kDaikinTempSize = 6
 
const uint8_t kDaikinByteTemp = 22
 
const uint8_t kDaikinByteFan = 24
 
const uint8_t kDaikinByteSwingH = 25
 
const uint8_t kDaikinByteOnTimerMinsLow = 26
 
const uint8_t kDaikinByteOnTimerMinsHigh = 27
 
const uint8_t kDaikinOnTimerMinsHighOffset = 0
 
const uint8_t kDaikinOnTimerMinsHighSize = 4
 
const uint8_t kDaikinByteOffTimerMinsLow = kDaikinByteOnTimerMinsHigh
 
const uint8_t kDaikinByteOffTimerMinsHigh = 28
 
const uint8_t kDaikinBytePowerful = 29
 
const uint8_t kDaikinBitPowerfulOffset = 0
 
const uint8_t kDaikinBitPowerful = 1 << kDaikinBitPowerfulOffset
 
const uint8_t kDaikinByteSilent = kDaikinBytePowerful
 
const uint8_t kDaikinBitSilentOffset = 5
 
const uint8_t kDaikinBitSilent = 1 << kDaikinBitSilentOffset
 
const uint8_t kDaikinByteSensor = 32
 
const uint8_t kDaikinBitSensorOffset = 1
 
const uint8_t kDaikinBitSensor = 1 << kDaikinBitSensorOffset
 
const uint8_t kDaikinByteEcono = kDaikinByteSensor
 
const uint8_t kDaikinBitEconoOffset = 2
 
const uint8_t kDaikinBitEcono = 1 << kDaikinBitEconoOffset
 
const uint8_t kDaikinByteEye = kDaikinByteSensor
 
const uint8_t kDaikinBitEye = 0b10000000
 
const uint8_t kDaikinByteWeeklyTimer = kDaikinByteSensor
 
const uint8_t kDaikinBitWeeklyTimerOffset = 7
 
const uint8_t kDaikinBitWeeklyTimer = 1 << kDaikinBitWeeklyTimerOffset
 
const uint8_t kDaikinByteMold = 33
 
const uint8_t kDaikinBitMoldOffset = 1
 
const uint8_t kDaikinBitMold = 1 << kDaikinBitMoldOffset
 
const uint8_t kDaikinByteOffTimer = kDaikinBytePower
 
const uint8_t kDaikinBitOffTimerOffset = 2
 
const uint8_t kDaikinBitOffTimer = 1 << kDaikinBitOffTimerOffset
 
const uint8_t kDaikinByteOnTimer = kDaikinByteOffTimer
 
const uint8_t kDaikinBitOnTimerOffset = 1
 
const uint8_t kDaikinBitOnTimer = 1 << kDaikinBitOnTimerOffset
 
const uint8_t kDaikinByteChecksum3 = kDaikinStateLength - 1
 
const uint16_t kDaikinUnusedTime = 0x600
 
const uint8_t kDaikinBeepQuiet = 1
 
const uint8_t kDaikinBeepLoud = 2
 
const uint8_t kDaikinBeepOff = 3
 
const uint8_t kDaikinLightBright = 1
 
const uint8_t kDaikinLightDim = 2
 
const uint8_t kDaikinLightOff = 3
 
const uint8_t kDaikinCurBit = kDaikinStateLength
 
const uint8_t kDaikinCurIndex = kDaikinStateLength + 1
 
const uint8_t kDaikinTolerance = 35
 
const uint16_t kDaikinMarkExcess = kMarkExcess
 
const uint16_t kDaikinHdrMark = 3650
 
const uint16_t kDaikinHdrSpace = 1623
 
const uint16_t kDaikinBitMark = 428
 
const uint16_t kDaikinZeroSpace = 428
 
const uint16_t kDaikinOneSpace = 1280
 
const uint16_t kDaikinGap = 29000
 
const uint64_t kDaikinFirstHeader64
 
const uint16_t kDaikin2Freq = 36700
 
const uint16_t kDaikin2LeaderMark = 10024
 
const uint16_t kDaikin2LeaderSpace = 25180
 
const uint16_t kDaikin2Gap = kDaikin2LeaderMark + kDaikin2LeaderSpace
 
const uint16_t kDaikin2HdrMark = 3500
 
const uint16_t kDaikin2HdrSpace = 1728
 
const uint16_t kDaikin2BitMark = 460
 
const uint16_t kDaikin2OneSpace = 1270
 
const uint16_t kDaikin2ZeroSpace = 420
 
const uint16_t kDaikin2Sections = 2
 
const uint16_t kDaikin2Section1Length = 20
 
const uint16_t kDaikin2Section2Length = 19
 
const uint8_t kDaikin2Tolerance = 5
 
const uint8_t kDaikin2BitSleepTimerOffset = 5
 
const uint8_t kDaikin2BitSleepTimer = 1 << kDaikin2BitSleepTimerOffset
 
const uint8_t kDaikin2BitPurifyOffset = 4
 
const uint8_t kDaikin2BitPurify = 1 << kDaikin2BitPurifyOffset
 
const uint8_t kDaikin2BitEyeOffset = 1
 
const uint8_t kDaikin2BitEye = 1 << kDaikin2BitEyeOffset
 
const uint8_t kDaikin2BitEyeAutoOffset = 7
 
const uint8_t kDaikin2BitEyeAuto = 1 << kDaikin2BitEyeAutoOffset
 
const uint8_t kDaikin2BitMoldOffset = 3
 
const uint8_t kDaikin2BitMold = 1 << kDaikin2BitMoldOffset
 
const uint8_t kDaikin2BitCleanOffset = 5
 
const uint8_t kDaikin2BitClean = 1 << kDaikin2BitCleanOffset
 
const uint8_t kDaikin2BitFreshAirOffset = 0
 
const uint8_t kDaikin2BitFreshAir = 1 << kDaikin2BitFreshAirOffset
 
const uint8_t kDaikin2BitFreshAirHighOffset = 7
 
const uint8_t kDaikin2BitFreshAirHigh = 1 << kDaikin2BitFreshAirHighOffset
 
const uint8_t kDaikin2BitPowerOffset = 7
 
const uint8_t kDaikin2BitPower = 1 << kDaikin2BitPowerOffset
 
const uint8_t kDaikin2LightOffset = 4
 
const uint8_t kDaikin2LightSize = 2
 
const uint8_t kDaikin2BeepOffset = 6
 
const uint8_t kDaikin2BeepSize = 2
 
const uint8_t kDaikin2SwingVHigh = 0x1
 
const uint8_t kDaikin2SwingVLow = 0x6
 
const uint8_t kDaikin2SwingVSwing = 0xF
 
const uint8_t kDaikin2SwingVAuto = 0xE
 
const uint8_t kDaikin2SwingVBreeze = 0xC
 
const uint8_t kDaikin2SwingVCirculate = 0xD
 
const uint8_t kDaikin2FanByte = 28
 
const uint8_t kDaikin2SwingHWide = 0xA3
 
const uint8_t kDaikin2SwingHLeftMax = 0xA8
 
const uint8_t kDaikin2SwingHLeft = 0xA9
 
const uint8_t kDaikin2SwingHMiddle = 0xAA
 
const uint8_t kDaikin2SwingHRight = 0xAB
 
const uint8_t kDaikin2SwingHRightMax = 0xAC
 
const uint8_t kDaikin2SwingHAuto = 0xBE
 
const uint8_t kDaikin2SwingHSwing = 0xBF
 
const uint8_t kDaikin2MinCoolTemp = 18
 
const uint16_t kDaikin216Freq = 38000
 
const uint16_t kDaikin216HdrMark = 3440
 
const uint16_t kDaikin216HdrSpace = 1750
 
const uint16_t kDaikin216BitMark = 420
 
const uint16_t kDaikin216OneSpace = 1300
 
const uint16_t kDaikin216ZeroSpace = 450
 
const uint16_t kDaikin216Gap = 29650
 
const uint16_t kDaikin216Sections = 2
 
const uint16_t kDaikin216Section1Length = 8
 
const uint16_t kDaikin216Section2Length
 
const uint8_t kDaikin216BytePower = 13
 
const uint8_t kDaikin216ByteMode = kDaikin216BytePower
 
const uint8_t kDaikin216ByteTemp = 14
 
const uint8_t kDaikin216TempOffset = 1
 
const uint8_t kDaikin216TempSize = 6
 
const uint8_t kDaikin216ByteFan = 16
 
const uint8_t kDaikin216MaskFan = 0b11110000
 
const uint8_t kDaikin216ByteSwingV = 16
 
const uint8_t kDaikin216SwingSize = 4
 
const uint8_t kDaikin216SwingOn = 0b1111
 
const uint8_t kDaikin216SwingOff = 0b0000
 
const uint8_t kDaikin216ByteSwingH = 17
 
const uint8_t kDaikin216BytePowerful = 21
 
const uint16_t kDaikin160Freq = 38000
 
const uint16_t kDaikin160HdrMark = 5000
 
const uint16_t kDaikin160HdrSpace = 2145
 
const uint16_t kDaikin160BitMark = 342
 
const uint16_t kDaikin160OneSpace = 1786
 
const uint16_t kDaikin160ZeroSpace = 700
 
const uint16_t kDaikin160Gap = 29650
 
const uint16_t kDaikin160Sections = 2
 
const uint16_t kDaikin160Section1Length = 7
 
const uint16_t kDaikin160Section2Length
 
const uint8_t kDaikin160BytePower = 12
 
const uint8_t kDaikin160ByteMode = kDaikin160BytePower
 
const uint8_t kDaikin160ByteTemp = 16
 
const uint8_t kDaikin160TempOffset = 1
 
const uint8_t kDaikin160TempSize = 6
 
const uint8_t kDaikin160ByteFan = 17
 
const uint8_t kDaikin160MaskFan = 0b00001111
 
const uint8_t kDaikin160ByteSwingV = 13
 
const uint8_t kDaikin160MaskSwingV = 0b11110000
 
const uint8_t kDaikin160SwingVLowest = 0x1
 
const uint8_t kDaikin160SwingVLow = 0x2
 
const uint8_t kDaikin160SwingVMiddle = 0x3
 
const uint8_t kDaikin160SwingVHigh = 0x4
 
const uint8_t kDaikin160SwingVHighest = 0x5
 
const uint8_t kDaikin160SwingVAuto = 0xF
 
const uint16_t kDaikin176Freq = 38000
 
const uint16_t kDaikin176HdrMark = 5070
 
const uint16_t kDaikin176HdrSpace = 2140
 
const uint16_t kDaikin176BitMark = 370
 
const uint16_t kDaikin176OneSpace = 1780
 
const uint16_t kDaikin176ZeroSpace = 710
 
const uint16_t kDaikin176Gap = 29410
 
const uint16_t kDaikin176Sections = 2
 
const uint16_t kDaikin176Section1Length = 7
 
const uint16_t kDaikin176Section2Length
 
const uint8_t kDaikin176Cool = 0b111
 
const uint8_t kDaikin176BytePower = 14
 
const uint8_t kDaikin176ByteMode = 12
 
const uint8_t kDaikin176MaskMode = 0b01110000
 
const uint8_t kDaikin176ByteModeButton = 13
 
const uint8_t kDaikin176ModeButton = 0b00000100
 
const uint8_t kDaikin176ByteTemp = 17
 
const uint8_t kDaikin176TempOffset = 1
 
const uint8_t kDaikin176TempSize = 6
 
const uint8_t kDaikin176DryFanTemp = 17
 
const uint8_t kDaikin176ByteFan = 18
 
const uint8_t kDaikin176MaskFan = 0b11110000
 
const uint8_t kDaikin176FanMax = 3
 
const uint8_t kDaikin176ByteSwingH = 18
 
const uint8_t kDaikin176SwingHAuto = 0x5
 
const uint8_t kDaikin176SwingHOff = 0x6
 
const uint16_t kDaikin128Freq = 38000
 
const uint16_t kDaikin128LeaderMark = 9800
 
const uint16_t kDaikin128LeaderSpace = 9800
 
const uint16_t kDaikin128HdrMark = 4600
 
const uint16_t kDaikin128HdrSpace = 2500
 
const uint16_t kDaikin128BitMark = 350
 
const uint16_t kDaikin128OneSpace = 954
 
const uint16_t kDaikin128ZeroSpace = 382
 
const uint16_t kDaikin128Gap = 20300
 
const uint16_t kDaikin128FooterMark = kDaikin128HdrMark
 
const uint16_t kDaikin128Sections = 2
 
const uint16_t kDaikin128SectionLength = 8
 
const uint8_t kDaikin128ByteModeFan = 1
 
const uint8_t kDaikin128ModeSize = 4
 
const uint8_t kDaikin128Dry = 0b00000001
 
const uint8_t kDaikin128Cool = 0b00000010
 
const uint8_t kDaikin128Fan = 0b00000100
 
const uint8_t kDaikin128Heat = 0b00001000
 
const uint8_t kDaikin128Auto = 0b00001010
 
const uint8_t kDaikin128MaskFan = 0b11110000
 
const uint8_t kDaikin128FanAuto = 0b0001
 
const uint8_t kDaikin128FanHigh = 0b0010
 
const uint8_t kDaikin128FanMed = 0b0100
 
const uint8_t kDaikin128FanLow = 0b1000
 
const uint8_t kDaikin128FanPowerful = 0b0011
 
const uint8_t kDaikin128FanQuiet = 0b1001
 
const uint8_t kDaikin128ByteClockMins = 2
 
const uint8_t kDaikin128ByteClockHours = 3
 
const uint8_t kDaikin128ByteOnTimer = 4
 
const uint8_t kDaikin128ByteOffTimer = 5
 
const uint8_t kDaikin128BitTimerEnabledOffset = 7
 
const uint8_t kDaikin128BitTimerEnabled = 1 << kDaikin128BitTimerEnabledOffset
 
const uint8_t kDaikin128TimerOffset = 0
 
const uint8_t kDaikin128TimerSize = 7
 
const uint8_t kDaikin128HalfHourOffset = 6
 
const uint8_t kDaikin128BitHalfHour = 1 << kDaikin128HalfHourOffset
 
const uint8_t kDaikin128HoursOffset = 0
 
const uint8_t kDaikin128HoursSize = 6
 
const uint8_t kDaikin128ByteTemp = 6
 
const uint8_t kDaikin128MinTemp = 16
 
const uint8_t kDaikin128MaxTemp = 30
 
const uint8_t kDaikin128BytePowerSwingSleep = 7
 
const uint8_t kDaikin128BitSwingOffset = 0
 
const uint8_t kDaikin128BitSwing = 1 << kDaikin128BitSwingOffset
 
const uint8_t kDaikin128BitSleepOffset = 1
 
const uint8_t kDaikin128BitSleep = 1 << kDaikin128BitSleepOffset
 
const uint8_t kDaikin128BitPowerToggleOffset = 3
 
const uint8_t kDaikin128BitPowerToggle = 1 << kDaikin128BitPowerToggleOffset
 
const uint8_t kDaikin128ByteEconoLight = 9
 
const uint8_t kDaikin128BitEconoOffset = 2
 
const uint8_t kDaikin128BitEcono = 1 << kDaikin128BitEconoOffset
 
const uint8_t kDaikin128BitWall = 0b00001000
 
const uint8_t kDaikin128BitCeiling = 0b00000001
 
const uint8_t kDaikin128MaskLight = kDaikin128BitWall | kDaikin128BitCeiling
 
const uint16_t kDaikin152Freq = 38000
 
const uint8_t kDaikin152LeaderBits = 5
 
const uint16_t kDaikin152HdrMark = 3492
 
const uint16_t kDaikin152HdrSpace = 1718
 
const uint16_t kDaikin152BitMark = 433
 
const uint16_t kDaikin152OneSpace = 1529
 
const uint16_t kDaikin152ZeroSpace = kDaikin152BitMark
 
const uint16_t kDaikin152Gap = 25182
 
const uint8_t kDaikin152ModeByte = 5
 
const uint8_t kDaikin152PowerByte = kDaikin152ModeByte
 
const uint8_t kDaikin152TempByte = 6
 
const uint8_t kDaikin152TempSize = 7
 
const uint8_t kDaikin152DryTemp = kDaikin2MinCoolTemp
 
const uint8_t kDaikin152FanTemp = 0x60
 
const uint8_t kDaikin152FanByte = 8
 
const uint8_t kDaikin152SwingVByte = kDaikin152FanByte
 
const uint8_t kDaikin152QuietByte = 13
 
const uint8_t kDaikin152PowerfulByte = kDaikin152QuietByte
 
const uint8_t kDaikin152EconoByte = 16
 
const uint8_t kDaikin152ComfortByte = kDaikin152EconoByte
 
const uint8_t kDaikin152ComfortOffset = 1
 
const uint8_t kDaikin152SensorByte = kDaikin152EconoByte
 
const uint8_t kDaikin152SensorOffset = 3
 
const uint16_t kDaikin64HdrMark = kDaikin128HdrMark
 
const uint16_t kDaikin64BitMark = kDaikin128BitMark
 
const uint16_t kDaikin64HdrSpace = kDaikin128HdrSpace
 
const uint16_t kDaikin64OneSpace = kDaikin128OneSpace
 
const uint16_t kDaikin64ZeroSpace = kDaikin128ZeroSpace
 
const uint16_t kDaikin64LdrMark = kDaikin128LeaderMark
 
const uint16_t kDaikin64Gap = kDaikin128Gap
 
const uint16_t kDaikin64LdrSpace = kDaikin128LeaderSpace
 
const uint16_t kDaikin64Freq = kDaikin128Freq
 
const uint8_t kDaikin64Overhead = 9
 
const int8_t kDaikin64ToleranceDelta = 5
 
const uint64_t kDaikin64KnownGoodState = 0x7C16161607204216
 
const uint8_t kDaikin64ModeOffset = 8
 
const uint8_t kDaikin64ModeSize = 4
 
const uint8_t kDaikin64Dry = 0b001
 
const uint8_t kDaikin64Cool = 0b010
 
const uint8_t kDaikin64Fan = 0b100
 
const uint8_t kDaikin64FanOffset = kDaikin64ModeOffset + kDaikin64ModeSize
 
const uint8_t kDaikin64FanSize = 4
 
const uint8_t kDaikin64FanAuto = 0b0001
 
const uint8_t kDaikin64FanLow = 0b1000
 
const uint8_t kDaikin64FanMed = 0b0100
 
const uint8_t kDaikin64FanHigh = 0b0010
 
const uint8_t kDaikin64FanQuiet = 0b1001
 
const uint8_t kDaikin64FanTurbo = 0b0011
 
const uint8_t kDaikin64ClockOffset = kDaikin64FanOffset + kDaikin64FanSize
 
const uint8_t kDaikin64ClockMinsSize = 8
 
const uint8_t kDaikin64ClockHoursSize = 8
 
const uint8_t kDaikin64ClockSize
 
const uint8_t kDaikin64OnTimeOffset
 
const uint8_t kDaikin64OnTimeSize = 6
 
const uint8_t kDaikin64OnTimeHalfHourBit
 
const uint8_t kDaikin64OnTimeEnableBit = kDaikin64OnTimeHalfHourBit + 1
 
const uint8_t kDaikin64OffTimeOffset = kDaikin64OnTimeEnableBit + 1
 
const uint8_t kDaikin64OffTimeSize = 6
 
const uint8_t kDaikin64OffTimeHalfHourBit
 
const uint8_t kDaikin64OffTimeEnableBit = kDaikin64OffTimeHalfHourBit + 1
 
const uint8_t kDaikin64TempOffset = 48
 
const uint8_t kDaikin64TempSize = 8
 
const uint8_t kDaikin64MinTemp = 16
 
const uint8_t kDaikin64MaxTemp = 30
 
const uint8_t kDaikin64SwingVBit = 56
 
const uint8_t kDaikin64SleepBit = kDaikin64SwingVBit + 1
 
const uint8_t kDaikin64PowerToggleBit = 59
 
const uint8_t kDaikin64ChecksumOffset = 60
 
const uint8_t kDaikin64ChecksumSize = 4
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kDaikin128Auto

+ +
+
+ + + + +
const uint8_t kDaikin128Auto = 0b00001010
+
+ +
+
+ +

◆ kDaikin128BitCeiling

+ +
+
+ + + + +
const uint8_t kDaikin128BitCeiling = 0b00000001
+
+ +
+
+ +

◆ kDaikin128BitEcono

+ +
+
+ + + + +
const uint8_t kDaikin128BitEcono = 1 << kDaikin128BitEconoOffset
+
+ +
+
+ +

◆ kDaikin128BitEconoOffset

+ +
+
+ + + + +
const uint8_t kDaikin128BitEconoOffset = 2
+
+ +
+
+ +

◆ kDaikin128BitHalfHour

+ +
+
+ + + + +
const uint8_t kDaikin128BitHalfHour = 1 << kDaikin128HalfHourOffset
+
+ +
+
+ +

◆ kDaikin128BitMark

+ +
+
+ + + + +
const uint16_t kDaikin128BitMark = 350
+
+ +
+
+ +

◆ kDaikin128BitPowerToggle

+ +
+
+ + + + +
const uint8_t kDaikin128BitPowerToggle = 1 << kDaikin128BitPowerToggleOffset
+
+ +
+
+ +

◆ kDaikin128BitPowerToggleOffset

+ +
+
+ + + + +
const uint8_t kDaikin128BitPowerToggleOffset = 3
+
+ +
+
+ +

◆ kDaikin128BitSleep

+ +
+
+ + + + +
const uint8_t kDaikin128BitSleep = 1 << kDaikin128BitSleepOffset
+
+ +
+
+ +

◆ kDaikin128BitSleepOffset

+ +
+
+ + + + +
const uint8_t kDaikin128BitSleepOffset = 1
+
+ +
+
+ +

◆ kDaikin128BitSwing

+ +
+
+ + + + +
const uint8_t kDaikin128BitSwing = 1 << kDaikin128BitSwingOffset
+
+ +
+
+ +

◆ kDaikin128BitSwingOffset

+ +
+
+ + + + +
const uint8_t kDaikin128BitSwingOffset = 0
+
+ +
+
+ +

◆ kDaikin128BitTimerEnabled

+ +
+
+ + + + +
const uint8_t kDaikin128BitTimerEnabled = 1 << kDaikin128BitTimerEnabledOffset
+
+ +
+
+ +

◆ kDaikin128BitTimerEnabledOffset

+ +
+
+ + + + +
const uint8_t kDaikin128BitTimerEnabledOffset = 7
+
+ +
+
+ +

◆ kDaikin128BitWall

+ +
+
+ + + + +
const uint8_t kDaikin128BitWall = 0b00001000
+
+ +
+
+ +

◆ kDaikin128ByteClockHours

+ +
+
+ + + + +
const uint8_t kDaikin128ByteClockHours = 3
+
+ +
+
+ +

◆ kDaikin128ByteClockMins

+ +
+
+ + + + +
const uint8_t kDaikin128ByteClockMins = 2
+
+ +
+
+ +

◆ kDaikin128ByteEconoLight

+ +
+
+ + + + +
const uint8_t kDaikin128ByteEconoLight = 9
+
+ +
+
+ +

◆ kDaikin128ByteModeFan

+ +
+
+ + + + +
const uint8_t kDaikin128ByteModeFan = 1
+
+ +
+
+ +

◆ kDaikin128ByteOffTimer

+ +
+
+ + + + +
const uint8_t kDaikin128ByteOffTimer = 5
+
+ +
+
+ +

◆ kDaikin128ByteOnTimer

+ +
+
+ + + + +
const uint8_t kDaikin128ByteOnTimer = 4
+
+ +
+
+ +

◆ kDaikin128BytePowerSwingSleep

+ +
+
+ + + + +
const uint8_t kDaikin128BytePowerSwingSleep = 7
+
+ +
+
+ +

◆ kDaikin128ByteTemp

+ +
+
+ + + + +
const uint8_t kDaikin128ByteTemp = 6
+
+ +
+
+ +

◆ kDaikin128Cool

+ +
+
+ + + + +
const uint8_t kDaikin128Cool = 0b00000010
+
+ +
+
+ +

◆ kDaikin128Dry

+ +
+
+ + + + +
const uint8_t kDaikin128Dry = 0b00000001
+
+ +
+
+ +

◆ kDaikin128Fan

+ +
+
+ + + + +
const uint8_t kDaikin128Fan = 0b00000100
+
+ +
+
+ +

◆ kDaikin128FanAuto

+ +
+
+ + + + +
const uint8_t kDaikin128FanAuto = 0b0001
+
+ +
+
+ +

◆ kDaikin128FanHigh

+ +
+
+ + + + +
const uint8_t kDaikin128FanHigh = 0b0010
+
+ +
+
+ +

◆ kDaikin128FanLow

+ +
+
+ + + + +
const uint8_t kDaikin128FanLow = 0b1000
+
+ +
+
+ +

◆ kDaikin128FanMed

+ +
+
+ + + + +
const uint8_t kDaikin128FanMed = 0b0100
+
+ +
+
+ +

◆ kDaikin128FanPowerful

+ +
+
+ + + + +
const uint8_t kDaikin128FanPowerful = 0b0011
+
+ +
+
+ +

◆ kDaikin128FanQuiet

+ +
+
+ + + + +
const uint8_t kDaikin128FanQuiet = 0b1001
+
+ +
+
+ +

◆ kDaikin128FooterMark

+ +
+
+ + + + +
const uint16_t kDaikin128FooterMark = kDaikin128HdrMark
+
+ +
+
+ +

◆ kDaikin128Freq

+ +
+
+ + + + +
const uint16_t kDaikin128Freq = 38000
+
+ +
+
+ +

◆ kDaikin128Gap

+ +
+
+ + + + +
const uint16_t kDaikin128Gap = 20300
+
+ +
+
+ +

◆ kDaikin128HalfHourOffset

+ +
+
+ + + + +
const uint8_t kDaikin128HalfHourOffset = 6
+
+ +
+
+ +

◆ kDaikin128HdrMark

+ +
+
+ + + + +
const uint16_t kDaikin128HdrMark = 4600
+
+ +
+
+ +

◆ kDaikin128HdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin128HdrSpace = 2500
+
+ +
+
+ +

◆ kDaikin128Heat

+ +
+
+ + + + +
const uint8_t kDaikin128Heat = 0b00001000
+
+ +
+
+ +

◆ kDaikin128HoursOffset

+ +
+
+ + + + +
const uint8_t kDaikin128HoursOffset = 0
+
+ +
+
+ +

◆ kDaikin128HoursSize

+ +
+
+ + + + +
const uint8_t kDaikin128HoursSize = 6
+
+ +
+
+ +

◆ kDaikin128LeaderMark

+ +
+
+ + + + +
const uint16_t kDaikin128LeaderMark = 9800
+
+ +
+
+ +

◆ kDaikin128LeaderSpace

+ +
+
+ + + + +
const uint16_t kDaikin128LeaderSpace = 9800
+
+ +
+
+ +

◆ kDaikin128MaskFan

+ +
+
+ + + + +
const uint8_t kDaikin128MaskFan = 0b11110000
+
+ +
+
+ +

◆ kDaikin128MaskLight

+ +
+
+ + + + +
const uint8_t kDaikin128MaskLight = kDaikin128BitWall | kDaikin128BitCeiling
+
+ +
+
+ +

◆ kDaikin128MaxTemp

+ +
+
+ + + + +
const uint8_t kDaikin128MaxTemp = 30
+
+ +
+
+ +

◆ kDaikin128MinTemp

+ +
+
+ + + + +
const uint8_t kDaikin128MinTemp = 16
+
+ +
+
+ +

◆ kDaikin128ModeSize

+ +
+
+ + + + +
const uint8_t kDaikin128ModeSize = 4
+
+ +
+
+ +

◆ kDaikin128OneSpace

+ +
+
+ + + + +
const uint16_t kDaikin128OneSpace = 954
+
+ +
+
+ +

◆ kDaikin128SectionLength

+ +
+
+ + + + +
const uint16_t kDaikin128SectionLength = 8
+
+ +
+
+ +

◆ kDaikin128Sections

+ +
+
+ + + + +
const uint16_t kDaikin128Sections = 2
+
+ +
+
+ +

◆ kDaikin128TimerOffset

+ +
+
+ + + + +
const uint8_t kDaikin128TimerOffset = 0
+
+ +
+
+ +

◆ kDaikin128TimerSize

+ +
+
+ + + + +
const uint8_t kDaikin128TimerSize = 7
+
+ +
+
+ +

◆ kDaikin128ZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikin128ZeroSpace = 382
+
+ +
+
+ +

◆ kDaikin152BitMark

+ +
+
+ + + + +
const uint16_t kDaikin152BitMark = 433
+
+ +
+
+ +

◆ kDaikin152ComfortByte

+ +
+
+ + + + +
const uint8_t kDaikin152ComfortByte = kDaikin152EconoByte
+
+ +
+
+ +

◆ kDaikin152ComfortOffset

+ +
+
+ + + + +
const uint8_t kDaikin152ComfortOffset = 1
+
+ +
+
+ +

◆ kDaikin152DryTemp

+ +
+
+ + + + +
const uint8_t kDaikin152DryTemp = kDaikin2MinCoolTemp
+
+ +
+
+ +

◆ kDaikin152EconoByte

+ +
+
+ + + + +
const uint8_t kDaikin152EconoByte = 16
+
+ +
+
+ +

◆ kDaikin152FanByte

+ +
+
+ + + + +
const uint8_t kDaikin152FanByte = 8
+
+ +
+
+ +

◆ kDaikin152FanTemp

+ +
+
+ + + + +
const uint8_t kDaikin152FanTemp = 0x60
+
+ +
+
+ +

◆ kDaikin152Freq

+ +
+
+ + + + +
const uint16_t kDaikin152Freq = 38000
+
+ +
+
+ +

◆ kDaikin152Gap

+ +
+
+ + + + +
const uint16_t kDaikin152Gap = 25182
+
+ +
+
+ +

◆ kDaikin152HdrMark

+ +
+
+ + + + +
const uint16_t kDaikin152HdrMark = 3492
+
+ +
+
+ +

◆ kDaikin152HdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin152HdrSpace = 1718
+
+ +
+
+ +

◆ kDaikin152LeaderBits

+ +
+
+ + + + +
const uint8_t kDaikin152LeaderBits = 5
+
+ +
+
+ +

◆ kDaikin152ModeByte

+ +
+
+ + + + +
const uint8_t kDaikin152ModeByte = 5
+
+ +
+
+ +

◆ kDaikin152OneSpace

+ +
+
+ + + + +
const uint16_t kDaikin152OneSpace = 1529
+
+ +
+
+ +

◆ kDaikin152PowerByte

+ +
+
+ + + + +
const uint8_t kDaikin152PowerByte = kDaikin152ModeByte
+
+ +
+
+ +

◆ kDaikin152PowerfulByte

+ +
+
+ + + + +
const uint8_t kDaikin152PowerfulByte = kDaikin152QuietByte
+
+ +
+
+ +

◆ kDaikin152QuietByte

+ +
+
+ + + + +
const uint8_t kDaikin152QuietByte = 13
+
+ +
+
+ +

◆ kDaikin152SensorByte

+ +
+
+ + + + +
const uint8_t kDaikin152SensorByte = kDaikin152EconoByte
+
+ +
+
+ +

◆ kDaikin152SensorOffset

+ +
+
+ + + + +
const uint8_t kDaikin152SensorOffset = 3
+
+ +
+
+ +

◆ kDaikin152SwingVByte

+ +
+
+ + + + +
const uint8_t kDaikin152SwingVByte = kDaikin152FanByte
+
+ +
+
+ +

◆ kDaikin152TempByte

+ +
+
+ + + + +
const uint8_t kDaikin152TempByte = 6
+
+ +
+
+ +

◆ kDaikin152TempSize

+ +
+
+ + + + +
const uint8_t kDaikin152TempSize = 7
+
+ +
+
+ +

◆ kDaikin152ZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikin152ZeroSpace = kDaikin152BitMark
+
+ +
+
+ +

◆ kDaikin160BitMark

+ +
+
+ + + + +
const uint16_t kDaikin160BitMark = 342
+
+ +
+
+ +

◆ kDaikin160ByteFan

+ +
+
+ + + + +
const uint8_t kDaikin160ByteFan = 17
+
+ +
+
+ +

◆ kDaikin160ByteMode

+ +
+
+ + + + +
const uint8_t kDaikin160ByteMode = kDaikin160BytePower
+
+ +
+
+ +

◆ kDaikin160BytePower

+ +
+
+ + + + +
const uint8_t kDaikin160BytePower = 12
+
+ +
+
+ +

◆ kDaikin160ByteSwingV

+ +
+
+ + + + +
const uint8_t kDaikin160ByteSwingV = 13
+
+ +
+
+ +

◆ kDaikin160ByteTemp

+ +
+
+ + + + +
const uint8_t kDaikin160ByteTemp = 16
+
+ +
+
+ +

◆ kDaikin160Freq

+ +
+
+ + + + +
const uint16_t kDaikin160Freq = 38000
+
+ +
+
+ +

◆ kDaikin160Gap

+ +
+
+ + + + +
const uint16_t kDaikin160Gap = 29650
+
+ +
+
+ +

◆ kDaikin160HdrMark

+ +
+
+ + + + +
const uint16_t kDaikin160HdrMark = 5000
+
+ +
+
+ +

◆ kDaikin160HdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin160HdrSpace = 2145
+
+ +
+
+ +

◆ kDaikin160MaskFan

+ +
+
+ + + + +
const uint8_t kDaikin160MaskFan = 0b00001111
+
+ +
+
+ +

◆ kDaikin160MaskSwingV

+ +
+
+ + + + +
const uint8_t kDaikin160MaskSwingV = 0b11110000
+
+ +
+
+ +

◆ kDaikin160OneSpace

+ +
+
+ + + + +
const uint16_t kDaikin160OneSpace = 1786
+
+ +
+
+ +

◆ kDaikin160Section1Length

+ +
+
+ + + + +
const uint16_t kDaikin160Section1Length = 7
+
+ +
+
+ +

◆ kDaikin160Section2Length

+ +
+
+ + + + +
const uint16_t kDaikin160Section2Length
+
+
+ +

◆ kDaikin160Sections

+ +
+
+ + + + +
const uint16_t kDaikin160Sections = 2
+
+ +
+
+ +

◆ kDaikin160SwingVAuto

+ +
+
+ + + + +
const uint8_t kDaikin160SwingVAuto = 0xF
+
+ +
+
+ +

◆ kDaikin160SwingVHigh

+ +
+
+ + + + +
const uint8_t kDaikin160SwingVHigh = 0x4
+
+ +
+
+ +

◆ kDaikin160SwingVHighest

+ +
+
+ + + + +
const uint8_t kDaikin160SwingVHighest = 0x5
+
+ +
+
+ +

◆ kDaikin160SwingVLow

+ +
+
+ + + + +
const uint8_t kDaikin160SwingVLow = 0x2
+
+ +
+
+ +

◆ kDaikin160SwingVLowest

+ +
+
+ + + + +
const uint8_t kDaikin160SwingVLowest = 0x1
+
+ +
+
+ +

◆ kDaikin160SwingVMiddle

+ +
+
+ + + + +
const uint8_t kDaikin160SwingVMiddle = 0x3
+
+ +
+
+ +

◆ kDaikin160TempOffset

+ +
+
+ + + + +
const uint8_t kDaikin160TempOffset = 1
+
+ +
+
+ +

◆ kDaikin160TempSize

+ +
+
+ + + + +
const uint8_t kDaikin160TempSize = 6
+
+ +
+
+ +

◆ kDaikin160ZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikin160ZeroSpace = 700
+
+ +
+
+ +

◆ kDaikin176BitMark

+ +
+
+ + + + +
const uint16_t kDaikin176BitMark = 370
+
+ +
+
+ +

◆ kDaikin176ByteFan

+ +
+
+ + + + +
const uint8_t kDaikin176ByteFan = 18
+
+ +
+
+ +

◆ kDaikin176ByteMode

+ +
+
+ + + + +
const uint8_t kDaikin176ByteMode = 12
+
+ +
+
+ +

◆ kDaikin176ByteModeButton

+ +
+
+ + + + +
const uint8_t kDaikin176ByteModeButton = 13
+
+ +
+
+ +

◆ kDaikin176BytePower

+ +
+
+ + + + +
const uint8_t kDaikin176BytePower = 14
+
+ +
+
+ +

◆ kDaikin176ByteSwingH

+ +
+
+ + + + +
const uint8_t kDaikin176ByteSwingH = 18
+
+ +
+
+ +

◆ kDaikin176ByteTemp

+ +
+
+ + + + +
const uint8_t kDaikin176ByteTemp = 17
+
+ +
+
+ +

◆ kDaikin176Cool

+ +
+
+ + + + +
const uint8_t kDaikin176Cool = 0b111
+
+ +
+
+ +

◆ kDaikin176DryFanTemp

+ +
+
+ + + + +
const uint8_t kDaikin176DryFanTemp = 17
+
+ +
+
+ +

◆ kDaikin176FanMax

+ +
+
+ + + + +
const uint8_t kDaikin176FanMax = 3
+
+ +
+
+ +

◆ kDaikin176Freq

+ +
+
+ + + + +
const uint16_t kDaikin176Freq = 38000
+
+ +
+
+ +

◆ kDaikin176Gap

+ +
+
+ + + + +
const uint16_t kDaikin176Gap = 29410
+
+ +
+
+ +

◆ kDaikin176HdrMark

+ +
+
+ + + + +
const uint16_t kDaikin176HdrMark = 5070
+
+ +
+
+ +

◆ kDaikin176HdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin176HdrSpace = 2140
+
+ +
+
+ +

◆ kDaikin176MaskFan

+ +
+
+ + + + +
const uint8_t kDaikin176MaskFan = 0b11110000
+
+ +
+
+ +

◆ kDaikin176MaskMode

+ +
+
+ + + + +
const uint8_t kDaikin176MaskMode = 0b01110000
+
+ +
+
+ +

◆ kDaikin176ModeButton

+ +
+
+ + + + +
const uint8_t kDaikin176ModeButton = 0b00000100
+
+ +
+
+ +

◆ kDaikin176OneSpace

+ +
+
+ + + + +
const uint16_t kDaikin176OneSpace = 1780
+
+ +
+
+ +

◆ kDaikin176Section1Length

+ +
+
+ + + + +
const uint16_t kDaikin176Section1Length = 7
+
+ +
+
+ +

◆ kDaikin176Section2Length

+ +
+
+ + + + +
const uint16_t kDaikin176Section2Length
+
+
+ +

◆ kDaikin176Sections

+ +
+
+ + + + +
const uint16_t kDaikin176Sections = 2
+
+ +
+
+ +

◆ kDaikin176SwingHAuto

+ +
+
+ + + + +
const uint8_t kDaikin176SwingHAuto = 0x5
+
+ +
+
+ +

◆ kDaikin176SwingHOff

+ +
+
+ + + + +
const uint8_t kDaikin176SwingHOff = 0x6
+
+ +
+
+ +

◆ kDaikin176TempOffset

+ +
+
+ + + + +
const uint8_t kDaikin176TempOffset = 1
+
+ +
+
+ +

◆ kDaikin176TempSize

+ +
+
+ + + + +
const uint8_t kDaikin176TempSize = 6
+
+ +
+
+ +

◆ kDaikin176ZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikin176ZeroSpace = 710
+
+ +
+
+ +

◆ kDaikin216BitMark

+ +
+
+ + + + +
const uint16_t kDaikin216BitMark = 420
+
+ +
+
+ +

◆ kDaikin216ByteFan

+ +
+
+ + + + +
const uint8_t kDaikin216ByteFan = 16
+
+ +
+
+ +

◆ kDaikin216ByteMode

+ +
+
+ + + + +
const uint8_t kDaikin216ByteMode = kDaikin216BytePower
+
+ +
+
+ +

◆ kDaikin216BytePower

+ +
+
+ + + + +
const uint8_t kDaikin216BytePower = 13
+
+ +
+
+ +

◆ kDaikin216BytePowerful

+ +
+
+ + + + +
const uint8_t kDaikin216BytePowerful = 21
+
+ +
+
+ +

◆ kDaikin216ByteSwingH

+ +
+
+ + + + +
const uint8_t kDaikin216ByteSwingH = 17
+
+ +
+
+ +

◆ kDaikin216ByteSwingV

+ +
+
+ + + + +
const uint8_t kDaikin216ByteSwingV = 16
+
+ +
+
+ +

◆ kDaikin216ByteTemp

+ +
+
+ + + + +
const uint8_t kDaikin216ByteTemp = 14
+
+ +
+
+ +

◆ kDaikin216Freq

+ +
+
+ + + + +
const uint16_t kDaikin216Freq = 38000
+
+ +
+
+ +

◆ kDaikin216Gap

+ +
+
+ + + + +
const uint16_t kDaikin216Gap = 29650
+
+ +
+
+ +

◆ kDaikin216HdrMark

+ +
+
+ + + + +
const uint16_t kDaikin216HdrMark = 3440
+
+ +
+
+ +

◆ kDaikin216HdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin216HdrSpace = 1750
+
+ +
+
+ +

◆ kDaikin216MaskFan

+ +
+
+ + + + +
const uint8_t kDaikin216MaskFan = 0b11110000
+
+ +
+
+ +

◆ kDaikin216OneSpace

+ +
+
+ + + + +
const uint16_t kDaikin216OneSpace = 1300
+
+ +
+
+ +

◆ kDaikin216Section1Length

+ +
+
+ + + + +
const uint16_t kDaikin216Section1Length = 8
+
+ +
+
+ +

◆ kDaikin216Section2Length

+ +
+
+ + + + +
const uint16_t kDaikin216Section2Length
+
+
+ +

◆ kDaikin216Sections

+ +
+
+ + + + +
const uint16_t kDaikin216Sections = 2
+
+ +
+
+ +

◆ kDaikin216SwingOff

+ +
+
+ + + + +
const uint8_t kDaikin216SwingOff = 0b0000
+
+ +
+
+ +

◆ kDaikin216SwingOn

+ +
+
+ + + + +
const uint8_t kDaikin216SwingOn = 0b1111
+
+ +
+
+ +

◆ kDaikin216SwingSize

+ +
+
+ + + + +
const uint8_t kDaikin216SwingSize = 4
+
+ +
+
+ +

◆ kDaikin216TempOffset

+ +
+
+ + + + +
const uint8_t kDaikin216TempOffset = 1
+
+ +
+
+ +

◆ kDaikin216TempSize

+ +
+
+ + + + +
const uint8_t kDaikin216TempSize = 6
+
+ +
+
+ +

◆ kDaikin216ZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikin216ZeroSpace = 450
+
+ +
+
+ +

◆ kDaikin2BeepOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BeepOffset = 6
+
+ +
+
+ +

◆ kDaikin2BeepSize

+ +
+
+ + + + +
const uint8_t kDaikin2BeepSize = 2
+
+ +
+
+ +

◆ kDaikin2BitClean

+ +
+
+ + + + +
const uint8_t kDaikin2BitClean = 1 << kDaikin2BitCleanOffset
+
+ +
+
+ +

◆ kDaikin2BitCleanOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitCleanOffset = 5
+
+ +
+
+ +

◆ kDaikin2BitEye

+ +
+
+ + + + +
const uint8_t kDaikin2BitEye = 1 << kDaikin2BitEyeOffset
+
+ +
+
+ +

◆ kDaikin2BitEyeAuto

+ +
+
+ + + + +
const uint8_t kDaikin2BitEyeAuto = 1 << kDaikin2BitEyeAutoOffset
+
+ +
+
+ +

◆ kDaikin2BitEyeAutoOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitEyeAutoOffset = 7
+
+ +
+
+ +

◆ kDaikin2BitEyeOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitEyeOffset = 1
+
+ +
+
+ +

◆ kDaikin2BitFreshAir

+ +
+
+ + + + +
const uint8_t kDaikin2BitFreshAir = 1 << kDaikin2BitFreshAirOffset
+
+ +
+
+ +

◆ kDaikin2BitFreshAirHigh

+ +
+
+ + + + +
const uint8_t kDaikin2BitFreshAirHigh = 1 << kDaikin2BitFreshAirHighOffset
+
+ +
+
+ +

◆ kDaikin2BitFreshAirHighOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitFreshAirHighOffset = 7
+
+ +
+
+ +

◆ kDaikin2BitFreshAirOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitFreshAirOffset = 0
+
+ +
+
+ +

◆ kDaikin2BitMark

+ +
+
+ + + + +
const uint16_t kDaikin2BitMark = 460
+
+ +
+
+ +

◆ kDaikin2BitMold

+ +
+
+ + + + +
const uint8_t kDaikin2BitMold = 1 << kDaikin2BitMoldOffset
+
+ +
+
+ +

◆ kDaikin2BitMoldOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitMoldOffset = 3
+
+ +
+
+ +

◆ kDaikin2BitPower

+ +
+
+ + + + +
const uint8_t kDaikin2BitPower = 1 << kDaikin2BitPowerOffset
+
+ +
+
+ +

◆ kDaikin2BitPowerOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitPowerOffset = 7
+
+ +
+
+ +

◆ kDaikin2BitPurify

+ +
+
+ + + + +
const uint8_t kDaikin2BitPurify = 1 << kDaikin2BitPurifyOffset
+
+ +
+
+ +

◆ kDaikin2BitPurifyOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitPurifyOffset = 4
+
+ +
+
+ +

◆ kDaikin2BitSleepTimer

+ +
+
+ + + + +
const uint8_t kDaikin2BitSleepTimer = 1 << kDaikin2BitSleepTimerOffset
+
+ +
+
+ +

◆ kDaikin2BitSleepTimerOffset

+ +
+
+ + + + +
const uint8_t kDaikin2BitSleepTimerOffset = 5
+
+ +
+
+ +

◆ kDaikin2FanByte

+ +
+
+ + + + +
const uint8_t kDaikin2FanByte = 28
+
+ +
+
+ +

◆ kDaikin2Freq

+ +
+
+ + + + +
const uint16_t kDaikin2Freq = 36700
+
+ +
+
+ +

◆ kDaikin2Gap

+ +
+
+ + + + +
const uint16_t kDaikin2Gap = kDaikin2LeaderMark + kDaikin2LeaderSpace
+
+ +
+
+ +

◆ kDaikin2HdrMark

+ +
+
+ + + + +
const uint16_t kDaikin2HdrMark = 3500
+
+ +
+
+ +

◆ kDaikin2HdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin2HdrSpace = 1728
+
+ +
+
+ +

◆ kDaikin2LeaderMark

+ +
+
+ + + + +
const uint16_t kDaikin2LeaderMark = 10024
+
+ +
+
+ +

◆ kDaikin2LeaderSpace

+ +
+
+ + + + +
const uint16_t kDaikin2LeaderSpace = 25180
+
+ +
+
+ +

◆ kDaikin2LightOffset

+ +
+
+ + + + +
const uint8_t kDaikin2LightOffset = 4
+
+ +
+
+ +

◆ kDaikin2LightSize

+ +
+
+ + + + +
const uint8_t kDaikin2LightSize = 2
+
+ +
+
+ +

◆ kDaikin2MinCoolTemp

+ +
+
+ + + + +
const uint8_t kDaikin2MinCoolTemp = 18
+
+ +
+
+ +

◆ kDaikin2OneSpace

+ +
+
+ + + + +
const uint16_t kDaikin2OneSpace = 1270
+
+ +
+
+ +

◆ kDaikin2Section1Length

+ +
+
+ + + + +
const uint16_t kDaikin2Section1Length = 20
+
+ +
+
+ +

◆ kDaikin2Section2Length

+ +
+
+ + + + +
const uint16_t kDaikin2Section2Length = 19
+
+ +
+
+ +

◆ kDaikin2Sections

+ +
+
+ + + + +
const uint16_t kDaikin2Sections = 2
+
+ +
+
+ +

◆ kDaikin2SwingHAuto

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHAuto = 0xBE
+
+ +
+
+ +

◆ kDaikin2SwingHLeft

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHLeft = 0xA9
+
+ +
+
+ +

◆ kDaikin2SwingHLeftMax

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHLeftMax = 0xA8
+
+ +
+
+ +

◆ kDaikin2SwingHMiddle

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHMiddle = 0xAA
+
+ +
+
+ +

◆ kDaikin2SwingHRight

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHRight = 0xAB
+
+ +
+
+ +

◆ kDaikin2SwingHRightMax

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHRightMax = 0xAC
+
+ +
+
+ +

◆ kDaikin2SwingHSwing

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHSwing = 0xBF
+
+ +
+
+ +

◆ kDaikin2SwingHWide

+ +
+
+ + + + +
const uint8_t kDaikin2SwingHWide = 0xA3
+
+ +
+
+ +

◆ kDaikin2SwingVAuto

+ +
+
+ + + + +
const uint8_t kDaikin2SwingVAuto = 0xE
+
+ +
+
+ +

◆ kDaikin2SwingVBreeze

+ +
+
+ + + + +
const uint8_t kDaikin2SwingVBreeze = 0xC
+
+ +
+
+ +

◆ kDaikin2SwingVCirculate

+ +
+
+ + + + +
const uint8_t kDaikin2SwingVCirculate = 0xD
+
+ +
+
+ +

◆ kDaikin2SwingVHigh

+ +
+
+ + + + +
const uint8_t kDaikin2SwingVHigh = 0x1
+
+ +
+
+ +

◆ kDaikin2SwingVLow

+ +
+
+ + + + +
const uint8_t kDaikin2SwingVLow = 0x6
+
+ +
+
+ +

◆ kDaikin2SwingVSwing

+ +
+
+ + + + +
const uint8_t kDaikin2SwingVSwing = 0xF
+
+ +
+
+ +

◆ kDaikin2Tolerance

+ +
+
+ + + + +
const uint8_t kDaikin2Tolerance = 5
+
+ +
+
+ +

◆ kDaikin2ZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikin2ZeroSpace = 420
+
+ +
+
+ +

◆ kDaikin64BitMark

+ +
+
+ + + + +
const uint16_t kDaikin64BitMark = kDaikin128BitMark
+
+ +
+
+ +

◆ kDaikin64ChecksumOffset

+ +
+
+ + + + +
const uint8_t kDaikin64ChecksumOffset = 60
+
+ +
+
+ +

◆ kDaikin64ChecksumSize

+ +
+
+ + + + +
const uint8_t kDaikin64ChecksumSize = 4
+
+ +
+
+ +

◆ kDaikin64ClockHoursSize

+ +
+
+ + + + +
const uint8_t kDaikin64ClockHoursSize = 8
+
+ +
+
+ +

◆ kDaikin64ClockMinsSize

+ +
+
+ + + + +
const uint8_t kDaikin64ClockMinsSize = 8
+
+ +
+
+ +

◆ kDaikin64ClockOffset

+ +
+
+ + + + +
const uint8_t kDaikin64ClockOffset = kDaikin64FanOffset + kDaikin64FanSize
+
+ +
+
+ +

◆ kDaikin64ClockSize

+ +
+
+ + + + +
const uint8_t kDaikin64ClockSize
+
+
+ +

◆ kDaikin64Cool

+ +
+
+ + + + +
const uint8_t kDaikin64Cool = 0b010
+
+ +
+
+ +

◆ kDaikin64Dry

+ +
+
+ + + + +
const uint8_t kDaikin64Dry = 0b001
+
+ +
+
+ +

◆ kDaikin64Fan

+ +
+
+ + + + +
const uint8_t kDaikin64Fan = 0b100
+
+ +
+
+ +

◆ kDaikin64FanAuto

+ +
+
+ + + + +
const uint8_t kDaikin64FanAuto = 0b0001
+
+ +
+
+ +

◆ kDaikin64FanHigh

+ +
+
+ + + + +
const uint8_t kDaikin64FanHigh = 0b0010
+
+ +
+
+ +

◆ kDaikin64FanLow

+ +
+
+ + + + +
const uint8_t kDaikin64FanLow = 0b1000
+
+ +
+
+ +

◆ kDaikin64FanMed

+ +
+
+ + + + +
const uint8_t kDaikin64FanMed = 0b0100
+
+ +
+
+ +

◆ kDaikin64FanOffset

+ +
+
+ + + + +
const uint8_t kDaikin64FanOffset = kDaikin64ModeOffset + kDaikin64ModeSize
+
+ +
+
+ +

◆ kDaikin64FanQuiet

+ +
+
+ + + + +
const uint8_t kDaikin64FanQuiet = 0b1001
+
+ +
+
+ +

◆ kDaikin64FanSize

+ +
+
+ + + + +
const uint8_t kDaikin64FanSize = 4
+
+ +
+
+ +

◆ kDaikin64FanTurbo

+ +
+
+ + + + +
const uint8_t kDaikin64FanTurbo = 0b0011
+
+ +
+
+ +

◆ kDaikin64Freq

+ +
+
+ + + + +
const uint16_t kDaikin64Freq = kDaikin128Freq
+
+ +
+
+ +

◆ kDaikin64Gap

+ +
+
+ + + + +
const uint16_t kDaikin64Gap = kDaikin128Gap
+
+ +
+
+ +

◆ kDaikin64HdrMark

+ +
+
+ + + + +
const uint16_t kDaikin64HdrMark = kDaikin128HdrMark
+
+ +
+
+ +

◆ kDaikin64HdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin64HdrSpace = kDaikin128HdrSpace
+
+ +
+
+ +

◆ kDaikin64KnownGoodState

+ +
+
+ + + + +
const uint64_t kDaikin64KnownGoodState = 0x7C16161607204216
+
+ +
+
+ +

◆ kDaikin64LdrMark

+ +
+
+ + + + +
const uint16_t kDaikin64LdrMark = kDaikin128LeaderMark
+
+ +
+
+ +

◆ kDaikin64LdrSpace

+ +
+
+ + + + +
const uint16_t kDaikin64LdrSpace = kDaikin128LeaderSpace
+
+ +
+
+ +

◆ kDaikin64MaxTemp

+ +
+
+ + + + +
const uint8_t kDaikin64MaxTemp = 30
+
+ +
+
+ +

◆ kDaikin64MinTemp

+ +
+
+ + + + +
const uint8_t kDaikin64MinTemp = 16
+
+ +
+
+ +

◆ kDaikin64ModeOffset

+ +
+
+ + + + +
const uint8_t kDaikin64ModeOffset = 8
+
+ +
+
+ +

◆ kDaikin64ModeSize

+ +
+
+ + + + +
const uint8_t kDaikin64ModeSize = 4
+
+ +
+
+ +

◆ kDaikin64OffTimeEnableBit

+ +
+
+ + + + +
const uint8_t kDaikin64OffTimeEnableBit = kDaikin64OffTimeHalfHourBit + 1
+
+ +
+
+ +

◆ kDaikin64OffTimeHalfHourBit

+ +
+
+ + + + +
const uint8_t kDaikin64OffTimeHalfHourBit
+
+
+ +

◆ kDaikin64OffTimeOffset

+ +
+
+ + + + +
const uint8_t kDaikin64OffTimeOffset = kDaikin64OnTimeEnableBit + 1
+
+ +
+
+ +

◆ kDaikin64OffTimeSize

+ +
+
+ + + + +
const uint8_t kDaikin64OffTimeSize = 6
+
+ +
+
+ +

◆ kDaikin64OneSpace

+ +
+
+ + + + +
const uint16_t kDaikin64OneSpace = kDaikin128OneSpace
+
+ +
+
+ +

◆ kDaikin64OnTimeEnableBit

+ +
+
+ + + + +
const uint8_t kDaikin64OnTimeEnableBit = kDaikin64OnTimeHalfHourBit + 1
+
+ +
+
+ +

◆ kDaikin64OnTimeHalfHourBit

+ +
+
+ + + + +
const uint8_t kDaikin64OnTimeHalfHourBit
+
+Initial value: +
+
+ +

◆ kDaikin64OnTimeOffset

+ +
+
+ + + + +
const uint8_t kDaikin64OnTimeOffset
+
+Initial value: +
+
+ +

◆ kDaikin64OnTimeSize

+ +
+
+ + + + +
const uint8_t kDaikin64OnTimeSize = 6
+
+ +
+
+ +

◆ kDaikin64Overhead

+ +
+
+ + + + +
const uint8_t kDaikin64Overhead = 9
+
+ +
+
+ +

◆ kDaikin64PowerToggleBit

+ +
+
+ + + + +
const uint8_t kDaikin64PowerToggleBit = 59
+
+ +
+
+ +

◆ kDaikin64SleepBit

+ +
+
+ + + + +
const uint8_t kDaikin64SleepBit = kDaikin64SwingVBit + 1
+
+ +
+
+ +

◆ kDaikin64SwingVBit

+ +
+
+ + + + +
const uint8_t kDaikin64SwingVBit = 56
+
+ +
+
+ +

◆ kDaikin64TempOffset

+ +
+
+ + + + +
const uint8_t kDaikin64TempOffset = 48
+
+ +
+
+ +

◆ kDaikin64TempSize

+ +
+
+ + + + +
const uint8_t kDaikin64TempSize = 8
+
+ +
+
+ +

◆ kDaikin64ToleranceDelta

+ +
+
+ + + + +
const int8_t kDaikin64ToleranceDelta = 5
+
+ +
+
+ +

◆ kDaikin64ZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikin64ZeroSpace = kDaikin128ZeroSpace
+
+ +
+
+ +

◆ kDaikinAuto

+ +
+
+ + + + +
const uint8_t kDaikinAuto = 0b000
+
+ +
+
+ +

◆ kDaikinBeepLoud

+ +
+
+ + + + +
const uint8_t kDaikinBeepLoud = 2
+
+ +
+
+ +

◆ kDaikinBeepOff

+ +
+
+ + + + +
const uint8_t kDaikinBeepOff = 3
+
+ +
+
+ +

◆ kDaikinBeepQuiet

+ +
+
+ + + + +
const uint8_t kDaikinBeepQuiet = 1
+
+ +
+
+ +

◆ kDaikinBitComfort

+ +
+
+ + + + +
const uint8_t kDaikinBitComfort = 1 << kDaikinBitComfortOffset
+
+ +
+
+ +

◆ kDaikinBitComfortOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitComfortOffset = 4
+
+ +
+
+ +

◆ kDaikinBitEcono

+ +
+
+ + + + +
const uint8_t kDaikinBitEcono = 1 << kDaikinBitEconoOffset
+
+ +
+
+ +

◆ kDaikinBitEconoOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitEconoOffset = 2
+
+ +
+
+ +

◆ kDaikinBitEye

+ +
+
+ + + + +
const uint8_t kDaikinBitEye = 0b10000000
+
+ +
+
+ +

◆ kDaikinBitMark

+ +
+
+ + + + +
const uint16_t kDaikinBitMark = 428
+
+ +
+
+ +

◆ kDaikinBitMold

+ +
+
+ + + + +
const uint8_t kDaikinBitMold = 1 << kDaikinBitMoldOffset
+
+ +
+
+ +

◆ kDaikinBitMoldOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitMoldOffset = 1
+
+ +
+
+ +

◆ kDaikinBitOffTimer

+ +
+
+ + + + +
const uint8_t kDaikinBitOffTimer = 1 << kDaikinBitOffTimerOffset
+
+ +
+
+ +

◆ kDaikinBitOffTimerOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitOffTimerOffset = 2
+
+ +
+
+ +

◆ kDaikinBitOnTimer

+ +
+
+ + + + +
const uint8_t kDaikinBitOnTimer = 1 << kDaikinBitOnTimerOffset
+
+ +
+
+ +

◆ kDaikinBitOnTimerOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitOnTimerOffset = 1
+
+ +
+
+ +

◆ kDaikinBitPower

+ +
+
+ + + + +
const uint8_t kDaikinBitPower = 1 << kDaikinBitPowerOffset
+
+ +
+
+ +

◆ kDaikinBitPowerful

+ +
+
+ + + + +
const uint8_t kDaikinBitPowerful = 1 << kDaikinBitPowerfulOffset
+
+ +
+
+ +

◆ kDaikinBitPowerfulOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitPowerfulOffset = 0
+
+ +
+
+ +

◆ kDaikinBitPowerOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitPowerOffset = 0
+
+ +
+
+ +

◆ kDaikinBitSensor

+ +
+
+ + + + +
const uint8_t kDaikinBitSensor = 1 << kDaikinBitSensorOffset
+
+ +
+
+ +

◆ kDaikinBitSensorOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitSensorOffset = 1
+
+ +
+
+ +

◆ kDaikinBitSilent

+ +
+
+ + + + +
const uint8_t kDaikinBitSilent = 1 << kDaikinBitSilentOffset
+
+ +
+
+ +

◆ kDaikinBitSilentOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitSilentOffset = 5
+
+ +
+
+ +

◆ kDaikinBitWeeklyTimer

+ +
+
+ + + + +
const uint8_t kDaikinBitWeeklyTimer = 1 << kDaikinBitWeeklyTimerOffset
+
+ +
+
+ +

◆ kDaikinBitWeeklyTimerOffset

+ +
+
+ + + + +
const uint8_t kDaikinBitWeeklyTimerOffset = 7
+
+ +
+
+ +

◆ kDaikinByteChecksum1

+ +
+
+ + + + +
const uint8_t kDaikinByteChecksum1 = 7
+
+ +
+
+ +

◆ kDaikinByteChecksum2

+ +
+
+ + + + +
const uint8_t kDaikinByteChecksum2 = 15
+
+ +
+
+ +

◆ kDaikinByteChecksum3

+ +
+
+ + + + +
const uint8_t kDaikinByteChecksum3 = kDaikinStateLength - 1
+
+ +
+
+ +

◆ kDaikinByteClockMinsHigh

+ +
+
+ + + + +
const uint8_t kDaikinByteClockMinsHigh = 14
+
+ +
+
+ +

◆ kDaikinByteClockMinsLow

+ +
+
+ + + + +
const uint8_t kDaikinByteClockMinsLow = 13
+
+ +
+
+ +

◆ kDaikinByteComfort

+ +
+
+ + + + +
const uint8_t kDaikinByteComfort = 6
+
+ +
+
+ +

◆ kDaikinByteEcono

+ +
+
+ + + + +
const uint8_t kDaikinByteEcono = kDaikinByteSensor
+
+ +
+
+ +

◆ kDaikinByteEye

+ +
+
+ + + + +
const uint8_t kDaikinByteEye = kDaikinByteSensor
+
+ +
+
+ +

◆ kDaikinByteFan

+ +
+
+ + + + +
const uint8_t kDaikinByteFan = 24
+
+ +
+
+ +

◆ kDaikinByteMold

+ +
+
+ + + + +
const uint8_t kDaikinByteMold = 33
+
+ +
+
+ +

◆ kDaikinByteOffTimer

+ +
+
+ + + + +
const uint8_t kDaikinByteOffTimer = kDaikinBytePower
+
+ +
+
+ +

◆ kDaikinByteOffTimerMinsHigh

+ +
+
+ + + + +
const uint8_t kDaikinByteOffTimerMinsHigh = 28
+
+ +
+
+ +

◆ kDaikinByteOffTimerMinsLow

+ +
+
+ + + + +
const uint8_t kDaikinByteOffTimerMinsLow = kDaikinByteOnTimerMinsHigh
+
+ +
+
+ +

◆ kDaikinByteOnTimer

+ +
+
+ + + + +
const uint8_t kDaikinByteOnTimer = kDaikinByteOffTimer
+
+ +
+
+ +

◆ kDaikinByteOnTimerMinsHigh

+ +
+
+ + + + +
const uint8_t kDaikinByteOnTimerMinsHigh = 27
+
+ +
+
+ +

◆ kDaikinByteOnTimerMinsLow

+ +
+
+ + + + +
const uint8_t kDaikinByteOnTimerMinsLow = 26
+
+ +
+
+ +

◆ kDaikinBytePower

+ +
+
+ + + + +
const uint8_t kDaikinBytePower = 21
+
+ +
+
+ +

◆ kDaikinBytePowerful

+ +
+
+ + + + +
const uint8_t kDaikinBytePowerful = 29
+
+ +
+
+ +

◆ kDaikinByteSensor

+ +
+
+ + + + +
const uint8_t kDaikinByteSensor = 32
+
+ +
+
+ +

◆ kDaikinByteSilent

+ +
+
+ + + + +
const uint8_t kDaikinByteSilent = kDaikinBytePowerful
+
+ +
+
+ +

◆ kDaikinByteSwingH

+ +
+
+ + + + +
const uint8_t kDaikinByteSwingH = 25
+
+ +
+
+ +

◆ kDaikinByteTemp

+ +
+
+ + + + +
const uint8_t kDaikinByteTemp = 22
+
+ +
+
+ +

◆ kDaikinByteWeeklyTimer

+ +
+
+ + + + +
const uint8_t kDaikinByteWeeklyTimer = kDaikinByteSensor
+
+ +
+
+ +

◆ kDaikinClockMinsHighOffset

+ +
+
+ + + + +
const uint8_t kDaikinClockMinsHighOffset = 0
+
+ +
+
+ +

◆ kDaikinClockMinsHighSize

+ +
+
+ + + + +
const uint8_t kDaikinClockMinsHighSize = 3
+
+ +
+
+ +

◆ kDaikinCool

+ +
+
+ + + + +
const uint8_t kDaikinCool = 0b011
+
+ +
+
+ +

◆ kDaikinCurBit

+ +
+
+ + + + +
const uint8_t kDaikinCurBit = kDaikinStateLength
+
+ +
+
+ +

◆ kDaikinCurIndex

+ +
+
+ + + + +
const uint8_t kDaikinCurIndex = kDaikinStateLength + 1
+
+ +
+
+ +

◆ kDaikinDoWOffset

+ +
+
+ + + + +
const uint8_t kDaikinDoWOffset = 3
+
+ +
+
+ +

◆ kDaikinDoWSize

+ +
+
+ + + + +
const uint8_t kDaikinDoWSize = 3
+
+ +
+
+ +

◆ kDaikinDry

+ +
+
+ + + + +
const uint8_t kDaikinDry = 0b010
+
+ +
+
+ +

◆ kDaikinFan

+ +
+
+ + + + +
const uint8_t kDaikinFan = 0b110
+
+ +
+
+ +

◆ kDaikinFanAuto

+ +
+
+ + + + +
const uint8_t kDaikinFanAuto = 0b1010
+
+ +
+
+ +

◆ kDaikinFanMax

+ +
+
+ + + + +
const uint8_t kDaikinFanMax = 5
+
+ +
+
+ +

◆ kDaikinFanMed

+ +
+
+ + + + +
const uint8_t kDaikinFanMed = 3
+
+ +
+
+ +

◆ kDaikinFanMin

+ +
+
+ + + + +
const uint8_t kDaikinFanMin = 1
+
+ +
+
+ +

◆ kDaikinFanOffset

+ +
+
+ + + + +
const uint8_t kDaikinFanOffset = 4
+
+ +
+
+ +

◆ kDaikinFanQuiet

+ +
+
+ + + + +
const uint8_t kDaikinFanQuiet = 0b1011
+
+ +
+
+ +

◆ kDaikinFanSize

+ +
+
+ + + + +
const uint8_t kDaikinFanSize = 4
+
+ +
+
+ +

◆ kDaikinFirstHeader64

+ +
+
+ + + + +
const uint64_t kDaikinFirstHeader64
+
+Initial value:
=
+
0b1101011100000000000000001100010100000000001001111101101000010001
+
+
+
+ +

◆ kDaikinGap

+ +
+
+ + + + +
const uint16_t kDaikinGap = 29000
+
+ +
+
+ +

◆ kDaikinHdrMark

+ +
+
+ + + + +
const uint16_t kDaikinHdrMark = 3650
+
+ +
+
+ +

◆ kDaikinHdrSpace

+ +
+
+ + + + +
const uint16_t kDaikinHdrSpace = 1623
+
+ +
+
+ +

◆ kDaikinHeaderLength

+ +
+
+ + + + +
const uint16_t kDaikinHeaderLength = 5
+
+ +
+
+ +

◆ kDaikinHeat

+ +
+
+ + + + +
const uint8_t kDaikinHeat = 0b100
+
+ +
+
+ +

◆ kDaikinLightBright

+ +
+
+ + + + +
const uint8_t kDaikinLightBright = 1
+
+ +
+
+ +

◆ kDaikinLightDim

+ +
+
+ + + + +
const uint8_t kDaikinLightDim = 2
+
+ +
+
+ +

◆ kDaikinLightOff

+ +
+
+ + + + +
const uint8_t kDaikinLightOff = 3
+
+ +
+
+ +

◆ kDaikinMarkExcess

+ +
+
+ + + + +
const uint16_t kDaikinMarkExcess = kMarkExcess
+
+ +
+
+ +

◆ kDaikinMaxTemp

+ +
+
+ + + + +
const uint8_t kDaikinMaxTemp = 32
+
+ +
+
+ +

◆ kDaikinMinTemp

+ +
+
+ + + + +
const uint8_t kDaikinMinTemp = 10
+
+ +
+
+ +

◆ kDaikinModeOffset

+ +
+
+ + + + +
const uint8_t kDaikinModeOffset = 4
+
+ +
+
+ +

◆ kDaikinModeSize

+ +
+
+ + + + +
const uint8_t kDaikinModeSize = 3
+
+ +
+
+ +

◆ kDaikinOneSpace

+ +
+
+ + + + +
const uint16_t kDaikinOneSpace = 1280
+
+ +
+
+ +

◆ kDaikinOnTimerMinsHighOffset

+ +
+
+ + + + +
const uint8_t kDaikinOnTimerMinsHighOffset = 0
+
+ +
+
+ +

◆ kDaikinOnTimerMinsHighSize

+ +
+
+ + + + +
const uint8_t kDaikinOnTimerMinsHighSize = 4
+
+ +
+
+ +

◆ kDaikinSection1Length

+ +
+
+ + + + +
const uint8_t kDaikinSection1Length = 8
+
+ +
+
+ +

◆ kDaikinSection2Length

+ +
+
+ + + + +
const uint8_t kDaikinSection2Length = 8
+
+ +
+
+ +

◆ kDaikinSection3Length

+ +
+
+ + + + +
const uint8_t kDaikinSection3Length
+
+
+ +

◆ kDaikinSections

+ +
+
+ + + + +
const uint8_t kDaikinSections = 3
+
+ +
+
+ +

◆ kDaikinSwingOff

+ +
+
+ + + + +
const uint8_t kDaikinSwingOff = 0b0000
+
+ +
+
+ +

◆ kDaikinSwingOffset

+ +
+
+ + + + +
const uint8_t kDaikinSwingOffset = 0
+
+ +
+
+ +

◆ kDaikinSwingOn

+ +
+
+ + + + +
const uint8_t kDaikinSwingOn = 0b1111
+
+ +
+
+ +

◆ kDaikinSwingSize

+ +
+
+ + + + +
const uint8_t kDaikinSwingSize = 4
+
+ +
+
+ +

◆ kDaikinTempOffset

+ +
+
+ + + + +
const uint8_t kDaikinTempOffset = 1
+
+ +
+
+ +

◆ kDaikinTempSize

+ +
+
+ + + + +
const uint8_t kDaikinTempSize = 6
+
+ +
+
+ +

◆ kDaikinTolerance

+ +
+
+ + + + +
const uint8_t kDaikinTolerance = 35
+
+ +
+
+ +

◆ kDaikinUnusedTime

+ +
+
+ + + + +
const uint16_t kDaikinUnusedTime = 0x600
+
+ +
+
+ +

◆ kDaikinZeroSpace

+ +
+
+ + + + +
const uint16_t kDaikinZeroSpace = 428
+
+ +
+
+
+
const uint8_t kDaikin64OnTimeOffset
Definition: ir_Daikin.h:485
+
const uint16_t kDaikin176StateLength
Definition: IRremoteESP8266.h:855
+
const uint8_t kDaikin64ClockOffset
Definition: ir_Daikin.h:480
+
const uint8_t kDaikinSection1Length
Definition: ir_Daikin.h:139
+
const uint8_t kDaikin64OffTimeOffset
Definition: ir_Daikin.h:491
+
const uint8_t kDaikin64ClockSize
Definition: ir_Daikin.h:483
+
const uint16_t kDaikin216StateLength
Definition: IRremoteESP8266.h:858
+
const uint16_t kDaikin216Section1Length
Definition: ir_Daikin.h:282
+
const uint16_t kDaikin160Section1Length
Definition: ir_Daikin.h:312
+
const uint8_t kDaikin64OnTimeSize
Definition: ir_Daikin.h:487
+
const uint16_t kDaikinStateLength
Definition: IRremoteESP8266.h:836
+
const uint16_t kDaikin160StateLength
Definition: IRremoteESP8266.h:846
+
const uint8_t kDaikinSection2Length
Definition: ir_Daikin.h:140
+
const uint8_t kDaikin64ClockHoursSize
Definition: ir_Daikin.h:482
+
const uint16_t kDaikin176Section1Length
Definition: ir_Daikin.h:342
+
const uint8_t kDaikin64ClockMinsSize
Definition: ir_Daikin.h:481
+
const uint8_t kDaikin64OffTimeSize
Definition: ir_Daikin.h:492
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h_source.html new file mode 100644 index 000000000..f557d4dd2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Daikin_8h_source.html @@ -0,0 +1,1801 @@ + + + + + + + +IRremoteESP8266: src/ir_Daikin.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Daikin.h
+
+
+Go to the documentation of this file.
1 // Copyright 2016 sillyfrog
+
2 // Copyright 2017 sillyfrog, crankyoldgit
+
3 // Copyright 2018-2020 crankyoldgit
+
4 // Copyright 2019 pasna (IRDaikin160 class / Daikin176 class)
+
5 
+
23 
+
24 // Supports:
+
25 // Brand: Daikin, Model: ARC433** remote (DAIKIN)
+
26 // Brand: Daikin, Model: ARC477A1 remote (DAIKIN2)
+
27 // Brand: Daikin, Model: FTXZ25NV1B A/C (DAIKIN2)
+
28 // Brand: Daikin, Model: FTXZ35NV1B A/C (DAIKIN2)
+
29 // Brand: Daikin, Model: FTXZ50NV1B A/C (DAIKIN2)
+
30 // Brand: Daikin, Model: ARC433B69 remote (DAIKIN216)
+
31 // Brand: Daikin, Model: ARC423A5 remote (DAIKIN160)
+
32 // Brand: Daikin, Model: FTE12HV2S A/C
+
33 // Brand: Daikin, Model: BRC4C153 remote (DAIKIN176)
+
34 // Brand: Daikin, Model: 17 Series A/C (DAIKIN128)
+
35 // Brand: Daikin, Model: FTXB12AXVJU A/C (DAIKIN128)
+
36 // Brand: Daikin, Model: FTXB09AXVJU A/C (DAIKIN128)
+
37 // Brand: Daikin, Model: BRC52B63 remote (DAIKIN128)
+
38 // Brand: Daikin, Model: ARC480A5 remote (DAIKIN152)
+
39 // Brand: Daikin, Model: FFN-C/FCN-F Series A/C (DAIKIN64)
+
40 // Brand: Daikin, Model: DGS01 remote (DAIKIN64)
+
41 // Brand: Daikin, Model: M Series A/C (DAIKIN)
+
42 // Brand: Daikin, Model: FTXM-M A/C (DAIKIN)
+
43 // Brand: Daikin, Model: ARC466A33 remote (DAIKIN)
+
44 
+
45 #ifndef IR_DAIKIN_H_
+
46 #define IR_DAIKIN_H_
+
47 
+
48 #ifndef UNIT_TEST
+
49 #include <Arduino.h>
+
50 #endif
+
51 #include "IRrecv.h"
+
52 #include "IRremoteESP8266.h"
+
53 #include "IRsend.h"
+
54 #ifdef UNIT_TEST
+
55 #include "IRsend_test.h"
+
56 #endif
+
57 
+
58 /*
+
59  Daikin AC map (i.e. DAIKIN, not the other variants)
+
60  byte 6=
+
61  b4:Comfort
+
62  byte 7= checksum of the first part (and last byte before a 29ms pause)
+
63  byte 13=Current time, mins past midnight, low bits
+
64  byte 14
+
65  b5-b3=Day of the week (SUN=1, MON=2, ..., SAT=7)
+
66  b2-b0=Current time, mins past midnight, high bits
+
67  byte 15= checksum of the second part (and last byte before a 29ms pause)
+
68  byte 21=mode
+
69  b7 = 0
+
70  b6+b5+b4 = Mode
+
71  Modes: b6+b5+b4
+
72  011 = Cool
+
73  100 = Heat (temp 23)
+
74  110 = FAN (temp not shown, but 25)
+
75  000 = Fully Automatic (temp 25)
+
76  010 = DRY (temp 0xc0 = 96 degrees c)
+
77  b3 = 1
+
78  b2 = OFF timer set
+
79  b1 = ON timer set
+
80  b0 = Air Conditioner ON
+
81  byte 22=temp*2 (Temp should be between 10 - 32)
+
82  byte 24=Fan
+
83  FAN control
+
84  b7+b6+b5+b4 = Fan speed
+
85  Fan: b7+b6+b5+b4
+
86  0×3 = 1 bar
+
87  0×4 = 2 bar
+
88  0×5 = 3 bar
+
89  0×6 = 4 bar
+
90  0×7 = 5 bar
+
91  0xa = Auto
+
92  0xb = Quite
+
93  b3+b2+b1+b0 = Swing control up/down
+
94  Swing control up/down:
+
95  0000 = Swing up/down off
+
96  1111 = Swing up/down on
+
97  byte 25
+
98  Swing control left/right:
+
99  0000 = Swing left/right off
+
100  1111 = Swing left/right on
+
101  byte 26=On timer mins past midnight, low bits
+
102  byte 27
+
103  b0-b3=On timer mins past midnight, high bits
+
104  b4-b7=Off timer mins past midnight, low bits
+
105  byte 28=Off timer mins past midnight, high bits
+
106  byte 29=Aux -> Powerful (bit 1), Silent (bit 5)
+
107  byte 32=Aux2
+
108  b1: Sensor
+
109  b2: Econo mode
+
110  b7: Intelligent eye on
+
111  byte 33=Aux3
+
112  b1: Mold Proof
+
113  byte 34= checksum of the third part
+
114 */
+
115 
+
116 // Constants
+
117 const uint8_t kDaikinAuto = 0b000;
+
118 const uint8_t kDaikinDry = 0b010;
+
119 const uint8_t kDaikinCool = 0b011;
+
120 const uint8_t kDaikinHeat = 0b100;
+
121 const uint8_t kDaikinFan = 0b110;
+
122 const uint8_t kDaikinModeOffset = 4;
+
123 const uint8_t kDaikinModeSize = 3;
+
124 const uint8_t kDaikinMinTemp = 10; // Celsius
+
125 const uint8_t kDaikinMaxTemp = 32; // Celsius
+
126 const uint8_t kDaikinFanMin = 1;
+
127 const uint8_t kDaikinFanMed = 3;
+
128 const uint8_t kDaikinFanMax = 5;
+
129 const uint8_t kDaikinFanAuto = 0b1010; // 10 / 0xA
+
130 const uint8_t kDaikinFanQuiet = 0b1011; // 11 / 0xB
+
131 const uint8_t kDaikinFanOffset = 4;
+
132 const uint8_t kDaikinFanSize = 4;
+
133 const uint8_t kDaikinSwingOffset = 0;
+
134 const uint8_t kDaikinSwingSize = 4;
+
135 const uint8_t kDaikinSwingOn = 0b1111;
+
136 const uint8_t kDaikinSwingOff = 0b0000;
+
137 const uint16_t kDaikinHeaderLength = 5;
+
138 const uint8_t kDaikinSections = 3;
+
139 const uint8_t kDaikinSection1Length = 8;
+
140 const uint8_t kDaikinSection2Length = 8;
+
141 const uint8_t kDaikinSection3Length =
+ +
143 const uint8_t kDaikinByteComfort = 6;
+
144 const uint8_t kDaikinByteChecksum1 = 7;
+
145 const uint8_t kDaikinBitComfortOffset = 4;
+ +
147 const uint8_t kDaikinByteClockMinsLow = 13;
+
148 const uint8_t kDaikinByteClockMinsHigh = 14;
+
149 const uint8_t kDaikinClockMinsHighOffset = 0;
+
150 const uint8_t kDaikinClockMinsHighSize = 3;
+
151 const uint8_t kDaikinDoWOffset = 3;
+
152 const uint8_t kDaikinDoWSize = 3;
+
153 const uint8_t kDaikinByteChecksum2 = 15;
+
154 const uint8_t kDaikinBytePower = 21;
+
155 const uint8_t kDaikinBitPowerOffset = 0;
+ +
157 const uint8_t kDaikinTempOffset = 1;
+
158 const uint8_t kDaikinTempSize = 6;
+
159 const uint8_t kDaikinByteTemp = 22;
+
160 const uint8_t kDaikinByteFan = 24;
+
161 const uint8_t kDaikinByteSwingH = 25;
+
162 const uint8_t kDaikinByteOnTimerMinsLow = 26;
+
163 const uint8_t kDaikinByteOnTimerMinsHigh = 27;
+ +
165 const uint8_t kDaikinOnTimerMinsHighSize = 4;
+ +
167 const uint8_t kDaikinByteOffTimerMinsHigh = 28;
+
168 const uint8_t kDaikinBytePowerful = 29;
+
169 const uint8_t kDaikinBitPowerfulOffset = 0;
+ + +
172 const uint8_t kDaikinBitSilentOffset = 5;
+ +
174 const uint8_t kDaikinByteSensor = 32;
+
175 const uint8_t kDaikinBitSensorOffset = 1;
+ + +
178 const uint8_t kDaikinBitEconoOffset = 2;
+ + +
181 const uint8_t kDaikinBitEye = 0b10000000;
+ +
183 const uint8_t kDaikinBitWeeklyTimerOffset = 7;
+ +
185 const uint8_t kDaikinByteMold = 33;
+
186 const uint8_t kDaikinBitMoldOffset = 1;
+ + +
189 const uint8_t kDaikinBitOffTimerOffset = 2;
+ + +
192 const uint8_t kDaikinBitOnTimerOffset = 1;
+ + +
195 const uint16_t kDaikinUnusedTime = 0x600;
+
196 const uint8_t kDaikinBeepQuiet = 1;
+
197 const uint8_t kDaikinBeepLoud = 2;
+
198 const uint8_t kDaikinBeepOff = 3;
+
199 const uint8_t kDaikinLightBright = 1;
+
200 const uint8_t kDaikinLightDim = 2;
+
201 const uint8_t kDaikinLightOff = 3;
+ + +
204 const uint8_t kDaikinTolerance = 35;
+ +
206 const uint16_t kDaikinHdrMark = 3650; // kDaikinBitMark * 8
+
207 const uint16_t kDaikinHdrSpace = 1623; // kDaikinBitMark * 4
+
208 const uint16_t kDaikinBitMark = 428;
+
209 const uint16_t kDaikinZeroSpace = 428;
+
210 const uint16_t kDaikinOneSpace = 1280;
+
211 const uint16_t kDaikinGap = 29000;
+
212 // Note bits in each octet swapped so can be sent as a single value
+
213 const uint64_t kDaikinFirstHeader64 =
+
214  0b1101011100000000000000001100010100000000001001111101101000010001;
+
215 
+
216 
+
217 const uint16_t kDaikin2Freq = 36700; // Modulation Frequency in Hz.
+
218 const uint16_t kDaikin2LeaderMark = 10024;
+
219 const uint16_t kDaikin2LeaderSpace = 25180;
+ +
221 const uint16_t kDaikin2HdrMark = 3500;
+
222 const uint16_t kDaikin2HdrSpace = 1728;
+
223 const uint16_t kDaikin2BitMark = 460;
+
224 const uint16_t kDaikin2OneSpace = 1270;
+
225 const uint16_t kDaikin2ZeroSpace = 420;
+
226 const uint16_t kDaikin2Sections = 2;
+
227 const uint16_t kDaikin2Section1Length = 20;
+
228 const uint16_t kDaikin2Section2Length = 19;
+
229 const uint8_t kDaikin2Tolerance = 5; // Extra percentage tolerance
+
230 const uint8_t kDaikin2BitSleepTimerOffset = 5;
+ +
232 const uint8_t kDaikin2BitPurifyOffset = 4;
+
233 const uint8_t kDaikin2BitPurify = 1 << kDaikin2BitPurifyOffset; // 0b00010000
+
234 const uint8_t kDaikin2BitEyeOffset = 1;
+
235 const uint8_t kDaikin2BitEye = 1 << kDaikin2BitEyeOffset; // 0b00000010
+
236 const uint8_t kDaikin2BitEyeAutoOffset = 7;
+
237 const uint8_t kDaikin2BitEyeAuto = 1 << kDaikin2BitEyeAutoOffset; // 0b10000000
+
238 const uint8_t kDaikin2BitMoldOffset = 3;
+
239 const uint8_t kDaikin2BitMold = 1 << kDaikin2BitMoldOffset; // 0b00001000
+
240 const uint8_t kDaikin2BitCleanOffset = 5; // Byte[8]
+
241 const uint8_t kDaikin2BitClean = 1 << kDaikin2BitCleanOffset; // 0b00100000
+
242 const uint8_t kDaikin2BitFreshAirOffset = 0;
+ + + +
246 const uint8_t kDaikin2BitPowerOffset = 7;
+
247 const uint8_t kDaikin2BitPower = 1 << kDaikin2BitPowerOffset; // 0b10000000
+
248 // const uint8_t kDaikin2LightMask = 0b00110000; // Byte[7]
+
249 const uint8_t kDaikin2LightOffset = 4; // Byte[7]
+
250 const uint8_t kDaikin2LightSize = 2;
+
251 // const uint8_t kDaikin2BeepMask = 0b11000000; // Byte[7]
+
252 const uint8_t kDaikin2BeepOffset = 6; // Byte[7]
+
253 const uint8_t kDaikin2BeepSize = 2;
+
254 const uint8_t kDaikin2SwingVHigh = 0x1;
+
255 const uint8_t kDaikin2SwingVLow = 0x6;
+
256 const uint8_t kDaikin2SwingVSwing = 0xF;
+
257 const uint8_t kDaikin2SwingVAuto = 0xE;
+
258 const uint8_t kDaikin2SwingVBreeze = 0xC;
+
259 const uint8_t kDaikin2SwingVCirculate = 0xD;
+
260 const uint8_t kDaikin2FanByte = 28;
+
261 
+
262 const uint8_t kDaikin2SwingHWide = 0xA3;
+
263 const uint8_t kDaikin2SwingHLeftMax = 0xA8;
+
264 const uint8_t kDaikin2SwingHLeft = 0xA9;
+
265 const uint8_t kDaikin2SwingHMiddle = 0xAA;
+
266 const uint8_t kDaikin2SwingHRight = 0xAB;
+
267 const uint8_t kDaikin2SwingHRightMax = 0xAC;
+
268 const uint8_t kDaikin2SwingHAuto = 0xBE;
+
269 const uint8_t kDaikin2SwingHSwing = 0xBF;
+
270 
+
271 const uint8_t kDaikin2MinCoolTemp = 18; // Min temp (in C) when in Cool mode.
+
272 
+
273 
+
274 const uint16_t kDaikin216Freq = 38000; // Modulation Frequency in Hz.
+
275 const uint16_t kDaikin216HdrMark = 3440;
+
276 const uint16_t kDaikin216HdrSpace = 1750;
+
277 const uint16_t kDaikin216BitMark = 420;
+
278 const uint16_t kDaikin216OneSpace = 1300;
+
279 const uint16_t kDaikin216ZeroSpace = 450;
+
280 const uint16_t kDaikin216Gap = 29650;
+
281 const uint16_t kDaikin216Sections = 2;
+
282 const uint16_t kDaikin216Section1Length = 8;
+ + +
285 const uint8_t kDaikin216BytePower = 13;
+ +
287 // const uint8_t kDaikin216MaskMode = 0b01110000;
+
288 const uint8_t kDaikin216ByteTemp = 14;
+
289 // const uint8_t kDaikin216MaskTemp = 0b01111110;
+
290 const uint8_t kDaikin216TempOffset = 1;
+
291 const uint8_t kDaikin216TempSize = 6;
+
292 
+
293 const uint8_t kDaikin216ByteFan = 16;
+
294 const uint8_t kDaikin216MaskFan = 0b11110000;
+
295 const uint8_t kDaikin216ByteSwingV = 16;
+
296 // const uint8_t kDaikin216MaskSwingV = 0b00001111;
+
297 const uint8_t kDaikin216SwingSize = 4;
+
298 const uint8_t kDaikin216SwingOn = 0b1111;
+
299 const uint8_t kDaikin216SwingOff = 0b0000;
+
300 const uint8_t kDaikin216ByteSwingH = 17;
+
301 const uint8_t kDaikin216BytePowerful = 21;
+
302 
+
303 
+
304 const uint16_t kDaikin160Freq = 38000; // Modulation Frequency in Hz.
+
305 const uint16_t kDaikin160HdrMark = 5000;
+
306 const uint16_t kDaikin160HdrSpace = 2145;
+
307 const uint16_t kDaikin160BitMark = 342;
+
308 const uint16_t kDaikin160OneSpace = 1786;
+
309 const uint16_t kDaikin160ZeroSpace = 700;
+
310 const uint16_t kDaikin160Gap = 29650;
+
311 const uint16_t kDaikin160Sections = 2;
+
312 const uint16_t kDaikin160Section1Length = 7;
+ + +
315 const uint8_t kDaikin160BytePower = 12;
+ +
317 // const uint8_t kDaikin160MaskMode = 0b01110000;
+
318 const uint8_t kDaikin160ByteTemp = 16;
+
319 // const uint8_t kDaikin160MaskTemp = 0b01111110;
+
320 const uint8_t kDaikin160TempOffset = 1;
+
321 const uint8_t kDaikin160TempSize = 6;
+
322 const uint8_t kDaikin160ByteFan = 17;
+
323 const uint8_t kDaikin160MaskFan = 0b00001111;
+
324 const uint8_t kDaikin160ByteSwingV = 13;
+
325 const uint8_t kDaikin160MaskSwingV = 0b11110000;
+
326 const uint8_t kDaikin160SwingVLowest = 0x1;
+
327 const uint8_t kDaikin160SwingVLow = 0x2;
+
328 const uint8_t kDaikin160SwingVMiddle = 0x3;
+
329 const uint8_t kDaikin160SwingVHigh = 0x4;
+
330 const uint8_t kDaikin160SwingVHighest = 0x5;
+
331 const uint8_t kDaikin160SwingVAuto = 0xF;
+
332 
+
333 
+
334 const uint16_t kDaikin176Freq = 38000; // Modulation Frequency in Hz.
+
335 const uint16_t kDaikin176HdrMark = 5070;
+
336 const uint16_t kDaikin176HdrSpace = 2140;
+
337 const uint16_t kDaikin176BitMark = 370;
+
338 const uint16_t kDaikin176OneSpace = 1780;
+
339 const uint16_t kDaikin176ZeroSpace = 710;
+
340 const uint16_t kDaikin176Gap = 29410;
+
341 const uint16_t kDaikin176Sections = 2;
+
342 const uint16_t kDaikin176Section1Length = 7;
+ + +
345 const uint8_t kDaikin176Cool = 0b111; // 7
+
346 const uint8_t kDaikin176BytePower = 14;
+
347 const uint8_t kDaikin176ByteMode = 12;
+
348 const uint8_t kDaikin176MaskMode = 0b01110000;
+
349 const uint8_t kDaikin176ByteModeButton = 13;
+
350 const uint8_t kDaikin176ModeButton = 0b00000100;
+
351 const uint8_t kDaikin176ByteTemp = 17;
+
352 // const uint8_t kDaikin176MaskTemp = 0b01111110;
+
353 const uint8_t kDaikin176TempOffset = 1;
+
354 const uint8_t kDaikin176TempSize = 6;
+
355 const uint8_t kDaikin176DryFanTemp = 17; // Dry/Fan mode is always 17 Celsius.
+
356 const uint8_t kDaikin176ByteFan = 18;
+
357 const uint8_t kDaikin176MaskFan = 0b11110000;
+
358 const uint8_t kDaikin176FanMax = 3;
+
359 const uint8_t kDaikin176ByteSwingH = 18;
+
360 // const uint8_t kDaikin176MaskSwingH = 0b00001111;
+
361 const uint8_t kDaikin176SwingHAuto = 0x5;
+
362 const uint8_t kDaikin176SwingHOff = 0x6;
+
363 
+
364 
+
365 const uint16_t kDaikin128Freq = 38000; // Modulation Frequency in Hz.
+
366 const uint16_t kDaikin128LeaderMark = 9800;
+
367 const uint16_t kDaikin128LeaderSpace = 9800;
+
368 const uint16_t kDaikin128HdrMark = 4600;
+
369 const uint16_t kDaikin128HdrSpace = 2500;
+
370 const uint16_t kDaikin128BitMark = 350;
+
371 const uint16_t kDaikin128OneSpace = 954;
+
372 const uint16_t kDaikin128ZeroSpace = 382;
+
373 const uint16_t kDaikin128Gap = 20300;
+ +
375 const uint16_t kDaikin128Sections = 2;
+
376 const uint16_t kDaikin128SectionLength = 8;
+
377 const uint8_t kDaikin128ByteModeFan = 1;
+
378 // const uint8_t kDaikin128MaskMode = 0b00001111;
+
379 const uint8_t kDaikin128ModeSize = 4;
+
380 const uint8_t kDaikin128Dry = 0b00000001;
+
381 const uint8_t kDaikin128Cool = 0b00000010;
+
382 const uint8_t kDaikin128Fan = 0b00000100;
+
383 const uint8_t kDaikin128Heat = 0b00001000;
+
384 const uint8_t kDaikin128Auto = 0b00001010;
+
385 const uint8_t kDaikin128MaskFan = 0b11110000;
+
386 const uint8_t kDaikin128FanAuto = 0b0001;
+
387 const uint8_t kDaikin128FanHigh = 0b0010;
+
388 const uint8_t kDaikin128FanMed = 0b0100;
+
389 const uint8_t kDaikin128FanLow = 0b1000;
+
390 const uint8_t kDaikin128FanPowerful = 0b0011;
+
391 const uint8_t kDaikin128FanQuiet = 0b1001;
+
392 const uint8_t kDaikin128ByteClockMins = 2;
+
393 const uint8_t kDaikin128ByteClockHours = 3;
+
394 const uint8_t kDaikin128ByteOnTimer = 4;
+
395 const uint8_t kDaikin128ByteOffTimer = 5;
+ + +
398 const uint8_t kDaikin128TimerOffset = 0;
+
399 const uint8_t kDaikin128TimerSize = 7;
+
400 const uint8_t kDaikin128HalfHourOffset = 6;
+ +
402 // const uint8_t kDaikin128MaskHours = 0b00111111;
+
403 const uint8_t kDaikin128HoursOffset = 0;
+
404 const uint8_t kDaikin128HoursSize = 6;
+
405 const uint8_t kDaikin128ByteTemp = 6;
+
406 const uint8_t kDaikin128MinTemp = 16; // C
+
407 const uint8_t kDaikin128MaxTemp = 30; // C
+ +
409 const uint8_t kDaikin128BitSwingOffset = 0;
+
410 const uint8_t kDaikin128BitSwing = 1 << kDaikin128BitSwingOffset; // 0b00000001
+
411 const uint8_t kDaikin128BitSleepOffset = 1;
+
412 const uint8_t kDaikin128BitSleep = 1 << kDaikin128BitSleepOffset; // 0b00000010
+ + +
415 const uint8_t kDaikin128ByteEconoLight = 9;
+
416 const uint8_t kDaikin128BitEconoOffset = 2;
+
417 const uint8_t kDaikin128BitEcono = 1 << kDaikin128BitEconoOffset; // 0b00000100
+
418 const uint8_t kDaikin128BitWall = 0b00001000;
+
419 const uint8_t kDaikin128BitCeiling = 0b00000001;
+ +
421 
+
422 
+
423 const uint16_t kDaikin152Freq = 38000; // Modulation Frequency in Hz.
+
424 const uint8_t kDaikin152LeaderBits = 5;
+
425 const uint16_t kDaikin152HdrMark = 3492;
+
426 const uint16_t kDaikin152HdrSpace = 1718;
+
427 const uint16_t kDaikin152BitMark = 433;
+
428 const uint16_t kDaikin152OneSpace = 1529;
+ +
430 const uint16_t kDaikin152Gap = 25182;
+
431 
+
432 // Byte[5]
+
433 const uint8_t kDaikin152ModeByte = 5; // Mask 0b01110000
+
434 const uint8_t kDaikin152PowerByte = kDaikin152ModeByte; // Mask 0b00000001
+
435 // Byte[6]
+
436 const uint8_t kDaikin152TempByte = 6; // Mask 0b11111110
+
437 const uint8_t kDaikin152TempSize = 7;
+
438 const uint8_t kDaikin152DryTemp = kDaikin2MinCoolTemp; // Celsius
+
439 const uint8_t kDaikin152FanTemp = 0x60; // 96 Celsius
+
440 // Byte[8]
+
441 const uint8_t kDaikin152FanByte = 8;
+ +
443 // Byte[13]
+
444 const uint8_t kDaikin152QuietByte = 13; // Mask 0b00100000
+
445 const uint8_t kDaikin152PowerfulByte = kDaikin152QuietByte; // Mask 0b00000001
+
446 // Byte[16]
+
447 const uint8_t kDaikin152EconoByte = 16; // Mask 0b00000100
+
448 const uint8_t kDaikin152ComfortByte = kDaikin152EconoByte; // Mask 0b00000010
+
449 const uint8_t kDaikin152ComfortOffset = 1; // Mask 0b00000010
+
450 const uint8_t kDaikin152SensorByte = kDaikin152EconoByte; // Mask 0b00001000
+
451 const uint8_t kDaikin152SensorOffset = 3; // Mask 0b00001000
+
452 
+
453 
+ + + + + + +
460 const uint16_t kDaikin64Gap = kDaikin128Gap;
+ +
462 const uint16_t kDaikin64Freq = kDaikin128Freq; // Hz.
+
463 const uint8_t kDaikin64Overhead = 9;
+
464 const int8_t kDaikin64ToleranceDelta = 5; // +5%
+
465 
+
466 const uint64_t kDaikin64KnownGoodState = 0x7C16161607204216;
+
467 const uint8_t kDaikin64ModeOffset = 8;
+
468 const uint8_t kDaikin64ModeSize = 4; // Mask 0b111100000000
+
469 const uint8_t kDaikin64Dry = 0b001;
+
470 const uint8_t kDaikin64Cool = 0b010;
+
471 const uint8_t kDaikin64Fan = 0b100;
+ +
473 const uint8_t kDaikin64FanSize = 4; // Mask 0b1111000000000000
+
474 const uint8_t kDaikin64FanAuto = 0b0001;
+
475 const uint8_t kDaikin64FanLow = 0b1000;
+
476 const uint8_t kDaikin64FanMed = 0b0100;
+
477 const uint8_t kDaikin64FanHigh = 0b0010;
+
478 const uint8_t kDaikin64FanQuiet = 0b1001;
+
479 const uint8_t kDaikin64FanTurbo = 0b0011;
+ +
481 const uint8_t kDaikin64ClockMinsSize = 8;
+
482 const uint8_t kDaikin64ClockHoursSize = 8;
+ +
484  kDaikin64ClockHoursSize; // Mask 0b1111111111111111 << 15
+ + +
487 const uint8_t kDaikin64OnTimeSize = 6;
+ + + + +
492 const uint8_t kDaikin64OffTimeSize = 6;
+ + + +
496 const uint8_t kDaikin64TempOffset = 48;
+
497 const uint8_t kDaikin64TempSize = 8; // Mask 0b11111111 << 47
+
498 const uint8_t kDaikin64MinTemp = 16; // Celsius
+
499 const uint8_t kDaikin64MaxTemp = 30; // Celsius
+
500 const uint8_t kDaikin64SwingVBit = 56;
+ +
502 const uint8_t kDaikin64PowerToggleBit = 59;
+
503 const uint8_t kDaikin64ChecksumOffset = 60;
+
504 const uint8_t kDaikin64ChecksumSize = 4; // Mask 0b1111 << 59
+
505 
+
506 // Legacy defines.
+
507 #define DAIKIN_COOL kDaikinCool
+
508 #define DAIKIN_HEAT kDaikinHeat
+
509 #define DAIKIN_FAN kDaikinFan
+
510 #define DAIKIN_AUTO kDaikinAuto
+
511 #define DAIKIN_DRY kDaikinDry
+
512 #define DAIKIN_MIN_TEMP kDaikinMinTemp
+
513 #define DAIKIN_MAX_TEMP kDaikinMaxTemp
+
514 #define DAIKIN_FAN_MIN kDaikinFanMin
+
515 #define DAIKIN_FAN_MAX kDaikinFanMax
+
516 #define DAIKIN_FAN_AUTO kDaikinFanAuto
+
517 #define DAIKIN_FAN_QUIET kDaikinFanQuiet
+
518 
+
520 class IRDaikinESP {
+
521  public:
+
522  explicit IRDaikinESP(const uint16_t pin, const bool inverted = false,
+
523  const bool use_modulation = true);
+
524 
+
525 #if SEND_DAIKIN
+
526  void send(const uint16_t repeat = kDaikinDefaultRepeat);
+
531  int8_t calibrate(void) { return _irsend.calibrate(); }
+
532 #endif
+
533  void begin(void);
+
534  void on(void);
+
535  void off(void);
+
536  void setPower(const bool on);
+
537  bool getPower(void);
+
538  void setTemp(const uint8_t temp);
+
539  uint8_t getTemp();
+
540  void setFan(const uint8_t fan);
+
541  uint8_t getFan(void);
+
542  void setMode(const uint8_t mode);
+
543  uint8_t getMode(void);
+
544  void setSwingVertical(const bool on);
+
545  bool getSwingVertical(void);
+
546  void setSwingHorizontal(const bool on);
+
547  bool getSwingHorizontal(void);
+
548  bool getQuiet(void);
+
549  void setQuiet(const bool on);
+
550  bool getPowerful(void);
+
551  void setPowerful(const bool on);
+
552  void setSensor(const bool on);
+
553  bool getSensor(void);
+
554  void setEcono(const bool on);
+
555  bool getEcono(void);
+
556  void setMold(const bool on);
+
557  bool getMold(void);
+
558  void setComfort(const bool on);
+
559  bool getComfort(void);
+
560  void enableOnTimer(const uint16_t starttime);
+
561  void disableOnTimer(void);
+
562  uint16_t getOnTime(void);
+
563  bool getOnTimerEnabled();
+
564  void enableOffTimer(const uint16_t endtime);
+
565  void disableOffTimer(void);
+
566  uint16_t getOffTime(void);
+
567  bool getOffTimerEnabled(void);
+
568  void setCurrentTime(const uint16_t mins_since_midnight);
+
569  uint16_t getCurrentTime(void);
+
570  void setCurrentDay(const uint8_t day_of_week);
+
571  uint8_t getCurrentDay(void);
+
572  void setWeeklyTimerEnable(const bool on);
+
573  bool getWeeklyTimerEnable(void);
+
574  uint8_t* getRaw(void);
+
575  void setRaw(const uint8_t new_code[],
+
576  const uint16_t length = kDaikinStateLength);
+
577  static bool validChecksum(uint8_t state[],
+
578  const uint16_t length = kDaikinStateLength);
+
579  static uint8_t convertMode(const stdAc::opmode_t mode);
+
580  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
581  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
582  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
583  stdAc::state_t toCommon(void);
+
584  String toString(void);
+
585 #ifndef UNIT_TEST
+
586 
+
587  private:
+ +
589 #else
+
590  IRsendTest _irsend;
+
592 #endif
+
594  // # of bytes per command
+ +
596  void stateReset(void);
+
597  void checksum(void);
+
598 };
+
599 
+
602 class IRDaikin2 {
+
603  public:
+
604  explicit IRDaikin2(const uint16_t pin, const bool inverted = false,
+
605  const bool use_modulation = true);
+
606 
+
607 #if SEND_DAIKIN2
+
608  void send(const uint16_t repeat = kDaikin2DefaultRepeat);
+
613  int8_t calibrate(void) { return _irsend.calibrate(); }
+
614 #endif
+
615  void begin();
+
616  void on();
+
617  void off();
+
618  void setPower(const bool state);
+
619  bool getPower();
+
620  void setTemp(const uint8_t temp);
+
621  uint8_t getTemp();
+
622  void setFan(const uint8_t fan);
+
623  uint8_t getFan();
+
624  uint8_t getMode();
+
625  void setMode(const uint8_t mode);
+
626  void setSwingVertical(const uint8_t position);
+
627  uint8_t getSwingVertical();
+
628  void setSwingHorizontal(const uint8_t position);
+
629  uint8_t getSwingHorizontal();
+
630  bool getQuiet();
+
631  void setQuiet(const bool on);
+
632  bool getPowerful();
+
633  void setPowerful(const bool on);
+
634  void setEcono(const bool on);
+
635  bool getEcono();
+
636  void setEye(const bool on);
+
637  bool getEye();
+
638  void setEyeAuto(const bool on);
+
639  bool getEyeAuto();
+
640  void setPurify(const bool on);
+
641  bool getPurify();
+
642  void setMold(const bool on);
+
643  bool getMold();
+
644  void enableOnTimer(const uint16_t starttime);
+
645  void disableOnTimer();
+
646  uint16_t getOnTime();
+
647  bool getOnTimerEnabled();
+
648  void enableSleepTimer(const uint16_t sleeptime);
+
649  void disableSleepTimer();
+
650  uint16_t getSleepTime();
+
651  bool getSleepTimerEnabled();
+
652  void enableOffTimer(const uint16_t endtime);
+
653  void disableOffTimer();
+
654  uint16_t getOffTime();
+
655  bool getOffTimerEnabled();
+
656  void setCurrentTime(const uint16_t time);
+
657  uint16_t getCurrentTime();
+
658  void setBeep(const uint8_t beep);
+
659  uint8_t getBeep();
+
660  void setLight(const uint8_t light);
+
661  uint8_t getLight();
+
662  void setClean(const bool on);
+
663  bool getClean();
+
664  void setFreshAir(const bool on);
+
665  bool getFreshAir();
+
666  void setFreshAirHigh(const bool on);
+
667  bool getFreshAirHigh();
+
668  uint8_t* getRaw();
+
669  void setRaw(const uint8_t new_code[]);
+
670  static bool validChecksum(uint8_t state[],
+
671  const uint16_t length = kDaikin2StateLength);
+
672  static uint8_t convertMode(const stdAc::opmode_t mode);
+
673  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
674  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
675  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
676  static stdAc::swingv_t toCommonSwingV(const uint8_t setting);
+
677  static stdAc::swingh_t toCommonSwingH(const uint8_t setting);
+
678  stdAc::state_t toCommon(void);
+
679  String toString();
+
680 #ifndef UNIT_TEST
+
681 
+
682  private:
+ +
684 #else
+
685  IRsendTest _irsend;
+
687 #endif
+
689  // # of bytes per command
+ +
691  void stateReset();
+
692  void checksum();
+
693  void clearOnTimerFlag();
+
694  void clearSleepTimerFlag();
+
695 };
+
696 
+
698 class IRDaikin216 {
+
699  public:
+
700  explicit IRDaikin216(const uint16_t pin, const bool inverted = false,
+
701  const bool use_modulation = true);
+
702 
+
703 #if SEND_DAIKIN216
+
704  void send(const uint16_t repeat = kDaikin216DefaultRepeat);
+
709  int8_t calibrate(void) { return _irsend.calibrate(); }
+
710 #endif
+
711  void begin();
+
712  uint8_t* getRaw();
+
713  void setRaw(const uint8_t new_code[]);
+
714  static bool validChecksum(uint8_t state[],
+
715  const uint16_t length = kDaikin216StateLength);
+
716  void on(void);
+
717  void off(void);
+
718  void setPower(const bool on);
+
719  bool getPower(void);
+
720  void setTemp(const uint8_t temp);
+
721  uint8_t getTemp();
+
722  void setMode(const uint8_t mode);
+
723  uint8_t getMode(void);
+
724  static uint8_t convertMode(const stdAc::opmode_t mode);
+
725  void setFan(const uint8_t fan);
+
726  uint8_t getFan(void);
+
727  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
728  void setSwingVertical(const bool on);
+
729  bool getSwingVertical(void);
+
730  void setSwingHorizontal(const bool on);
+
731  bool getSwingHorizontal(void);
+
732  void setQuiet(const bool on);
+
733  bool getQuiet(void);
+
734  void setPowerful(const bool on);
+
735  bool getPowerful(void);
+
736  stdAc::state_t toCommon(void);
+
737  String toString(void);
+
738 #ifndef UNIT_TEST
+
739 
+
740  private:
+ +
742 #else
+
743  IRsendTest _irsend;
+
745 #endif
+
747  // # of bytes per command
+ +
749  void stateReset();
+
750  void checksum();
+
751 };
+
752 
+
754 class IRDaikin160 {
+
755  public:
+
756  explicit IRDaikin160(const uint16_t pin, const bool inverted = false,
+
757  const bool use_modulation = true);
+
758 
+
759 #if SEND_DAIKIN160
+
760  void send(const uint16_t repeat = kDaikin160DefaultRepeat);
+
765  int8_t calibrate(void) { return _irsend.calibrate(); }
+
766 #endif
+
767  void begin();
+
768  uint8_t* getRaw();
+
769  void setRaw(const uint8_t new_code[]);
+
770  static bool validChecksum(uint8_t state[],
+
771  const uint16_t length = kDaikin160StateLength);
+
772  void on(void);
+
773  void off(void);
+
774  void setPower(const bool on);
+
775  bool getPower(void);
+
776  void setTemp(const uint8_t temp);
+
777  uint8_t getTemp();
+
778  void setMode(const uint8_t mode);
+
779  uint8_t getMode(void);
+
780  static uint8_t convertMode(const stdAc::opmode_t mode);
+
781  void setFan(const uint8_t fan);
+
782  uint8_t getFan(void);
+
783  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
784  void setSwingVertical(const uint8_t position);
+
785  uint8_t getSwingVertical(void);
+
786  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
787  static stdAc::swingv_t toCommonSwingV(const uint8_t setting);
+
788  stdAc::state_t toCommon(void);
+
789  String toString(void);
+
790 #ifndef UNIT_TEST
+
791 
+
792  private:
+ +
794 #else
+
795  IRsendTest _irsend;
+
797 #endif
+
799  // # of bytes per command
+ +
801  void stateReset();
+
802  void checksum();
+
803 };
+
804 
+
806 class IRDaikin176 {
+
807  public:
+
808  explicit IRDaikin176(const uint16_t pin, const bool inverted = false,
+
809  const bool use_modulation = true);
+
810 
+
811 #if SEND_DAIKIN176
+
812  void send(const uint16_t repeat = kDaikin176DefaultRepeat);
+
817  int8_t calibrate(void) { return _irsend.calibrate(); }
+
818 #endif
+
819  void begin();
+
820  uint8_t* getRaw();
+
821  void setRaw(const uint8_t new_code[]);
+
822  static bool validChecksum(uint8_t state[],
+
823  const uint16_t length = kDaikin176StateLength);
+
824  void on(void);
+
825  void off(void);
+
826  void setPower(const bool on);
+
827  bool getPower(void);
+
828  void setTemp(const uint8_t temp);
+
829  uint8_t getTemp();
+
830  void setMode(const uint8_t mode);
+
831  uint8_t getMode(void);
+
832  static uint8_t convertMode(const stdAc::opmode_t mode);
+
833  void setFan(const uint8_t fan);
+
834  uint8_t getFan(void);
+
835  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
836  void setSwingHorizontal(const uint8_t position);
+
837  uint8_t getSwingHorizontal(void);
+
838  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
839  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
840  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
841  static stdAc::swingh_t toCommonSwingH(const uint8_t setting);
+
842  stdAc::state_t toCommon(void);
+
843  String toString(void);
+
844 
+
845 #ifndef UNIT_TEST
+
846 
+
847  private:
+ +
849 #else
+
850  IRsendTest _irsend;
+
852 #endif
+
854  // # of bytes per command
+ +
856  uint8_t _saved_temp;
+
857  void stateReset();
+
858  void checksum();
+
859 };
+
860 
+
864 class IRDaikin128 {
+
865  public:
+
866  explicit IRDaikin128(const uint16_t pin, const bool inverted = false,
+
867  const bool use_modulation = true);
+
868 #if SEND_DAIKIN128
+
869  void send(const uint16_t repeat = kDaikin128DefaultRepeat);
+
874  int8_t calibrate(void) { return _irsend.calibrate(); }
+
875 #endif // SEND_DAIKIN128
+
876  void begin();
+
877  void setPowerToggle(const bool toggle);
+
878  bool getPowerToggle(void);
+
879  void setTemp(const uint8_t temp);
+
880  uint8_t getTemp(void);
+
881  void setFan(const uint8_t fan);
+
882  uint8_t getFan(void);
+
883  uint8_t getMode(void);
+
884  void setMode(const uint8_t mode);
+
885  void setSwingVertical(const bool on);
+
886  bool getSwingVertical();
+
887  bool getSleep(void);
+
888  void setSleep(const bool on);
+
889  bool getQuiet(void);
+
890  void setQuiet(const bool on);
+
891  bool getPowerful(void);
+
892  void setPowerful(const bool on);
+
893  void setEcono(const bool on);
+
894  bool getEcono(void);
+
895  void setOnTimer(const uint16_t mins_since_midnight);
+
896  uint16_t getOnTimer(void);
+
897  bool getOnTimerEnabled(void);
+
898  void setOnTimerEnabled(const bool on);
+
899  void setOffTimer(const uint16_t mins_since_midnight);
+
900  uint16_t getOffTimer(void);
+
901  bool getOffTimerEnabled(void);
+
902  void setOffTimerEnabled(const bool on);
+
903  void setClock(const uint16_t mins_since_midnight);
+
904  uint16_t getClock(void);
+
905  void setLightToggle(const uint8_t unit_type);
+
906  uint8_t getLightToggle(void);
+
907  uint8_t* getRaw(void);
+
908  void setRaw(const uint8_t new_code[]);
+
909  static bool validChecksum(uint8_t state[]);
+
910  static uint8_t convertMode(const stdAc::opmode_t mode);
+
911  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
912  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
913  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
914  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL);
+
915  String toString(void);
+
916 #ifndef UNIT_TEST
+
917 
+
918  private:
+ +
920 #else
+
921  IRsendTest _irsend;
+
923 #endif
+
925  // # of bytes per command
+ +
927  void stateReset(void);
+
928  static uint8_t calcFirstChecksum(const uint8_t state[]);
+
929  static uint8_t calcSecondChecksum(const uint8_t state[]);
+
930  static void setTimer(uint8_t *ptr, const uint16_t mins_since_midnight);
+
931  static uint16_t getTimer(const uint8_t *ptr);
+
932  void checksum(void);
+
933  void clearOnTimerFlag(void);
+
934  void clearSleepTimerFlag(void);
+
935 };
+
936 
+
938 class IRDaikin152 {
+
939  public:
+
940  explicit IRDaikin152(const uint16_t pin, const bool inverted = false,
+
941  const bool use_modulation = true);
+
942 
+
943 #if SEND_DAIKIN152
+
944  void send(const uint16_t repeat = kDaikin152DefaultRepeat);
+
949  int8_t calibrate(void) { return _irsend.calibrate(); }
+
950 #endif
+
951  void begin();
+
952  uint8_t* getRaw();
+
953  void setRaw(const uint8_t new_code[]);
+
954  static bool validChecksum(uint8_t state[],
+
955  const uint16_t length = kDaikin152StateLength);
+
956  void on(void);
+
957  void off(void);
+
958  void setPower(const bool on);
+
959  bool getPower(void);
+
960  void setTemp(const uint8_t temp);
+
961  uint8_t getTemp();
+
962  void setFan(const uint8_t fan);
+
963  uint8_t getFan(void);
+
964  void setMode(const uint8_t mode);
+
965  uint8_t getMode(void);
+
966  void setSwingV(const bool on);
+
967  bool getSwingV(void);
+
968  bool getQuiet(void);
+
969  void setQuiet(const bool on);
+
970  bool getPowerful(void);
+
971  void setPowerful(const bool on);
+
972  void setSensor(const bool on);
+
973  bool getSensor(void);
+
974  void setEcono(const bool on);
+
975  bool getEcono(void);
+
976  void setComfort(const bool on);
+
977  bool getComfort(void);
+
978  static uint8_t convertMode(const stdAc::opmode_t mode);
+
979  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
980  stdAc::state_t toCommon(void);
+
981  String toString(void);
+
982 #ifndef UNIT_TEST
+
983 
+
984  private:
+ +
986 #else
+
987  IRsendTest _irsend;
+
989 #endif
+
991  // # of bytes per command
+ +
993  void stateReset();
+
994  void checksum();
+
995 };
+
996 
+
998 class IRDaikin64 {
+
999  public:
+
1000  explicit IRDaikin64(const uint16_t pin, const bool inverted = false,
+
1001  const bool use_modulation = true);
+
1002 
+
1003 #if SEND_DAIKIN64
+
1004  void send(const uint16_t repeat = kDaikin64DefaultRepeat);
+
1009  int8_t calibrate(void) { return _irsend.calibrate(); }
+
1010 #endif // SEND_DAIKIN64
+
1011  void begin();
+
1012  uint64_t getRaw();
+
1013  void setRaw(const uint64_t new_state);
+
1014  static uint8_t calcChecksum(const uint64_t state);
+
1015  static bool validChecksum(const uint64_t state);
+
1016  void setPowerToggle(const bool on);
+
1017  bool getPowerToggle(void);
+
1018  void setTemp(const uint8_t temp);
+
1019  uint8_t getTemp();
+
1020  void setFan(const uint8_t fan);
+
1021  uint8_t getFan(void);
+
1022  void setMode(const uint8_t mode);
+
1023  uint8_t getMode(void);
+
1024  void setSwingVertical(const bool on);
+
1025  bool getSwingVertical(void);
+
1026  void setSleep(const bool on);
+
1027  bool getSleep(void);
+
1028  bool getQuiet(void);
+
1029  void setQuiet(const bool on);
+
1030  bool getTurbo(void);
+
1031  void setTurbo(const bool on);
+
1032  void setClock(const uint16_t mins_since_midnight);
+
1033  uint16_t getClock(void);
+
1034  void setOnTimeEnabled(const bool on);
+
1035  bool getOnTimeEnabled(void);
+
1036  void setOnTime(const uint16_t mins_since_midnight);
+
1037  uint16_t getOnTime(void);
+
1038  void setOffTimeEnabled(const bool on);
+
1039  bool getOffTimeEnabled(void);
+
1040  void setOffTime(const uint16_t mins_since_midnight);
+
1041  uint16_t getOffTime(void);
+
1042  static uint8_t convertMode(const stdAc::opmode_t mode);
+
1043  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
1044  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
1045  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
1046  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL);
+
1047  String toString(void);
+
1048 #ifndef UNIT_TEST
+
1049 
+
1050  private:
+ +
1052 #else
+
1053  IRsendTest _irsend;
+
1055 #endif
+
1057  uint64_t remote_state;
+
1058  void stateReset();
+
1059  void checksum();
+
1060 };
+
1061 #endif // IR_DAIKIN_H_
+
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:3957
+
const uint8_t kDaikin2SwingHRightMax
Definition: ir_Daikin.h:267
+
const uint8_t kDaikin64ChecksumOffset
Definition: ir_Daikin.h:503
+
const uint8_t kDaikin64TempOffset
Definition: ir_Daikin.h:496
+
void setCurrentTime(const uint16_t time)
Set the clock on the A/C unit.
Definition: ir_Daikin.cpp:958
+
const uint8_t kDaikinByteTemp
Definition: ir_Daikin.h:159
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:511
+
const uint16_t kDaikin152DefaultRepeat
Definition: IRremoteESP8266.h:854
+
const uint8_t kDaikinModeSize
Definition: ir_Daikin.h:123
+
const uint8_t kDaikin216ByteTemp
Definition: ir_Daikin.h:288
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_Daikin.cpp:1233
+
static bool validChecksum(uint8_t state[], const uint16_t length=kDaikinStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:125
+
const uint16_t kDaikin152OneSpace
Definition: ir_Daikin.h:428
+
const uint8_t kDaikin152PowerByte
Definition: ir_Daikin.h:434
+
const uint8_t kDaikinBitEconoOffset
Definition: ir_Daikin.h:178
+
void setOffTimeEnabled(const bool on)
Set the enable status of the Off Timer.
Definition: ir_Daikin.cpp:3926
+
void on()
Change the power setting to On.
Definition: ir_Daikin.cpp:808
+
bool getPurify()
Get the Purify (Filter) mode status of the A/C.
Definition: ir_Daikin.cpp:1212
+
const uint8_t kDaikin176ByteTemp
Definition: ir_Daikin.h:351
+
void send(const uint16_t repeat=kDaikinDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:116
+
const uint8_t kDaikin152EconoByte
Definition: ir_Daikin.h:447
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:723
+
const uint8_t kDaikinDry
Definition: ir_Daikin.h:118
+
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:3072
+
void setPowerful(const bool on)
Set the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:1192
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:1598
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:146
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Daikin.cpp:2783
+
const uint8_t kDaikin128BitPowerToggleOffset
Definition: ir_Daikin.h:413
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:531
+
bool getPowerful(void)
Get the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:334
+
const uint8_t kDaikin2BitSleepTimerOffset
Definition: ir_Daikin.h:230
+
const uint8_t kDaikin64OffTimeEnableBit
Definition: ir_Daikin.h:495
+
const uint8_t kDaikinBitOnTimerOffset
Definition: ir_Daikin.h:192
+
const uint8_t kDaikin2BitClean
Definition: ir_Daikin.h:241
+
const uint16_t kDaikin152ZeroSpace
Definition: ir_Daikin.h:429
+
const uint16_t kDaikin64OneSpace
Definition: ir_Daikin.h:457
+
const uint16_t kDaikin2DefaultRepeat
Definition: IRremoteESP8266.h:843
+
const uint8_t kDaikin128BitEconoOffset
Definition: ir_Daikin.h:416
+
const uint8_t kDaikin64Fan
Definition: ir_Daikin.h:471
+
const uint16_t kDaikin64Freq
Definition: ir_Daikin.h:462
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:3362
+
const uint8_t kDaikinByteFan
Definition: ir_Daikin.h:160
+
bool getOffTimerEnabled()
Get the enable status of the Off Timer.
Definition: ir_Daikin.cpp:1032
+
const uint8_t kDaikin128BitSwingOffset
Definition: ir_Daikin.h:409
+
const uint8_t kDaikin128MaskLight
Definition: ir_Daikin.h:420
+
void send(const uint16_t repeat=kDaikin2DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:728
+
const uint8_t kDaikin128BitSwing
Definition: ir_Daikin.h:410
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:2776
+
void setEyeAuto(const bool on)
Set the Automatic Eye (Sensor) mode of the A/C.
Definition: ir_Daikin.cpp:1110
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_Daikin.cpp:2461
+
bool getComfort(void)
Get the Comfort mode of the A/C.
Definition: ir_Daikin.cpp:384
+
const uint8_t kDaikin176SwingHAuto
Definition: ir_Daikin.h:361
+
const uint8_t kDaikin64OnTimeHalfHourBit
Definition: ir_Daikin.h:488
+
IRDaikin2(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Daikin.cpp:718
+
const uint8_t kDaikin216TempOffset
Definition: ir_Daikin.h:290
+
bool getWeeklyTimerEnable(void)
Get the enable status of the Weekly Timer.
Definition: ir_Daikin.cpp:491
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:111
+
const uint16_t kDaikin176Section2Length
Definition: ir_Daikin.h:343
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
void setSwingVertical(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:892
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:1226
+
const uint8_t kDaikinBitSilent
Definition: ir_Daikin.h:173
+
bool getMold()
Get the Mould (filter) mode status of the A/C.
Definition: ir_Daikin.cpp:1068
+
const uint8_t kDaikin128MaskFan
Definition: ir_Daikin.h:385
+
static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin2StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:737
+
bool getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:1677
+
const uint8_t kDaikin128TimerOffset
Definition: ir_Daikin.h:398
+
const uint8_t kDaikin64Overhead
Definition: ir_Daikin.h:463
+
const uint16_t kDaikinOneSpace
Definition: ir_Daikin.h:210
+
const uint8_t kDaikin216ByteSwingH
Definition: ir_Daikin.h:300
+
const uint8_t kDaikin128ByteTemp
Definition: ir_Daikin.h:405
+
const uint8_t kDaikinBitPower
Definition: ir_Daikin.h:156
+
const uint16_t kDaikin2ZeroSpace
Definition: ir_Daikin.h:225
+
Class for handling detailed Daikin 280-bit A/C messages.
Definition: ir_Daikin.h:520
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:2385
+
bool getOnTimerEnabled()
Get the enable status of the On Timer.
Definition: ir_Daikin.cpp:415
+
const uint16_t kDaikin2HdrMark
Definition: ir_Daikin.h:221
+
const uint8_t kDaikinBitPowerful
Definition: ir_Daikin.h:170
+
static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin216StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:1522
+
void setOffTime(const uint16_t mins_since_midnight)
Set the Off Timer time for the A/C unit.
Definition: ir_Daikin.cpp:3946
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Daikin.cpp:2484
+
const uint8_t kDaikin64OnTimeOffset
Definition: ir_Daikin.h:485
+
const uint8_t kDaikin160ByteFan
Definition: ir_Daikin.h:322
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Daikin.cpp:2022
+
void off(void)
Change the power setting to Off.
Definition: ir_Daikin.cpp:1946
+
Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering an...
Definition: ir_Daikin.h:602
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:709
+
const uint16_t kDaikin176StateLength
Definition: IRremoteESP8266.h:855
+
void setSwingHorizontal(const uint8_t position)
Set the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:2440
+
Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Ven...
Definition: ir_Daikin.h:864
+
void setMold(const bool on)
Set the Mould (filter) mode of the A/C.
Definition: ir_Daikin.cpp:1062
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
static stdAc::swingh_t toCommonSwingH(const uint8_t setting)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_Daikin.cpp:1249
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Daikin.cpp:1950
+
const uint8_t kDaikin176TempSize
Definition: ir_Daikin.h:354
+
const uint8_t kDaikin64TempSize
Definition: ir_Daikin.h:497
+
uint8_t getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:2063
+
const uint8_t kDaikin2BitFreshAirHigh
Definition: ir_Daikin.h:245
+
const uint8_t kDaikinBitEcono
Definition: ir_Daikin.h:179
+
void setSwingHorizontal(const bool on)
Set the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:295
+
void setPowerful(const bool on)
Set the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:1718
+
const uint8_t kDaikin152TempByte
Definition: ir_Daikin.h:436
+
const uint8_t kDaikin64ModeOffset
Definition: ir_Daikin.h:467
+
bool getTurbo(void)
Get the Turbo (Powerful) mode status of the A/C.
Definition: ir_Daikin.cpp:3818
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:2751
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:1592
+
bool getFreshAirHigh()
Get the (High) Fresh Air mode status of the A/C.
Definition: ir_Daikin.cpp:1104
+
const uint8_t kDaikinByteSwingH
Definition: ir_Daikin.h:161
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Daikin.cpp:1580
+
bool getPowerToggle(void)
Get the Power toggle setting of the A/C.
Definition: ir_Daikin.cpp:2715
+
const uint16_t kDaikin64HdrMark
Definition: ir_Daikin.h:454
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Daikin.cpp:2687
+
const uint16_t kDaikin176HdrMark
Definition: ir_Daikin.h:335
+
const uint8_t kDaikinBitOnTimer
Definition: ir_Daikin.h:193
+
void setOffTimer(const uint16_t mins_since_midnight)
Set the Off Timer time for the A/C unit.
Definition: ir_Daikin.cpp:3004
+
void disableOnTimer()
Disable the On timer.
Definition: ir_Daikin.cpp:988
+
const uint8_t kDaikinByteEye
Definition: ir_Daikin.h:180
+
bool getEcono(void)
Get the Economical mode of the A/C.
Definition: ir_Daikin.cpp:3469
+
void setClock(const uint16_t mins_since_midnight)
Set the clock on the A/C unit.
Definition: ir_Daikin.cpp:3874
+
const uint8_t kDaikin128FanPowerful
Definition: ir_Daikin.h:390
+
const uint16_t kDaikin128Freq
Definition: ir_Daikin.h:365
+
const uint16_t kDaikinGap
Definition: ir_Daikin.h:211
+
void disableSleepTimer()
Disable the sleep timer.
Definition: ir_Daikin.cpp:1160
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:919
+
const uint8_t kDaikinByteOnTimerMinsHigh
Definition: ir_Daikin.h:163
+
const uint8_t kDaikin128MinTemp
Definition: ir_Daikin.h:406
+
void on(void)
Change the power setting to On.
Definition: ir_Daikin.cpp:1943
+
const uint8_t kDaikin2SwingVSwing
Definition: ir_Daikin.h:256
+
const uint8_t kDaikin2BitSleepTimer
Definition: ir_Daikin.h:231
+
void off(void)
Change the power setting to Off.
Definition: ir_Daikin.cpp:1576
+
uint16_t getOnTime(void)
Get the On Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:406
+
bool getPowerful(void)
Get the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:2915
+
const uint8_t kDaikin2BeepSize
Definition: ir_Daikin.h:253
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:3707
+
uint8_t * getRaw()
Get a PTR to the internal state/code for this protocol.
Definition: ir_Daikin.cpp:1561
+
bool getPower()
Get the value of the current power setting.
Definition: ir_Daikin.cpp:822
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:2302
+
const uint8_t kDaikin216ByteSwingV
Definition: ir_Daikin.h:295
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Daikin.cpp:3320
+
const uint8_t kDaikin160ByteSwingV
Definition: ir_Daikin.h:324
+
uint16_t getOnTime()
Get the On Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:996
+
const uint16_t kDaikin160Gap
Definition: ir_Daikin.h:310
+
Class for handling detailed Daikin 64-bit A/C messages.
Definition: ir_Daikin.h:998
+
const uint16_t kDaikinBitMark
Definition: ir_Daikin.h:208
+
bool getEcono()
Get the Economical mode of the A/C.
Definition: ir_Daikin.cpp:1140
+
void enableOffTimer(const uint16_t endtime)
Set the enable status & time of the Off Timer.
Definition: ir_Daikin.cpp:1009
+
static uint8_t calcChecksum(const uint64_t state)
Calculate the checksum for a given state.
Definition: ir_Daikin.cpp:3654
+
const uint8_t kDaikin64ClockOffset
Definition: ir_Daikin.h:480
+
const uint16_t kDaikin152BitMark
Definition: ir_Daikin.h:427
+
uint8_t remote[kDaikinStateLength]
The state of the IR remote.
Definition: ir_Daikin.h:595
+
const uint8_t kDaikin176FanMax
Definition: ir_Daikin.h:358
+
void setCurrentTime(const uint16_t mins_since_midnight)
Set the clock on the A/C unit.
Definition: ir_Daikin.cpp:449
+
void checksum()
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:1537
+
const uint16_t kDaikin152HdrSpace
Definition: ir_Daikin.h:426
+
const uint16_t kDaikin160BitMark
Definition: ir_Daikin.h:307
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:803
+
const uint8_t kDaikinBitOffTimerOffset
Definition: ir_Daikin.h:189
+
bool getPowerful()
Get the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:1200
+
void setEcono(const bool on)
Set the Economy mode of the A/C.
Definition: ir_Daikin.cpp:3461
+
const uint8_t kDaikinByteOffTimerMinsHigh
Definition: ir_Daikin.h:167
+
const uint8_t kDaikin152ComfortOffset
Definition: ir_Daikin.h:449
+
void clearSleepTimerFlag()
Clear the sleep timer flag.
Definition: ir_Daikin.cpp:1155
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:3408
+
const uint8_t kDaikinBitMold
Definition: ir_Daikin.h:187
+
const uint8_t kDaikinModeOffset
Definition: ir_Daikin.h:122
+
const uint8_t kDaikin2MinCoolTemp
Definition: ir_Daikin.h:271
+
const uint8_t kDaikinBitOffTimer
Definition: ir_Daikin.h:190
+
const uint8_t kDaikin216ByteFan
Definition: ir_Daikin.h:293
+
bool getSwingVertical()
Get the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:2853
+
const uint8_t kDaikin128BitSleepOffset
Definition: ir_Daikin.h:411
+
const uint8_t kDaikinDoWOffset
Definition: ir_Daikin.h:151
+ +
const uint8_t kDaikin176ByteModeButton
Definition: ir_Daikin.h:349
+
const uint8_t kDaikin64FanQuiet
Definition: ir_Daikin.h:478
+
bool getEcono(void)
Get the Economical mode of the A/C.
Definition: ir_Daikin.cpp:2882
+
void setPowerToggle(const bool toggle)
Set the Power toggle setting of the A/C.
Definition: ir_Daikin.cpp:2708
+
const uint8_t kDaikin152FanTemp
Definition: ir_Daikin.h:439
+
Class for handling detailed Daikin 216-bit A/C messages.
Definition: ir_Daikin.h:698
+
const uint8_t kDaikinBitMoldOffset
Definition: ir_Daikin.h:186
+
const uint8_t kDaikin64Cool
Definition: ir_Daikin.h:470
+
void setMold(const bool on)
Set the Mould mode of the A/C.
Definition: ir_Daikin.cpp:366
+
const uint8_t kDaikin64FanTurbo
Definition: ir_Daikin.h:479
+
const uint8_t kDaikinFan
Definition: ir_Daikin.h:121
+
bool getPowerful(void)
Get the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:3454
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:1051
+
void setFreshAirHigh(const bool on)
Set the (High) Fresh Air mode of the A/C.
Definition: ir_Daikin.cpp:1098
+
void disableOffTimer()
Disable the Off timer.
Definition: ir_Daikin.cpp:1017
+
const uint16_t kDaikinZeroSpace
Definition: ir_Daikin.h:209
+
bool getOffTimeEnabled(void)
Get the enable status of the Off Timer.
Definition: ir_Daikin.cpp:3932
+
const uint8_t kDaikin2LightOffset
Definition: ir_Daikin.h:249
+
const uint8_t kDaikinSection1Length
Definition: ir_Daikin.h:139
+
const uint8_t kDaikinByteChecksum2
Definition: ir_Daikin.h:153
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:949
+
const uint8_t kDaikin64OffTimeOffset
Definition: ir_Daikin.h:491
+
const uint8_t kDaikin2BitEye
Definition: ir_Daikin.h:235
+
const uint8_t kDaikin128BitTimerEnabled
Definition: ir_Daikin.h:397
+
static uint16_t getTimer(const uint8_t *ptr)
Get the time for a timer at the given location.
Definition: ir_Daikin.cpp:2970
+
const uint8_t kDaikin160TempSize
Definition: ir_Daikin.h:321
+
const uint8_t kDaikinClockMinsHighSize
Definition: ir_Daikin.h:150
+
const uint8_t kDaikinBitComfortOffset
Definition: ir_Daikin.h:145
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Daikin.cpp:231
+
const uint8_t kDaikin2BitEyeAutoOffset
Definition: ir_Daikin.h:236
+
const uint8_t kDaikinByteWeeklyTimer
Definition: ir_Daikin.h:182
+
void setSensor(const bool on)
Set the Sensor mode of the A/C.
Definition: ir_Daikin.cpp:340
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:1985
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:3533
+
const uint8_t kDaikin64ClockSize
Definition: ir_Daikin.h:483
+
const uint8_t kDaikin176MaskMode
Definition: ir_Daikin.h:348
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint16_t kDaikinUnusedTime
Definition: ir_Daikin.h:195
+
const uint8_t kDaikin216SwingSize
Definition: ir_Daikin.h:297
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:817
+
void setPowerful(const bool on)
Set the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:3442
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Daikin.cpp:1654
+
uint16_t getOffTime()
Get the Off Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:1025
+
bool getFreshAir()
Get the Fresh Air mode status of the A/C.
Definition: ir_Daikin.cpp:1092
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint16_t kDaikin216ZeroSpace
Definition: ir_Daikin.h:279
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:2342
+
void off(void)
Change the power setting to Off.
Definition: ir_Daikin.cpp:3310
+
bool getQuiet(void)
Get the Quiet mode status of the A/C.
Definition: ir_Daikin.cpp:2899
+
bool getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:3856
+
const uint8_t kDaikin2BitPurifyOffset
Definition: ir_Daikin.h:232
+
const uint8_t kDaikin2SwingHLeft
Definition: ir_Daikin.h:264
+
uint8_t * getRaw()
Get a PTR to the internal state/code for this protocol.
Definition: ir_Daikin.cpp:796
+
uint16_t getOffTime(void)
Get the Off Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:3938
+
static stdAc::swingh_t toCommonSwingH(const uint8_t setting)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_Daikin.cpp:2472
+
uint8_t getFan()
Get the current fan speed setting.
Definition: ir_Daikin.cpp:876
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Daikin.cpp:3840
+
uint8_t * getRaw()
Get a PTR to the internal state/code for this protocol.
Definition: ir_Daikin.cpp:1923
+
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:3991
+
void setPowerful(const bool on)
Set the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:323
+
static void setTimer(uint8_t *ptr, const uint16_t mins_since_midnight)
Set the time for a timer at the given location.
Definition: ir_Daikin.cpp:2956
+
const uint8_t kDaikin128HoursOffset
Definition: ir_Daikin.h:403
+
const uint8_t kDaikinBitPowerOffset
Definition: ir_Daikin.h:155
+
const uint16_t kDaikinHdrSpace
Definition: ir_Daikin.h:207
+
const uint16_t kDaikin160HdrSpace
Definition: ir_Daikin.h:306
+
std::string String
Definition: IRremoteESP8266.h:1093
+
void setOnTimeEnabled(const bool on)
Set the enable status of the On Timer.
Definition: ir_Daikin.cpp:3895
+
IRDaikinESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Daikin.cpp:106
+
void setPower(const bool state)
Change the power setting.
Definition: ir_Daikin.cpp:815
+
const uint8_t kDaikinCurIndex
Definition: ir_Daikin.h:203
+
const uint8_t kDaikin2BitPurify
Definition: ir_Daikin.h:233
+
const uint8_t kDaikin160SwingVHighest
Definition: ir_Daikin.h:330
+
void setSwingVertical(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:2046
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:2819
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:2032
+
const uint16_t kDaikin2Section2Length
Definition: ir_Daikin.h:228
+
uint8_t remote_state[kDaikin176StateLength]
The state of the IR remote.
Definition: ir_Daikin.h:855
+
const uint8_t kDaikin216BytePower
Definition: ir_Daikin.h:285
+
const uint8_t kDaikin64SwingVBit
Definition: ir_Daikin.h:500
+
const uint16_t kDaikin152StateLength
Definition: IRremoteESP8266.h:852
+
const uint8_t kDaikin176ByteSwingH
Definition: ir_Daikin.h:359
+
const uint8_t kDaikin128BitCeiling
Definition: ir_Daikin.h:419
+
void off(void)
Change the power setting to Off.
Definition: ir_Daikin.cpp:207
+
const uint8_t kDaikin64ModeSize
Definition: ir_Daikin.h:468
+
const uint16_t kDaikin160OneSpace
Definition: ir_Daikin.h:308
+
const uint8_t kDaikinOnTimerMinsHighSize
Definition: ir_Daikin.h:165
+
void setFreshAir(const bool on)
Set the Fresh Air mode of the A/C.
Definition: ir_Daikin.cpp:1086
+
void setLight(const uint8_t light)
Set the Light (LED) mode of the A/C.
Definition: ir_Daikin.cpp:1056
+
const uint8_t kDaikin128BitPowerToggle
Definition: ir_Daikin.h:414
+
bool getComfort(void)
Get the Comfort mode of the A/C.
Definition: ir_Daikin.cpp:3500
+
bool getSwingV(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:3421
+
const uint16_t kDaikin128ZeroSpace
Definition: ir_Daikin.h:372
+
String toString()
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:1290
+
bool getSleepTimerEnabled()
Get the Sleep timer enabled status of the A/C.
Definition: ir_Daikin.cpp:1172
+
const uint8_t kDaikinFanMax
Definition: ir_Daikin.h:128
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:2729
+
const uint16_t kDaikin176Gap
Definition: ir_Daikin.h:340
+
uint16_t getOffTimer(void)
Get the Off Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:3010
+
const uint8_t kDaikinBytePowerful
Definition: ir_Daikin.h:168
+
const uint8_t kDaikin2BitFreshAirHighOffset
Definition: ir_Daikin.h:244
+
bool getSleep(void)
Get the Sleep mode of the A/C.
Definition: ir_Daikin.cpp:3868
+
void enableOnTimer(const uint16_t starttime)
Set the enable status & time of the On Timer.
Definition: ir_Daikin.cpp:975
+
void setOffTimerEnabled(const bool on)
Set the enable status of the Off Timer.
Definition: ir_Daikin.cpp:2990
+
const uint8_t kDaikin160ByteTemp
Definition: ir_Daikin.h:318
+
const uint8_t kDaikinBitSensor
Definition: ir_Daikin.h:176
+
const uint8_t kDaikin128FanMed
Definition: ir_Daikin.h:388
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:2408
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:2127
+
void off(void)
Change the power setting to Off..
Definition: ir_Daikin.cpp:2319
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:1568
+
const uint8_t kDaikin64PowerToggleBit
Definition: ir_Daikin.h:502
+
const uint8_t kDaikinOnTimerMinsHighOffset
Definition: ir_Daikin.h:164
+
const uint8_t kDaikinSwingOn
Definition: ir_Daikin.h:135
+
const uint16_t kDaikin216Freq
Definition: ir_Daikin.h:274
+
const uint8_t kDaikinSwingOffset
Definition: ir_Daikin.h:133
+
void clearOnTimerFlag()
Clear the On Timer flag.
Definition: ir_Daikin.cpp:983
+
void setSwingVertical(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:282
+
const uint16_t kDaikin216StateLength
Definition: IRremoteESP8266.h:858
+
const uint16_t kDaikin176Freq
Definition: ir_Daikin.h:334
+
uint16_t getCurrentTime(void)
Get the clock time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:460
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Daikin.cpp:2889
+
const uint8_t kDaikinBitComfort
Definition: ir_Daikin.h:146
+
const uint8_t kDaikin152TempSize
Definition: ir_Daikin.h:437
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Daikin.cpp:1631
+
const uint16_t kDaikin2Section1Length
Definition: ir_Daikin.h:227
+
void setLightToggle(const uint8_t unit_type)
Set the Light toggle setting of the A/C.
Definition: ir_Daikin.cpp:3017
+
const uint8_t kDaikin2SwingHMiddle
Definition: ir_Daikin.h:265
+ +
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:683
+
void checksum()
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:3672
+
const uint8_t kDaikin64OnTimeEnableBit
Definition: ir_Daikin.h:490
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:580
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:2336
+
const uint8_t kDaikin2BitFreshAir
Definition: ir_Daikin.h:243
+
const uint16_t kDaikin152Freq
Definition: ir_Daikin.h:423
+
uint8_t * getRaw()
Get a PTR to the internal state/code for this protocol.
Definition: ir_Daikin.cpp:2295
+
void send(const uint16_t repeat=kDaikin128DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:2701
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Daikin.cpp:3428
+
const uint16_t kDaikin128HdrSpace
Definition: ir_Daikin.h:369
+
bool getSensor(void)
Get the Sensor mode of the A/C.
Definition: ir_Daikin.cpp:346
+
const uint8_t kDaikinByteSensor
Definition: ir_Daikin.h:174
+
const uint8_t kDaikin128HoursSize
Definition: ir_Daikin.h:404
+
const uint8_t kDaikinBeepOff
Definition: ir_Daikin.h:198
+
const uint8_t kDaikin2BitCleanOffset
Definition: ir_Daikin.h:240
+
void setSensor(const bool on)
Set the Sensor mode of the A/C.
Definition: ir_Daikin.cpp:3475
+
const uint16_t kDaikin176HdrSpace
Definition: ir_Daikin.h:336
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Daikin.cpp:2374
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:3745
+
const uint16_t kDaikin2Sections
Definition: ir_Daikin.h:226
+
const uint8_t kDaikin160SwingVHigh
Definition: ir_Daikin.h:329
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:1616
+
static uint8_t calcSecondChecksum(const uint8_t state[])
Definition: ir_Daikin.cpp:2650
+
void setComfort(const bool on)
Set the Comfort mode of the A/C.
Definition: ir_Daikin.cpp:378
+
const uint16_t kDaikin128StateLength
Definition: IRremoteESP8266.h:849
+
const uint16_t kDaikin176DefaultRepeat
Definition: IRremoteESP8266.h:857
+
const uint8_t kDaikin2BeepOffset
Definition: ir_Daikin.h:252
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:259
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:2669
+
const uint8_t kDaikin128BitWall
Definition: ir_Daikin.h:418
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:3773
+
const uint16_t kDaikin2BitMark
Definition: ir_Daikin.h:223
+
static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin152StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:3269
+
const uint8_t kDaikinByteClockMinsLow
Definition: ir_Daikin.h:147
+
const uint16_t kDaikin2LeaderSpace
Definition: ir_Daikin.h:219
+
void setComfort(const bool on)
Set the Comfort mode of the A/C.
Definition: ir_Daikin.cpp:3487
+
bool getSwingHorizontal(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:1691
+
static stdAc::swingv_t toCommonSwingV(const uint8_t setting)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_Daikin.cpp:933
+
void clearOnTimerFlag(void)
+
const uint16_t kDaikin160Sections
Definition: ir_Daikin.h:311
+
void setSwingV(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:3414
+
const uint8_t kDaikin64OffTimeHalfHourBit
Definition: ir_Daikin.h:493
+
const uint8_t kDaikin64FanAuto
Definition: ir_Daikin.h:474
+
void setSwingHorizontal(const uint8_t position)
Set the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:948
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Daikin.cpp:1699
+
const uint16_t kDaikin160Freq
Definition: ir_Daikin.h:304
+
uint8_t remote_state[kDaikin2StateLength]
The state of the IR remote.
Definition: ir_Daikin.h:690
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:1264
+
uint8_t remote_state[kDaikin128StateLength]
The state of the IR remote.
Definition: ir_Daikin.h:926
+
bool getPowerful(void)
Get the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:1726
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:835
+
const uint8_t kDaikin64Dry
Definition: ir_Daikin.h:469
+
bool getMold(void)
Get the Mould mode status of the A/C.
Definition: ir_Daikin.cpp:372
+
const uint8_t kDaikin2SwingVBreeze
Definition: ir_Daikin.h:258
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Daikin.cpp:185
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Daikin.cpp:2789
+
IRDaikin176(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Daikin.cpp:2239
+
static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin160StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:1878
+
const uint8_t kDaikin64FanLow
Definition: ir_Daikin.h:475
+
bool getPowerToggle(void)
Get the Power toggle setting of the A/C.
Definition: ir_Daikin.cpp:3701
+
uint8_t remote_state[kDaikin152StateLength]
The state of the IR remote.
Definition: ir_Daikin.h:992
+
void on(void)
Change the power setting to On.
Definition: ir_Daikin.cpp:3307
+
IRDaikin160(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Daikin.cpp:1867
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:3326
+
const uint8_t kDaikinBeepLoud
Definition: ir_Daikin.h:197
+
const uint8_t kDaikinFanAuto
Definition: ir_Daikin.h:129
+
const uint8_t kDaikin152QuietByte
Definition: ir_Daikin.h:444
+
const uint8_t kDaikin128HalfHourOffset
Definition: ir_Daikin.h:400
+
const uint8_t kDaikin128Dry
Definition: ir_Daikin.h:380
+
void setSwingHorizontal(const bool on)
Set the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:1684
+
const uint64_t kDaikin64KnownGoodState
Definition: ir_Daikin.h:466
+
static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin176StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:2250
+
const uint16_t kDaikin216Sections
Definition: ir_Daikin.h:281
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:1664
+
IRDaikin128(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Daikin.cpp:2638
+
uint16_t getOnTimer(void)
Get the On Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:2984
+
const uint8_t kDaikin152DryTemp
Definition: ir_Daikin.h:438
+
void setCurrentDay(const uint8_t day_of_week)
Set the current day of the week to be sent to the A/C unit.
Definition: ir_Daikin.cpp:469
+
IRDaikin64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Daikin.cpp:3636
+
const uint8_t kDaikin128ByteClockHours
Definition: ir_Daikin.h:393
+
const uint8_t kDaikinTempSize
Definition: ir_Daikin.h:158
+
void checksum()
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:2265
+
IRDaikin152(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Daikin.cpp:3250
+
uint16_t getSleepTime()
Get the Sleep Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:1166
+
const uint16_t kDaikin160HdrMark
Definition: ir_Daikin.h:305
+
const uint16_t kDaikin64ZeroSpace
Definition: ir_Daikin.h:458
+
uint8_t getLightToggle(void)
Get the Light toggle setting of the A/C.
Definition: ir_Daikin.cpp:3031
+
const uint8_t kDaikin176MaskFan
Definition: ir_Daikin.h:357
+
static bool validChecksum(uint8_t state[])
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:2658
+
const uint16_t kDaikin128SectionLength
Definition: ir_Daikin.h:376
+
const uint8_t kDaikin176Cool
Definition: ir_Daikin.h:345
+
void setTurbo(const bool on)
Set the Turbo (Powerful) mode of the A/C.
Definition: ir_Daikin.cpp:3824
+
const uint16_t kDaikin128LeaderSpace
Definition: ir_Daikin.h:367
+
uint16_t getClock(void)
Get the clock time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:3885
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:862
+
const uint8_t kDaikinByteOnTimer
Definition: ir_Daikin.h:191
+
void setWeeklyTimerEnable(const bool on)
Set the enable status of the Weekly Timer.
Definition: ir_Daikin.cpp:484
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:1009
+
const uint16_t kDaikin2LeaderMark
Definition: ir_Daikin.h:218
+
const uint8_t kDaikinBeepQuiet
Definition: ir_Daikin.h:196
+
const uint8_t kDaikin2SwingVAuto
Definition: ir_Daikin.h:257
+
const uint8_t kDaikin2BitEyeOffset
Definition: ir_Daikin.h:234
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:498
+
const uint8_t kDaikin160TempOffset
Definition: ir_Daikin.h:320
+
const uint16_t kDaikin216Section1Length
Definition: ir_Daikin.h:282
+
const uint8_t kDaikinLightBright
Definition: ir_Daikin.h:199
+
void checksum()
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:3278
+
const uint16_t kDaikin152Gap
Definition: ir_Daikin.h:430
+
void send(const uint16_t repeat=kDaikin176DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:2310
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Daikin.cpp:917
+
const uint8_t kDaikin176BytePower
Definition: ir_Daikin.h:346
+
const uint8_t kDaikin128Auto
Definition: ir_Daikin.h:384
+
const uint8_t kDaikin160SwingVMiddle
Definition: ir_Daikin.h:328
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Daikin.cpp:3767
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:2008
+
void setEcono(const bool on)
Set the Economy mode of the A/C.
Definition: ir_Daikin.cpp:2874
+
const uint8_t kDaikinByteEcono
Definition: ir_Daikin.h:177
+
const uint16_t kDaikin128Gap
Definition: ir_Daikin.h:373
+
const uint8_t kDaikin64MaxTemp
Definition: ir_Daikin.h:499
+
const uint8_t kDaikinHeat
Definition: ir_Daikin.h:120
+
const uint16_t kDaikin216OneSpace
Definition: ir_Daikin.h:278
+
const uint8_t kDaikinBitSensorOffset
Definition: ir_Daikin.h:175
+
void checksum()
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:1893
+
const uint8_t kDaikin176SwingHOff
Definition: ir_Daikin.h:362
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Daikin.cpp:309
+
const uint8_t kDaikin216TempSize
Definition: ir_Daikin.h:291
+
const uint16_t kDaikin64BitMark
Definition: ir_Daikin.h:455
+
const uint8_t kDaikin160SwingVLowest
Definition: ir_Daikin.h:326
+
const uint16_t kDaikin216DefaultRepeat
Definition: IRremoteESP8266.h:860
+
uint16_t getOffTime(void)
Get the Off Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:436
+
const uint8_t kDaikinTempOffset
Definition: ir_Daikin.h:157
+
const uint8_t kDaikin2SwingHLeftMax
Definition: ir_Daikin.h:263
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Daikin.cpp:3314
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:1761
+
const uint8_t kDaikinCurBit
Definition: ir_Daikin.h:202
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:765
+
bool getQuiet(void)
Get the Quiet mode status of the A/C.
Definition: ir_Daikin.cpp:3834
+
const uint16_t kDaikin176BitMark
Definition: ir_Daikin.h:337
+
const uint16_t kDaikin160DefaultRepeat
Definition: IRremoteESP8266.h:848
+
void setPowerToggle(const bool on)
Set the Power toggle setting of the A/C.
Definition: ir_Daikin.cpp:3695
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:2362
+
void setEcono(const bool on)
Set the Economy mode of the A/C.
Definition: ir_Daikin.cpp:352
+
void off()
Change the power setting to Off.
Definition: ir_Daikin.cpp:811
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Daikin.cpp:2323
+
const int8_t kDaikin64ToleranceDelta
Definition: ir_Daikin.h:464
+
bool getEye()
Get the Eye (Sensor) mode status of the A/C.
Definition: ir_Daikin.cpp:1128
+
const uint8_t kDaikinFanOffset
Definition: ir_Daikin.h:131
+
const uint8_t kDaikin152SensorOffset
Definition: ir_Daikin.h:451
+
const uint8_t kDaikin160SwingVAuto
Definition: ir_Daikin.h:331
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:3255
+
const uint16_t kDaikinHeaderLength
Definition: ir_Daikin.h:137
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Daikin.cpp:211
+
const uint16_t kDaikin64LdrMark
Definition: ir_Daikin.h:459
+
const uint8_t kDaikin176ByteMode
Definition: ir_Daikin.h:347
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:3381
+
uint64_t remote_state
The state of the IR remote.
Definition: ir_Daikin.h:1057
+ +
const uint8_t kDaikinFanSize
Definition: ir_Daikin.h:132
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:1901
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:2518
+
uint8_t getSwingHorizontal()
Get the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:954
+
const uint8_t kDaikin128Cool
Definition: ir_Daikin.h:381
+
const uint8_t kDaikin128BytePowerSwingSleep
Definition: ir_Daikin.h:408
+
const uint16_t kDaikin176ZeroSpace
Definition: ir_Daikin.h:339
+
const uint8_t kDaikin128Heat
Definition: ir_Daikin.h:383
+
const uint8_t kDaikinSection3Length
Definition: ir_Daikin.h:141
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:3333
+
const uint8_t kDaikin160MaskSwingV
Definition: ir_Daikin.h:325
+
const uint16_t kDaikin160Section1Length
Definition: ir_Daikin.h:312
+
void on(void)
Change the power setting to On.
Definition: ir_Daikin.cpp:1573
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Daikin.cpp:2330
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:2244
+
const uint16_t kDaikin128Sections
Definition: ir_Daikin.h:375
+
const uint16_t kDaikin176Sections
Definition: ir_Daikin.h:341
+
bool getQuiet()
Get the Quiet mode status of the A/C.
Definition: ir_Daikin.cpp:1186
+
const uint8_t kDaikinByteChecksum3
Definition: ir_Daikin.h:194
+
const uint16_t kDaikin128DefaultRepeat
Definition: IRremoteESP8266.h:851
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:3356
+
Class for handling detailed Daikin 152-bit A/C messages.
Definition: ir_Daikin.h:938
+
const uint8_t kDaikin216ByteMode
Definition: ir_Daikin.h:286
+
const uint8_t kDaikin64OnTimeSize
Definition: ir_Daikin.h:487
+
const uint8_t kDaikin128ByteOffTimer
Definition: ir_Daikin.h:395
+
void setPowerful(const bool on)
Set the Powerful (Turbo) mode of the A/C.
Definition: ir_Daikin.cpp:2905
+
const uint8_t kDaikin160ByteMode
Definition: ir_Daikin.h:316
+
const uint8_t kDaikin64FanOffset
Definition: ir_Daikin.h:472
+
const uint8_t kDaikin128FanLow
Definition: ir_Daikin.h:389
+
const uint16_t kDaikinStateLength
Definition: IRremoteESP8266.h:836
+
void setOnTime(const uint16_t mins_since_midnight)
Set the On Timer time for the A/C unit.
Definition: ir_Daikin.cpp:3915
+
Class for handling detailed Daikin 160-bit A/C messages.
Definition: ir_Daikin.h:754
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:3284
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:588
+
const uint16_t kDaikin216Section2Length
Definition: ir_Daikin.h:283
+
const uint8_t kDaikin128BitSleep
Definition: ir_Daikin.h:412
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:3641
+
const uint8_t kDaikin64FanMed
Definition: ir_Daikin.h:476
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:236
+
const uint8_t kDaikin152SwingVByte
Definition: ir_Daikin.h:442
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:760
+
const uint16_t kDaikin128FooterMark
Definition: ir_Daikin.h:374
+
bool getOnTimerEnabled(void)
Get the enable status of the On Timer.
Definition: ir_Daikin.cpp:2946
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Daikin.cpp:888
+
void disableOffTimer(void)
Clear and disable the Off timer.
Definition: ir_Daikin.cpp:429
+
const uint8_t kDaikinByteSilent
Definition: ir_Daikin.h:171
+
void setPurify(const bool on)
Set the Purify (Filter) mode of the A/C.
Definition: ir_Daikin.cpp:1206
+
const uint16_t kDaikin2Gap
Definition: ir_Daikin.h:220
+
const uint8_t kDaikin176TempOffset
Definition: ir_Daikin.h:353
+
const uint8_t kDaikin176ByteFan
Definition: ir_Daikin.h:356
+
void setSleep(const bool on)
Set the Sleep mode of the A/C.
Definition: ir_Daikin.cpp:3862
+
const uint8_t kDaikin152LeaderBits
Definition: ir_Daikin.h:424
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:3723
+
void setOnTimer(const uint16_t mins_since_midnight)
Set the On Timer time for the A/C unit.
Definition: ir_Daikin.cpp:2978
+
const uint16_t kDaikinDefaultRepeat
Definition: IRremoteESP8266.h:840
+
const uint16_t kDaikin64DefaultRepeat
Definition: IRremoteESP8266.h:845
+
const uint8_t kDaikin152SensorByte
Definition: ir_Daikin.h:450
+
const uint8_t kDaikin2BitEyeAuto
Definition: ir_Daikin.h:237
+
const uint8_t kDaikin152ModeByte
Definition: ir_Daikin.h:433
+
const uint8_t kDaikinByteOffTimer
Definition: ir_Daikin.h:188
+
const uint16_t kDaikin64LdrSpace
Definition: ir_Daikin.h:461
+
const uint8_t kDaikin128Fan
Definition: ir_Daikin.h:382
+
bool getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:289
+
const uint8_t kDaikinBitPowerfulOffset
Definition: ir_Daikin.h:169
+
const uint8_t kDaikinBitEye
Definition: ir_Daikin.h:181
+
const uint8_t kDaikinByteOnTimerMinsLow
Definition: ir_Daikin.h:162
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:613
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Daikin.cpp:3805
+
static stdAc::swingv_t toCommonSwingV(const uint8_t setting)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_Daikin.cpp:2087
+
const uint8_t kDaikinBitWeeklyTimer
Definition: ir_Daikin.h:184
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:2491
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Daikin.cpp:3395
+
void setOnTimerEnabled(const bool on)
Set the enable status of the On Timer.
Definition: ir_Daikin.cpp:2939
+
const uint8_t kDaikin128ByteEconoLight
Definition: ir_Daikin.h:415
+
const uint8_t kDaikin216BytePowerful
Definition: ir_Daikin.h:301
+
void setRaw(const uint64_t new_state)
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:3691
+
void on(void)
Change the power setting to On.
Definition: ir_Daikin.cpp:2316
+
void enableSleepTimer(const uint16_t sleeptime)
Set the enable status & time of the Sleep Timer.
Definition: ir_Daikin.cpp:1147
+
static bool validChecksum(const uint64_t state)
Verify the checksum is valid for a given state.
Definition: ir_Daikin.cpp:3665
+
bool getOnTimerEnabled()
Get the enable status of the On Timer.
Definition: ir_Daikin.cpp:1003
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Daikin.cpp:1586
+
const uint8_t kDaikin2SwingVHigh
Definition: ir_Daikin.h:254
+
const uint8_t kDaikinClockMinsHighOffset
Definition: ir_Daikin.h:149
+
const uint16_t kDaikin160Section2Length
Definition: ir_Daikin.h:313
+
const uint8_t kDaikin128FanQuiet
Definition: ir_Daikin.h:391
+
const uint8_t kDaikin216SwingOn
Definition: ir_Daikin.h:298
+
const uint8_t kDaikinDoWSize
Definition: ir_Daikin.h:152
+
void enableOnTimer(const uint16_t starttime)
Set the enable status & time of the On Timer.
Definition: ir_Daikin.cpp:390
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:985
+
const uint8_t kDaikin128TimerSize
Definition: ir_Daikin.h:399
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Daikin.cpp:2000
+
void on(void)
Change the power setting to On.
Definition: ir_Daikin.cpp:204
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Daikin.cpp:3373
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Daikin.cpp:1178
+
void setSwingVertical(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:3850
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Daikin.cpp:538
+
const uint8_t kDaikin2FanByte
Definition: ir_Daikin.h:260
+
void checksum()
Calculate and set the checksum values for the internal state.
Definition: ir_Daikin.cpp:752
+
const uint8_t kDaikinByteMold
Definition: ir_Daikin.h:185
+
const uint8_t kDaikin64FanSize
Definition: ir_Daikin.h:473
+
const uint8_t kDaikin160MaskFan
Definition: ir_Daikin.h:323
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Daikin.cpp:217
+
static uint8_t calcFirstChecksum(const uint8_t state[])
Definition: ir_Daikin.cpp:2645
+
const uint8_t kDaikin64MinTemp
Definition: ir_Daikin.h:498
+
const uint8_t kDaikin2SwingHRight
Definition: ir_Daikin.h:266
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:1991
+
bool getSleep(void)
Get the Sleep mode of the A/C.
Definition: ir_Daikin.cpp:2867
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Daikin.cpp:3037
+
uint8_t getSwingHorizontal(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:2453
+
bool getQuiet(void)
Get the Quiet mode status of the A/C.
Definition: ir_Daikin.cpp:3436
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Daikin.cpp:2423
+
void setClock(const uint16_t mins_since_midnight)
Set the clock on the A/C unit.
Definition: ir_Daikin.cpp:2921
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:1968
+
uint16_t getOnTime(void)
Get the On Timer time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:3907
+
bool getOffTimerEnabled(void)
Get the enable status of the Off Timer.
Definition: ir_Daikin.cpp:2997
+
const uint16_t kDaikin64Gap
Definition: ir_Daikin.h:460
+
const uint16_t kDaikin128OneSpace
Definition: ir_Daikin.h:371
+
bool getEcono(void)
Get the Economical mode of the A/C.
Definition: ir_Daikin.cpp:360
+
const uint16_t kDaikin152HdrMark
Definition: ir_Daikin.h:425
+
const uint8_t kDaikin2BitMoldOffset
Definition: ir_Daikin.h:238
+
const uint8_t kDaikin2BitPowerOffset
Definition: ir_Daikin.h:246
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:2430
+
const uint8_t kDaikinByteOffTimerMinsLow
Definition: ir_Daikin.h:166
+
const uint8_t kDaikin64SleepBit
Definition: ir_Daikin.h:501
+
const uint8_t kDaikin2SwingHSwing
Definition: ir_Daikin.h:269
+
void setSwingVertical(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:2846
+
bool getSensor(void)
Get the Sensor mode of the A/C.
Definition: ir_Daikin.cpp:3481
+
void enableOffTimer(const uint16_t endtime)
Set the enable status & time of the Off Timer.
Definition: ir_Daikin.cpp:421
+
const uint16_t kDaikin160StateLength
Definition: IRremoteESP8266.h:846
+
const uint16_t kDaikin216HdrMark
Definition: ir_Daikin.h:275
+
const uint8_t kDaikinByteClockMinsHigh
Definition: ir_Daikin.h:148
+
const uint16_t kDaikin2HdrSpace
Definition: ir_Daikin.h:222
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Daikin.cpp:250
+
const uint8_t kDaikin176ModeButton
Definition: ir_Daikin.h:350
+
const uint8_t kDaikinSections
Definition: ir_Daikin.h:138
+
const uint16_t kDaikin2StateLength
Definition: IRremoteESP8266.h:841
+
uint8_t _saved_temp
Definition: ir_Daikin.h:856
+
const uint8_t kDaikinByteComfort
Definition: ir_Daikin.h:143
+
const uint8_t kDaikinByteChecksum1
Definition: ir_Daikin.h:144
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:2273
+
void setEye(const bool on)
Set the Eye (Sensor) mode of the A/C.
Definition: ir_Daikin.cpp:1122
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:3302
+
const uint8_t kDaikin64FanHigh
Definition: ir_Daikin.h:477
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:793
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:3678
+
void send(const uint16_t repeat=kDaikin152DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:3260
+
const uint8_t kDaikin64ChecksumSize
Definition: ir_Daikin.h:504
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:223
+
const uint8_t kDaikinFanMed
Definition: ir_Daikin.h:127
+
bool getOnTimeEnabled(void)
Get the enable status of the On Timer.
Definition: ir_Daikin.cpp:3901
+
const uint8_t kDaikin152ComfortByte
Definition: ir_Daikin.h:448
+
const uint16_t kDaikin64HdrSpace
Definition: ir_Daikin.h:456
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:2677
+
void send(const uint16_t repeat=kDaikin216DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:1513
+
void setRaw(const uint8_t new_code[], const uint16_t length=kDaikinStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:193
+
const uint8_t kDaikin128BitTimerEnabledOffset
Definition: ir_Daikin.h:396
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:3506
+
bool getQuiet(void)
Get the Quiet mode status of the A/C.
Definition: ir_Daikin.cpp:317
+
void setSwingVertical(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:1670
+
const uint8_t kDaikin2LightSize
Definition: ir_Daikin.h:250
+
const uint8_t kDaikinSwingOff
Definition: ir_Daikin.h:136
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Daikin.cpp:2400
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:3729
+
const uint16_t kMarkExcess
Definition: IRrecv.h:24
+
const uint8_t kDaikin216SwingOff
Definition: ir_Daikin.h:299
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:1545
+
const uint8_t kDaikinSwingSize
Definition: ir_Daikin.h:134
+
const uint8_t kDaikinAuto
Definition: ir_Daikin.h:117
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Daikin.cpp:3791
+
const uint16_t kDaikin216BitMark
Definition: ir_Daikin.h:277
+
const uint8_t kDaikinCool
Definition: ir_Daikin.h:119
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Daikin.h:874
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:2643
+
const uint16_t kDaikin160ZeroSpace
Definition: ir_Daikin.h:309
+
const uint64_t kDaikinFirstHeader64
Definition: ir_Daikin.h:213
+
const uint8_t kDaikin128ByteModeFan
Definition: ir_Daikin.h:377
+
const uint16_t kDaikin216Gap
Definition: ir_Daikin.h:280
+
const uint8_t kDaikin2BitPower
Definition: ir_Daikin.h:247
+
void setBeep(const uint8_t beep)
Set the Beep mode of the A/C.
Definition: ir_Daikin.cpp:1044
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:1508
+
const uint8_t kDaikinFanQuiet
Definition: ir_Daikin.h:130
+
const uint16_t kDaikinMarkExcess
Definition: ir_Daikin.h:205
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Daikin.cpp:2764
+
uint8_t getBeep()
Get the Beep status of the A/C.
Definition: ir_Daikin.cpp:1038
+
const uint8_t kDaikinTolerance
Definition: ir_Daikin.h:204
+
bool getOffTimerEnabled(void)
Get the enable status of the Off Timer.
Definition: ir_Daikin.cpp:443
+
const uint8_t kDaikin216MaskFan
Definition: ir_Daikin.h:294
+
bool getSwingHorizontal(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_Daikin.cpp:302
+
const uint8_t kDaikin2SwingVLow
Definition: ir_Daikin.h:255
+
const uint8_t kDaikin160BytePower
Definition: ir_Daikin.h:315
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Daikin.cpp:525
+
void setClean(const bool on)
Set the Auto clean mode of the A/C.
Definition: ir_Daikin.cpp:1074
+
const uint16_t kDaikin216HdrSpace
Definition: ir_Daikin.h:276
+
const uint8_t kDaikinSection2Length
Definition: ir_Daikin.h:140
+
const uint8_t kDaikin128ModeSize
Definition: ir_Daikin.h:379
+
const uint16_t kDaikin176OneSpace
Definition: ir_Daikin.h:338
+
bool getEyeAuto()
Get the Automaitc Eye (Sensor) mode status of the A/C.
Definition: ir_Daikin.cpp:1116
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:848
+
uint8_t * getRaw()
Get a PTR to the internal state/code for this protocol.
Definition: ir_Daikin.cpp:3295
+
const uint16_t kDaikinHdrMark
Definition: ir_Daikin.h:206
+
const uint8_t kDaikin128ByteClockMins
Definition: ir_Daikin.h:392
+
const uint8_t kDaikinLightOff
Definition: ir_Daikin.h:201
+
void setEcono(const bool on)
Set the Economy mode of the A/C.
Definition: ir_Daikin.cpp:1134
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Daikin.cpp:2071
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:552
+
const uint8_t kDaikin2Tolerance
Definition: ir_Daikin.h:229
+
const uint8_t kDaikin160SwingVLow
Definition: ir_Daikin.h:327
+
const uint8_t kDaikin128BitHalfHour
Definition: ir_Daikin.h:401
+
const uint8_t kDaikin128BitEcono
Definition: ir_Daikin.h:417
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Daikin.cpp:3716
+
const uint8_t kDaikin176DryFanTemp
Definition: ir_Daikin.h:355
+
uint8_t getMode()
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:829
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:1962
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Daikin.cpp:265
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Daikin.cpp:2833
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Daikin.cpp:2722
+
const uint16_t kDaikin2OneSpace
Definition: ir_Daikin.h:224
+
const uint8_t kDaikin2SwingHWide
Definition: ir_Daikin.h:262
+
const uint8_t kDaikin152FanByte
Definition: ir_Daikin.h:441
+
uint8_t remote_state[kDaikin216StateLength]
The state of the IR remote.
Definition: ir_Daikin.h:748
+
const uint8_t kDaikin64ClockHoursSize
Definition: ir_Daikin.h:482
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Daikin.cpp:3756
+
uint64_t getRaw()
Get a copy of the internal state as a valid code for this protocol.
Definition: ir_Daikin.cpp:3684
+
const uint16_t kDaikin128HdrMark
Definition: ir_Daikin.h:368
+
uint8_t getLight()
Get the Light status of the A/C.
Definition: ir_Daikin.cpp:1050
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:2694
+
void send(const uint16_t repeat=kDaikin64DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:3646
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:1639
+
uint8_t getCurrentDay(void)
Get the current day of the week to be sent to the A/C unit.
Definition: ir_Daikin.cpp:477
+
bool getClean()
Get the Auto Clean mode status of the A/C.
Definition: ir_Daikin.cpp:1080
+
const uint8_t kDaikin2BitMold
Definition: ir_Daikin.h:239
+
const uint8_t kDaikinBitSilentOffset
Definition: ir_Daikin.h:172
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Daikin.cpp:1872
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Daikin.cpp:1930
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Daikin.cpp:2796
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Daikin.cpp:156
+
void clearSleepTimerFlag(void)
+
const uint8_t kDaikin128MaxTemp
Definition: ir_Daikin.h:407
+
void send(const uint16_t repeat=kDaikin160DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Daikin.cpp:1937
+
const uint8_t kDaikinMaxTemp
Definition: ir_Daikin.h:125
+
Class for handling detailed Daikin 176-bit A/C messages.
Definition: ir_Daikin.h:806
+
const uint8_t kDaikin128FanHigh
Definition: ir_Daikin.h:387
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:2101
+
const uint8_t kDaikin128FanAuto
Definition: ir_Daikin.h:386
+
uint8_t getSwingVertical()
Get the Vertical Swing mode of the A/C.
Definition: ir_Daikin.cpp:910
+
IRsend _irsend
instance of the IR send class
Definition: ir_Daikin.h:741
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Daikin.cpp:1219
+
const uint8_t kDaikinBitWeeklyTimerOffset
Definition: ir_Daikin.h:183
+
uint8_t remote_state[kDaikin160StateLength]
The state of the IR remote.
Definition: ir_Daikin.h:800
+
const uint16_t kDaikin176Section1Length
Definition: ir_Daikin.h:342
+
const uint16_t kDaikin2Freq
Definition: ir_Daikin.h:217
+
const uint16_t kDaikin128BitMark
Definition: ir_Daikin.h:370
+
const uint8_t kDaikinMinTemp
Definition: ir_Daikin.h:124
+
uint16_t getClock(void)
Get the clock time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:2932
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:1622
+
const uint8_t kDaikin2BitFreshAirOffset
Definition: ir_Daikin.h:242
+
bool getQuiet(void)
Get the Quiet mode status of the A/C.
Definition: ir_Daikin.cpp:1712
+
const uint8_t kDaikin152PowerfulByte
Definition: ir_Daikin.h:445
+
void disableOnTimer(void)
Clear and disable the On timer.
Definition: ir_Daikin.cpp:399
+
IRDaikin216(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class Constructor.
Definition: ir_Daikin.cpp:1503
+
const uint8_t kDaikin64ClockMinsSize
Definition: ir_Daikin.h:481
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Daikin.cpp:851
+
const uint8_t kDaikinFanMin
Definition: ir_Daikin.h:126
+
const uint8_t kDaikinBytePower
Definition: ir_Daikin.h:154
+
const uint16_t kDaikin128LeaderMark
Definition: ir_Daikin.h:366
+
void setSleep(const bool on)
Set the Sleep mode of the A/C.
Definition: ir_Daikin.cpp:2860
+
const uint8_t kDaikin2SwingVCirculate
Definition: ir_Daikin.h:259
+
const uint8_t kDaikin2SwingHAuto
Definition: ir_Daikin.h:268
+
const uint8_t kDaikinLightDim
Definition: ir_Daikin.h:200
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Daikin.cpp:1956
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Daikin.cpp:1733
+
const uint8_t kDaikin64OffTimeSize
Definition: ir_Daikin.h:492
+
uint16_t getCurrentTime()
Get the clock time to be sent to the A/C unit.
Definition: ir_Daikin.cpp:967
+
const uint8_t kDaikin128ByteOnTimer
Definition: ir_Daikin.h:394
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8cpp.html new file mode 100644 index 000000000..e71f63ef8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8cpp.html @@ -0,0 +1,220 @@ + + + + + + + +IRremoteESP8266: src/ir_Delonghi.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Delonghi.cpp File Reference
+
+
+ +

Delonghi based protocol. +More...

+ + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kDelonghiAcHdrMark = 8984
 
const uint16_t kDelonghiAcBitMark = 572
 
const uint16_t kDelonghiAcHdrSpace = 4200
 
const uint16_t kDelonghiAcOneSpace = 1558
 
const uint16_t kDelonghiAcZeroSpace = 510
 
const uint32_t kDelonghiAcGap = kDefaultMessageGap
 
const uint16_t kDelonghiAcFreq = 38000
 
const uint16_t kDelonghiAcOverhead = 3
 
+

Detailed Description

+

Delonghi based protocol.

+

Variable Documentation

+ +

◆ kDelonghiAcBitMark

+ +
+
+ + + + +
const uint16_t kDelonghiAcBitMark = 572
+
+ +
+
+ +

◆ kDelonghiAcFreq

+ +
+
+ + + + +
const uint16_t kDelonghiAcFreq = 38000
+
+ +
+
+ +

◆ kDelonghiAcGap

+ +
+
+ + + + +
const uint32_t kDelonghiAcGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kDelonghiAcHdrMark

+ +
+
+ + + + +
const uint16_t kDelonghiAcHdrMark = 8984
+
+ +
+
+ +

◆ kDelonghiAcHdrSpace

+ +
+
+ + + + +
const uint16_t kDelonghiAcHdrSpace = 4200
+
+ +
+
+ +

◆ kDelonghiAcOneSpace

+ +
+
+ + + + +
const uint16_t kDelonghiAcOneSpace = 1558
+
+ +
+
+ +

◆ kDelonghiAcOverhead

+ +
+
+ + + + +
const uint16_t kDelonghiAcOverhead = 3
+
+ +
+
+ +

◆ kDelonghiAcZeroSpace

+ +
+
+ + + + +
const uint16_t kDelonghiAcZeroSpace = 510
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h.html new file mode 100644 index 000000000..4a6219b46 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h.html @@ -0,0 +1,695 @@ + + + + + + + +IRremoteESP8266: src/ir_Delonghi.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Delonghi.h File Reference
+
+
+ +

Delonghi A/C. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRDelonghiAc
 Class for handling detailed Delonghi A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kDelonghiAcTempOffset = 8
 
const uint8_t kDelonghiAcTempSize = 5
 
const uint8_t kDelonghiAcTempMinC = 18
 
const uint8_t kDelonghiAcTempMaxC = 32
 
const uint8_t kDelonghiAcTempMinF = 64
 
const uint8_t kDelonghiAcTempMaxF = 90
 
const uint8_t kDelonghiAcTempAutoDryMode = 0
 
const uint8_t kDelonghiAcTempFanMode = 0b00110
 
const uint8_t kDelonghiAcFanOffset
 
const uint8_t kDelonghiAcFanSize = 2
 
const uint8_t kDelonghiAcFanAuto = 0b00
 
const uint8_t kDelonghiAcFanHigh = 0b01
 
const uint8_t kDelonghiAcFanMedium = 0b10
 
const uint8_t kDelonghiAcFanLow = 0b11
 
const uint8_t kDelonghiAcTempUnitBit
 
const uint8_t kDelonghiAcPowerBit = kDelonghiAcTempUnitBit + 1
 
const uint8_t kDelonghiAcModeOffset = kDelonghiAcPowerBit + 1
 
const uint8_t kDelonghiAcModeSize = 3
 
const uint8_t kDelonghiAcCool = 0b000
 
const uint8_t kDelonghiAcDry = 0b001
 
const uint8_t kDelonghiAcFan = 0b010
 
const uint8_t kDelonghiAcAuto = 0b100
 
const uint8_t kDelonghiAcBoostBit
 
const uint8_t kDelonghiAcSleepBit = kDelonghiAcBoostBit + 1
 
const uint8_t kDelonghiAcOnTimerEnableBit = kDelonghiAcSleepBit + 3
 
const uint8_t kDelonghiAcHoursSize = 5
 
const uint8_t kDelonghiAcMinsSize = 6
 
const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59
 
const uint8_t kDelonghiAcOnTimerHoursOffset
 
const uint8_t kDelonghiAcOnTimerMinsOffset
 
const uint8_t kDelonghiAcOffTimerEnableBit
 
const uint8_t kDelonghiAcOffTimerHoursOffset
 
const uint8_t kDelonghiAcOffTimerMinsOffset
 
const uint8_t kDelonghiAcChecksumOffset
 
const uint8_t kDelonghiAcChecksumSize = 8
 
+

Detailed Description

+

Delonghi A/C.

+
Note
Kudos to TheMaxxz For the breakdown and mapping of the bit values.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1096
+

Variable Documentation

+ +

◆ kDelonghiAcAuto

+ +
+
+ + + + +
const uint8_t kDelonghiAcAuto = 0b100
+
+ +
+
+ +

◆ kDelonghiAcBoostBit

+ +
+
+ + + + +
const uint8_t kDelonghiAcBoostBit
+
+Initial value: +
+
+ +

◆ kDelonghiAcChecksumOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcChecksumOffset
+
+
+ +

◆ kDelonghiAcChecksumSize

+ +
+
+ + + + +
const uint8_t kDelonghiAcChecksumSize = 8
+
+ +
+
+ +

◆ kDelonghiAcCool

+ +
+
+ + + + +
const uint8_t kDelonghiAcCool = 0b000
+
+ +
+
+ +

◆ kDelonghiAcDry

+ +
+
+ + + + +
const uint8_t kDelonghiAcDry = 0b001
+
+ +
+
+ +

◆ kDelonghiAcFan

+ +
+
+ + + + +
const uint8_t kDelonghiAcFan = 0b010
+
+ +
+
+ +

◆ kDelonghiAcFanAuto

+ +
+
+ + + + +
const uint8_t kDelonghiAcFanAuto = 0b00
+
+ +
+
+ +

◆ kDelonghiAcFanHigh

+ +
+
+ + + + +
const uint8_t kDelonghiAcFanHigh = 0b01
+
+ +
+
+ +

◆ kDelonghiAcFanLow

+ +
+
+ + + + +
const uint8_t kDelonghiAcFanLow = 0b11
+
+ +
+
+ +

◆ kDelonghiAcFanMedium

+ +
+
+ + + + +
const uint8_t kDelonghiAcFanMedium = 0b10
+
+ +
+
+ +

◆ kDelonghiAcFanOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcFanOffset
+
+Initial value: +
+
+ +

◆ kDelonghiAcFanSize

+ +
+
+ + + + +
const uint8_t kDelonghiAcFanSize = 2
+
+ +
+
+ +

◆ kDelonghiAcHoursSize

+ +
+
+ + + + +
const uint8_t kDelonghiAcHoursSize = 5
+
+ +
+
+ +

◆ kDelonghiAcMinsSize

+ +
+
+ + + + +
const uint8_t kDelonghiAcMinsSize = 6
+
+ +
+
+ +

◆ kDelonghiAcModeOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcModeOffset = kDelonghiAcPowerBit + 1
+
+ +
+
+ +

◆ kDelonghiAcModeSize

+ +
+
+ + + + +
const uint8_t kDelonghiAcModeSize = 3
+
+ +
+
+ +

◆ kDelonghiAcOffTimerEnableBit

+ +
+
+ + + + +
const uint8_t kDelonghiAcOffTimerEnableBit
+
+
+ +

◆ kDelonghiAcOffTimerHoursOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcOffTimerHoursOffset
+
+Initial value: +
+
+ +

◆ kDelonghiAcOffTimerMinsOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcOffTimerMinsOffset
+
+
+ +

◆ kDelonghiAcOnTimerEnableBit

+ +
+
+ + + + +
const uint8_t kDelonghiAcOnTimerEnableBit = kDelonghiAcSleepBit + 3
+
+ +
+
+ +

◆ kDelonghiAcOnTimerHoursOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcOnTimerHoursOffset
+
+Initial value: +
+
+ +

◆ kDelonghiAcOnTimerMinsOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcOnTimerMinsOffset
+
+
+ +

◆ kDelonghiAcPowerBit

+ +
+
+ + + + +
const uint8_t kDelonghiAcPowerBit = kDelonghiAcTempUnitBit + 1
+
+ +
+
+ +

◆ kDelonghiAcSleepBit

+ +
+
+ + + + +
const uint8_t kDelonghiAcSleepBit = kDelonghiAcBoostBit + 1
+
+ +
+
+ +

◆ kDelonghiAcTempAutoDryMode

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempAutoDryMode = 0
+
+ +
+
+ +

◆ kDelonghiAcTempFanMode

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempFanMode = 0b00110
+
+ +
+
+ +

◆ kDelonghiAcTempMaxC

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempMaxC = 32
+
+ +
+
+ +

◆ kDelonghiAcTempMaxF

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempMaxF = 90
+
+ +
+
+ +

◆ kDelonghiAcTempMinC

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempMinC = 18
+
+ +
+
+ +

◆ kDelonghiAcTempMinF

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempMinF = 64
+
+ +
+
+ +

◆ kDelonghiAcTempOffset

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempOffset = 8
+
+ +
+
+ +

◆ kDelonghiAcTempSize

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempSize = 5
+
+ +
+
+ +

◆ kDelonghiAcTempUnitBit

+ +
+
+ + + + +
const uint8_t kDelonghiAcTempUnitBit
+
+Initial value: +
+
+ +

◆ kDelonghiAcTimerMax

+ +
+
+ + + + +
const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59
+
+ +
+
+
+
const uint8_t kDelonghiAcTempOffset
Definition: ir_Delonghi.h:50
+
const uint8_t kDelonghiAcOnTimerHoursOffset
Definition: ir_Delonghi.h:82
+
const uint8_t kDelonghiAcModeOffset
Definition: ir_Delonghi.h:68
+
const uint8_t kDelonghiAcOnTimerMinsOffset
Definition: ir_Delonghi.h:84
+
const uint8_t kDelonghiAcModeSize
Definition: ir_Delonghi.h:69
+
const uint8_t kDelonghiAcTempSize
Definition: ir_Delonghi.h:51
+
const uint8_t kDelonghiAcOffTimerMinsOffset
Definition: ir_Delonghi.h:91
+
const uint8_t kDelonghiAcFanSize
Definition: ir_Delonghi.h:60
+
const uint8_t kDelonghiAcOnTimerEnableBit
Definition: ir_Delonghi.h:78
+
const uint8_t kDelonghiAcMinsSize
Definition: ir_Delonghi.h:80
+
const uint8_t kDelonghiAcOffTimerEnableBit
Definition: ir_Delonghi.h:87
+
const uint8_t kDelonghiAcHoursSize
Definition: ir_Delonghi.h:79
+
const uint8_t kDelonghiAcFanOffset
Definition: ir_Delonghi.h:58
+
const uint8_t kDelonghiAcOffTimerHoursOffset
Definition: ir_Delonghi.h:89
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h_source.html new file mode 100644 index 000000000..c14c0dbe1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Delonghi_8h_source.html @@ -0,0 +1,323 @@ + + + + + + + +IRremoteESP8266: src/ir_Delonghi.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Delonghi.h
+
+
+Go to the documentation of this file.
1 // Copyright 2020 David Conran
+
2 
+
7 
+
8 // Supports:
+
9 // Brand: Delonghi, Model: PAC A95
+
10 
+
11 #ifndef IR_DELONGHI_H_
+
12 #define IR_DELONGHI_H_
+
13 
+
14 #define __STDC_LIMIT_MACROS
+
15 #include <stdint.h>
+
16 #ifndef UNIT_TEST
+
17 #include <Arduino.h>
+
18 #endif
+
19 #include "IRremoteESP8266.h"
+
20 #include "IRsend.h"
+
21 #ifdef UNIT_TEST
+
22 #include "IRsend_test.h"
+
23 #endif
+
24 
+
25 /* State bit map:
+
26 
+
27 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+------+
+
28 | FIXED HEADER | TEMPERATURE | FAN |F or C|
+
29 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+------+
+
30  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+
31 
+
32 +--+--+--+--+-----+-----+
+
33 |ON| MODE |Boost|Sleep|
+
34 +--+--+--+--+-----+-----+
+
35 16 17 18 19 20 21
+
36 
+
37 +--+--+------------+--+--+--+--+--+--+--+--+--+--+--+--+--+
+
38 | 0| 0|Timer Enable| ON TIME HOUR | 0 0| ON TIME MIN |
+
39 +--+--+------------+--+--+--+--+--+--+--+--+--+--+--+--+--+
+
40  22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
+
41 
+
42 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+
43 | 0 0| OFF TIMER | CHECKSUM |
+
44 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+
45  38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
+
46 
+
47 */
+
48 
+
49 // Constants
+
50 const uint8_t kDelonghiAcTempOffset = 8;
+
51 const uint8_t kDelonghiAcTempSize = 5;
+
52 const uint8_t kDelonghiAcTempMinC = 18; // Deg C
+
53 const uint8_t kDelonghiAcTempMaxC = 32; // Deg C
+
54 const uint8_t kDelonghiAcTempMinF = 64; // Deg F
+
55 const uint8_t kDelonghiAcTempMaxF = 90; // Deg F
+
56 const uint8_t kDelonghiAcTempAutoDryMode = 0;
+
57 const uint8_t kDelonghiAcTempFanMode = 0b00110;
+ +
59  kDelonghiAcTempSize; // 13
+
60 const uint8_t kDelonghiAcFanSize = 2;
+
61 const uint8_t kDelonghiAcFanAuto = 0b00;
+
62 const uint8_t kDelonghiAcFanHigh = 0b01;
+
63 const uint8_t kDelonghiAcFanMedium = 0b10;
+
64 const uint8_t kDelonghiAcFanLow = 0b11;
+ +
66  kDelonghiAcFanSize; // 15 (1 = Celsius, 0 = Fahrenheit)
+
67 const uint8_t kDelonghiAcPowerBit = kDelonghiAcTempUnitBit + 1; // 16
+
68 const uint8_t kDelonghiAcModeOffset = kDelonghiAcPowerBit + 1; // 17
+
69 const uint8_t kDelonghiAcModeSize = 3;
+
70 const uint8_t kDelonghiAcCool = 0b000;
+
71 const uint8_t kDelonghiAcDry = 0b001;
+
72 const uint8_t kDelonghiAcFan = 0b010;
+
73 const uint8_t kDelonghiAcAuto = 0b100;
+ +
75  kDelonghiAcModeSize; // 20 (Aka Turbo)
+
76 const uint8_t kDelonghiAcSleepBit = kDelonghiAcBoostBit + 1; // 21
+
77 // Two zero bits
+ +
79 const uint8_t kDelonghiAcHoursSize = 5; // Max 23 hrs
+
80 const uint8_t kDelonghiAcMinsSize = 6; // Max 59 mins
+
81 const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59;
+ +
83  1; // 25
+ +
85  kDelonghiAcHoursSize + 2; // 32 (inc another two zero bits)
+
86 // Two zero bits
+ +
88  kDelonghiAcMinsSize + 2; // 40
+ +
90  1; // 41
+ +
92  kDelonghiAcHoursSize + 2; // 48 (inc another two zero bits)
+
93 // Two zero bits
+ +
95  kDelonghiAcMinsSize + 2; // 56
+
96 const uint8_t kDelonghiAcChecksumSize = 8;
+
97 
+
98 
+
99 // Classes
+
100 
+ +
103  public:
+
104  explicit IRDelonghiAc(const uint16_t pin, const bool inverted = false,
+
105  const bool use_modulation = true);
+
106  void stateReset();
+
107 #if SEND_DELONGHI_AC
+
108  void send(const uint16_t repeat = kDelonghiAcDefaultRepeat);
+
113  int8_t calibrate(void) { return _irsend.calibrate(); }
+
114 #endif // SEND_DELONGHI_AC
+
115  void begin();
+
116  static uint8_t calcChecksum(const uint64_t state);
+
117  static bool validChecksum(const uint64_t state);
+
118  void setPower(const bool on);
+
119  bool getPower();
+
120  void on();
+
121  void off();
+
122  void setTempUnit(const bool celsius);
+
123  bool getTempUnit(void);
+
124  void setTemp(const uint8_t temp, const bool fahrenheit = false,
+
125  const bool force = false);
+
126  uint8_t getTemp();
+
127  void setFan(const uint8_t speed);
+
128  uint8_t getFan();
+
129  void setMode(const uint8_t mode);
+
130  uint8_t getMode();
+
131  void setBoost(const bool on); // Aka Turbo
+
132  bool getBoost(); // Aka Turbo
+
133  void setSleep(const bool on);
+
134  bool getSleep();
+
135  void setOnTimerEnabled(const bool on);
+
136  bool getOnTimerEnabled(void);
+
137  void setOnTimer(const uint16_t nr_of_mins);
+
138  uint16_t getOnTimer(void);
+
139  void setOffTimerEnabled(const bool on);
+
140  bool getOffTimerEnabled(void);
+
141  void setOffTimer(const uint16_t nr_of_mins);
+
142  uint16_t getOffTimer(void);
+
143  uint64_t getRaw();
+
144  void setRaw(const uint64_t state);
+
145  uint8_t convertMode(const stdAc::opmode_t mode);
+
146  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
147  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
148  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
149  stdAc::state_t toCommon(void);
+
150  String toString();
+
151 #ifndef UNIT_TEST
+
152 
+
153  private:
+ +
155 #else
+
156  IRsendTest _irsend;
+
158 #endif
+
160  uint64_t remote_state;
+
161  uint8_t _saved_temp;
+ +
163  void checksum(void);
+
164 };
+
165 #endif // IR_DELONGHI_H_
+
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Delonghi.cpp:274
+
const uint8_t kDelonghiAcCool
Definition: ir_Delonghi.h:70
+
uint16_t getOnTimer(void)
Get the On timer time.
Definition: ir_Delonghi.cpp:393
+
const uint8_t kDelonghiAcTempOffset
Definition: ir_Delonghi.h:50
+
void begin()
Set up hardware to be able to send a message.
Definition: ir_Delonghi.cpp:100
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Delonghi.cpp:221
+
void send(const uint16_t repeat=kDelonghiAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Delonghi.cpp:105
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Delonghi.cpp:333
+
uint8_t getTemp()
Get the current temperature setting.
Definition: ir_Delonghi.cpp:214
+
void setRaw(const uint64_t state)
Set the internal state from a valid code for this protocol.
Definition: ir_Delonghi.cpp:153
+
const uint8_t kDelonghiAcTempFanMode
Definition: ir_Delonghi.h:57
+
const uint8_t kDelonghiAcOnTimerHoursOffset
Definition: ir_Delonghi.h:82
+
Class for handling detailed Delonghi A/C messages.
Definition: ir_Delonghi.h:102
+
IRDelonghiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Delonghi.cpp:95
+
const uint8_t kDelonghiAcModeOffset
Definition: ir_Delonghi.h:68
+
const uint8_t kDelonghiAcTempMinC
Definition: ir_Delonghi.h:52
+
const uint8_t kDelonghiAcFanHigh
Definition: ir_Delonghi.h:62
+
void setOnTimer(const uint16_t nr_of_mins)
Set the On timer to activate in nr of minutes.
Definition: ir_Delonghi.cpp:381
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Delonghi.cpp:163
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
uint8_t _saved_temp
The previously user requested temp value.
Definition: ir_Delonghi.h:161
+
const uint8_t kDelonghiAcOnTimerMinsOffset
Definition: ir_Delonghi.h:84
+
void setOffTimerEnabled(const bool on)
Set the enable status of the Off Timer.
Definition: ir_Delonghi.cpp:402
+
const uint8_t kDelonghiAcFanMedium
Definition: ir_Delonghi.h:63
+
const uint8_t kDelonghiAcTempAutoDryMode
Definition: ir_Delonghi.h:56
+
const uint8_t kDelonghiAcFanLow
Definition: ir_Delonghi.h:64
+
static bool validChecksum(const uint64_t state)
Verify the checksum is valid for a given state.
Definition: ir_Delonghi.cpp:125
+
void on()
Change the power setting to On.
Definition: ir_Delonghi.cpp:156
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Delonghi.cpp:317
+ +
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Delonghi.h:113
+
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Delonghi.cpp:138
+
bool getPower()
Get the value of the current power setting.
Definition: ir_Delonghi.cpp:169
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
bool getOnTimerEnabled(void)
Get the enable status of the On Timer.
Definition: ir_Delonghi.cpp:374
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Delonghi.cpp:256
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kDelonghiAcModeSize
Definition: ir_Delonghi.h:69
+
const uint8_t kDelonghiAcFanAuto
Definition: ir_Delonghi.h:61
+
const uint8_t kDelonghiAcChecksumOffset
Definition: ir_Delonghi.h:94
+
void setOnTimerEnabled(const bool on)
Set the enable status of the On Timer.
Definition: ir_Delonghi.cpp:368
+
const uint8_t kDelonghiAcTempSize
Definition: ir_Delonghi.h:51
+
const uint8_t kDelonghiAcTempMaxF
Definition: ir_Delonghi.h:55
+
uint16_t getOffTimer(void)
Get the Off timer time.
Definition: ir_Delonghi.cpp:427
+
bool getBoost()
Get the Boost (Turbo) mode of the A/C.
Definition: ir_Delonghi.cpp:350
+ +
const uint8_t kDelonghiAcAuto
Definition: ir_Delonghi.h:73
+
const uint8_t kDelonghiAcOffTimerMinsOffset
Definition: ir_Delonghi.h:91
+
const uint8_t kDelonghiAcBoostBit
Definition: ir_Delonghi.h:74
+
const uint8_t kDelonghiAcSleepBit
Definition: ir_Delonghi.h:76
+
const uint8_t kDelonghiAcPowerBit
Definition: ir_Delonghi.h:67
+
const uint8_t kDelonghiAcFanSize
Definition: ir_Delonghi.h:60
+
bool getTempUnit(void)
Get the temperature scale unit of measure currently in use.
Definition: ir_Delonghi.cpp:181
+
const uint8_t kDelonghiAcOnTimerEnableBit
Definition: ir_Delonghi.h:78
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Delonghi.cpp:132
+
void setSleep(const bool on)
Set the Sleep mode of the A/C.
Definition: ir_Delonghi.cpp:356
+
const uint16_t kDelonghiAcDefaultRepeat
Definition: IRremoteESP8266.h:862
+
uint8_t _saved_temp_units
The previously user requested temp units.
Definition: ir_Delonghi.h:162
+
const uint16_t kDelonghiAcTimerMax
Definition: ir_Delonghi.h:81
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Delonghi.cpp:291
+
void setTemp(const uint8_t temp, const bool fahrenheit=false, const bool force=false)
Set the temperature.
Definition: ir_Delonghi.cpp:189
+
void setOffTimer(const uint16_t nr_of_mins)
Set the Off timer to activate in nr of minutes.
Definition: ir_Delonghi.cpp:415
+
bool getOffTimerEnabled(void)
Get the enable status of the Off Timer.
Definition: ir_Delonghi.cpp:408
+
const uint8_t kDelonghiAcMinsSize
Definition: ir_Delonghi.h:80
+
static uint8_t calcChecksum(const uint64_t state)
Calculate the checksum for a given state.
Definition: ir_Delonghi.cpp:113
+
IRsend _irsend
instance of the IR send class
Definition: ir_Delonghi.h:154
+
const uint8_t kDelonghiAcTempUnitBit
Definition: ir_Delonghi.h:65
+
void setTempUnit(const bool celsius)
Change the temperature scale units.
Definition: ir_Delonghi.cpp:175
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Delonghi.cpp:436
+
bool getSleep()
Get the Sleep mode status of the A/C.
Definition: ir_Delonghi.cpp:362
+
uint64_t remote_state
The state of the IR remote.
Definition: ir_Delonghi.h:160
+
uint8_t getFan()
Get the current native fan speed setting.
Definition: ir_Delonghi.cpp:249
+
const uint8_t kDelonghiAcOffTimerEnableBit
Definition: ir_Delonghi.h:87
+
const uint8_t kDelonghiAcDry
Definition: ir_Delonghi.h:71
+
const uint8_t kDelonghiAcFan
Definition: ir_Delonghi.h:72
+
uint64_t getRaw()
Get a copy of the internal state as a valid code for this protocol.
Definition: ir_Delonghi.cpp:146
+
const uint8_t kDelonghiAcChecksumSize
Definition: ir_Delonghi.h:96
+
const uint8_t kDelonghiAcHoursSize
Definition: ir_Delonghi.h:79
+
uint8_t getMode()
Get the operating mode setting of the A/C.
Definition: ir_Delonghi.cpp:285
+
String toString()
Convert the current internal state into a human readable string.
Definition: ir_Delonghi.cpp:462
+
const uint8_t kDelonghiAcFanOffset
Definition: ir_Delonghi.h:58
+
void setBoost(const bool on)
Set the Boost (Turbo) mode of the A/C.
Definition: ir_Delonghi.cpp:344
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void off()
Change the power setting to Off.
Definition: ir_Delonghi.cpp:159
+
const uint8_t kDelonghiAcTempMinF
Definition: ir_Delonghi.h:54
+
const uint8_t kDelonghiAcOffTimerHoursOffset
Definition: ir_Delonghi.h:89
+
const uint8_t kDelonghiAcTempMaxC
Definition: ir_Delonghi.h:53
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Denon_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Denon_8cpp.html new file mode 100644 index 000000000..4e9d4d77e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Denon_8cpp.html @@ -0,0 +1,346 @@ + + + + + + + +IRremoteESP8266: src/ir_Denon.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Denon.cpp File Reference
+
+
+ +

Denon support Original Denon support added by https://github.com/csBlueChip Ported over by Massimiliano Pinto. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kDenonTick = 263
 
const uint16_t kDenonHdrMarkTicks = 1
 
const uint16_t kDenonHdrMark = kDenonHdrMarkTicks * kDenonTick
 
const uint16_t kDenonHdrSpaceTicks = 3
 
const uint16_t kDenonHdrSpace = kDenonHdrSpaceTicks * kDenonTick
 
const uint16_t kDenonBitMarkTicks = 1
 
const uint16_t kDenonBitMark = kDenonBitMarkTicks * kDenonTick
 
const uint16_t kDenonOneSpaceTicks = 7
 
const uint16_t kDenonOneSpace = kDenonOneSpaceTicks * kDenonTick
 
const uint16_t kDenonZeroSpaceTicks = 3
 
const uint16_t kDenonZeroSpace = kDenonZeroSpaceTicks * kDenonTick
 
const uint16_t kDenonMinCommandLengthTicks = 510
 
const uint16_t kDenonMinGapTicks
 
const uint32_t kDenonMinGap = kDenonMinGapTicks * kDenonTick
 
const uint64_t kDenonManufacturer = 0x2A4CULL
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kDenonBitMark

+ +
+
+ + + + +
const uint16_t kDenonBitMark = kDenonBitMarkTicks * kDenonTick
+
+ +
+
+ +

◆ kDenonBitMarkTicks

+ +
+
+ + + + +
const uint16_t kDenonBitMarkTicks = 1
+
+ +
+
+ +

◆ kDenonHdrMark

+ +
+
+ + + + +
const uint16_t kDenonHdrMark = kDenonHdrMarkTicks * kDenonTick
+
+ +
+
+ +

◆ kDenonHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kDenonHdrMarkTicks = 1
+
+ +
+
+ +

◆ kDenonHdrSpace

+ +
+
+ + + + +
const uint16_t kDenonHdrSpace = kDenonHdrSpaceTicks * kDenonTick
+
+ +
+
+ +

◆ kDenonHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kDenonHdrSpaceTicks = 3
+
+ +
+
+ +

◆ kDenonManufacturer

+ +
+
+ + + + +
const uint64_t kDenonManufacturer = 0x2A4CULL
+
+ +
+
+ +

◆ kDenonMinCommandLengthTicks

+ +
+
+ + + + +
const uint16_t kDenonMinCommandLengthTicks = 510
+
+ +
+
+ +

◆ kDenonMinGap

+ +
+
+ + + + +
const uint32_t kDenonMinGap = kDenonMinGapTicks * kDenonTick
+
+ +
+
+ +

◆ kDenonMinGapTicks

+ +
+
+ + + + +
const uint16_t kDenonMinGapTicks
+
+
+ +

◆ kDenonOneSpace

+ +
+
+ + + + +
const uint16_t kDenonOneSpace = kDenonOneSpaceTicks * kDenonTick
+
+ +
+
+ +

◆ kDenonOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kDenonOneSpaceTicks = 7
+
+ +
+
+ +

◆ kDenonTick

+ +
+
+ + + + +
const uint16_t kDenonTick = 263
+
+ +
+
+ +

◆ kDenonZeroSpace

+ +
+
+ + + + +
const uint16_t kDenonZeroSpace = kDenonZeroSpaceTicks * kDenonTick
+
+ +
+
+ +

◆ kDenonZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kDenonZeroSpaceTicks = 3
+
+ +
+
+
+
const uint16_t kDenonMinCommandLengthTicks
Definition: ir_Denon.cpp:31
+
const uint16_t kDenonHdrSpaceTicks
Definition: ir_Denon.cpp:23
+
const uint16_t kDenonBitMarkTicks
Definition: ir_Denon.cpp:25
+
const uint16_t kDenonHdrMarkTicks
Definition: ir_Denon.cpp:21
+
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:863
+
const uint16_t kDenonOneSpaceTicks
Definition: ir_Denon.cpp:27
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Dish_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Dish_8cpp.html new file mode 100644 index 000000000..abc86c6b3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Dish_8cpp.html @@ -0,0 +1,305 @@ + + + + + + + +IRremoteESP8266: src/ir_Dish.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Dish.cpp File Reference
+
+
+ +

DISH Network protocol support DISH support originally by Todd Treece. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kDishTick = 100
 
const uint16_t kDishHdrMarkTicks = 4
 
const uint16_t kDishHdrMark = kDishHdrMarkTicks * kDishTick
 
const uint16_t kDishHdrSpaceTicks = 61
 
const uint16_t kDishHdrSpace = kDishHdrSpaceTicks * kDishTick
 
const uint16_t kDishBitMarkTicks = 4
 
const uint16_t kDishBitMark = kDishBitMarkTicks * kDishTick
 
const uint16_t kDishOneSpaceTicks = 17
 
const uint16_t kDishOneSpace = kDishOneSpaceTicks * kDishTick
 
const uint16_t kDishZeroSpaceTicks = 28
 
const uint16_t kDishZeroSpace = kDishZeroSpaceTicks * kDishTick
 
const uint16_t kDishRptSpaceTicks = kDishHdrSpaceTicks
 
const uint16_t kDishRptSpace = kDishRptSpaceTicks * kDishTick
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kDishBitMark

+ +
+
+ + + + +
const uint16_t kDishBitMark = kDishBitMarkTicks * kDishTick
+
+ +
+
+ +

◆ kDishBitMarkTicks

+ +
+
+ + + + +
const uint16_t kDishBitMarkTicks = 4
+
+ +
+
+ +

◆ kDishHdrMark

+ +
+
+ + + + +
const uint16_t kDishHdrMark = kDishHdrMarkTicks * kDishTick
+
+ +
+
+ +

◆ kDishHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kDishHdrMarkTicks = 4
+
+ +
+
+ +

◆ kDishHdrSpace

+ +
+
+ + + + +
const uint16_t kDishHdrSpace = kDishHdrSpaceTicks * kDishTick
+
+ +
+
+ +

◆ kDishHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kDishHdrSpaceTicks = 61
+
+ +
+
+ +

◆ kDishOneSpace

+ +
+
+ + + + +
const uint16_t kDishOneSpace = kDishOneSpaceTicks * kDishTick
+
+ +
+
+ +

◆ kDishOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kDishOneSpaceTicks = 17
+
+ +
+
+ +

◆ kDishRptSpace

+ +
+
+ + + + +
const uint16_t kDishRptSpace = kDishRptSpaceTicks * kDishTick
+
+ +
+
+ +

◆ kDishRptSpaceTicks

+ +
+
+ + + + +
const uint16_t kDishRptSpaceTicks = kDishHdrSpaceTicks
+
+ +
+
+ +

◆ kDishTick

+ +
+
+ + + + +
const uint16_t kDishTick = 100
+
+ +
+
+ +

◆ kDishZeroSpace

+ +
+
+ + + + +
const uint16_t kDishZeroSpace = kDishZeroSpaceTicks * kDishTick
+
+ +
+
+ +

◆ kDishZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kDishZeroSpaceTicks = 28
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Doshisha_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Doshisha_8cpp.html new file mode 100644 index 000000000..7e19c1cdc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Doshisha_8cpp.html @@ -0,0 +1,429 @@ + + + + + + + +IRremoteESP8266: src/ir_Doshisha.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Doshisha.cpp File Reference
+
+
+ +

Doshisha protocol support. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kDoshishaHdrMark = 3412
 
const uint16_t kDoshishaHdrSpace = 1722
 
const uint16_t kDoshishaBitMark = 420
 
const uint16_t kDoshishaOneSpace = 1310
 
const uint16_t kDoshishaZeroSpace = 452
 
const uint64_t kRcz01SignatureMask = 0xffffffff00
 
const uint64_t kRcz01Signature = 0x800B304800
 
const uint8_t kRcz01CommandMask = 0xFE
 
const uint8_t kRcz01ChannelMask = 0x01
 
const uint8_t kRcz01CommandSwitchChannel = 0xD2
 
const uint8_t kRcz01CommandTimmer60 = 0x52
 
const uint8_t kRcz01CommandTimmer30 = 0x92
 
const uint8_t kRcz01CommandOff = 0xA0
 
const uint8_t kRcz01CommandLevelDown = 0x2C
 
const uint8_t kRcz01CommandLevelUp = 0xCC
 
const uint8_t kRcz01CommandLevel1 = 0xA4
 
const uint8_t kRcz01CommandLevel2 = 0x24
 
const uint8_t kRcz01CommandLevel3 = 0xC4
 
const uint8_t kRcz01CommandLevel4 = 0xD0
 
const uint8_t kRcz01CommandOn = 0xC0
 
const uint8_t kRcz01CommandNightLight = 0xC8
 
+

Detailed Description

+

Doshisha protocol support.

+
See also
https://www.doshisha-led.com/
+

Variable Documentation

+ +

◆ kDoshishaBitMark

+ +
+
+ + + + +
const uint16_t kDoshishaBitMark = 420
+
+ +
+
+ +

◆ kDoshishaHdrMark

+ +
+
+ + + + +
const uint16_t kDoshishaHdrMark = 3412
+
+ +
+
+ +

◆ kDoshishaHdrSpace

+ +
+
+ + + + +
const uint16_t kDoshishaHdrSpace = 1722
+
+ +
+
+ +

◆ kDoshishaOneSpace

+ +
+
+ + + + +
const uint16_t kDoshishaOneSpace = 1310
+
+ +
+
+ +

◆ kDoshishaZeroSpace

+ +
+
+ + + + +
const uint16_t kDoshishaZeroSpace = 452
+
+ +
+
+ +

◆ kRcz01ChannelMask

+ +
+
+ + + + +
const uint8_t kRcz01ChannelMask = 0x01
+
+ +
+
+ +

◆ kRcz01CommandLevel1

+ +
+
+ + + + +
const uint8_t kRcz01CommandLevel1 = 0xA4
+
+ +
+
+ +

◆ kRcz01CommandLevel2

+ +
+
+ + + + +
const uint8_t kRcz01CommandLevel2 = 0x24
+
+ +
+
+ +

◆ kRcz01CommandLevel3

+ +
+
+ + + + +
const uint8_t kRcz01CommandLevel3 = 0xC4
+
+ +
+
+ +

◆ kRcz01CommandLevel4

+ +
+
+ + + + +
const uint8_t kRcz01CommandLevel4 = 0xD0
+
+ +
+
+ +

◆ kRcz01CommandLevelDown

+ +
+
+ + + + +
const uint8_t kRcz01CommandLevelDown = 0x2C
+
+ +
+
+ +

◆ kRcz01CommandLevelUp

+ +
+
+ + + + +
const uint8_t kRcz01CommandLevelUp = 0xCC
+
+ +
+
+ +

◆ kRcz01CommandMask

+ +
+
+ + + + +
const uint8_t kRcz01CommandMask = 0xFE
+
+ +
+
+ +

◆ kRcz01CommandNightLight

+ +
+
+ + + + +
const uint8_t kRcz01CommandNightLight = 0xC8
+
+ +
+
+ +

◆ kRcz01CommandOff

+ +
+
+ + + + +
const uint8_t kRcz01CommandOff = 0xA0
+
+ +
+
+ +

◆ kRcz01CommandOn

+ +
+
+ + + + +
const uint8_t kRcz01CommandOn = 0xC0
+
+ +
+
+ +

◆ kRcz01CommandSwitchChannel

+ +
+
+ + + + +
const uint8_t kRcz01CommandSwitchChannel = 0xD2
+
+ +
+
+ +

◆ kRcz01CommandTimmer30

+ +
+
+ + + + +
const uint8_t kRcz01CommandTimmer30 = 0x92
+
+ +
+
+ +

◆ kRcz01CommandTimmer60

+ +
+
+ + + + +
const uint8_t kRcz01CommandTimmer60 = 0x52
+
+ +
+
+ +

◆ kRcz01Signature

+ +
+
+ + + + +
const uint64_t kRcz01Signature = 0x800B304800
+
+ +
+
+ +

◆ kRcz01SignatureMask

+ +
+
+ + + + +
const uint64_t kRcz01SignatureMask = 0xffffffff00
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8cpp.html new file mode 100644 index 000000000..30e634456 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8cpp.html @@ -0,0 +1,195 @@ + + + + + + + +IRremoteESP8266: src/ir_Electra.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Electra.cpp File Reference
+
+
+ +

Support for Electra A/C protocols. +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kElectraAcHdrMark = 9166
 
const uint16_t kElectraAcBitMark = 646
 
const uint16_t kElectraAcHdrSpace = 4470
 
const uint16_t kElectraAcOneSpace = 1647
 
const uint16_t kElectraAcZeroSpace = 547
 
const uint32_t kElectraAcMessageGap = kDefaultMessageGap
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kElectraAcBitMark

+ +
+
+ + + + +
const uint16_t kElectraAcBitMark = 646
+
+ +
+
+ +

◆ kElectraAcHdrMark

+ +
+
+ + + + +
const uint16_t kElectraAcHdrMark = 9166
+
+ +
+
+ +

◆ kElectraAcHdrSpace

+ +
+
+ + + + +
const uint16_t kElectraAcHdrSpace = 4470
+
+ +
+
+ +

◆ kElectraAcMessageGap

+ +
+
+ + + + +
const uint32_t kElectraAcMessageGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kElectraAcOneSpace

+ +
+
+ + + + +
const uint16_t kElectraAcOneSpace = 1647
+
+ +
+
+ +

◆ kElectraAcZeroSpace

+ +
+
+ + + + +
const uint16_t kElectraAcZeroSpace = 547
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h.html new file mode 100644 index 000000000..e66afd648 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h.html @@ -0,0 +1,550 @@ + + + + + + + +IRremoteESP8266: src/ir_Electra.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Electra.h File Reference
+
+
+ +

Support for Electra A/C protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRElectraAc
 Class for handling detailed Electra A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kElectraAcTempOffset = 3
 
const uint8_t kElectraAcTempSize = 5
 
const uint8_t kElectraAcMinTemp = 16
 
const uint8_t kElectraAcMaxTemp = 32
 
const uint8_t kElectraAcTempDelta = 8
 
const uint8_t kElectraAcSwingSize = 3
 
const uint8_t kElectraAcSwingOn = 0b000
 
const uint8_t kElectraAcSwingOff = 0b111
 
const uint8_t kElectraAcSwingVOffset = 0
 
const uint8_t kElectraAcSwingHOffset = 5
 
const uint8_t kElectraAcFanOffset = 5
 
const uint8_t kElectraAcFanSize = 3
 
const uint8_t kElectraAcFanAuto = 0b101
 
const uint8_t kElectraAcFanLow = 0b011
 
const uint8_t kElectraAcFanMed = 0b010
 
const uint8_t kElectraAcFanHigh = 0b001
 
const uint8_t kElectraAcTurboOffset = 6
 
const uint8_t kElectraAcModeOffset = 5
 
const uint8_t kElectraAcAuto = 0b000
 
const uint8_t kElectraAcCool = 0b001
 
const uint8_t kElectraAcDry = 0b010
 
const uint8_t kElectraAcHeat = 0b100
 
const uint8_t kElectraAcFan = 0b110
 
const uint8_t kElectraAcCleanOffset = 2
 
const uint8_t kElectraAcPowerOffset = 5
 
const uint8_t kElectraAcLightToggleOn = 0x15
 
const uint8_t kElectraAcLightToggleMask = 0x11
 
const uint8_t kElectraAcLightToggleOff = 0x08
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kElectraAcAuto

+ +
+
+ + + + +
const uint8_t kElectraAcAuto = 0b000
+
+ +
+
+ +

◆ kElectraAcCleanOffset

+ +
+
+ + + + +
const uint8_t kElectraAcCleanOffset = 2
+
+ +
+
+ +

◆ kElectraAcCool

+ +
+
+ + + + +
const uint8_t kElectraAcCool = 0b001
+
+ +
+
+ +

◆ kElectraAcDry

+ +
+
+ + + + +
const uint8_t kElectraAcDry = 0b010
+
+ +
+
+ +

◆ kElectraAcFan

+ +
+
+ + + + +
const uint8_t kElectraAcFan = 0b110
+
+ +
+
+ +

◆ kElectraAcFanAuto

+ +
+
+ + + + +
const uint8_t kElectraAcFanAuto = 0b101
+
+ +
+
+ +

◆ kElectraAcFanHigh

+ +
+
+ + + + +
const uint8_t kElectraAcFanHigh = 0b001
+
+ +
+
+ +

◆ kElectraAcFanLow

+ +
+
+ + + + +
const uint8_t kElectraAcFanLow = 0b011
+
+ +
+
+ +

◆ kElectraAcFanMed

+ +
+
+ + + + +
const uint8_t kElectraAcFanMed = 0b010
+
+ +
+
+ +

◆ kElectraAcFanOffset

+ +
+
+ + + + +
const uint8_t kElectraAcFanOffset = 5
+
+ +
+
+ +

◆ kElectraAcFanSize

+ +
+
+ + + + +
const uint8_t kElectraAcFanSize = 3
+
+ +
+
+ +

◆ kElectraAcHeat

+ +
+
+ + + + +
const uint8_t kElectraAcHeat = 0b100
+
+ +
+
+ +

◆ kElectraAcLightToggleMask

+ +
+
+ + + + +
const uint8_t kElectraAcLightToggleMask = 0x11
+
+ +
+
+ +

◆ kElectraAcLightToggleOff

+ +
+
+ + + + +
const uint8_t kElectraAcLightToggleOff = 0x08
+
+ +
+
+ +

◆ kElectraAcLightToggleOn

+ +
+
+ + + + +
const uint8_t kElectraAcLightToggleOn = 0x15
+
+ +
+
+ +

◆ kElectraAcMaxTemp

+ +
+
+ + + + +
const uint8_t kElectraAcMaxTemp = 32
+
+ +
+
+ +

◆ kElectraAcMinTemp

+ +
+
+ + + + +
const uint8_t kElectraAcMinTemp = 16
+
+ +
+
+ +

◆ kElectraAcModeOffset

+ +
+
+ + + + +
const uint8_t kElectraAcModeOffset = 5
+
+ +
+
+ +

◆ kElectraAcPowerOffset

+ +
+
+ + + + +
const uint8_t kElectraAcPowerOffset = 5
+
+ +
+
+ +

◆ kElectraAcSwingHOffset

+ +
+
+ + + + +
const uint8_t kElectraAcSwingHOffset = 5
+
+ +
+
+ +

◆ kElectraAcSwingOff

+ +
+
+ + + + +
const uint8_t kElectraAcSwingOff = 0b111
+
+ +
+
+ +

◆ kElectraAcSwingOn

+ +
+
+ + + + +
const uint8_t kElectraAcSwingOn = 0b000
+
+ +
+
+ +

◆ kElectraAcSwingSize

+ +
+
+ + + + +
const uint8_t kElectraAcSwingSize = 3
+
+ +
+
+ +

◆ kElectraAcSwingVOffset

+ +
+
+ + + + +
const uint8_t kElectraAcSwingVOffset = 0
+
+ +
+
+ +

◆ kElectraAcTempDelta

+ +
+
+ + + + +
const uint8_t kElectraAcTempDelta = 8
+
+ +
+
+ +

◆ kElectraAcTempOffset

+ +
+
+ + + + +
const uint8_t kElectraAcTempOffset = 3
+
+ +
+
+ +

◆ kElectraAcTempSize

+ +
+
+ + + + +
const uint8_t kElectraAcTempSize = 5
+
+ +
+
+ +

◆ kElectraAcTurboOffset

+ +
+
+ + + + +
const uint8_t kElectraAcTurboOffset = 6
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h_source.html new file mode 100644 index 000000000..a5a25cb15 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Electra_8h_source.html @@ -0,0 +1,286 @@ + + + + + + + +IRremoteESP8266: src/ir_Electra.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Electra.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 David Conran
+
5 
+
6 // Supports:
+
7 // Brand: AUX, Model: KFR-35GW/BpNFW=3 A/C
+
8 // Brand: AUX, Model: YKR-T/011 remote
+
9 // Brand: Electra, Model: Classic INV 17 / AXW12DCS A/C
+
10 // Brand: Electra, Model: YKR-M/003E remote
+
11 
+
12 #ifndef IR_ELECTRA_H_
+
13 #define IR_ELECTRA_H_
+
14 
+
15 #define __STDC_LIMIT_MACROS
+
16 #include <stdint.h>
+
17 #ifndef UNIT_TEST
+
18 #include <Arduino.h>
+
19 #endif
+
20 #include "IRremoteESP8266.h"
+
21 #include "IRsend.h"
+
22 #ifdef UNIT_TEST
+
23 #include "IRsend_test.h"
+
24 #endif
+
25 
+
26 // Constants
+
27 // state[1]
+
28 // Temp 0b11111000
+
29 const uint8_t kElectraAcTempOffset = 3;
+
30 const uint8_t kElectraAcTempSize = 5; // Bits
+
31 const uint8_t kElectraAcMinTemp = 16; // 16C
+
32 const uint8_t kElectraAcMaxTemp = 32; // 32C
+
33 const uint8_t kElectraAcTempDelta = 8;
+
34 const uint8_t kElectraAcSwingSize = 3; // Bits
+
35 const uint8_t kElectraAcSwingOn = 0b000;
+
36 const uint8_t kElectraAcSwingOff = 0b111;
+
37 // SwingVMask = 0b00000111;
+
38 const uint8_t kElectraAcSwingVOffset = 0;
+
39 // state[2]
+
40 // SwingHMask = 0b11100000;
+
41 const uint8_t kElectraAcSwingHOffset = 5;
+
42 // state[4]
+
43 // FanMask = 0b11100000;
+
44 const uint8_t kElectraAcFanOffset = 5;
+
45 const uint8_t kElectraAcFanSize = 3; // Bits
+
46 
+
47 const uint8_t kElectraAcFanAuto = 0b101;
+
48 const uint8_t kElectraAcFanLow = 0b011;
+
49 const uint8_t kElectraAcFanMed = 0b010;
+
50 const uint8_t kElectraAcFanHigh = 0b001;
+
51 // state[5]
+
52 // TurboMask = 0b01000000;
+
53 const uint8_t kElectraAcTurboOffset = 6;
+
54 
+
55 // state[6]
+
56 // Mode 0b11100000
+
57 const uint8_t kElectraAcModeOffset = 5;
+
58 const uint8_t kElectraAcAuto = 0b000;
+
59 const uint8_t kElectraAcCool = 0b001;
+
60 const uint8_t kElectraAcDry = 0b010;
+
61 const uint8_t kElectraAcHeat = 0b100;
+
62 const uint8_t kElectraAcFan = 0b110;
+
63 // state[9]
+
64 //
+
65 const uint8_t kElectraAcCleanOffset = 2; // Bit 0b00000100
+
66 const uint8_t kElectraAcPowerOffset = 5; // Bit 0b00100000
+
67 // state[11]
+
68 //
+
69 const uint8_t kElectraAcLightToggleOn = 0x15;
+
70 // Light has known ON values of 0x15 (0b00010101) or 0x19 (0b00011001)
+
71 // Thus common bits ON are: 0b00010001 (0x11)
+
72 // We will use this for the getLightToggle() test.
+
73 const uint8_t kElectraAcLightToggleMask = 0x11;
+
74 // and known OFF values of 0x08 (0b00001000) & 0x05 (0x00000101)
+
75 const uint8_t kElectraAcLightToggleOff = 0x08;
+
76 
+
77 
+
78 // Classes
+
80 class IRElectraAc {
+
81  public:
+
82  explicit IRElectraAc(const uint16_t pin, const bool inverted = false,
+
83  const bool use_modulation = true);
+
84  void stateReset(void);
+
85 #if SEND_ELECTRA_AC
+
86  void send(const uint16_t repeat = kElectraAcMinRepeat);
+
91  int8_t calibrate(void) { return _irsend.calibrate(); }
+
92 #endif // SEND_ELECTRA_AC
+
93  void begin(void);
+
94  void on(void);
+
95  void off(void);
+
96  void setPower(const bool on);
+
97  bool getPower(void);
+
98  void setMode(const uint8_t mode);
+
99  uint8_t getMode(void);
+
100  void setTemp(const uint8_t temp);
+
101  uint8_t getTemp(void);
+
102  void setFan(const uint8_t speed);
+
103  uint8_t getFan(void);
+
104  void setSwingV(const bool on);
+
105  bool getSwingV(void);
+
106  void setSwingH(const bool on);
+
107  bool getSwingH(void);
+
108  void setClean(const bool on);
+
109  bool getClean(void);
+
110  void setLightToggle(const bool on);
+
111  bool getLightToggle(void);
+
112  void setTurbo(const bool on);
+
113  bool getTurbo(void);
+
114  uint8_t* getRaw(void);
+
115  void setRaw(const uint8_t new_code[],
+
116  const uint16_t length = kElectraAcStateLength);
+
117  static bool validChecksum(const uint8_t state[],
+
118  const uint16_t length = kElectraAcStateLength);
+
119  static uint8_t calcChecksum(const uint8_t state[],
+
120  const uint16_t length = kElectraAcStateLength);
+
121  String toString(void);
+
122  uint8_t convertMode(const stdAc::opmode_t mode);
+
123  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
124  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
125  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
126  stdAc::state_t toCommon(void);
+
127 #ifndef UNIT_TEST
+
128 
+
129  private:
+ +
131 #else
+
132  IRsendTest _irsend;
+
134 #endif
+ +
137  void checksum(const uint16_t length = kElectraAcStateLength);
+
138 };
+
139 #endif // IR_ELECTRA_H_
+
+
bool getSwingV(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Electra.cpp:263
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Electra.cpp:167
+
void checksum(const uint16_t length=kElectraAcStateLength)
Calculate and set the checksum values for the internal state.
Definition: ir_Electra.cpp:96
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Electra.cpp:111
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Electra.cpp:224
+
const uint8_t kElectraAcMinTemp
Definition: ir_Electra.h:31
+
bool getLightToggle(void)
Get the Light (LED) Toggle mode of the A/C.
Definition: ir_Electra.cpp:290
+
bool getTurbo(void)
Get the Turbo mode of the A/C.
Definition: ir_Electra.cpp:315
+
const uint8_t kElectraAcMaxTemp
Definition: ir_Electra.h:32
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Electra.cpp:88
+
const uint8_t kElectraAcFanAuto
Definition: ir_Electra.h:47
+
bool getSwingH(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_Electra.cpp:277
+
const uint8_t kElectraAcPowerOffset
Definition: ir_Electra.h:66
+
void on(void)
Change the power setting to On.
Definition: ir_Electra.cpp:124
+
const uint8_t kElectraAcTurboOffset
Definition: ir_Electra.h:53
+
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition: ir_Electra.cpp:297
+ +
const uint16_t kElectraAcMinRepeat
Definition: IRremoteESP8266.h:873
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
IRElectraAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Electra.cpp:57
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Electra.cpp:321
+
const uint8_t kElectraAcHeat
Definition: ir_Electra.h:61
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kElectraAcCool
Definition: ir_Electra.h:59
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Electra.cpp:208
+
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:80
+
const uint8_t kElectraAcTempSize
Definition: ir_Electra.h:30
+
const uint8_t kElectraAcAuto
Definition: ir_Electra.h:58
+ +
const uint8_t kElectraAcTempOffset
Definition: ir_Electra.h:29
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Electra.cpp:180
+
const uint8_t kElectraAcDry
Definition: ir_Electra.h:60
+
bool getClean(void)
Get the Clean mode of the A/C.
Definition: ir_Electra.cpp:303
+
void setRaw(const uint8_t new_code[], const uint16_t length=kElectraAcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Electra.cpp:119
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Electra.cpp:131
+
const uint8_t kElectraAcTempDelta
Definition: ir_Electra.h:33
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Electra.h:91
+
const uint8_t kElectraAcLightToggleOff
Definition: ir_Electra.h:75
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Electra.cpp:245
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Electra.cpp:137
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Electra.cpp:349
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Electra.cpp:192
+
const uint8_t kElectraAcLightToggleOn
Definition: ir_Electra.h:69
+
void setLightToggle(const bool on)
Set the Light (LED) Toggle mode of the A/C.
Definition: ir_Electra.cpp:284
+
const uint8_t kElectraAcFanLow
Definition: ir_Electra.h:48
+
void setSwingH(const bool on)
Set the Horizontal Swing mode of the A/C.
Definition: ir_Electra.cpp:270
+
const uint8_t kElectraAcFanOffset
Definition: ir_Electra.h:44
+
const uint8_t kElectraAcModeOffset
Definition: ir_Electra.h:57
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)
Calculate the checksum for a given state.
Definition: ir_Electra.cpp:78
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Electra.cpp:160
+
const uint8_t kElectraAcSwingSize
Definition: ir_Electra.h:34
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Electra.cpp:200
+
const uint8_t kElectraAcSwingHOffset
Definition: ir_Electra.h:41
+
void off(void)
Change the power setting to Off.
Definition: ir_Electra.cpp:127
+
void send(const uint16_t repeat=kElectraAcMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Electra.cpp:104
+
IRsend _irsend
instance of the IR send class
Definition: ir_Electra.h:130
+
const uint8_t kElectraAcSwingOn
Definition: ir_Electra.h:35
+
const uint8_t kElectraAcFanMed
Definition: ir_Electra.h:49
+
const uint8_t kElectraAcFanHigh
Definition: ir_Electra.h:50
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Electra.cpp:231
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Electra.cpp:72
+
void setTurbo(const bool on)
Set the Turbo mode of the A/C.
Definition: ir_Electra.cpp:309
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Electra.cpp:143
+
const uint8_t kElectraAcSwingVOffset
Definition: ir_Electra.h:38
+
const uint8_t kElectraAcFan
Definition: ir_Electra.h:62
+
uint8_t remote_state[kElectraAcStateLength]
The state of the IR remote.
Definition: ir_Electra.h:136
+
const uint8_t kElectraAcLightToggleMask
Definition: ir_Electra.h:73
+
const uint8_t kElectraAcSwingOff
Definition: ir_Electra.h:36
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kElectraAcFanSize
Definition: ir_Electra.h:45
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Electra.cpp:64
+
void setSwingV(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Electra.cpp:256
+
const uint16_t kElectraAcStateLength
Definition: IRremoteESP8266.h:871
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+
const uint8_t kElectraAcCleanOffset
Definition: ir_Electra.h:65
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Epson_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Epson_8cpp.html new file mode 100644 index 000000000..3b1fa2a04 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Epson_8cpp.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: src/ir_Epson.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Epson.cpp File Reference
+
+
+ +

Support for Epson protocols. Epson is an NEC-like protocol, except it doesn't use the NEC style repeat. +More...

+

Detailed Description

+

Support for Epson protocols. Epson is an NEC-like protocol, except it doesn't use the NEC style repeat.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1034
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8cpp.html new file mode 100644 index 000000000..20fa1a48d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8cpp.html @@ -0,0 +1,188 @@ + + + + + + + +IRremoteESP8266: src/ir_Fujitsu.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Fujitsu.cpp File Reference
+
+
+ +

Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham & David Conran. +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kFujitsuAcHdrMark = 3324
 
const uint16_t kFujitsuAcHdrSpace = 1574
 
const uint16_t kFujitsuAcBitMark = 448
 
const uint16_t kFujitsuAcOneSpace = 1182
 
const uint16_t kFujitsuAcZeroSpace = 390
 
const uint16_t kFujitsuAcMinGap = 8100
 
+

Detailed Description

+

Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham & David Conran.

+

Variable Documentation

+ +

◆ kFujitsuAcBitMark

+ +
+
+ + + + +
const uint16_t kFujitsuAcBitMark = 448
+
+ +
+
+ +

◆ kFujitsuAcHdrMark

+ +
+
+ + + + +
const uint16_t kFujitsuAcHdrMark = 3324
+
+ +
+
+ +

◆ kFujitsuAcHdrSpace

+ +
+
+ + + + +
const uint16_t kFujitsuAcHdrSpace = 1574
+
+ +
+
+ +

◆ kFujitsuAcMinGap

+ +
+
+ + + + +
const uint16_t kFujitsuAcMinGap = 8100
+
+ +
+
+ +

◆ kFujitsuAcOneSpace

+ +
+
+ + + + +
const uint16_t kFujitsuAcOneSpace = 1182
+
+ +
+
+ +

◆ kFujitsuAcZeroSpace

+ +
+
+ + + + +
const uint16_t kFujitsuAcZeroSpace = 390
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h.html new file mode 100644 index 000000000..ed36c7104 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h.html @@ -0,0 +1,581 @@ + + + + + + + +IRremoteESP8266: src/ir_Fujitsu.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Fujitsu.h File Reference
+
+
+ +

Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRFujitsuAC
 Class for handling detailed Fujitsu A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kFujitsuAcModeAuto = 0x00
 
const uint8_t kFujitsuAcModeCool = 0x01
 
const uint8_t kFujitsuAcModeDry = 0x02
 
const uint8_t kFujitsuAcModeFan = 0x03
 
const uint8_t kFujitsuAcModeHeat = 0x04
 
const uint8_t kFujitsuAcCmdStayOn = 0x00
 
const uint8_t kFujitsuAcCmdTurnOn = 0x01
 
const uint8_t kFujitsuAcCmdTurnOff = 0x02
 
const uint8_t kFujitsuAcCmdEcono = 0x09
 
const uint8_t kFujitsuAcCmdPowerful = 0x39
 
const uint8_t kFujitsuAcCmdStepVert = 0x6C
 
const uint8_t kFujitsuAcCmdToggleSwingVert = 0x6D
 
const uint8_t kFujitsuAcCmdStepHoriz = 0x79
 
const uint8_t kFujitsuAcCmdToggleSwingHoriz = 0x7A
 
const uint8_t kFujitsuAcFanAuto = 0x00
 
const uint8_t kFujitsuAcFanHigh = 0x01
 
const uint8_t kFujitsuAcFanMed = 0x02
 
const uint8_t kFujitsuAcFanLow = 0x03
 
const uint8_t kFujitsuAcFanQuiet = 0x04
 
const uint8_t kFujitsuAcFanSize = 3
 
const uint8_t kFujitsuAcMinTemp = 16
 
const uint8_t kFujitsuAcMaxTemp = 30
 
const uint8_t kFujitsuAcSwingSize = 2
 
const uint8_t kFujitsuAcSwingOff = 0x00
 
const uint8_t kFujitsuAcSwingVert = 0x01
 
const uint8_t kFujitsuAcSwingHoriz = 0x02
 
const uint8_t kFujitsuAcSwingBoth = 0x03
 
const uint8_t kFujitsuAcOutsideQuietOffset = 7
 
const uint8_t kFujitsuAcCleanOffset = 3
 
const uint8_t kFujitsuAcFilterOffset = 3
 
+

Detailed Description

+

Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.

+

Variable Documentation

+ +

◆ kFujitsuAcCleanOffset

+ +
+
+ + + + +
const uint8_t kFujitsuAcCleanOffset = 3
+
+ +
+
+ +

◆ kFujitsuAcCmdEcono

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdEcono = 0x09
+
+ +
+
+ +

◆ kFujitsuAcCmdPowerful

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdPowerful = 0x39
+
+ +
+
+ +

◆ kFujitsuAcCmdStayOn

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdStayOn = 0x00
+
+ +
+
+ +

◆ kFujitsuAcCmdStepHoriz

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdStepHoriz = 0x79
+
+ +
+
+ +

◆ kFujitsuAcCmdStepVert

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdStepVert = 0x6C
+
+ +
+
+ +

◆ kFujitsuAcCmdToggleSwingHoriz

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdToggleSwingHoriz = 0x7A
+
+ +
+
+ +

◆ kFujitsuAcCmdToggleSwingVert

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdToggleSwingVert = 0x6D
+
+ +
+
+ +

◆ kFujitsuAcCmdTurnOff

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdTurnOff = 0x02
+
+ +
+
+ +

◆ kFujitsuAcCmdTurnOn

+ +
+
+ + + + +
const uint8_t kFujitsuAcCmdTurnOn = 0x01
+
+ +
+
+ +

◆ kFujitsuAcFanAuto

+ +
+
+ + + + +
const uint8_t kFujitsuAcFanAuto = 0x00
+
+ +
+
+ +

◆ kFujitsuAcFanHigh

+ +
+
+ + + + +
const uint8_t kFujitsuAcFanHigh = 0x01
+
+ +
+
+ +

◆ kFujitsuAcFanLow

+ +
+
+ + + + +
const uint8_t kFujitsuAcFanLow = 0x03
+
+ +
+
+ +

◆ kFujitsuAcFanMed

+ +
+
+ + + + +
const uint8_t kFujitsuAcFanMed = 0x02
+
+ +
+
+ +

◆ kFujitsuAcFanQuiet

+ +
+
+ + + + +
const uint8_t kFujitsuAcFanQuiet = 0x04
+
+ +
+
+ +

◆ kFujitsuAcFanSize

+ +
+
+ + + + +
const uint8_t kFujitsuAcFanSize = 3
+
+ +
+
+ +

◆ kFujitsuAcFilterOffset

+ +
+
+ + + + +
const uint8_t kFujitsuAcFilterOffset = 3
+
+ +
+
+ +

◆ kFujitsuAcMaxTemp

+ +
+
+ + + + +
const uint8_t kFujitsuAcMaxTemp = 30
+
+ +
+
+ +

◆ kFujitsuAcMinTemp

+ +
+
+ + + + +
const uint8_t kFujitsuAcMinTemp = 16
+
+ +
+
+ +

◆ kFujitsuAcModeAuto

+ +
+
+ + + + +
const uint8_t kFujitsuAcModeAuto = 0x00
+
+ +
+
+ +

◆ kFujitsuAcModeCool

+ +
+
+ + + + +
const uint8_t kFujitsuAcModeCool = 0x01
+
+ +
+
+ +

◆ kFujitsuAcModeDry

+ +
+
+ + + + +
const uint8_t kFujitsuAcModeDry = 0x02
+
+ +
+
+ +

◆ kFujitsuAcModeFan

+ +
+
+ + + + +
const uint8_t kFujitsuAcModeFan = 0x03
+
+ +
+
+ +

◆ kFujitsuAcModeHeat

+ +
+
+ + + + +
const uint8_t kFujitsuAcModeHeat = 0x04
+
+ +
+
+ +

◆ kFujitsuAcOutsideQuietOffset

+ +
+
+ + + + +
const uint8_t kFujitsuAcOutsideQuietOffset = 7
+
+ +
+
+ +

◆ kFujitsuAcSwingBoth

+ +
+
+ + + + +
const uint8_t kFujitsuAcSwingBoth = 0x03
+
+ +
+
+ +

◆ kFujitsuAcSwingHoriz

+ +
+
+ + + + +
const uint8_t kFujitsuAcSwingHoriz = 0x02
+
+ +
+
+ +

◆ kFujitsuAcSwingOff

+ +
+
+ + + + +
const uint8_t kFujitsuAcSwingOff = 0x00
+
+ +
+
+ +

◆ kFujitsuAcSwingSize

+ +
+
+ + + + +
const uint8_t kFujitsuAcSwingSize = 2
+
+ +
+
+ +

◆ kFujitsuAcSwingVert

+ +
+
+ + + + +
const uint8_t kFujitsuAcSwingVert = 0x01
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h_source.html new file mode 100644 index 000000000..ccc167f12 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Fujitsu_8h_source.html @@ -0,0 +1,350 @@ + + + + + + + +IRremoteESP8266: src/ir_Fujitsu.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Fujitsu.h
+
+
+Go to the documentation of this file.
1 // Copyright 2017 Jonny Graham
+
2 // Copyright 2018-2019 David Conran
+
3 
+
7 
+
8 // Supports:
+
9 // Brand: Fujitsu, Model: AR-RAH2E remote
+
10 // Brand: Fujitsu, Model: ASYG30LFCA A/C (ARRAH2E)
+
11 // Brand: Fujitsu, Model: AR-DB1 remote
+
12 // Brand: Fujitsu, Model: AST9RSGCW A/C (ARDB1)
+
13 // Brand: Fujitsu, Model: AR-REB1E remote
+
14 // Brand: Fujitsu, Model: ASYG7LMCA A/C (ARREB1E)
+
15 // Brand: Fujitsu, Model: AR-RAE1E remote
+
16 // Brand: Fujitsu, Model: AGTV14LAC A/C
+
17 // Brand: Fujitsu, Model: AR-RAC1E remote
+
18 // Brand: Fujitsu, Model: ASTB09LBC A/C
+
19 // Brand: Fujitsu, Model: AR-RY4 remote
+
20 // Brand: Fujitsu General, Model: AR-JW2 remote
+
21 // Brand: Fujitsu, Model: AR-DL10 remote
+
22 // Brand: Fujitsu, Model: ASU30C1 A/C
+
23 
+
24 #ifndef IR_FUJITSU_H_
+
25 #define IR_FUJITSU_H_
+
26 
+
27 #define __STDC_LIMIT_MACROS
+
28 #include <stdint.h>
+
29 #ifdef ARDUINO
+
30 #include <Arduino.h>
+
31 #endif
+
32 #include "IRrecv.h"
+
33 #include "IRremoteESP8266.h"
+
34 #include "IRsend.h"
+
35 #ifdef UNIT_TEST
+
36 #include "IRsend_test.h"
+
37 #endif
+
38 
+
39 
+
40 // Constants
+
41 const uint8_t kFujitsuAcModeAuto = 0x00;
+
42 const uint8_t kFujitsuAcModeCool = 0x01;
+
43 const uint8_t kFujitsuAcModeDry = 0x02;
+
44 const uint8_t kFujitsuAcModeFan = 0x03;
+
45 const uint8_t kFujitsuAcModeHeat = 0x04;
+
46 
+
47 const uint8_t kFujitsuAcCmdStayOn = 0x00; // b00000000
+
48 const uint8_t kFujitsuAcCmdTurnOn = 0x01; // b00000001
+
49 const uint8_t kFujitsuAcCmdTurnOff = 0x02; // b00000010
+
50 const uint8_t kFujitsuAcCmdEcono = 0x09; // b00001001
+
51 const uint8_t kFujitsuAcCmdPowerful = 0x39; // b00111001
+
52 const uint8_t kFujitsuAcCmdStepVert = 0x6C; // b01101100
+
53 const uint8_t kFujitsuAcCmdToggleSwingVert = 0x6D; // b01101101
+
54 const uint8_t kFujitsuAcCmdStepHoriz = 0x79; // b01111001
+
55 const uint8_t kFujitsuAcCmdToggleSwingHoriz = 0x7A; // b01111010
+
56 
+
57 const uint8_t kFujitsuAcFanAuto = 0x00;
+
58 const uint8_t kFujitsuAcFanHigh = 0x01;
+
59 const uint8_t kFujitsuAcFanMed = 0x02;
+
60 const uint8_t kFujitsuAcFanLow = 0x03;
+
61 const uint8_t kFujitsuAcFanQuiet = 0x04;
+
62 const uint8_t kFujitsuAcFanSize = 3; // Bits
+
63 
+
64 const uint8_t kFujitsuAcMinTemp = 16; // 16C
+
65 const uint8_t kFujitsuAcMaxTemp = 30; // 30C
+
66 
+
67 const uint8_t kFujitsuAcSwingSize = 2;
+
68 const uint8_t kFujitsuAcSwingOff = 0x00;
+
69 const uint8_t kFujitsuAcSwingVert = 0x01;
+
70 const uint8_t kFujitsuAcSwingHoriz = 0x02;
+
71 const uint8_t kFujitsuAcSwingBoth = 0x03;
+
72 
+
73 const uint8_t kFujitsuAcOutsideQuietOffset = 7;
+
74 const uint8_t kFujitsuAcCleanOffset = 3;
+
75 const uint8_t kFujitsuAcFilterOffset = 3;
+
76 
+
77 // Legacy defines.
+
78 #define FUJITSU_AC_MODE_AUTO kFujitsuAcModeAuto
+
79 #define FUJITSU_AC_MODE_COOL kFujitsuAcModeCool
+
80 #define FUJITSU_AC_MODE_DRY kFujitsuAcModeDry
+
81 #define FUJITSU_AC_MODE_FAN kFujitsuAcModeFan
+
82 #define FUJITSU_AC_MODE_HEAT kFujitsuAcModeHeat
+
83 #define FUJITSU_AC_CMD_STAY_ON kFujitsuAcCmdStayOn
+
84 #define FUJITSU_AC_CMD_TURN_ON kFujitsuAcCmdTurnOn
+
85 #define FUJITSU_AC_CMD_TURN_OFF kFujitsuAcCmdTurnOff
+
86 #define FUJITSU_AC_CMD_STEP_HORIZ kFujitsuAcCmdStepHoriz
+
87 #define FUJITSU_AC_CMD_STEP_VERT kFujitsuAcCmdStepVert
+
88 #define FUJITSU_AC_FAN_AUTO kFujitsuAcFanAuto
+
89 #define FUJITSU_AC_FAN_HIGH kFujitsuAcFanHigh
+
90 #define FUJITSU_AC_FAN_MED kFujitsuAcFanMed
+
91 #define FUJITSU_AC_FAN_LOW kFujitsuAcFanLow
+
92 #define FUJITSU_AC_FAN_QUIET kFujitsuAcFanQuiet
+
93 #define FUJITSU_AC_MIN_TEMP kFujitsuAcMinTemp
+
94 #define FUJITSU_AC_MAX_TEMP kFujitsuAcMaxTemp
+
95 #define FUJITSU_AC_SWING_OFF kFujitsuAcSwingOff
+
96 #define FUJITSU_AC_SWING_VERT kFujitsuAcSwingVert
+
97 #define FUJITSU_AC_SWING_HORIZ kFujitsuAcSwingHoriz
+
98 #define FUJITSU_AC_SWING_BOTH kFujitsuAcSwingBoth
+
99 
+
101 class IRFujitsuAC {
+
102  public:
+
103  explicit IRFujitsuAC(const uint16_t pin,
+
104  const fujitsu_ac_remote_model_t model = ARRAH2E,
+
105  const bool inverted = false,
+
106  const bool use_modulation = true);
+
107  void setModel(const fujitsu_ac_remote_model_t model);
+ +
109  void stateReset(void);
+
110 #if SEND_FUJITSU_AC
+
111  void send(const uint16_t repeat = kFujitsuAcMinRepeat);
+
116  int8_t calibrate(void) { return _irsend.calibrate(); }
+
117 #endif // SEND_FUJITSU_AC
+
118  void begin(void);
+
119  void stepHoriz(void);
+
120  void toggleSwingHoriz(const bool update = true);
+
121  void stepVert(void);
+
122  void toggleSwingVert(const bool update = true);
+
123  void setCmd(const uint8_t cmd);
+
124  uint8_t getCmd(const bool raw = false);
+
125  void setTemp(const uint8_t temp);
+
126  uint8_t getTemp(void);
+
127  void setFanSpeed(const uint8_t fan);
+
128  uint8_t getFanSpeed(void);
+
129  void setMode(const uint8_t mode);
+
130  uint8_t getMode(void);
+
131  void setSwing(const uint8_t mode);
+
132  uint8_t getSwing(const bool raw = false);
+
133  uint8_t* getRaw(void);
+
134  bool setRaw(const uint8_t newState[], const uint16_t length);
+
135  uint8_t getStateLength(void);
+
136  static bool validChecksum(uint8_t* state, const uint16_t length);
+
137  void setPower(const bool on);
+
138  void off(void);
+
139  void on(void);
+
140  bool getPower(void);
+
141  void setClean(const bool on);
+
142  bool getClean(const bool raw = false);
+
143  void setFilter(const bool on);
+
144  bool getFilter(const bool raw = false);
+
145  void setOutsideQuiet(const bool on);
+
146 
+
147  bool getOutsideQuiet(const bool raw = false);
+
148 
+
149  uint8_t convertMode(const stdAc::opmode_t mode);
+
150  uint8_t convertFan(stdAc::fanspeed_t speed);
+
151  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
152  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
153  stdAc::state_t toCommon(void);
+
154  String toString(void);
+
155 #ifndef UNIT_TEST
+
156 
+
157  private:
+ +
159 #else
+
160  IRsendTest _irsend;
+
162 #endif
+ +
165  uint8_t _temp;
+
166  uint8_t _fanSpeed;
+
167  uint8_t _mode;
+
168  uint8_t _swingMode;
+
169  uint8_t _cmd;
+ +
171  uint8_t _state_length;
+ + +
174  bool _clean;
+
175  bool _filter;
+
176  void buildState(void);
+
177  void buildFromState(const uint16_t length);
+
178 };
+
179 
+
180 #endif // IR_FUJITSU_H_
+
+
bool _clean
Definition: ir_Fujitsu.h:174
+
const uint8_t kFujitsuAcCmdTurnOff
Definition: ir_Fujitsu.h:49
+
const uint16_t kFujitsuAcMinRepeat
Definition: IRremoteESP8266.h:874
+
uint8_t _cmd
Definition: ir_Fujitsu.h:169
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kFujitsuAcFilterOffset
Definition: ir_Fujitsu.h:75
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Fujitsu.h:116
+
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition: ir_Fujitsu.cpp:491
+
const uint8_t kFujitsuAcCmdToggleSwingVert
Definition: ir_Fujitsu.h:53
+
uint8_t _fanSpeed
Definition: ir_Fujitsu.h:166
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Fujitsu.cpp:229
+
bool _filter
Definition: ir_Fujitsu.h:175
+ +
void stepVert(void)
Request the A/C to step the Vertical Swing.
Definition: ir_Fujitsu.cpp:323
+
bool _outsideQuiet
Definition: ir_Fujitsu.h:173
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Fujitsu.cpp:418
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Fujitsu.cpp:559
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Fujitsu.cpp:95
+
const uint8_t kFujitsuAcCleanOffset
Definition: ir_Fujitsu.h:74
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kFujitsuAcFanAuto
Definition: ir_Fujitsu.h:57
+
bool setRaw(const uint8_t newState[], const uint16_t length)
Set the internal state from a valid code for this protocol.
Definition: ir_Fujitsu.cpp:298
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kFujitsuAcOutsideQuietOffset
Definition: ir_Fujitsu.h:73
+
const uint8_t kFujitsuAcCmdTurnOn
Definition: ir_Fujitsu.h:48
+
uint8_t _state_length_short
Definition: ir_Fujitsu.h:172
+
const uint8_t kFujitsuAcMinTemp
Definition: ir_Fujitsu.h:64
+
const uint8_t kFujitsuAcFanHigh
Definition: ir_Fujitsu.h:58
+
const uint8_t kFujitsuAcModeHeat
Definition: ir_Fujitsu.h:45
+
void setFilter(const bool on)
Set the Filter mode status of the A/C.
Definition: ir_Fujitsu.cpp:512
+
uint8_t convertFan(stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Fujitsu.cpp:572
+ +
void stepHoriz(void)
Request the A/C to step the Horizontal Swing.
Definition: ir_Fujitsu.cpp:311
+
fujitsu_ac_remote_model_t getModel(void)
Get the currently emulated/detected model of the A/C.
Definition: ir_Fujitsu.cpp:92
+
const uint8_t kFujitsuAcCmdToggleSwingHoriz
Definition: ir_Fujitsu.h:55
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Fujitsu.h:158
+
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
+
void setCmd(const uint8_t cmd)
Set the requested (special) command part for the A/C message.
Definition: ir_Fujitsu.cpp:336
+
void buildFromState(const uint16_t length)
Build the internal state/config from the current (raw) A/C message.
Definition: ir_Fujitsu.cpp:236
+
uint8_t _temp
Definition: ir_Fujitsu.h:165
+
uint8_t _swingMode
Definition: ir_Fujitsu.h:168
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Fujitsu.cpp:107
+
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:101
+
const uint8_t kFujitsuAcCmdStepVert
Definition: ir_Fujitsu.h:52
+
void setSwing(const uint8_t mode)
Set the requested swing operation mode of the A/C unit.
Definition: ir_Fujitsu.cpp:460
+
const uint16_t kFujitsuAcStateLength
Definition: IRremoteESP8266.h:875
+
const uint8_t kFujitsuAcCmdPowerful
Definition: ir_Fujitsu.h:51
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Fujitsu.cpp:586
+
const uint8_t kFujitsuAcSwingSize
Definition: ir_Fujitsu.h:67
+
uint8_t _mode
Definition: ir_Fujitsu.h:167
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Fujitsu.cpp:611
+
const uint8_t kFujitsuAcCmdStepHoriz
Definition: ir_Fujitsu.h:54
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Fujitsu.cpp:444
+
const uint8_t kFujitsuAcSwingHoriz
Definition: ir_Fujitsu.h:70
+
const uint8_t kFujitsuAcSwingVert
Definition: ir_Fujitsu.h:69
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Fujitsu.cpp:599
+
void toggleSwingVert(const bool update=true)
Request the A/C to toggle the Vertical Swing mode.
Definition: ir_Fujitsu.cpp:327
+ +
const uint8_t kFujitsuAcModeAuto
Definition: ir_Fujitsu.h:41
+
void setOutsideQuiet(const bool on)
Set the Outside Quiet mode of the A/C.
Definition: ir_Fujitsu.cpp:399
+
const uint8_t kFujitsuAcSwingOff
Definition: ir_Fujitsu.h:68
+
void setModel(const fujitsu_ac_remote_model_t model)
Set the currently emulated model of the A/C.
Definition: ir_Fujitsu.cpp:73
+
const uint8_t kFujitsuAcModeDry
Definition: ir_Fujitsu.h:43
+
@ ARRAH2E
Definition: IRsend.h:121
+
bool getFilter(const bool raw=false)
Get the Filter mode status of the A/C.
Definition: ir_Fujitsu.cpp:520
+
uint8_t getStateLength(void)
Get the length (size) of the state code for the current configuration.
Definition: ir_Fujitsu.cpp:214
+
const uint8_t kFujitsuAcFanSize
Definition: ir_Fujitsu.h:62
+
const uint8_t kFujitsuAcFanMed
Definition: ir_Fujitsu.h:59
+
IRFujitsuAC(const uint16_t pin, const fujitsu_ac_remote_model_t model=ARRAH2E, const bool inverted=false, const bool use_modulation=true)
Class Constructor.
Definition: ir_Fujitsu.cpp:63
+
const uint8_t kFujitsuAcSwingBoth
Definition: ir_Fujitsu.h:71
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Fujitsu.cpp:454
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Fujitsu.cpp:426
+
void buildState(void)
(Re)Build the state from the currently configured settings.
Definition: ir_Fujitsu.cpp:119
+
fujitsu_ac_remote_model_t _model
Definition: ir_Fujitsu.h:170
+
const uint8_t kFujitsuAcMaxTemp
Definition: ir_Fujitsu.h:65
+
const uint8_t kFujitsuAcCmdStayOn
Definition: ir_Fujitsu.h:47
+
bool getOutsideQuiet(const bool raw=false)
Get the Outside Quiet mode status of the A/C.
Definition: ir_Fujitsu.cpp:407
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Fujitsu.cpp:654
+
uint8_t getFanSpeed(void)
Get the current fan speed setting.
Definition: ir_Fujitsu.cpp:440
+
uint8_t getCmd(const bool raw=false)
Set the requested (special) command part for the A/C message.
Definition: ir_Fujitsu.cpp:376
+
void setFanSpeed(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Fujitsu.cpp:430
+
uint8_t getSwing(const bool raw=false)
Get the requested swing operation mode of the A/C unit.
Definition: ir_Fujitsu.cpp:483
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Fujitsu.cpp:388
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Fujitsu.cpp:383
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Fujitsu.cpp:391
+
void send(const uint16_t repeat=kFujitsuAcMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Fujitsu.cpp:112
+
bool getClean(const bool raw=false)
Get the Clean mode status of the A/C.
Definition: ir_Fujitsu.cpp:499
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Fujitsu.cpp:395
+
static bool validChecksum(uint8_t *state, const uint16_t length)
Verify the checksum is valid for a given state.
Definition: ir_Fujitsu.cpp:535
+
uint8_t _state_length
Definition: ir_Fujitsu.h:171
+
void toggleSwingHoriz(const bool update=true)
Request the A/C to toggle the Horizontal Swing mode.
Definition: ir_Fujitsu.cpp:315
+
const uint8_t kFujitsuAcModeFan
Definition: ir_Fujitsu.h:44
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kFujitsuAcCmdEcono
Definition: ir_Fujitsu.h:50
+
uint8_t remote_state[kFujitsuAcStateLength]
The state of the IR remote.
Definition: ir_Fujitsu.h:164
+
const uint8_t kFujitsuAcFanQuiet
Definition: ir_Fujitsu.h:61
+
const uint8_t kFujitsuAcFanLow
Definition: ir_Fujitsu.h:60
+
const uint8_t kFujitsuAcModeCool
Definition: ir_Fujitsu.h:42
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GICable_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GICable_8cpp.html new file mode 100644 index 000000000..635f3333b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GICable_8cpp.html @@ -0,0 +1,233 @@ + + + + + + + +IRremoteESP8266: src/ir_GICable.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_GICable.cpp File Reference
+
+
+ +

G.I. Cable. +More...

+ + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kGicableHdrMark = 9000
 
const uint16_t kGicableHdrSpace = 4400
 
const uint16_t kGicableBitMark = 550
 
const uint16_t kGicableOneSpace = 4400
 
const uint16_t kGicableZeroSpace = 2200
 
const uint16_t kGicableRptSpace = 2200
 
const uint32_t kGicableMinCommandLength = 99600
 
const uint32_t kGicableMinGap
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kGicableBitMark

+ +
+
+ + + + +
const uint16_t kGicableBitMark = 550
+
+ +
+
+ +

◆ kGicableHdrMark

+ +
+
+ + + + +
const uint16_t kGicableHdrMark = 9000
+
+ +
+
+ +

◆ kGicableHdrSpace

+ +
+
+ + + + +
const uint16_t kGicableHdrSpace = 4400
+
+ +
+
+ +

◆ kGicableMinCommandLength

+ +
+
+ + + + +
const uint32_t kGicableMinCommandLength = 99600
+
+ +
+
+ +

◆ kGicableMinGap

+ +
+
+ + + + +
const uint32_t kGicableMinGap
+
+
+ +

◆ kGicableOneSpace

+ +
+
+ + + + +
const uint16_t kGicableOneSpace = 4400
+
+ +
+
+ +

◆ kGicableRptSpace

+ +
+
+ + + + +
const uint16_t kGicableRptSpace = 2200
+
+ +
+
+ +

◆ kGicableZeroSpace

+ +
+
+ + + + +
const uint16_t kGicableZeroSpace = 2200
+
+ +
+
+
+
const uint16_t kGicableHdrSpace
Definition: ir_GICable.cpp:20
+
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:879
+
const uint16_t kGicableOneSpace
Definition: ir_GICable.cpp:22
+
const uint32_t kGicableMinCommandLength
Definition: ir_GICable.cpp:25
+
const uint16_t kGicableBitMark
Definition: ir_GICable.cpp:21
+
const uint16_t kGicableHdrMark
Definition: ir_GICable.cpp:19
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GlobalCache_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GlobalCache_8cpp.html new file mode 100644 index 000000000..7ff602faf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__GlobalCache_8cpp.html @@ -0,0 +1,189 @@ + + + + + + + +IRremoteESP8266: src/ir_GlobalCache.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_GlobalCache.cpp File Reference
+
+
+ +

Global Cache IR format sender Originally added by Hisham Khalifa (http://www.hishamkhalifa.com) +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kGlobalCacheMaxRepeat = 50
 
const uint32_t kGlobalCacheMinUsec = 80
 
const uint8_t kGlobalCacheFreqIndex = 0
 
const uint8_t kGlobalCacheRptIndex = kGlobalCacheFreqIndex + 1
 
const uint8_t kGlobalCacheRptStartIndex = kGlobalCacheRptIndex + 1
 
const uint8_t kGlobalCacheStartIndex = kGlobalCacheRptStartIndex + 1
 
+

Detailed Description

+

Global Cache IR format sender Originally added by Hisham Khalifa (http://www.hishamkhalifa.com)

+
See also
https://irdb.globalcache.com/Home/Database
+

Variable Documentation

+ +

◆ kGlobalCacheFreqIndex

+ +
+
+ + + + +
const uint8_t kGlobalCacheFreqIndex = 0
+
+ +
+
+ +

◆ kGlobalCacheMaxRepeat

+ +
+
+ + + + +
const uint16_t kGlobalCacheMaxRepeat = 50
+
+ +
+
+ +

◆ kGlobalCacheMinUsec

+ +
+
+ + + + +
const uint32_t kGlobalCacheMinUsec = 80
+
+ +
+
+ +

◆ kGlobalCacheRptIndex

+ +
+
+ + + + +
const uint8_t kGlobalCacheRptIndex = kGlobalCacheFreqIndex + 1
+
+ +
+
+ +

◆ kGlobalCacheRptStartIndex

+ +
+
+ + + + +
const uint8_t kGlobalCacheRptStartIndex = kGlobalCacheRptIndex + 1
+
+ +
+
+ +

◆ kGlobalCacheStartIndex

+ +
+
+ + + + +
const uint8_t kGlobalCacheStartIndex = kGlobalCacheRptStartIndex + 1
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8cpp.html new file mode 100644 index 000000000..62188cc57 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8cpp.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: src/ir_Goodweather.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Goodweather.cpp File Reference
+
+
+ +

Support for Goodweather compatible HVAC protocols. +More...

+

Detailed Description

+

Support for Goodweather compatible HVAC protocols.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/697
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h.html new file mode 100644 index 000000000..a7910ef35 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h.html @@ -0,0 +1,886 @@ + + + + + + + +IRremoteESP8266: src/ir_Goodweather.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Goodweather.h File Reference
+
+
+ +

Support for Goodweather compatible HVAC protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRGoodweatherAc
 Class for handling detailed Goodweather A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kGoodweatherBitMark = 580
 
const uint16_t kGoodweatherOneSpace = 580
 
const uint16_t kGoodweatherZeroSpace = 1860
 
const uint16_t kGoodweatherHdrMark = 6820
 
const uint16_t kGoodweatherHdrSpace = 6820
 
const uint8_t kGoodweatherExtraTolerance = 12
 
const uint8_t kGoodweatherBitLight = 8
 
const uint8_t kGoodweatherBitTurbo = kGoodweatherBitLight + 3
 
const uint8_t kGoodweatherBitCommand = kGoodweatherBitTurbo + 5
 
const uint8_t kGoodweatherCommandSize = 4
 
const uint8_t kGoodweatherBitSleep = kGoodweatherBitCommand + 8
 
const uint8_t kGoodweatherBitPower = kGoodweatherBitSleep + 1
 
const uint8_t kGoodweatherBitSwing = kGoodweatherBitPower + 1
 
const uint8_t kGoodweatherSwingSize = 2
 
const uint8_t kGoodweatherBitAirFlow = kGoodweatherBitSwing + 2
 
const uint8_t kGoodweatherBitFan = kGoodweatherBitAirFlow + 1
 
const uint8_t kGoodweatherFanSize = 2
 
const uint8_t kGoodweatherBitTemp = kGoodweatherBitFan + 3
 
const uint8_t kGoodweatherTempSize = 4
 
const uint8_t kGoodweatherBitMode = kGoodweatherBitTemp + 5
 
const uint8_t kGoodweatherBitEOF = kGoodweatherBitMode + 3
 
const uint64_t kGoodweatherEOFMask = 0xFFULL << kGoodweatherBitEOF
 
const uint8_t kGoodweatherAuto = 0b000
 
const uint8_t kGoodweatherCool = 0b001
 
const uint8_t kGoodweatherDry = 0b010
 
const uint8_t kGoodweatherFan = 0b011
 
const uint8_t kGoodweatherHeat = 0b100
 
const uint8_t kGoodweatherSwingFast = 0b00
 
const uint8_t kGoodweatherSwingSlow = 0b01
 
const uint8_t kGoodweatherSwingOff = 0b10
 
const uint8_t kGoodweatherFanAuto = 0b00
 
const uint8_t kGoodweatherFanHigh = 0b01
 
const uint8_t kGoodweatherFanMed = 0b10
 
const uint8_t kGoodweatherFanLow = 0b11
 
const uint8_t kGoodweatherTempMin = 16
 
const uint8_t kGoodweatherTempMax = 31
 
const uint8_t kGoodweatherCmdPower = 0x00
 
const uint8_t kGoodweatherCmdMode = 0x01
 
const uint8_t kGoodweatherCmdUpTemp = 0x02
 
const uint8_t kGoodweatherCmdDownTemp = 0x03
 
const uint8_t kGoodweatherCmdSwing = 0x04
 
const uint8_t kGoodweatherCmdFan = 0x05
 
const uint8_t kGoodweatherCmdTimer = 0x06
 
const uint8_t kGoodweatherCmdAirFlow = 0x07
 
const uint8_t kGoodweatherCmdHold = 0x08
 
const uint8_t kGoodweatherCmdSleep = 0x09
 
const uint8_t kGoodweatherCmdTurbo = 0x0A
 
const uint8_t kGoodweatherCmdLight = 0x0B
 
const uint64_t kGoodweatherStateInit = 0xD50000000000
 
+

Detailed Description

+

Support for Goodweather compatible HVAC protocols.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/697
+

Variable Documentation

+ +

◆ kGoodweatherAuto

+ +
+
+ + + + +
const uint8_t kGoodweatherAuto = 0b000
+
+ +
+
+ +

◆ kGoodweatherBitAirFlow

+ +
+
+ + + + +
const uint8_t kGoodweatherBitAirFlow = kGoodweatherBitSwing + 2
+
+ +
+
+ +

◆ kGoodweatherBitCommand

+ +
+
+ + + + +
const uint8_t kGoodweatherBitCommand = kGoodweatherBitTurbo + 5
+
+ +
+
+ +

◆ kGoodweatherBitEOF

+ +
+
+ + + + +
const uint8_t kGoodweatherBitEOF = kGoodweatherBitMode + 3
+
+ +
+
+ +

◆ kGoodweatherBitFan

+ +
+
+ + + + +
const uint8_t kGoodweatherBitFan = kGoodweatherBitAirFlow + 1
+
+ +
+
+ +

◆ kGoodweatherBitLight

+ +
+
+ + + + +
const uint8_t kGoodweatherBitLight = 8
+
+ +
+
+ +

◆ kGoodweatherBitMark

+ +
+
+ + + + +
const uint16_t kGoodweatherBitMark = 580
+
+ +
+
+ +

◆ kGoodweatherBitMode

+ +
+
+ + + + +
const uint8_t kGoodweatherBitMode = kGoodweatherBitTemp + 5
+
+ +
+
+ +

◆ kGoodweatherBitPower

+ +
+
+ + + + +
const uint8_t kGoodweatherBitPower = kGoodweatherBitSleep + 1
+
+ +
+
+ +

◆ kGoodweatherBitSleep

+ +
+
+ + + + +
const uint8_t kGoodweatherBitSleep = kGoodweatherBitCommand + 8
+
+ +
+
+ +

◆ kGoodweatherBitSwing

+ +
+
+ + + + +
const uint8_t kGoodweatherBitSwing = kGoodweatherBitPower + 1
+
+ +
+
+ +

◆ kGoodweatherBitTemp

+ +
+
+ + + + +
const uint8_t kGoodweatherBitTemp = kGoodweatherBitFan + 3
+
+ +
+
+ +

◆ kGoodweatherBitTurbo

+ +
+
+ + + + +
const uint8_t kGoodweatherBitTurbo = kGoodweatherBitLight + 3
+
+ +
+
+ +

◆ kGoodweatherCmdAirFlow

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdAirFlow = 0x07
+
+ +
+
+ +

◆ kGoodweatherCmdDownTemp

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdDownTemp = 0x03
+
+ +
+
+ +

◆ kGoodweatherCmdFan

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdFan = 0x05
+
+ +
+
+ +

◆ kGoodweatherCmdHold

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdHold = 0x08
+
+ +
+
+ +

◆ kGoodweatherCmdLight

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdLight = 0x0B
+
+ +
+
+ +

◆ kGoodweatherCmdMode

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdMode = 0x01
+
+ +
+
+ +

◆ kGoodweatherCmdPower

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdPower = 0x00
+
+ +
+
+ +

◆ kGoodweatherCmdSleep

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdSleep = 0x09
+
+ +
+
+ +

◆ kGoodweatherCmdSwing

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdSwing = 0x04
+
+ +
+
+ +

◆ kGoodweatherCmdTimer

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdTimer = 0x06
+
+ +
+
+ +

◆ kGoodweatherCmdTurbo

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdTurbo = 0x0A
+
+ +
+
+ +

◆ kGoodweatherCmdUpTemp

+ +
+
+ + + + +
const uint8_t kGoodweatherCmdUpTemp = 0x02
+
+ +
+
+ +

◆ kGoodweatherCommandSize

+ +
+
+ + + + +
const uint8_t kGoodweatherCommandSize = 4
+
+ +
+
+ +

◆ kGoodweatherCool

+ +
+
+ + + + +
const uint8_t kGoodweatherCool = 0b001
+
+ +
+
+ +

◆ kGoodweatherDry

+ +
+
+ + + + +
const uint8_t kGoodweatherDry = 0b010
+
+ +
+
+ +

◆ kGoodweatherEOFMask

+ +
+
+ + + + +
const uint64_t kGoodweatherEOFMask = 0xFFULL << kGoodweatherBitEOF
+
+ +
+
+ +

◆ kGoodweatherExtraTolerance

+ +
+
+ + + + +
const uint8_t kGoodweatherExtraTolerance = 12
+
+ +
+
+ +

◆ kGoodweatherFan

+ +
+
+ + + + +
const uint8_t kGoodweatherFan = 0b011
+
+ +
+
+ +

◆ kGoodweatherFanAuto

+ +
+
+ + + + +
const uint8_t kGoodweatherFanAuto = 0b00
+
+ +
+
+ +

◆ kGoodweatherFanHigh

+ +
+
+ + + + +
const uint8_t kGoodweatherFanHigh = 0b01
+
+ +
+
+ +

◆ kGoodweatherFanLow

+ +
+
+ + + + +
const uint8_t kGoodweatherFanLow = 0b11
+
+ +
+
+ +

◆ kGoodweatherFanMed

+ +
+
+ + + + +
const uint8_t kGoodweatherFanMed = 0b10
+
+ +
+
+ +

◆ kGoodweatherFanSize

+ +
+
+ + + + +
const uint8_t kGoodweatherFanSize = 2
+
+ +
+
+ +

◆ kGoodweatherHdrMark

+ +
+
+ + + + +
const uint16_t kGoodweatherHdrMark = 6820
+
+ +
+
+ +

◆ kGoodweatherHdrSpace

+ +
+
+ + + + +
const uint16_t kGoodweatherHdrSpace = 6820
+
+ +
+
+ +

◆ kGoodweatherHeat

+ +
+
+ + + + +
const uint8_t kGoodweatherHeat = 0b100
+
+ +
+
+ +

◆ kGoodweatherOneSpace

+ +
+
+ + + + +
const uint16_t kGoodweatherOneSpace = 580
+
+ +
+
+ +

◆ kGoodweatherStateInit

+ +
+
+ + + + +
const uint64_t kGoodweatherStateInit = 0xD50000000000
+
+ +
+
+ +

◆ kGoodweatherSwingFast

+ +
+
+ + + + +
const uint8_t kGoodweatherSwingFast = 0b00
+
+ +
+
+ +

◆ kGoodweatherSwingOff

+ +
+
+ + + + +
const uint8_t kGoodweatherSwingOff = 0b10
+
+ +
+
+ +

◆ kGoodweatherSwingSize

+ +
+
+ + + + +
const uint8_t kGoodweatherSwingSize = 2
+
+ +
+
+ +

◆ kGoodweatherSwingSlow

+ +
+
+ + + + +
const uint8_t kGoodweatherSwingSlow = 0b01
+
+ +
+
+ +

◆ kGoodweatherTempMax

+ +
+
+ + + + +
const uint8_t kGoodweatherTempMax = 31
+
+ +
+
+ +

◆ kGoodweatherTempMin

+ +
+
+ + + + +
const uint8_t kGoodweatherTempMin = 16
+
+ +
+
+ +

◆ kGoodweatherTempSize

+ +
+
+ + + + +
const uint8_t kGoodweatherTempSize = 4
+
+ +
+
+ +

◆ kGoodweatherZeroSpace

+ +
+
+ + + + +
const uint16_t kGoodweatherZeroSpace = 1860
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h_source.html new file mode 100644 index 000000000..3a72c4a94 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Goodweather_8h_source.html @@ -0,0 +1,310 @@ + + + + + + + +IRremoteESP8266: src/ir_Goodweather.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Goodweather.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 ribeirodanielf
+
2 // Copyright 2019 David Conran
+
3 
+
7 
+
8 // Supports:
+
9 // Brand: Goodweather, Model: ZH/JT-03 remote
+
10 
+
11 #ifndef IR_GOODWEATHER_H_
+
12 #define IR_GOODWEATHER_H_
+
13 
+
14 #define __STDC_LIMIT_MACROS
+
15 #include <stdint.h>
+
16 #ifndef UNIT_TEST
+
17 #include <Arduino.h>
+
18 #endif
+
19 #include "IRremoteESP8266.h"
+
20 #include "IRsend.h"
+
21 #ifdef UNIT_TEST
+
22 #include "IRsend_test.h"
+
23 #endif
+
24 
+
25 
+
26 // Constants
+
27 // Timing
+
28 const uint16_t kGoodweatherBitMark = 580;
+
29 const uint16_t kGoodweatherOneSpace = 580;
+
30 const uint16_t kGoodweatherZeroSpace = 1860;
+
31 const uint16_t kGoodweatherHdrMark = 6820;
+
32 const uint16_t kGoodweatherHdrSpace = 6820;
+
33 const uint8_t kGoodweatherExtraTolerance = 12; // +12% extra
+
34 
+
35 // Masks
+
36 const uint8_t kGoodweatherBitLight = 8;
+
37 const uint8_t kGoodweatherBitTurbo = kGoodweatherBitLight + 3; // 11
+
38 const uint8_t kGoodweatherBitCommand = kGoodweatherBitTurbo + 5; // 16
+
39 const uint8_t kGoodweatherCommandSize = 4; // Bits
+
40 const uint8_t kGoodweatherBitSleep = kGoodweatherBitCommand + 8; // 24
+
41 const uint8_t kGoodweatherBitPower = kGoodweatherBitSleep + 1; // 25
+
42 const uint8_t kGoodweatherBitSwing = kGoodweatherBitPower + 1; // 26
+
43 const uint8_t kGoodweatherSwingSize = 2; // Bits
+
44 const uint8_t kGoodweatherBitAirFlow = kGoodweatherBitSwing + 2; // 28
+
45 const uint8_t kGoodweatherBitFan = kGoodweatherBitAirFlow + 1; // 29
+
46 const uint8_t kGoodweatherFanSize = 2; // Bits
+
47 const uint8_t kGoodweatherBitTemp = kGoodweatherBitFan + 3; // 32
+
48 const uint8_t kGoodweatherTempSize = 4; // Bits
+
49 const uint8_t kGoodweatherBitMode = kGoodweatherBitTemp + 5; // 37
+
50 const uint8_t kGoodweatherBitEOF = kGoodweatherBitMode + 3; // 40
+
51 const uint64_t kGoodweatherEOFMask = 0xFFULL << kGoodweatherBitEOF;
+
52 
+
53 // Modes
+
54 const uint8_t kGoodweatherAuto = 0b000;
+
55 const uint8_t kGoodweatherCool = 0b001;
+
56 const uint8_t kGoodweatherDry = 0b010;
+
57 const uint8_t kGoodweatherFan = 0b011;
+
58 const uint8_t kGoodweatherHeat = 0b100;
+
59 // Swing
+
60 const uint8_t kGoodweatherSwingFast = 0b00;
+
61 const uint8_t kGoodweatherSwingSlow = 0b01;
+
62 const uint8_t kGoodweatherSwingOff = 0b10;
+
63 // Fan Control
+
64 const uint8_t kGoodweatherFanAuto = 0b00;
+
65 const uint8_t kGoodweatherFanHigh = 0b01;
+
66 const uint8_t kGoodweatherFanMed = 0b10;
+
67 const uint8_t kGoodweatherFanLow = 0b11;
+
68 // Temperature
+
69 const uint8_t kGoodweatherTempMin = 16; // Celsius
+
70 const uint8_t kGoodweatherTempMax = 31; // Celsius
+
71 // Commands
+
72 const uint8_t kGoodweatherCmdPower = 0x00;
+
73 const uint8_t kGoodweatherCmdMode = 0x01;
+
74 const uint8_t kGoodweatherCmdUpTemp = 0x02;
+
75 const uint8_t kGoodweatherCmdDownTemp = 0x03;
+
76 const uint8_t kGoodweatherCmdSwing = 0x04;
+
77 const uint8_t kGoodweatherCmdFan = 0x05;
+
78 const uint8_t kGoodweatherCmdTimer = 0x06;
+
79 const uint8_t kGoodweatherCmdAirFlow = 0x07;
+
80 const uint8_t kGoodweatherCmdHold = 0x08;
+
81 const uint8_t kGoodweatherCmdSleep = 0x09;
+
82 const uint8_t kGoodweatherCmdTurbo = 0x0A;
+
83 const uint8_t kGoodweatherCmdLight = 0x0B;
+
84 // PAD EOF
+
85 const uint64_t kGoodweatherStateInit = 0xD50000000000;
+
86 
+
87 
+
88 // Classes
+ +
91  public:
+
92  explicit IRGoodweatherAc(const uint16_t pin, const bool inverted = false,
+
93  const bool use_modulation = true);
+
94  void stateReset(void);
+
95 #if SEND_GOODWEATHER
+
96  void send(const uint16_t repeat = kGoodweatherMinRepeat);
+
101  int8_t calibrate(void) { return _irsend.calibrate(); }
+
102 #endif // SEND_GOODWEATHER
+
103  void begin(void);
+
104  void on(void);
+
105  void off(void);
+
106  void setPower(const bool on);
+
107  bool getPower(void);
+
108  void setTemp(const uint8_t temp);
+
109  uint8_t getTemp(void);
+
110  void setFan(const uint8_t speed);
+
111  uint8_t getFan(void);
+
112  void setMode(const uint8_t mode);
+
113  uint8_t getMode();
+
114  void setSwing(const uint8_t speed);
+
115  uint8_t getSwing(void);
+
116  void setSleep(const bool toggle);
+
117  bool getSleep(void);
+
118  void setTurbo(const bool toggle);
+
119  bool getTurbo(void);
+
120  void setLight(const bool toggle);
+
121  bool getLight(void);
+
122  void setCommand(const uint8_t cmd);
+
123  uint8_t getCommand(void);
+
124  uint64_t getRaw(void);
+
125  void setRaw(const uint64_t state);
+
126  uint8_t convertMode(const stdAc::opmode_t mode);
+
127  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
128  uint8_t convertSwingV(const stdAc::swingv_t swingv);
+
129  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
130  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
131  stdAc::state_t toCommon(void);
+
132  String toString();
+
133 #ifndef UNIT_TEST
+
134 
+
135  private:
+ +
137 #else // UNIT_TEST
+
138  IRsendTest _irsend;
+
140 #endif // UNIT_TEST
+
142  uint64_t remote;
+
143 };
+
144 #endif // IR_GOODWEATHER_H_
+
+
const uint8_t kGoodweatherBitTurbo
Definition: ir_Goodweather.h:37
+
const uint8_t kGoodweatherCmdLight
Definition: ir_Goodweather.h:83
+
const uint8_t kGoodweatherCmdDownTemp
Definition: ir_Goodweather.h:75
+
void off(void)
Change the power setting to Off.
Definition: ir_Goodweather.cpp:96
+
void on(void)
Change the power setting to On.
Definition: ir_Goodweather.cpp:93
+
const uint16_t kGoodweatherOneSpace
Definition: ir_Goodweather.h:29
+
const uint8_t kGoodweatherCommandSize
Definition: ir_Goodweather.h:39
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Goodweather.cpp:71
+
const uint8_t kGoodweatherTempMin
Definition: ir_Goodweather.h:69
+
bool getLight(void)
Get the Light (LED) Toggle setting of the A/C.
Definition: ir_Goodweather.cpp:184
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Goodweather.h:136
+
const uint8_t kGoodweatherCmdPower
Definition: ir_Goodweather.h:72
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Goodweather.cpp:317
+
const uint8_t kGoodweatherCmdAirFlow
Definition: ir_Goodweather.h:79
+
bool getTurbo(void)
Get the Turbo Toggle setting of the A/C.
Definition: ir_Goodweather.cpp:210
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kGoodweatherFanSize
Definition: ir_Goodweather.h:46
+
void setTurbo(const bool toggle)
Set the Turbo Toggle setting of the A/C.
Definition: ir_Goodweather.cpp:203
+
bool getSleep(void)
Get the Sleep Toggle setting of the A/C.
Definition: ir_Goodweather.cpp:197
+
void setLight(const bool toggle)
Set the Light (LED) Toggle setting of the A/C.
Definition: ir_Goodweather.cpp:177
+
const uint8_t kGoodweatherBitMode
Definition: ir_Goodweather.h:49
+ +
const uint8_t kGoodweatherCmdSwing
Definition: ir_Goodweather.h:76
+
const uint8_t kGoodweatherFanMed
Definition: ir_Goodweather.h:66
+
uint8_t convertSwingV(const stdAc::swingv_t swingv)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Goodweather.cpp:278
+
const uint8_t kGoodweatherCmdUpTemp
Definition: ir_Goodweather.h:74
+
const uint16_t kGoodweatherHdrSpace
Definition: ir_Goodweather.h:32
+
const uint64_t kGoodweatherEOFMask
Definition: ir_Goodweather.h:51
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Goodweather.h:101
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kGoodweatherFanAuto
Definition: ir_Goodweather.h:64
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
IRGoodweatherAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Goodweather.cpp:66
+
const uint16_t kGoodweatherZeroSpace
Definition: ir_Goodweather.h:30
+
void setRaw(const uint64_t state)
Set the internal state from a valid code for this protocol.
Definition: ir_Goodweather.cpp:90
+
const uint8_t kGoodweatherAuto
Definition: ir_Goodweather.h:54
+
std::string String
Definition: IRremoteESP8266.h:1093
+
void send(const uint16_t repeat=kGoodweatherMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Goodweather.cpp:79
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Goodweather.cpp:293
+
const uint8_t kGoodweatherExtraTolerance
Definition: ir_Goodweather.h:33
+
const uint8_t kGoodweatherSwingSlow
Definition: ir_Goodweather.h:61
+
const uint8_t kGoodweatherTempSize
Definition: ir_Goodweather.h:48
+ +
const uint8_t kGoodweatherSwingOff
Definition: ir_Goodweather.h:62
+
const uint8_t kGoodweatherDry
Definition: ir_Goodweather.h:56
+
const uint8_t kGoodweatherSwingFast
Definition: ir_Goodweather.h:60
+
const uint8_t kGoodweatherBitFan
Definition: ir_Goodweather.h:45
+
const uint8_t kGoodweatherCmdSleep
Definition: ir_Goodweather.h:81
+
const uint8_t kGoodweatherCool
Definition: ir_Goodweather.h:55
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Goodweather.cpp:113
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Goodweather.cpp:74
+
const uint8_t kGoodweatherBitEOF
Definition: ir_Goodweather.h:50
+
const uint8_t kGoodweatherCmdFan
Definition: ir_Goodweather.h:77
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Goodweather.cpp:107
+
const uint8_t kGoodweatherCmdHold
Definition: ir_Goodweather.h:80
+
void setSwing(const uint8_t speed)
Set the Vertical Swing speed of the A/C.
Definition: ir_Goodweather.cpp:216
+
const uint8_t kGoodweatherFan
Definition: ir_Goodweather.h:57
+
const uint8_t kGoodweatherCmdTurbo
Definition: ir_Goodweather.h:82
+
void setCommand(const uint8_t cmd)
Set the remote Command type/button pressed.
Definition: ir_Goodweather.cpp:237
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Goodweather.cpp:147
+
const uint8_t kGoodweatherBitSwing
Definition: ir_Goodweather.h:42
+
const uint64_t kGoodweatherStateInit
Definition: ir_Goodweather.h:85
+
const uint8_t kGoodweatherCmdTimer
Definition: ir_Goodweather.h:78
+
const uint8_t kGoodweatherBitSleep
Definition: ir_Goodweather.h:40
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Goodweather.cpp:153
+
const uint8_t kGoodweatherBitLight
Definition: ir_Goodweather.h:36
+
const uint8_t kGoodweatherTempMax
Definition: ir_Goodweather.h:70
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Goodweather.cpp:306
+
uint8_t getCommand(void)
Get the Command type/button pressed from the current settings.
Definition: ir_Goodweather.cpp:244
+
const uint8_t kGoodweatherFanLow
Definition: ir_Goodweather.h:67
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Goodweather.cpp:124
+
String toString()
Convert the current internal state into a human readable string.
Definition: ir_Goodweather.cpp:344
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Goodweather.cpp:131
+
const uint8_t kGoodweatherHeat
Definition: ir_Goodweather.h:58
+
const uint16_t kGoodweatherBitMark
Definition: ir_Goodweather.h:28
+
uint64_t remote
The state of the IR remote in IR code form.
Definition: ir_Goodweather.h:142
+
const uint8_t kGoodweatherFanHigh
Definition: ir_Goodweather.h:65
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Goodweather.cpp:264
+
uint8_t getMode()
Get the operating mode setting of the A/C.
Definition: ir_Goodweather.cpp:171
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Goodweather.cpp:251
+
const uint16_t kGoodweatherHdrMark
Definition: ir_Goodweather.h:31
+
const uint8_t kGoodweatherSwingSize
Definition: ir_Goodweather.h:43
+
const uint8_t kGoodweatherBitAirFlow
Definition: ir_Goodweather.h:44
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Goodweather.cpp:100
+
void setSleep(const bool toggle)
Set the Sleep Toggle setting of the A/C.
Definition: ir_Goodweather.cpp:190
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
Class for handling detailed Goodweather A/C messages.
Definition: ir_Goodweather.h:90
+
const uint8_t kGoodweatherBitCommand
Definition: ir_Goodweather.h:38
+
const uint8_t kGoodweatherBitPower
Definition: ir_Goodweather.h:41
+
const uint8_t kGoodweatherBitTemp
Definition: ir_Goodweather.h:47
+
uint64_t getRaw(void)
Get a copy of the internal state as a valid code for this protocol.
Definition: ir_Goodweather.cpp:86
+
const uint16_t kGoodweatherMinRepeat
Definition: IRremoteESP8266.h:882
+
const uint8_t kGoodweatherCmdMode
Definition: ir_Goodweather.h:73
+
uint8_t getSwing(void)
Get the Vertical Swing speed of the A/C.
Definition: ir_Goodweather.cpp:231
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8cpp.html new file mode 100644 index 000000000..182deded3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8cpp.html @@ -0,0 +1,224 @@ + + + + + + + +IRremoteESP8266: src/ir_Gree.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Gree.cpp File Reference
+
+
+ +

Support for Gree A/C protocols. +More...

+ + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kGreeHdrMark = 9000
 
const uint16_t kGreeHdrSpace = 4500
 See #684 & real example in unit tests. More...
 
const uint16_t kGreeBitMark = 620
 
const uint16_t kGreeOneSpace = 1600
 
const uint16_t kGreeZeroSpace = 540
 
const uint16_t kGreeMsgSpace = 19000
 
const uint8_t kGreeBlockFooter = 0b010
 
const uint8_t kGreeBlockFooterBits = 3
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kGreeBitMark

+ +
+
+ + + + +
const uint16_t kGreeBitMark = 620
+
+ +
+
+ +

◆ kGreeBlockFooter

+ +
+
+ + + + +
const uint8_t kGreeBlockFooter = 0b010
+
+ +
+
+ +

◆ kGreeBlockFooterBits

+ +
+
+ + + + +
const uint8_t kGreeBlockFooterBits = 3
+
+ +
+
+ +

◆ kGreeHdrMark

+ +
+
+ + + + +
const uint16_t kGreeHdrMark = 9000
+
+ +
+
+ +

◆ kGreeHdrSpace

+ +
+
+ + + + +
const uint16_t kGreeHdrSpace = 4500
+
+ +

See #684 & real example in unit tests.

+ +
+
+ +

◆ kGreeMsgSpace

+ +
+
+ + + + +
const uint16_t kGreeMsgSpace = 19000
+
+ +
+
+ +

◆ kGreeOneSpace

+ +
+
+ + + + +
const uint16_t kGreeOneSpace = 1600
+
+ +
+
+ +

◆ kGreeZeroSpace

+ +
+
+ + + + +
const uint16_t kGreeZeroSpace = 540
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h.html new file mode 100644 index 000000000..1e9e1788e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h.html @@ -0,0 +1,934 @@ + + + + + + + +IRremoteESP8266: src/ir_Gree.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Gree.h File Reference
+
+
+ +

Support for Gree A/C protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRGreeAC
 Class for handling detailed Gree A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kGreeAuto = 0
 
const uint8_t kGreeCool = 1
 
const uint8_t kGreeDry = 2
 
const uint8_t kGreeFan = 3
 
const uint8_t kGreeHeat = 4
 
const uint8_t kGreePower1Offset = 3
 
const uint8_t kGreeFanOffset = 4
 
const uint8_t kGreeFanSize = 2
 
const uint8_t kGreeFanAuto = 0
 
const uint8_t kGreeFanMin = 1
 
const uint8_t kGreeFanMed = 2
 
const uint8_t kGreeFanMax = 3
 
const uint8_t kGreeSwingAutoOffset = 6
 
const uint8_t kGreeSleepOffset = 7
 
const uint8_t kGreeTempOffset = 0
 
const uint8_t kGreeTempSize = 4
 
const uint8_t kGreeMinTempC = 16
 
const uint8_t kGreeMaxTempC = 30
 
const uint8_t kGreeMinTempF = 61
 
const uint8_t kGreeMaxTempF = 86
 
const uint8_t kGreeTimerHalfHrOffset = 4
 
const uint8_t kGreeTimerTensHrOffset = 5
 
const uint8_t kGreeTimerTensHrSize = 2
 
const uint16_t kGreeTimerMax = 24 * 60
 
const uint8_t kGreeTimerEnabledOffset = 7
 
const uint8_t kGreeTimerHoursOffset = 0
 
const uint8_t kGreeTimerHoursSize = 4
 
const uint8_t kGreeTurboOffset = 4
 
const uint8_t kGreeLightOffset = 5
 
const uint8_t kGreePower2Offset = 6
 
const uint8_t kGreeXfanOffset = 7
 
const uint8_t kGreeTempExtraDegreeFOffset = 2
 
const uint8_t kGreeUseFahrenheitOffset = 3
 
const uint8_t kGreeSwingSize = 4
 
const uint8_t kGreeSwingLastPos = 0b0000
 
const uint8_t kGreeSwingAuto = 0b0001
 
const uint8_t kGreeSwingUp = 0b0010
 
const uint8_t kGreeSwingMiddleUp = 0b0011
 
const uint8_t kGreeSwingMiddle = 0b0100
 
const uint8_t kGreeSwingMiddleDown = 0b0101
 
const uint8_t kGreeSwingDown = 0b0110
 
const uint8_t kGreeSwingDownAuto = 0b0111
 
const uint8_t kGreeSwingMiddleAuto = 0b1001
 
const uint8_t kGreeSwingUpAuto = 0b1011
 
const uint8_t kGreeWiFiOffset = 6
 
const uint8_t kGreeIFeelOffset = 2
 
const uint8_t kGreeDisplayTempOffset = 0
 
const uint8_t kGreeDisplayTempSize = 2
 
const uint8_t kGreeDisplayTempOff = 0b00
 
const uint8_t kGreeDisplayTempSet = 0b01
 
const uint8_t kGreeDisplayTempInside = 0b10
 
const uint8_t kGreeDisplayTempOutside = 0b11
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kGreeAuto

+ +
+
+ + + + +
const uint8_t kGreeAuto = 0
+
+ +
+
+ +

◆ kGreeCool

+ +
+
+ + + + +
const uint8_t kGreeCool = 1
+
+ +
+
+ +

◆ kGreeDisplayTempInside

+ +
+
+ + + + +
const uint8_t kGreeDisplayTempInside = 0b10
+
+ +
+
+ +

◆ kGreeDisplayTempOff

+ +
+
+ + + + +
const uint8_t kGreeDisplayTempOff = 0b00
+
+ +
+
+ +

◆ kGreeDisplayTempOffset

+ +
+
+ + + + +
const uint8_t kGreeDisplayTempOffset = 0
+
+ +
+
+ +

◆ kGreeDisplayTempOutside

+ +
+
+ + + + +
const uint8_t kGreeDisplayTempOutside = 0b11
+
+ +
+
+ +

◆ kGreeDisplayTempSet

+ +
+
+ + + + +
const uint8_t kGreeDisplayTempSet = 0b01
+
+ +
+
+ +

◆ kGreeDisplayTempSize

+ +
+
+ + + + +
const uint8_t kGreeDisplayTempSize = 2
+
+ +
+
+ +

◆ kGreeDry

+ +
+
+ + + + +
const uint8_t kGreeDry = 2
+
+ +
+
+ +

◆ kGreeFan

+ +
+
+ + + + +
const uint8_t kGreeFan = 3
+
+ +
+
+ +

◆ kGreeFanAuto

+ +
+
+ + + + +
const uint8_t kGreeFanAuto = 0
+
+ +
+
+ +

◆ kGreeFanMax

+ +
+
+ + + + +
const uint8_t kGreeFanMax = 3
+
+ +
+
+ +

◆ kGreeFanMed

+ +
+
+ + + + +
const uint8_t kGreeFanMed = 2
+
+ +
+
+ +

◆ kGreeFanMin

+ +
+
+ + + + +
const uint8_t kGreeFanMin = 1
+
+ +
+
+ +

◆ kGreeFanOffset

+ +
+
+ + + + +
const uint8_t kGreeFanOffset = 4
+
+ +
+
+ +

◆ kGreeFanSize

+ +
+
+ + + + +
const uint8_t kGreeFanSize = 2
+
+ +
+
+ +

◆ kGreeHeat

+ +
+
+ + + + +
const uint8_t kGreeHeat = 4
+
+ +
+
+ +

◆ kGreeIFeelOffset

+ +
+
+ + + + +
const uint8_t kGreeIFeelOffset = 2
+
+ +
+
+ +

◆ kGreeLightOffset

+ +
+
+ + + + +
const uint8_t kGreeLightOffset = 5
+
+ +
+
+ +

◆ kGreeMaxTempC

+ +
+
+ + + + +
const uint8_t kGreeMaxTempC = 30
+
+ +
+
+ +

◆ kGreeMaxTempF

+ +
+
+ + + + +
const uint8_t kGreeMaxTempF = 86
+
+ +
+
+ +

◆ kGreeMinTempC

+ +
+
+ + + + +
const uint8_t kGreeMinTempC = 16
+
+ +
+
+ +

◆ kGreeMinTempF

+ +
+
+ + + + +
const uint8_t kGreeMinTempF = 61
+
+ +
+
+ +

◆ kGreePower1Offset

+ +
+
+ + + + +
const uint8_t kGreePower1Offset = 3
+
+ +
+
+ +

◆ kGreePower2Offset

+ +
+
+ + + + +
const uint8_t kGreePower2Offset = 6
+
+ +
+
+ +

◆ kGreeSleepOffset

+ +
+
+ + + + +
const uint8_t kGreeSleepOffset = 7
+
+ +
+
+ +

◆ kGreeSwingAuto

+ +
+
+ + + + +
const uint8_t kGreeSwingAuto = 0b0001
+
+ +
+
+ +

◆ kGreeSwingAutoOffset

+ +
+
+ + + + +
const uint8_t kGreeSwingAutoOffset = 6
+
+ +
+
+ +

◆ kGreeSwingDown

+ +
+
+ + + + +
const uint8_t kGreeSwingDown = 0b0110
+
+ +
+
+ +

◆ kGreeSwingDownAuto

+ +
+
+ + + + +
const uint8_t kGreeSwingDownAuto = 0b0111
+
+ +
+
+ +

◆ kGreeSwingLastPos

+ +
+
+ + + + +
const uint8_t kGreeSwingLastPos = 0b0000
+
+ +
+
+ +

◆ kGreeSwingMiddle

+ +
+
+ + + + +
const uint8_t kGreeSwingMiddle = 0b0100
+
+ +
+
+ +

◆ kGreeSwingMiddleAuto

+ +
+
+ + + + +
const uint8_t kGreeSwingMiddleAuto = 0b1001
+
+ +
+
+ +

◆ kGreeSwingMiddleDown

+ +
+
+ + + + +
const uint8_t kGreeSwingMiddleDown = 0b0101
+
+ +
+
+ +

◆ kGreeSwingMiddleUp

+ +
+
+ + + + +
const uint8_t kGreeSwingMiddleUp = 0b0011
+
+ +
+
+ +

◆ kGreeSwingSize

+ +
+
+ + + + +
const uint8_t kGreeSwingSize = 4
+
+ +
+
+ +

◆ kGreeSwingUp

+ +
+
+ + + + +
const uint8_t kGreeSwingUp = 0b0010
+
+ +
+
+ +

◆ kGreeSwingUpAuto

+ +
+
+ + + + +
const uint8_t kGreeSwingUpAuto = 0b1011
+
+ +
+
+ +

◆ kGreeTempExtraDegreeFOffset

+ +
+
+ + + + +
const uint8_t kGreeTempExtraDegreeFOffset = 2
+
+ +
+
+ +

◆ kGreeTempOffset

+ +
+
+ + + + +
const uint8_t kGreeTempOffset = 0
+
+ +
+
+ +

◆ kGreeTempSize

+ +
+
+ + + + +
const uint8_t kGreeTempSize = 4
+
+ +
+
+ +

◆ kGreeTimerEnabledOffset

+ +
+
+ + + + +
const uint8_t kGreeTimerEnabledOffset = 7
+
+ +
+
+ +

◆ kGreeTimerHalfHrOffset

+ +
+
+ + + + +
const uint8_t kGreeTimerHalfHrOffset = 4
+
+ +
+
+ +

◆ kGreeTimerHoursOffset

+ +
+
+ + + + +
const uint8_t kGreeTimerHoursOffset = 0
+
+ +
+
+ +

◆ kGreeTimerHoursSize

+ +
+
+ + + + +
const uint8_t kGreeTimerHoursSize = 4
+
+ +
+
+ +

◆ kGreeTimerMax

+ +
+
+ + + + +
const uint16_t kGreeTimerMax = 24 * 60
+
+ +
+
+ +

◆ kGreeTimerTensHrOffset

+ +
+
+ + + + +
const uint8_t kGreeTimerTensHrOffset = 5
+
+ +
+
+ +

◆ kGreeTimerTensHrSize

+ +
+
+ + + + +
const uint8_t kGreeTimerTensHrSize = 2
+
+ +
+
+ +

◆ kGreeTurboOffset

+ +
+
+ + + + +
const uint8_t kGreeTurboOffset = 4
+
+ +
+
+ +

◆ kGreeUseFahrenheitOffset

+ +
+
+ + + + +
const uint8_t kGreeUseFahrenheitOffset = 3
+
+ +
+
+ +

◆ kGreeWiFiOffset

+ +
+
+ + + + +
const uint8_t kGreeWiFiOffset = 6
+
+ +
+
+ +

◆ kGreeXfanOffset

+ +
+
+ + + + +
const uint8_t kGreeXfanOffset = 7
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h_source.html new file mode 100644 index 000000000..4abec57b7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Gree_8h_source.html @@ -0,0 +1,387 @@ + + + + + + + +IRremoteESP8266: src/ir_Gree.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Gree.h
+
+
+Go to the documentation of this file.
1 // Copyright 2016 David Conran
+
2 
+
6 
+
7 // Supports:
+
8 // Brand: Ultimate, Model: Heat Pump
+
9 // Brand: EKOKAI, Model: A/C
+
10 // Brand: RusClimate, Model: EACS/I-09HAR_X/N3 A/C
+
11 // Brand: RusClimate, Model: YAW1F remote
+
12 // Brand: Green, Model: YBOFB remote
+
13 // Brand: Green, Model: YBOFB2 remote
+
14 // Brand: Gree, Model: YAA1FBF remote
+
15 // Brand: Gree, Model: YB1F2F remote
+
16 
+
17 #ifndef IR_GREE_H_
+
18 #define IR_GREE_H_
+
19 
+
20 #define __STDC_LIMIT_MACROS
+
21 #include <stdint.h>
+
22 #ifndef UNIT_TEST
+
23 #include <Arduino.h>
+
24 #endif
+
25 #include "IRremoteESP8266.h"
+
26 #include "IRsend.h"
+
27 #ifdef UNIT_TEST
+
28 #include "IRsend_test.h"
+
29 #endif
+
30 
+
31 // Constants
+
32 
+
33 const uint8_t kGreeAuto = 0;
+
34 const uint8_t kGreeCool = 1;
+
35 const uint8_t kGreeDry = 2;
+
36 const uint8_t kGreeFan = 3;
+
37 const uint8_t kGreeHeat = 4;
+
38 
+
39 // Byte[0]
+
40 const uint8_t kGreePower1Offset = 3;
+
41 const uint8_t kGreeFanOffset = 4;
+
42 const uint8_t kGreeFanSize = 2; // Bits
+
43 const uint8_t kGreeFanAuto = 0;
+
44 const uint8_t kGreeFanMin = 1;
+
45 const uint8_t kGreeFanMed = 2;
+
46 const uint8_t kGreeFanMax = 3;
+
47 const uint8_t kGreeSwingAutoOffset = 6;
+
48 const uint8_t kGreeSleepOffset = 7;
+
49 // Byte[1]
+
50 const uint8_t kGreeTempOffset = 0;
+
51 const uint8_t kGreeTempSize = 4; // Mask 0b0000xxxx
+
52 const uint8_t kGreeMinTempC = 16; // Celsius
+
53 const uint8_t kGreeMaxTempC = 30; // Celsius
+
54 const uint8_t kGreeMinTempF = 61; // Fahrenheit
+
55 const uint8_t kGreeMaxTempF = 86; // Fahrenheit
+
56 const uint8_t kGreeTimerHalfHrOffset = 4; // Mask 0b000x0000
+
57 const uint8_t kGreeTimerTensHrOffset = 5;
+
58 const uint8_t kGreeTimerTensHrSize = 2; // Mask 0b0xx00000
+
59 const uint16_t kGreeTimerMax = 24 * 60;
+
60 const uint8_t kGreeTimerEnabledOffset = 7; // Mask 0bx0000000
+
61 // Byte[2]
+
62 const uint8_t kGreeTimerHoursOffset = 0;
+
63 const uint8_t kGreeTimerHoursSize = 4; // Bits
+
64 const uint8_t kGreeTurboOffset = 4;
+
65 const uint8_t kGreeLightOffset = 5;
+
66 // This might not be used. See #814
+
67 const uint8_t kGreePower2Offset = 6;
+
68 const uint8_t kGreeXfanOffset = 7;
+
69 // Byte[3]
+
70 const uint8_t kGreeTempExtraDegreeFOffset = 2; // Mask 0b00000x00
+
71 const uint8_t kGreeUseFahrenheitOffset = 3; // Mask 0b0000x000
+
72 // Byte[4]
+
73 const uint8_t kGreeSwingSize = 4; // Bits
+
74 const uint8_t kGreeSwingLastPos = 0b0000;
+
75 const uint8_t kGreeSwingAuto = 0b0001;
+
76 const uint8_t kGreeSwingUp = 0b0010;
+
77 const uint8_t kGreeSwingMiddleUp = 0b0011;
+
78 const uint8_t kGreeSwingMiddle = 0b0100;
+
79 const uint8_t kGreeSwingMiddleDown = 0b0101;
+
80 const uint8_t kGreeSwingDown = 0b0110;
+
81 const uint8_t kGreeSwingDownAuto = 0b0111;
+
82 const uint8_t kGreeSwingMiddleAuto = 0b1001;
+
83 const uint8_t kGreeSwingUpAuto = 0b1011;
+
84 // Byte[5]
+
85 const uint8_t kGreeWiFiOffset = 6; // Mask 0b0x000000
+
86 const uint8_t kGreeIFeelOffset = 2; // Mask 0b00000x00
+
87 const uint8_t kGreeDisplayTempOffset = 0;
+
88 const uint8_t kGreeDisplayTempSize = 2; // Mask 0b000000xx
+
89 const uint8_t kGreeDisplayTempOff = 0b00; // 0
+
90 const uint8_t kGreeDisplayTempSet = 0b01; // 1
+
91 const uint8_t kGreeDisplayTempInside = 0b10; // 2
+
92 const uint8_t kGreeDisplayTempOutside = 0b11; // 3
+
93 
+
94 
+
95 // Legacy defines.
+
96 #define GREE_AUTO kGreeAuto
+
97 #define GREE_COOL kGreeCool
+
98 #define GREE_DRY kGreeDry
+
99 #define GREE_FAN kGreeFan
+
100 #define GREE_HEAT kGreeHeat
+
101 #define GREE_MIN_TEMP kGreeMinTempC
+
102 #define GREE_MAX_TEMP kGreeMaxTempC
+
103 #define GREE_FAN_MAX kGreeFanMax
+
104 #define GREE_SWING_LAST_POS kGreeSwingLastPos
+
105 #define GREE_SWING_AUTO kGreeSwingAuto
+
106 #define GREE_SWING_UP kGreeSwingUp
+
107 #define GREE_SWING_MIDDLE_UP kGreeSwingMiddleUp
+
108 #define GREE_SWING_MIDDLE kGreeSwingMiddle
+
109 #define GREE_SWING_MIDDLE_DOWN kGreeSwingMiddleDown
+
110 #define GREE_SWING_DOWN kGreeSwingDown
+
111 #define GREE_SWING_DOWN_AUTO kGreeSwingDownAuto
+
112 #define GREE_SWING_MIDDLE_AUTO kGreeSwingMiddleAuto
+
113 #define GREE_SWING_UP_AUTO kGreeSwingUpAuto
+
114 
+
115 // Classes
+
117 class IRGreeAC {
+
118  public:
+
119  explicit IRGreeAC(
+
120  const uint16_t pin,
+ +
122  const bool inverted = false, const bool use_modulation = true);
+
123  void stateReset(void);
+
124 #if SEND_GREE
+
125  void send(const uint16_t repeat = kGreeDefaultRepeat);
+
130  int8_t calibrate(void) { return _irsend.calibrate(); }
+
131 #endif // SEND_GREE
+
132  void begin(void);
+
133  void on(void);
+
134  void off(void);
+
135  void setModel(const gree_ac_remote_model_t model);
+ +
137  void setPower(const bool on);
+
138  bool getPower(void);
+
139  void setTemp(const uint8_t temp, const bool fahrenheit = false);
+
140  uint8_t getTemp(void);
+
141  void setUseFahrenheit(const bool on);
+
142  bool getUseFahrenheit(void);
+
143  void setFan(const uint8_t speed);
+
144  uint8_t getFan(void);
+
145  void setMode(const uint8_t new_mode);
+
146  uint8_t getMode(void);
+
147  void setLight(const bool on);
+
148  bool getLight(void);
+
149  void setXFan(const bool on);
+
150  bool getXFan(void);
+
151  void setSleep(const bool on);
+
152  bool getSleep(void);
+
153  void setTurbo(const bool on);
+
154  bool getTurbo(void);
+
155  void setIFeel(const bool on);
+
156  bool getIFeel(void);
+
157  void setWiFi(const bool on);
+
158  bool getWiFi(void);
+
159  void setSwingVertical(const bool automatic, const uint8_t position);
+
160  bool getSwingVerticalAuto(void);
+
161  uint8_t getSwingVerticalPosition(void);
+
162  uint16_t getTimer(void);
+
163  void setTimer(const uint16_t minutes);
+
164  void setDisplayTempSource(const uint8_t mode);
+
165  uint8_t getDisplayTempSource(void);
+
166  uint8_t convertMode(const stdAc::opmode_t mode);
+
167  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
168  uint8_t convertSwingV(const stdAc::swingv_t swingv);
+
169  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
170  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
171  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
172  stdAc::state_t toCommon(void);
+
173  uint8_t* getRaw(void);
+
174  void setRaw(const uint8_t new_code[]);
+
175  static bool validChecksum(const uint8_t state[],
+
176  const uint16_t length = kGreeStateLength);
+
177  String toString(void);
+
178 #ifndef UNIT_TEST
+
179 
+
180  private:
+ +
182 #else // UNIT_TEST
+
183  IRsendTest _irsend;
+
185 #endif // UNIT_TEST
+ + +
189  void checksum(const uint16_t length = kGreeStateLength);
+
190  void fixup(void);
+
191  void setTimerEnabled(const bool on);
+
192  bool getTimerEnabled(void);
+
193 };
+
194 
+
195 #endif // IR_GREE_H_
+
+
void setSwingVertical(const bool automatic, const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition: ir_Gree.cpp:395
+
const uint8_t kGreeTimerTensHrSize
Definition: ir_Gree.h:58
+
const uint16_t kGreeStateLength
Definition: IRremoteESP8266.h:883
+
uint8_t getTemp(void)
Get the set temperature.
Definition: ir_Gree.cpp:269
+
const uint8_t kGreeIFeelOffset
Definition: ir_Gree.h:86
+
const uint8_t kGreeXfanOffset
Definition: ir_Gree.h:68
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Gree.cpp:220
+
const uint8_t kGreeSwingUp
Definition: ir_Gree.h:76
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kGreeStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Gree.cpp:181
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Gree.cpp:609
+
const uint8_t kGreeFanSize
Definition: ir_Gree.h:42
+
void off(void)
Change the power setting to Off.
Definition: ir_Gree.cpp:205
+
uint16_t getTimer(void)
Get the timer time value from the A/C.
Definition: ir_Gree.cpp:449
+
const uint8_t kGreeFan
Definition: ir_Gree.h:36
+
void setXFan(const bool on)
Set the XFan (Mould) setting of the A/C.
Definition: ir_Gree.cpp:358
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Gree.cpp:542
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Gree.cpp:501
+
const uint8_t kGreeDry
Definition: ir_Gree.h:35
+
const uint8_t kGreeFanMax
Definition: ir_Gree.h:46
+
const uint8_t kGreeSleepOffset
Definition: ir_Gree.h:48
+
const uint8_t kGreeMaxTempF
Definition: ir_Gree.h:55
+
void setMode(const uint8_t new_mode)
Set the operating mode of the A/C.
Definition: ir_Gree.cpp:298
+
gree_ac_remote_model_t getModel(void)
Get/Detect the model of the A/C.
Definition: ir_Gree.cpp:199
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Gree.cpp:580
+
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:129
+
void send(const uint16_t repeat=kGreeDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Gree.cpp:143
+
const uint8_t kGreeSwingUpAuto
Definition: ir_Gree.h:83
+
const uint8_t kGreeDisplayTempOutside
Definition: ir_Gree.h:92
+
void fixup(void)
Fix up the internal state so it is correct.
Definition: ir_Gree.cpp:132
+
const uint8_t kGreeSwingDownAuto
Definition: ir_Gree.h:81
+
const uint8_t kGreeSwingSize
Definition: ir_Gree.h:73
+ +
void setPower(const bool on)
Change the power setting.
Definition: ir_Gree.cpp:210
+
bool getUseFahrenheit(void)
Get the default temperature units in use.
Definition: ir_Gree.cpp:234
+
const uint8_t kGreeTimerTensHrOffset
Definition: ir_Gree.h:57
+
void setTimerEnabled(const bool on)
Set the timer enable setting of the A/C.
Definition: ir_Gree.cpp:437
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Gree.cpp:151
+
bool getSwingVerticalAuto(void)
Get the Vertical Swing Automatic mode setting of the A/C.
Definition: ir_Gree.cpp:425
+
bool getLight(void)
Get the Light (LED) setting of the A/C.
Definition: ir_Gree.cpp:328
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kGreeSwingAutoOffset
Definition: ir_Gree.h:47
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kGreeDisplayTempSet
Definition: ir_Gree.h:90
+
const uint8_t kGreeTempOffset
Definition: ir_Gree.h:50
+
const uint8_t kGreeSwingMiddleDown
Definition: ir_Gree.h:79
+
IRGreeAC(const uint16_t pin, const gree_ac_remote_model_t model=gree_ac_remote_model_t::YAW1F, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Gree.cpp:112
+
const uint8_t kGreeFanMed
Definition: ir_Gree.h:45
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Gree.cpp:376
+ +
const uint8_t kGreeSwingMiddleAuto
Definition: ir_Gree.h:82
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Gree.cpp:514
+
const uint8_t kGreeHeat
Definition: ir_Gree.h:37
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Gree.cpp:370
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Gree.cpp:138
+
const uint16_t kGreeTimerMax
Definition: ir_Gree.h:59
+
@ YAW1F
Definition: IRsend.h:130
+
const uint8_t kGreeMaxTempC
Definition: ir_Gree.h:53
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Gree.h:130
+
uint8_t getSwingVerticalPosition(void)
Get the Vertical Swing position setting of the A/C.
Definition: ir_Gree.cpp:431
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Gree.cpp:292
+
const uint8_t kGreeMinTempF
Definition: ir_Gree.h:54
+
const uint8_t kGreeTurboOffset
Definition: ir_Gree.h:64
+
const uint8_t kGreeDisplayTempOff
Definition: ir_Gree.h:89
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Gree.cpp:283
+
void setUseFahrenheit(const bool on)
Set the default temperature units to use.
Definition: ir_Gree.cpp:228
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Gree.cpp:555
+
const uint8_t kGreeTimerHoursOffset
Definition: ir_Gree.h:62
+
const uint8_t kGreePower1Offset
Definition: ir_Gree.h:40
+
const uint8_t kGreeTimerHalfHrOffset
Definition: ir_Gree.h:56
+
bool getIFeel(void)
Get the IFeel setting of the A/C.
Definition: ir_Gree.cpp:340
+
const uint8_t kGreeTimerHoursSize
Definition: ir_Gree.h:63
+
void checksum(const uint16_t length=kGreeStateLength)
Calculate and set the checksum values for the internal state.
Definition: ir_Gree.cpp:171
+
bool getTimerEnabled(void)
Get the timer enabled setting of the A/C.
Definition: ir_Gree.cpp:443
+
const uint8_t kGreeDisplayTempSize
Definition: ir_Gree.h:88
+
void setTimer(const uint16_t minutes)
Set the A/C's timer to turn off in X many minutes.
Definition: ir_Gree.cpp:461
+
void setModel(const gree_ac_remote_model_t model)
Set the model of the A/C to emulate.
Definition: ir_Gree.cpp:189
+
bool getTurbo(void)
Get the Turbo setting of the A/C.
Definition: ir_Gree.cpp:388
+
const uint8_t kGreeFanOffset
Definition: ir_Gree.h:41
+
const uint8_t kGreeAuto
Definition: ir_Gree.h:33
+
void setWiFi(const bool on)
Set the Wifi (enabled) setting of the A/C.
Definition: ir_Gree.cpp:346
+
uint8_t convertSwingV(const stdAc::swingv_t swingv)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Gree.cpp:528
+
void setIFeel(const bool on)
Set the IFeel setting of the A/C.
Definition: ir_Gree.cpp:334
+
const uint8_t kGreeSwingMiddleUp
Definition: ir_Gree.h:77
+
uint8_t remote_state[kGreeStateLength]
The state in native IR code form.
Definition: ir_Gree.h:187
+
uint8_t getDisplayTempSource(void)
Get the temperature display mode. i.e. Internal, External temperature sensing.
Definition: ir_Gree.cpp:493
+
const uint8_t kGreeFanMin
Definition: ir_Gree.h:44
+
const uint8_t kGreeCool
Definition: ir_Gree.h:34
+
const uint8_t kGreeSwingMiddle
Definition: ir_Gree.h:78
+
bool getXFan(void)
Get the XFan (Mould) setting of the A/C.
Definition: ir_Gree.cpp:364
+
const uint8_t kGreeSwingLastPos
Definition: ir_Gree.h:74
+
void setTemp(const uint8_t temp, const bool fahrenheit=false)
Set the temp. in degrees.
Definition: ir_Gree.cpp:244
+
gree_ac_remote_model_t _model
Definition: ir_Gree.h:188
+
const uint8_t kGreeWiFiOffset
Definition: ir_Gree.h:85
+
const uint8_t kGreeTimerEnabledOffset
Definition: ir_Gree.h:60
+
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition: ir_Gree.cpp:382
+
const uint8_t kGreeSwingDown
Definition: ir_Gree.h:80
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Gree.cpp:567
+
const uint8_t kGreeFanAuto
Definition: ir_Gree.h:43
+
const uint8_t kGreeUseFahrenheitOffset
Definition: ir_Gree.h:71
+
const uint8_t kGreeMinTempC
Definition: ir_Gree.h:52
+
const uint8_t kGreeTempSize
Definition: ir_Gree.h:51
+
void setDisplayTempSource(const uint8_t mode)
Set temperature display mode. i.e. Internal, External temperature sensing.
Definition: ir_Gree.cpp:486
+
const uint8_t kGreeSwingAuto
Definition: ir_Gree.h:75
+
Class for handling detailed Gree A/C messages.
Definition: ir_Gree.h:117
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Gree.cpp:316
+
const uint8_t kGreeTempExtraDegreeFOffset
Definition: ir_Gree.h:70
+
const uint8_t kGreeDisplayTempInside
Definition: ir_Gree.h:91
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Gree.cpp:120
+
const uint8_t kGreePower2Offset
Definition: ir_Gree.h:67
+
const uint8_t kGreeLightOffset
Definition: ir_Gree.h:65
+
bool getWiFi(void)
Get the Wifi (enabled) setting of the A/C.
Definition: ir_Gree.cpp:352
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Gree.cpp:158
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Gree.h:181
+
const uint8_t kGreeDisplayTempOffset
Definition: ir_Gree.h:87
+
void on(void)
Change the power setting to On.
Definition: ir_Gree.cpp:202
+
void setLight(const bool on)
Set the Light (LED) setting of the A/C.
Definition: ir_Gree.cpp:322
+
const uint16_t kGreeDefaultRepeat
Definition: IRremoteESP8266.h:885
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8cpp.html new file mode 100644 index 000000000..dd738e178 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8cpp.html @@ -0,0 +1,199 @@ + + + + + + + +IRremoteESP8266: src/ir_Haier.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Haier.cpp File Reference
+
+
+ +

Support for Haier A/C protocols. The specifics of reverse engineering the protocols details: +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kHaierAcHdr = 3000
 
const uint16_t kHaierAcHdrGap = 4300
 
const uint16_t kHaierAcBitMark = 520
 
const uint16_t kHaierAcOneSpace = 1650
 
const uint16_t kHaierAcZeroSpace = 650
 
const uint32_t kHaierAcMinGap = 150000
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kHaierAcBitMark

+ +
+
+ + + + +
const uint16_t kHaierAcBitMark = 520
+
+ +
+
+ +

◆ kHaierAcHdr

+ +
+
+ + + + +
const uint16_t kHaierAcHdr = 3000
+
+ +
+
+ +

◆ kHaierAcHdrGap

+ +
+
+ + + + +
const uint16_t kHaierAcHdrGap = 4300
+
+ +
+
+ +

◆ kHaierAcMinGap

+ +
+
+ + + + +
const uint32_t kHaierAcMinGap = 150000
+
+ +
+
+ +

◆ kHaierAcOneSpace

+ +
+
+ + + + +
const uint16_t kHaierAcOneSpace = 1650
+
+ +
+
+ +

◆ kHaierAcZeroSpace

+ +
+
+ + + + +
const uint16_t kHaierAcZeroSpace = 650
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h.html new file mode 100644 index 000000000..c13ae8eee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h.html @@ -0,0 +1,1363 @@ + + + + + + + +IRremoteESP8266: src/ir_Haier.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Haier.h File Reference
+
+
+ +

Support for Haier A/C protocols. The specifics of reverse engineering the protocols details: +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  IRHaierAC
 Class for handling detailed Haier A/C messages. More...
 
class  IRHaierACYRW02
 Class for handling detailed Haier ACYRW02 A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kHaierAcPrefix = 0b10100101
 
const uint8_t kHaierAcMinTemp = 16
 
const uint8_t kHaierAcDefTemp = 25
 
const uint8_t kHaierAcMaxTemp = 30
 
const uint8_t kHaierAcCmdOff = 0b0000
 
const uint8_t kHaierAcCmdOn = 0b0001
 
const uint8_t kHaierAcCmdMode = 0b0010
 
const uint8_t kHaierAcCmdFan = 0b0011
 
const uint8_t kHaierAcCmdTempUp = 0b0110
 
const uint8_t kHaierAcCmdTempDown = 0b0111
 
const uint8_t kHaierAcCmdSleep = 0b1000
 
const uint8_t kHaierAcCmdTimerSet = 0b1001
 
const uint8_t kHaierAcCmdTimerCancel = 0b1010
 
const uint8_t kHaierAcCmdHealth = 0b1100
 
const uint8_t kHaierAcCmdSwing = 0b1101
 
const uint8_t kHaierAcOffTimerOffset = 6
 
const uint8_t kHaierAcOnTimerOffset = 7
 
const uint8_t kHaierAcHealthBitOffset = 5
 
const uint8_t kHaierAcSwingOffset = 6
 
const uint8_t kHaierAcSwingSize = 2
 
const uint8_t kHaierAcSwingOff = 0b00
 
const uint8_t kHaierAcSwingUp = 0b01
 
const uint8_t kHaierAcSwingDown = 0b10
 
const uint8_t kHaierAcSwingChg = 0b11
 
const uint8_t kHaierAcModeOffset = 5
 
const uint8_t kHaierAcAuto = 0
 
const uint8_t kHaierAcCool = 1
 
const uint8_t kHaierAcDry = 2
 
const uint8_t kHaierAcHeat = 3
 
const uint8_t kHaierAcFan = 4
 
const uint8_t kHaierAcFanAuto = 0
 
const uint8_t kHaierAcFanLow = 1
 
const uint8_t kHaierAcFanMed = 2
 
const uint8_t kHaierAcFanHigh = 3
 
const uint8_t kHaierAcTimeOffset = 0
 
const uint8_t kHaierAcHoursSize = 5
 
const uint8_t kHaierAcMinsSize = 6
 
const uint16_t kHaierAcMaxTime = (23 * 60) + 59
 
const uint8_t kHaierAcSleepBitOffset = 6
 
const uint8_t kHaierAcSleepBit = 0b01000000
 
const uint8_t kHaierAcYrw02Prefix = 0xA6
 
const uint8_t kHaierAcYrw02SwingOff = 0x0
 
const uint8_t kHaierAcYrw02SwingTop = 0x1
 
const uint8_t kHaierAcYrw02SwingMiddle = 0x2
 
const uint8_t kHaierAcYrw02SwingBottom = 0x3
 
const uint8_t kHaierAcYrw02SwingDown = 0xA
 
const uint8_t kHaierAcYrw02SwingAuto = 0xC
 
const uint8_t kHaierAcYrw02HealthOffset = 1
 
const uint8_t kHaierAcYrw02PowerOffset = 6
 
const uint8_t kHaierAcYrw02Power = 0b01000000
 
const uint8_t kHaierAcYrw02FanOffset = 5
 
const uint8_t kHaierAcYrw02FanSize = 3
 
const uint8_t kHaierAcYrw02FanHigh = 0b001
 
const uint8_t kHaierAcYrw02FanMed = 0b010
 
const uint8_t kHaierAcYrw02FanLow = 0b011
 
const uint8_t kHaierAcYrw02FanAuto = 0b101
 
const uint8_t kHaierAcYrw02TurboOffset = 6
 
const uint8_t kHaierAcYrw02TurboSize = 2
 
const uint8_t kHaierAcYrw02TurboOff = 0x0
 
const uint8_t kHaierAcYrw02TurboHigh = 0x1
 
const uint8_t kHaierAcYrw02TurboLow = 0x2
 
const uint8_t kHaierAcYrw02ModeOffset = 5
 
const uint8_t kHaierAcYrw02Auto = 0b000
 
const uint8_t kHaierAcYrw02Cool = 0b001
 
const uint8_t kHaierAcYrw02Dry = 0b010
 
const uint8_t kHaierAcYrw02Heat = 0b100
 
const uint8_t kHaierAcYrw02Fan = 0b110
 
const uint8_t kHaierAcYrw02SleepOffset = 7
 
const uint8_t kHaierAcYrw02Sleep = 0b10000000
 
const uint8_t kHaierAcYrw02ButtonTempUp = 0x0
 
const uint8_t kHaierAcYrw02ButtonTempDown = 0x1
 
const uint8_t kHaierAcYrw02ButtonSwing = 0x2
 
const uint8_t kHaierAcYrw02ButtonFan = 0x4
 
const uint8_t kHaierAcYrw02ButtonPower = 0x5
 
const uint8_t kHaierAcYrw02ButtonMode = 0x6
 
const uint8_t kHaierAcYrw02ButtonHealth = 0x7
 
const uint8_t kHaierAcYrw02ButtonTurbo = 0x8
 
const uint8_t kHaierAcYrw02ButtonSleep = 0xB
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kHaierAcAuto

+ +
+
+ + + + +
const uint8_t kHaierAcAuto = 0
+
+ +
+
+ +

◆ kHaierAcCmdFan

+ +
+
+ + + + +
const uint8_t kHaierAcCmdFan = 0b0011
+
+ +
+
+ +

◆ kHaierAcCmdHealth

+ +
+
+ + + + +
const uint8_t kHaierAcCmdHealth = 0b1100
+
+ +
+
+ +

◆ kHaierAcCmdMode

+ +
+
+ + + + +
const uint8_t kHaierAcCmdMode = 0b0010
+
+ +
+
+ +

◆ kHaierAcCmdOff

+ +
+
+ + + + +
const uint8_t kHaierAcCmdOff = 0b0000
+
+ +
+
+ +

◆ kHaierAcCmdOn

+ +
+
+ + + + +
const uint8_t kHaierAcCmdOn = 0b0001
+
+ +
+
+ +

◆ kHaierAcCmdSleep

+ +
+
+ + + + +
const uint8_t kHaierAcCmdSleep = 0b1000
+
+ +
+
+ +

◆ kHaierAcCmdSwing

+ +
+
+ + + + +
const uint8_t kHaierAcCmdSwing = 0b1101
+
+ +
+
+ +

◆ kHaierAcCmdTempDown

+ +
+
+ + + + +
const uint8_t kHaierAcCmdTempDown = 0b0111
+
+ +
+
+ +

◆ kHaierAcCmdTempUp

+ +
+
+ + + + +
const uint8_t kHaierAcCmdTempUp = 0b0110
+
+ +
+
+ +

◆ kHaierAcCmdTimerCancel

+ +
+
+ + + + +
const uint8_t kHaierAcCmdTimerCancel = 0b1010
+
+ +
+
+ +

◆ kHaierAcCmdTimerSet

+ +
+
+ + + + +
const uint8_t kHaierAcCmdTimerSet = 0b1001
+
+ +
+
+ +

◆ kHaierAcCool

+ +
+
+ + + + +
const uint8_t kHaierAcCool = 1
+
+ +
+
+ +

◆ kHaierAcDefTemp

+ +
+
+ + + + +
const uint8_t kHaierAcDefTemp = 25
+
+ +
+
+ +

◆ kHaierAcDry

+ +
+
+ + + + +
const uint8_t kHaierAcDry = 2
+
+ +
+
+ +

◆ kHaierAcFan

+ +
+
+ + + + +
const uint8_t kHaierAcFan = 4
+
+ +
+
+ +

◆ kHaierAcFanAuto

+ +
+
+ + + + +
const uint8_t kHaierAcFanAuto = 0
+
+ +
+
+ +

◆ kHaierAcFanHigh

+ +
+
+ + + + +
const uint8_t kHaierAcFanHigh = 3
+
+ +
+
+ +

◆ kHaierAcFanLow

+ +
+
+ + + + +
const uint8_t kHaierAcFanLow = 1
+
+ +
+
+ +

◆ kHaierAcFanMed

+ +
+
+ + + + +
const uint8_t kHaierAcFanMed = 2
+
+ +
+
+ +

◆ kHaierAcHealthBitOffset

+ +
+
+ + + + +
const uint8_t kHaierAcHealthBitOffset = 5
+
+ +
+
+ +

◆ kHaierAcHeat

+ +
+
+ + + + +
const uint8_t kHaierAcHeat = 3
+
+ +
+
+ +

◆ kHaierAcHoursSize

+ +
+
+ + + + +
const uint8_t kHaierAcHoursSize = 5
+
+ +
+
+ +

◆ kHaierAcMaxTemp

+ +
+
+ + + + +
const uint8_t kHaierAcMaxTemp = 30
+
+ +
+
+ +

◆ kHaierAcMaxTime

+ +
+
+ + + + +
const uint16_t kHaierAcMaxTime = (23 * 60) + 59
+
+ +
+
+ +

◆ kHaierAcMinsSize

+ +
+
+ + + + +
const uint8_t kHaierAcMinsSize = 6
+
+ +
+
+ +

◆ kHaierAcMinTemp

+ +
+
+ + + + +
const uint8_t kHaierAcMinTemp = 16
+
+ +
+
+ +

◆ kHaierAcModeOffset

+ +
+
+ + + + +
const uint8_t kHaierAcModeOffset = 5
+
+ +
+
+ +

◆ kHaierAcOffTimerOffset

+ +
+
+ + + + +
const uint8_t kHaierAcOffTimerOffset = 6
+
+ +
+
+ +

◆ kHaierAcOnTimerOffset

+ +
+
+ + + + +
const uint8_t kHaierAcOnTimerOffset = 7
+
+ +
+
+ +

◆ kHaierAcPrefix

+ +
+
+ + + + +
const uint8_t kHaierAcPrefix = 0b10100101
+
+ +
+
+ +

◆ kHaierAcSleepBit

+ +
+
+ + + + +
const uint8_t kHaierAcSleepBit = 0b01000000
+
+ +
+
+ +

◆ kHaierAcSleepBitOffset

+ +
+
+ + + + +
const uint8_t kHaierAcSleepBitOffset = 6
+
+ +
+
+ +

◆ kHaierAcSwingChg

+ +
+
+ + + + +
const uint8_t kHaierAcSwingChg = 0b11
+
+ +
+
+ +

◆ kHaierAcSwingDown

+ +
+
+ + + + +
const uint8_t kHaierAcSwingDown = 0b10
+
+ +
+
+ +

◆ kHaierAcSwingOff

+ +
+
+ + + + +
const uint8_t kHaierAcSwingOff = 0b00
+
+ +
+
+ +

◆ kHaierAcSwingOffset

+ +
+
+ + + + +
const uint8_t kHaierAcSwingOffset = 6
+
+ +
+
+ +

◆ kHaierAcSwingSize

+ +
+
+ + + + +
const uint8_t kHaierAcSwingSize = 2
+
+ +
+
+ +

◆ kHaierAcSwingUp

+ +
+
+ + + + +
const uint8_t kHaierAcSwingUp = 0b01
+
+ +
+
+ +

◆ kHaierAcTimeOffset

+ +
+
+ + + + +
const uint8_t kHaierAcTimeOffset = 0
+
+ +
+
+ +

◆ kHaierAcYrw02Auto

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Auto = 0b000
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonFan

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonFan = 0x4
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonHealth

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonHealth = 0x7
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonMode

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonMode = 0x6
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonPower

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonPower = 0x5
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonSleep

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonSleep = 0xB
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonSwing

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonSwing = 0x2
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonTempDown

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonTempDown = 0x1
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonTempUp

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonTempUp = 0x0
+
+ +
+
+ +

◆ kHaierAcYrw02ButtonTurbo

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ButtonTurbo = 0x8
+
+ +
+
+ +

◆ kHaierAcYrw02Cool

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Cool = 0b001
+
+ +
+
+ +

◆ kHaierAcYrw02Dry

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Dry = 0b010
+
+ +
+
+ +

◆ kHaierAcYrw02Fan

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Fan = 0b110
+
+ +
+
+ +

◆ kHaierAcYrw02FanAuto

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02FanAuto = 0b101
+
+ +
+
+ +

◆ kHaierAcYrw02FanHigh

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02FanHigh = 0b001
+
+ +
+
+ +

◆ kHaierAcYrw02FanLow

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02FanLow = 0b011
+
+ +
+
+ +

◆ kHaierAcYrw02FanMed

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02FanMed = 0b010
+
+ +
+
+ +

◆ kHaierAcYrw02FanOffset

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02FanOffset = 5
+
+ +
+
+ +

◆ kHaierAcYrw02FanSize

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02FanSize = 3
+
+ +
+
+ +

◆ kHaierAcYrw02HealthOffset

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02HealthOffset = 1
+
+ +
+
+ +

◆ kHaierAcYrw02Heat

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Heat = 0b100
+
+ +
+
+ +

◆ kHaierAcYrw02ModeOffset

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02ModeOffset = 5
+
+ +
+
+ +

◆ kHaierAcYrw02Power

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Power = 0b01000000
+
+ +
+
+ +

◆ kHaierAcYrw02PowerOffset

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02PowerOffset = 6
+
+ +
+
+ +

◆ kHaierAcYrw02Prefix

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Prefix = 0xA6
+
+ +
+
+ +

◆ kHaierAcYrw02Sleep

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02Sleep = 0b10000000
+
+ +
+
+ +

◆ kHaierAcYrw02SleepOffset

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02SleepOffset = 7
+
+ +
+
+ +

◆ kHaierAcYrw02SwingAuto

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02SwingAuto = 0xC
+
+ +
+
+ +

◆ kHaierAcYrw02SwingBottom

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02SwingBottom = 0x3
+
+ +
+
+ +

◆ kHaierAcYrw02SwingDown

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02SwingDown = 0xA
+
+ +
+
+ +

◆ kHaierAcYrw02SwingMiddle

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02SwingMiddle = 0x2
+
+ +
+
+ +

◆ kHaierAcYrw02SwingOff

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02SwingOff = 0x0
+
+ +
+
+ +

◆ kHaierAcYrw02SwingTop

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02SwingTop = 0x1
+
+ +
+
+ +

◆ kHaierAcYrw02TurboHigh

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02TurboHigh = 0x1
+
+ +
+
+ +

◆ kHaierAcYrw02TurboLow

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02TurboLow = 0x2
+
+ +
+
+ +

◆ kHaierAcYrw02TurboOff

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02TurboOff = 0x0
+
+ +
+
+ +

◆ kHaierAcYrw02TurboOffset

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02TurboOffset = 6
+
+ +
+
+ +

◆ kHaierAcYrw02TurboSize

+ +
+
+ + + + +
const uint8_t kHaierAcYrw02TurboSize = 2
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h_source.html new file mode 100644 index 000000000..2869def4a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Haier_8h_source.html @@ -0,0 +1,587 @@ + + + + + + + +IRremoteESP8266: src/ir_Haier.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Haier.h
+
+
+Go to the documentation of this file.
1 // Copyright 2018 crankyoldgit
+
11 
+
12 // Supports:
+
13 // Brand: Haier, Model: HSU07-HEA03 remote (HAIER_AC)
+
14 // Brand: Haier, Model: YR-W02 remote (HAIER_AC_YRW02)
+
15 // Brand: Haier, Model: HSU-09HMC203 A/C (HAIER_AC_YRW02)
+
16 
+
17 #ifndef IR_HAIER_H_
+
18 #define IR_HAIER_H_
+
19 
+
20 #ifndef UNIT_TEST
+
21 #include <Arduino.h>
+
22 #endif
+
23 #include "IRremoteESP8266.h"
+
24 #include "IRsend.h"
+
25 #ifdef UNIT_TEST
+
26 #include "IRsend_test.h"
+
27 #endif
+
28 
+
29 // Constants
+
30 
+
31 // Haier HSU07-HEA03 remote
+
32 // Byte 0
+
33 const uint8_t kHaierAcPrefix = 0b10100101;
+
34 
+
35 // Byte 1
+
36 const uint8_t kHaierAcMinTemp = 16;
+
37 const uint8_t kHaierAcDefTemp = 25;
+
38 const uint8_t kHaierAcMaxTemp = 30;
+
39 const uint8_t kHaierAcCmdOff = 0b0000;
+
40 const uint8_t kHaierAcCmdOn = 0b0001;
+
41 const uint8_t kHaierAcCmdMode = 0b0010;
+
42 const uint8_t kHaierAcCmdFan = 0b0011;
+
43 const uint8_t kHaierAcCmdTempUp = 0b0110;
+
44 const uint8_t kHaierAcCmdTempDown = 0b0111;
+
45 const uint8_t kHaierAcCmdSleep = 0b1000;
+
46 const uint8_t kHaierAcCmdTimerSet = 0b1001;
+
47 const uint8_t kHaierAcCmdTimerCancel = 0b1010;
+
48 const uint8_t kHaierAcCmdHealth = 0b1100;
+
49 const uint8_t kHaierAcCmdSwing = 0b1101;
+
50 
+
51 // Byte 2 (Clock Hours)
+
52 
+
53 // Byte 3 (Timer Flags & Clock Minutes)
+
54 const uint8_t kHaierAcOffTimerOffset = 6;
+
55 const uint8_t kHaierAcOnTimerOffset = 7;
+
56 
+
57 // Byte 4 (Health & Off Time Hours)
+
58 const uint8_t kHaierAcHealthBitOffset = 5;
+
59 
+
60 // Byte 5 (Swing & Off Time Mins)
+
61 const uint8_t kHaierAcSwingOffset = 6;
+
62 const uint8_t kHaierAcSwingSize = 2; // Bits
+
63 const uint8_t kHaierAcSwingOff = 0b00;
+
64 const uint8_t kHaierAcSwingUp = 0b01;
+
65 const uint8_t kHaierAcSwingDown = 0b10;
+
66 const uint8_t kHaierAcSwingChg = 0b11;
+
67 
+
68 // Byte 6 (Mode & On Time Hours)
+
69 const uint8_t kHaierAcModeOffset = 5;
+
70 const uint8_t kHaierAcAuto = 0;
+
71 const uint8_t kHaierAcCool = 1;
+
72 const uint8_t kHaierAcDry = 2;
+
73 const uint8_t kHaierAcHeat = 3;
+
74 const uint8_t kHaierAcFan = 4;
+
75 
+
76 const uint8_t kHaierAcFanAuto = 0;
+
77 const uint8_t kHaierAcFanLow = 1;
+
78 const uint8_t kHaierAcFanMed = 2;
+
79 const uint8_t kHaierAcFanHigh = 3;
+
80 
+
81 // Byte 7 (On Time Minutes)
+
82 
+
83 // Time
+
84 const uint8_t kHaierAcTimeOffset = 0; // Bits
+
85 const uint8_t kHaierAcHoursSize = 5; // Bits
+
86 const uint8_t kHaierAcMinsSize = 6; // Bits
+
87 
+
88 const uint16_t kHaierAcMaxTime = (23 * 60) + 59;
+
89 
+
90 // Byte 7
+
91 const uint8_t kHaierAcSleepBitOffset = 6;
+
92 const uint8_t kHaierAcSleepBit = 0b01000000;
+
93 
+
94 // Legacy Haier AC defines.
+
95 #define HAIER_AC_MIN_TEMP kHaierAcMinTemp
+
96 #define HAIER_AC_DEF_TEMP kHaierAcDefTemp
+
97 #define HAIER_AC_MAX_TEMP kHaierAcMaxTemp
+
98 #define HAIER_AC_CMD_OFF kHaierAcCmdOff
+
99 #define HAIER_AC_CMD_ON kHaierAcCmdOn
+
100 #define HAIER_AC_CMD_MODE kHaierAcCmdMode
+
101 #define HAIER_AC_CMD_FAN kHaierAcCmdFan
+
102 #define HAIER_AC_CMD_TEMP_UP kHaierAcCmdTempUp
+
103 #define HAIER_AC_CMD_TEMP_DOWN kHaierAcCmdTempDown
+
104 #define HAIER_AC_CMD_SLEEP kHaierAcCmdSleep
+
105 #define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet
+
106 #define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel
+
107 #define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth
+
108 #define HAIER_AC_CMD_SWING kHaierAcCmdSwing
+
109 #define HAIER_AC_SWING_OFF kHaierAcSwingOff
+
110 #define HAIER_AC_SWING_UP kHaierAcSwingUp
+
111 #define HAIER_AC_SWING_DOWN kHaierAcSwingDown
+
112 #define HAIER_AC_SWING_CHG kHaierAcSwingChg
+
113 #define HAIER_AC_AUTO kHaierAcAuto
+
114 #define HAIER_AC_COOL kHaierAcCool
+
115 #define HAIER_AC_DRY kHaierAcDry
+
116 #define HAIER_AC_HEAT kHaierAcHeat
+
117 #define HAIER_AC_FAN kHaierAcFan
+
118 #define HAIER_AC_FAN_AUTO kHaierAcFanAuto
+
119 #define HAIER_AC_FAN_LOW kHaierAcFanLow
+
120 #define HAIER_AC_FAN_MED kHaierAcFanMed
+
121 #define HAIER_AC_FAN_HIGH kHaierAcFanHigh
+
122 
+
123 // Haier YRW02 remote
+
124 // Byte 0
+
125 const uint8_t kHaierAcYrw02Prefix = 0xA6;
+
126 
+
127 // Byte 1
+
128 // High Nibble - Temperature
+
129 // 0x0 = 16DegC, ... 0xE = 30DegC
+
130 // Low Nibble - Swing
+
131 const uint8_t kHaierAcYrw02SwingOff = 0x0;
+
132 const uint8_t kHaierAcYrw02SwingTop = 0x1;
+
133 const uint8_t kHaierAcYrw02SwingMiddle = 0x2; // Not available in heat mode.
+
134 const uint8_t kHaierAcYrw02SwingBottom = 0x3; // Only available in heat mode.
+
135 const uint8_t kHaierAcYrw02SwingDown = 0xA;
+
136 const uint8_t kHaierAcYrw02SwingAuto = 0xC; // Airflow
+
137 
+
138 // Byte 3
+
139 const uint8_t kHaierAcYrw02HealthOffset = 1;
+
140 
+
141 // Byte 4
+
142 const uint8_t kHaierAcYrw02PowerOffset = 6;
+
143 const uint8_t kHaierAcYrw02Power = 0b01000000;
+
144 
+
145 // Byte 5
+
146 // Bits 0-3
+
147 const uint8_t kHaierAcYrw02FanOffset = 5;
+
148 const uint8_t kHaierAcYrw02FanSize = 3;
+
149 const uint8_t kHaierAcYrw02FanHigh = 0b001;
+
150 const uint8_t kHaierAcYrw02FanMed = 0b010;
+
151 const uint8_t kHaierAcYrw02FanLow = 0b011;
+
152 const uint8_t kHaierAcYrw02FanAuto = 0b101;
+
153 
+
154 // Byte 6
+
155 const uint8_t kHaierAcYrw02TurboOffset = 6;
+
156 const uint8_t kHaierAcYrw02TurboSize = 2;
+
157 const uint8_t kHaierAcYrw02TurboOff = 0x0;
+
158 const uint8_t kHaierAcYrw02TurboHigh = 0x1;
+
159 const uint8_t kHaierAcYrw02TurboLow = 0x2;
+
160 
+
161 // Byte 7
+
162 // Mode mask 0b11100000
+
163 const uint8_t kHaierAcYrw02ModeOffset = 5;
+
164 const uint8_t kHaierAcYrw02Auto = 0b000; // 0
+
165 const uint8_t kHaierAcYrw02Cool = 0b001; // 1
+
166 const uint8_t kHaierAcYrw02Dry = 0b010; // 2
+
167 const uint8_t kHaierAcYrw02Heat = 0b100; // 4
+
168 const uint8_t kHaierAcYrw02Fan = 0b110; // 5
+
169 
+
170 // Byte 8
+
171 const uint8_t kHaierAcYrw02SleepOffset = 7;
+
172 const uint8_t kHaierAcYrw02Sleep = 0b10000000;
+
173 
+
174 // Byte 12
+
175 // Bits 4-7
+
176 const uint8_t kHaierAcYrw02ButtonTempUp = 0x0;
+
177 const uint8_t kHaierAcYrw02ButtonTempDown = 0x1;
+
178 const uint8_t kHaierAcYrw02ButtonSwing = 0x2;
+
179 const uint8_t kHaierAcYrw02ButtonFan = 0x4;
+
180 const uint8_t kHaierAcYrw02ButtonPower = 0x5;
+
181 const uint8_t kHaierAcYrw02ButtonMode = 0x6;
+
182 const uint8_t kHaierAcYrw02ButtonHealth = 0x7;
+
183 const uint8_t kHaierAcYrw02ButtonTurbo = 0x8;
+
184 const uint8_t kHaierAcYrw02ButtonSleep = 0xB;
+
185 
+
186 // Legacy Haier YRW02 remote defines.
+
187 #define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff
+
188 #define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop
+
189 #define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle
+
190 #define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom
+
191 #define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown
+
192 #define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto
+
193 #define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh
+
194 #define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed
+
195 #define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow
+
196 #define HAIER_AC_YRW02_FAN_AUTO kHaierAcYrw02FanAuto
+
197 #define HAIER_AC_YRW02_TURBO_OFF kHaierAcYrw02TurboOff
+
198 #define HAIER_AC_YRW02_TURBO_HIGH kHaierAcYrw02TurboHigh
+
199 #define HAIER_AC_YRW02_TURBO_LOW kHaierAcYrw02TurboLow
+
200 #define HAIER_AC_YRW02_AUTO kHaierAcYrw02Auto
+
201 #define HAIER_AC_YRW02_COOL kHaierAcYrw02Cool
+
202 #define HAIER_AC_YRW02_DRY kHaierAcYrw02Dry
+
203 #define HAIER_AC_YRW02_HEAT kHaierAcYrw02Heat
+
204 #define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan
+
205 #define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp
+
206 #define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown
+
207 #define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing
+
208 #define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan
+
209 #define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower
+
210 #define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode
+
211 #define HAIER_AC_YRW02_BUTTON_HEALTH kHaierAcYrw02ButtonHealth
+
212 #define HAIER_AC_YRW02_BUTTON_TURBO kHaierAcYrw02ButtonTurbo
+
213 #define HAIER_AC_YRW02_BUTTON_SLEEP kHaierAcYrw02ButtonSleep
+
214 
+
215 // Classes
+
217 class IRHaierAC {
+
218  public:
+
219  explicit IRHaierAC(const uint16_t pin, const bool inverted = false,
+
220  const bool use_modulation = true);
+
221 #if SEND_HAIER_AC
+
222  void send(const uint16_t repeat = kHaierAcDefaultRepeat);
+
227  int8_t calibrate(void) { return _irsend.calibrate(); }
+
228 #endif // SEND_HAIER_AC
+
229  void begin(void);
+
230 
+
231  void setCommand(const uint8_t command);
+
232  uint8_t getCommand(void);
+
233 
+
234  void setTemp(const uint8_t temp);
+
235  uint8_t getTemp(void);
+
236 
+
237  void setFan(const uint8_t speed);
+
238  uint8_t getFan(void);
+
239 
+
240  uint8_t getMode(void);
+
241  void setMode(const uint8_t mode);
+
242 
+
243  bool getSleep(void);
+
244  void setSleep(const bool on);
+
245  bool getHealth(void);
+
246  void setHealth(const bool on);
+
247 
+
248  int16_t getOnTimer(void);
+
249  void setOnTimer(const uint16_t mins);
+
250  int16_t getOffTimer(void);
+
251  void setOffTimer(const uint16_t mins);
+
252  void cancelTimers(void);
+
253 
+
254  uint16_t getCurrTime(void);
+
255  void setCurrTime(const uint16_t mins);
+
256 
+
257  uint8_t getSwing(void);
+
258  void setSwing(const uint8_t state);
+
259 
+
260  uint8_t* getRaw(void);
+
261  void setRaw(const uint8_t new_code[]);
+
262  static bool validChecksum(uint8_t state[],
+
263  const uint16_t length = kHaierACStateLength);
+
264  uint8_t convertMode(const stdAc::opmode_t mode);
+
265  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
266  uint8_t convertSwingV(const stdAc::swingv_t position);
+
267  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
268  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
269  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
270  stdAc::state_t toCommon(void);
+
271  String toString(void);
+
272 #ifndef UNIT_TEST
+
273 
+
274  private:
+ +
276 #else // UNIT_TEST
+
277  IRsendTest _irsend;
+
279 #endif
+ +
282  void stateReset(void);
+
283  void checksum(void);
+
284  static uint16_t getTime(const uint8_t ptr[]);
+
285  static void setTime(uint8_t ptr[], const uint16_t nr_mins);
+
286 };
+
287 
+ +
290  public:
+
291  explicit IRHaierACYRW02(const uint16_t pin, const bool inverted = false,
+
292  const bool use_modulation = true);
+
293 #if SEND_HAIER_AC_YRW02
+
294  void send(const uint16_t repeat = kHaierAcYrw02DefaultRepeat);
+
299  int8_t calibrate(void) { return _irsend.calibrate(); }
+
300 #endif // SEND_HAIER_AC_YRW02
+
301  void begin(void);
+
302 
+
303  void setButton(const uint8_t button);
+
304  uint8_t getButton(void);
+
305 
+
306  void setTemp(const uint8_t temp);
+
307  uint8_t getTemp(void);
+
308 
+
309  void setFan(const uint8_t speed);
+
310  uint8_t getFan(void);
+
311 
+
312  uint8_t getMode(void);
+
313  void setMode(const uint8_t mode);
+
314 
+
315  bool getPower(void);
+
316  void setPower(const bool on);
+
317  void on(void);
+
318  void off(void);
+
319 
+
320  bool getSleep(void);
+
321  void setSleep(const bool on);
+
322  bool getHealth(void);
+
323  void setHealth(const bool on);
+
324 
+
325  uint8_t getTurbo(void);
+
326  void setTurbo(const uint8_t speed);
+
327 
+
328  uint8_t getSwing(void);
+
329  void setSwing(const uint8_t pos);
+
330 
+
331  uint8_t* getRaw(void);
+
332  void setRaw(const uint8_t new_code[]);
+
333  static bool validChecksum(uint8_t state[],
+
334  const uint16_t length = kHaierACYRW02StateLength);
+
335  uint8_t convertMode(const stdAc::opmode_t mode);
+
336  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
337  uint8_t convertSwingV(const stdAc::swingv_t position);
+
338  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
339  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
340  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
341  stdAc::state_t toCommon(void);
+
342  String toString(void);
+
343 #ifndef UNIT_TEST
+
344 
+
345  private:
+ +
347 #else // UNIT_TEST
+
348  IRsendTest _irsend;
+
350 #endif // UNIT_TEST
+ +
353  void stateReset(void);
+
354  void checksum(void);
+
355 };
+
356 #endif // IR_HAIER_H_
+
+
const uint8_t kHaierAcCmdFan
Definition: ir_Haier.h:42
+
const uint8_t kHaierAcFanHigh
Definition: ir_Haier.h:79
+
bool getHealth(void)
Get the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:674
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Haier.cpp:543
+
static void setTime(uint8_t ptr[], const uint16_t nr_mins)
Set the Time value at the given pointer.
Definition: ir_Haier.cpp:286
+
const uint16_t kHaierAcYrw02DefaultRepeat
Definition: IRremoteESP8266.h:891
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Haier.cpp:686
+
const uint8_t kHaierAcMinsSize
Definition: ir_Haier.h:86
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Haier.cpp:839
+
const uint8_t kHaierAcHealthBitOffset
Definition: ir_Haier.h:58
+
const uint8_t kHaierAcTimeOffset
Definition: ir_Haier.h:84
+
static uint16_t getTime(const uint8_t ptr[])
Get the Time value at the given pointer.
Definition: ir_Haier.cpp:254
+
const uint8_t kHaierAcYrw02ModeOffset
Definition: ir_Haier.h:163
+
const uint8_t kHaierAcYrw02Fan
Definition: ir_Haier.h:168
+
const uint16_t kHaierAcDefaultRepeat
Definition: IRremoteESP8266.h:888
+
const uint8_t kHaierAcYrw02FanMed
Definition: ir_Haier.h:150
+
const uint8_t kHaierAcSwingChg
Definition: ir_Haier.h:66
+
void setSwing(const uint8_t state)
Set the Vertical Swing mode of the A/C.
Definition: ir_Haier.cpp:329
+
const uint8_t kHaierAcAuto
Definition: ir_Haier.h:70
+
const uint8_t kHaierAcYrw02ButtonTurbo
Definition: ir_Haier.h:183
+
bool getHealth(void)
Get the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:235
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Haier.h:299
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Haier.h:346
+
const uint16_t kHaierACStateLength
Definition: IRremoteESP8266.h:886
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Haier.cpp:680
+
const uint8_t kHaierAcCmdTempDown
Definition: ir_Haier.h:44
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Haier.cpp:130
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Haier.cpp:108
+
const uint8_t kHaierAcCmdMode
Definition: ir_Haier.h:41
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kHaierAcYrw02ButtonHealth
Definition: ir_Haier.h:182
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Haier.cpp:161
+
void on(void)
Change the power setting to On.
Definition: ir_Haier.cpp:692
+
const uint8_t kHaierAcCmdSleep
Definition: ir_Haier.h:45
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Haier.cpp:358
+
const uint8_t kHaierAcYrw02PowerOffset
Definition: ir_Haier.h:142
+
const uint8_t kHaierAcYrw02TurboOffset
Definition: ir_Haier.h:155
+
int16_t getOffTimer(void)
Get the Off Timer value/setting of the A/C.
Definition: ir_Haier.cpp:271
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Haier.cpp:826
+
uint8_t remote_state[kHaierACYRW02StateLength]
The state in native form.
Definition: ir_Haier.h:352
+
const uint8_t kHaierAcYrw02Auto
Definition: ir_Haier.h:164
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Haier.cpp:123
+
const uint8_t kHaierAcCmdSwing
Definition: ir_Haier.h:49
+
const uint8_t kHaierAcYrw02Prefix
Definition: ir_Haier.h:125
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Haier.cpp:450
+
const uint8_t kHaierAcYrw02TurboSize
Definition: ir_Haier.h:156
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Haier.cpp:241
+
const uint8_t kHaierAcYrw02SwingTop
Definition: ir_Haier.h:132
+ +
const uint8_t kHaierAcCmdTimerSet
Definition: ir_Haier.h:46
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Haier.cpp:699
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Haier.cpp:188
+
const uint8_t kHaierAcCmdTempUp
Definition: ir_Haier.h:43
+
void cancelTimers(void)
Cancel/disable the On & Off timers.
Definition: ir_Haier.cpp:310
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Haier.cpp:569
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
uint8_t getTurbo(void)
Get the Turbo setting of the A/C.
Definition: ir_Haier.cpp:712
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Haier.h:275
+
void setSwing(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition: ir_Haier.cpp:761
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Haier.cpp:345
+
uint8_t getSwing(void)
Get the Vertical Swing position setting of the A/C.
Definition: ir_Haier.cpp:755
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kHaierAcFanLow
Definition: ir_Haier.h:77
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Haier.cpp:734
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kHaierAcYrw02Sleep
Definition: ir_Haier.h:172
+
const uint8_t kHaierAcYrw02ButtonSleep
Definition: ir_Haier.h:184
+
const uint8_t kHaierAcPrefix
Definition: ir_Haier.h:33
+
const uint16_t kHaierACYRW02StateLength
Definition: IRremoteESP8266.h:889
+
void setOnTimer(const uint16_t mins)
Set & enable the On Timer.
Definition: ir_Haier.cpp:295
+
const uint8_t kHaierAcSwingOff
Definition: ir_Haier.h:63
+
const uint8_t kHaierAcSwingDown
Definition: ir_Haier.h:65
+ +
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Haier.cpp:637
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Haier.cpp:864
+
const uint8_t kHaierAcYrw02FanHigh
Definition: ir_Haier.h:149
+
const uint8_t kHaierAcFan
Definition: ir_Haier.h:74
+
const uint8_t kHaierAcYrw02FanLow
Definition: ir_Haier.h:151
+
const uint8_t kHaierAcYrw02SwingAuto
Definition: ir_Haier.h:136
+
const uint8_t kHaierAcCool
Definition: ir_Haier.h:71
+
const uint8_t kHaierAcDefTemp
Definition: ir_Haier.h:37
+
uint8_t remote_state[kHaierACStateLength]
The state in native code form.
Definition: ir_Haier.h:281
+
const uint8_t kHaierAcYrw02SwingOff
Definition: ir_Haier.h:131
+
uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:372
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Haier.cpp:741
+
const uint8_t kHaierAcOffTimerOffset
Definition: ir_Haier.h:54
+
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:228
+
const uint8_t kHaierAcYrw02ButtonTempUp
Definition: ir_Haier.h:176
+
const uint8_t kHaierAcYrw02SleepOffset
Definition: ir_Haier.h:171
+
void off(void)
Change the power setting to Off.
Definition: ir_Haier.cpp:695
+
void setHealth(const bool on)
Set the Health (filter) setting of the A/C.
Definition: ir_Haier.cpp:667
+
const uint8_t kHaierAcMinTemp
Definition: ir_Haier.h:36
+
const uint8_t kHaierAcYrw02SwingDown
Definition: ir_Haier.h:135
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Haier.cpp:222
+
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Haier.cpp:102
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Haier.cpp:554
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Haier.cpp:248
+
const uint8_t kHaierAcCmdHealth
Definition: ir_Haier.h:48
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Haier.cpp:661
+
const uint8_t kHaierAcCmdOn
Definition: ir_Haier.h:40
+
const uint8_t kHaierAcYrw02SwingMiddle
Definition: ir_Haier.h:133
+
const uint8_t kHaierAcYrw02ButtonSwing
Definition: ir_Haier.h:178
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Haier.cpp:890
+
const uint8_t kHaierAcYrw02TurboLow
Definition: ir_Haier.h:159
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Haier.cpp:585
+
const uint8_t kHaierAcFanMed
Definition: ir_Haier.h:78
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Haier.cpp:705
+
const uint8_t kHaierAcYrw02TurboOff
Definition: ir_Haier.h:157
+
uint8_t getButton(void)
Get the Button/Command setting of the A/C.
Definition: ir_Haier.cpp:615
+
const uint8_t kHaierAcYrw02ButtonTempDown
Definition: ir_Haier.h:177
+
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:217
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Haier.cpp:643
+
const uint8_t kHaierAcYrw02FanOffset
Definition: ir_Haier.h:147
+
uint16_t getCurrTime(void)
Get the clock value of the A/C.
Definition: ir_Haier.cpp:281
+
const uint8_t kHaierAcSleepBitOffset
Definition: ir_Haier.h:91
+
void setOffTimer(const uint16_t mins)
Set & enable the Off Timer.
Definition: ir_Haier.cpp:303
+
const uint8_t kHaierAcYrw02FanAuto
Definition: ir_Haier.h:152
+
const uint8_t kHaierAcYrw02TurboHigh
Definition: ir_Haier.h:158
+
const uint8_t kHaierAcMaxTemp
Definition: ir_Haier.h:38
+
void send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Haier.cpp:548
+
void setButton(const uint8_t button)
Set the Button/Command setting of the A/C.
Definition: ir_Haier.cpp:598
+
const uint8_t kHaierAcYrw02ButtonFan
Definition: ir_Haier.h:179
+
const uint8_t kHaierAcYrw02Cool
Definition: ir_Haier.h:165
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Haier.cpp:387
+
void setRaw(const uint8_t new_code[])
Set the internal state from a valid code for this protocol.
Definition: ir_Haier.cpp:592
+
const uint8_t kHaierAcYrw02HealthOffset
Definition: ir_Haier.h:139
+
const uint8_t kHaierAcYrw02SwingBottom
Definition: ir_Haier.h:134
+
const uint8_t kHaierAcFanAuto
Definition: ir_Haier.h:76
+
uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:811
+
uint8_t getCommand(void)
Get the Command/Button setting of the A/C.
Definition: ir_Haier.cpp:155
+
const uint8_t kHaierAcYrw02Power
Definition: ir_Haier.h:143
+
const uint8_t kHaierAcCmdOff
Definition: ir_Haier.h:39
+
IRHaierACYRW02(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Haier.cpp:538
+
const uint8_t kHaierAcYrw02Heat
Definition: ir_Haier.h:167
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Haier.cpp:94
+
void setCommand(const uint8_t command)
Set the Command/Button setting of the A/C.
Definition: ir_Haier.cpp:136
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Haier.h:227
+
const uint8_t kHaierAcSleepBit
Definition: ir_Haier.h:92
+
const uint8_t kHaierAcDry
Definition: ir_Haier.h:72
+
const uint8_t kHaierAcOnTimerOffset
Definition: ir_Haier.h:55
+
static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Haier.cpp:563
+
const uint8_t kHaierAcSwingUp
Definition: ir_Haier.h:64
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:412
+
const uint8_t kHaierAcYrw02ButtonMode
Definition: ir_Haier.h:181
+
const uint8_t kHaierAcHeat
Definition: ir_Haier.h:73
+
const uint8_t kHaierAcYrw02FanSize
Definition: ir_Haier.h:148
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Haier.cpp:198
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Haier.cpp:83
+
uint8_t getSwing(void)
Get the Vertical Swing position setting of the A/C.
Definition: ir_Haier.cpp:323
+
const uint16_t kHaierAcMaxTime
Definition: ir_Haier.h:88
+
void setCurrTime(const uint16_t mins)
Set the clock value for the A/C.
Definition: ir_Haier.cpp:317
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Haier.cpp:851
+
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:289
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Haier.cpp:177
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Haier.cpp:423
+
IRHaierAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Haier.cpp:78
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Haier.cpp:204
+
const uint8_t kHaierAcSwingOffset
Definition: ir_Haier.h:61
+
void setTurbo(const uint8_t speed)
Set the Turbo setting of the A/C.
Definition: ir_Haier.cpp:721
+
const uint8_t kHaierAcYrw02Dry
Definition: ir_Haier.h:166
+
const uint8_t kHaierAcModeOffset
Definition: ir_Haier.h:69
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Haier.cpp:784
+
const uint8_t kHaierAcHoursSize
Definition: ir_Haier.h:85
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Haier.cpp:400
+
const uint8_t kHaierAcYrw02ButtonPower
Definition: ir_Haier.h:180
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Haier.cpp:621
+
int16_t getOnTimer(void)
Get the On Timer value/setting of the A/C.
Definition: ir_Haier.cpp:261
+
const uint8_t kHaierAcSwingSize
Definition: ir_Haier.h:62
+
const uint8_t kHaierAcCmdTimerCancel
Definition: ir_Haier.h:47
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Haier.cpp:797
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+
void send(const uint16_t repeat=kHaierAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Haier.cpp:88
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8cpp.html new file mode 100644 index 000000000..705884418 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8cpp.html @@ -0,0 +1,423 @@ + + + + + + + +IRremoteESP8266: src/ir_Hitachi.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Hitachi.cpp File Reference
+
+
+ +

Support for Hitachi A/C protocols. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kHitachiAcHdrMark = 3300
 
const uint16_t kHitachiAcHdrSpace = 1700
 
const uint16_t kHitachiAc1HdrMark = 3400
 
const uint16_t kHitachiAc1HdrSpace = 3400
 
const uint16_t kHitachiAcBitMark = 400
 
const uint16_t kHitachiAcOneSpace = 1250
 
const uint16_t kHitachiAcZeroSpace = 500
 
const uint32_t kHitachiAcMinGap = kDefaultMessageGap
 
const uint16_t kHitachiAc424LdrMark = 29784
 
const uint16_t kHitachiAc424LdrSpace = 49290
 
const uint16_t kHitachiAc424HdrMark = 3416
 
const uint16_t kHitachiAc424HdrSpace = 1604
 
const uint16_t kHitachiAc424BitMark = 463
 
const uint16_t kHitachiAc424OneSpace = 1208
 
const uint16_t kHitachiAc424ZeroSpace = 372
 
const uint16_t kHitachiAc3HdrMark = 3400
 
const uint16_t kHitachiAc3HdrSpace = 1660
 
const uint16_t kHitachiAc3BitMark = 460
 
const uint16_t kHitachiAc3OneSpace = 1250
 
const uint16_t kHitachiAc3ZeroSpace = 410
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kHitachiAc1HdrMark

+ +
+
+ + + + +
const uint16_t kHitachiAc1HdrMark = 3400
+
+ +
+
+ +

◆ kHitachiAc1HdrSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc1HdrSpace = 3400
+
+ +
+
+ +

◆ kHitachiAc3BitMark

+ +
+
+ + + + +
const uint16_t kHitachiAc3BitMark = 460
+
+ +
+
+ +

◆ kHitachiAc3HdrMark

+ +
+
+ + + + +
const uint16_t kHitachiAc3HdrMark = 3400
+
+ +
+
+ +

◆ kHitachiAc3HdrSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc3HdrSpace = 1660
+
+ +
+
+ +

◆ kHitachiAc3OneSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc3OneSpace = 1250
+
+ +
+
+ +

◆ kHitachiAc3ZeroSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc3ZeroSpace = 410
+
+ +
+
+ +

◆ kHitachiAc424BitMark

+ +
+
+ + + + +
const uint16_t kHitachiAc424BitMark = 463
+
+ +
+
+ +

◆ kHitachiAc424HdrMark

+ +
+
+ + + + +
const uint16_t kHitachiAc424HdrMark = 3416
+
+ +
+
+ +

◆ kHitachiAc424HdrSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc424HdrSpace = 1604
+
+ +
+
+ +

◆ kHitachiAc424LdrMark

+ +
+
+ + + + +
const uint16_t kHitachiAc424LdrMark = 29784
+
+ +
+
+ +

◆ kHitachiAc424LdrSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc424LdrSpace = 49290
+
+ +
+
+ +

◆ kHitachiAc424OneSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc424OneSpace = 1208
+
+ +
+
+ +

◆ kHitachiAc424ZeroSpace

+ +
+
+ + + + +
const uint16_t kHitachiAc424ZeroSpace = 372
+
+ +
+
+ +

◆ kHitachiAcBitMark

+ +
+
+ + + + +
const uint16_t kHitachiAcBitMark = 400
+
+ +
+
+ +

◆ kHitachiAcHdrMark

+ +
+
+ + + + +
const uint16_t kHitachiAcHdrMark = 3300
+
+ +
+
+ +

◆ kHitachiAcHdrSpace

+ +
+
+ + + + +
const uint16_t kHitachiAcHdrSpace = 1700
+
+ +
+
+ +

◆ kHitachiAcMinGap

+ +
+
+ + + + +
const uint32_t kHitachiAcMinGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kHitachiAcOneSpace

+ +
+
+ + + + +
const uint16_t kHitachiAcOneSpace = 1250
+
+ +
+
+ +

◆ kHitachiAcZeroSpace

+ +
+
+ + + + +
const uint16_t kHitachiAcZeroSpace = 500
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h.html new file mode 100644 index 000000000..062ecdd3d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h.html @@ -0,0 +1,2028 @@ + + + + + + + +IRremoteESP8266: src/ir_Hitachi.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Hitachi.h File Reference
+
+
+ +

Support for Hitachi A/C protocols. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + +

+Classes

class  IRHitachiAc
 Class for handling detailed Hitachi 224-bit A/C messages. More...
 
class  IRHitachiAc1
 Class for handling detailed Hitachi 104-bit A/C messages. More...
 
class  IRHitachiAc424
 Class for handling detailed Hitachi 53-byte/424-bit A/C messages. More...
 
class  IRHitachiAc3
 Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages. More...
 
class  IRHitachiAc344
 Class for handling detailed Hitachi 344-bit A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kHitachiAcFreq = 38000
 
const uint8_t kHitachiAcAuto = 2
 
const uint8_t kHitachiAcHeat = 3
 
const uint8_t kHitachiAcCool = 4
 
const uint8_t kHitachiAcDry = 5
 
const uint8_t kHitachiAcFan = 0xC
 
const uint8_t kHitachiAcFanAuto = 1
 
const uint8_t kHitachiAcFanLow = 2
 
const uint8_t kHitachiAcFanMed = 3
 
const uint8_t kHitachiAcFanHigh = 5
 
const uint8_t kHitachiAcMinTemp = 16
 
const uint8_t kHitachiAcMaxTemp = 32
 
const uint8_t kHitachiAcAutoTemp = 23
 
const uint8_t kHitachiAcPowerOffset = 0
 
const uint8_t kHitachiAcSwingOffset = 7
 
const uint8_t kHitachiAc424ButtonByte = 11
 
const uint8_t kHitachiAc424ButtonPowerMode = 0x13
 
const uint8_t kHitachiAc424ButtonFan = 0x42
 
const uint8_t kHitachiAc424ButtonTempDown = 0x43
 
const uint8_t kHitachiAc424ButtonTempUp = 0x44
 
const uint8_t kHitachiAc424ButtonSwingV = 0x81
 
const uint8_t kHitachiAc424ButtonSwingH = 0x8C
 
const uint8_t kHitachiAc344ButtonPowerMode = kHitachiAc424ButtonPowerMode
 
const uint8_t kHitachiAc344ButtonFan = kHitachiAc424ButtonFan
 
const uint8_t kHitachiAc344ButtonTempDown = kHitachiAc424ButtonTempDown
 
const uint8_t kHitachiAc344ButtonTempUp = kHitachiAc424ButtonTempUp
 
const uint8_t kHitachiAc344ButtonSwingV = kHitachiAc424ButtonSwingV
 
const uint8_t kHitachiAc344ButtonSwingH = kHitachiAc424ButtonSwingH
 
const uint8_t kHitachiAc424TempByte = 13
 
const uint8_t kHitachiAc424TempOffset = 2
 
const uint8_t kHitachiAc424TempSize = 6
 
const uint8_t kHitachiAc424MinTemp = 16
 
const uint8_t kHitachiAc424MaxTemp = 32
 
const uint8_t kHitachiAc344MinTemp = kHitachiAc424MinTemp
 
const uint8_t kHitachiAc344MaxTemp = kHitachiAc424MaxTemp
 
const uint8_t kHitachiAc424FanTemp = 27
 
const uint8_t kHitachiAc424ModeByte = 25
 
const uint8_t kHitachiAc424Fan = 1
 
const uint8_t kHitachiAc424Cool = 3
 
const uint8_t kHitachiAc424Dry = 5
 
const uint8_t kHitachiAc424Heat = 6
 
const uint8_t kHitachiAc344Fan = kHitachiAc424Fan
 
const uint8_t kHitachiAc344Cool = kHitachiAc424Cool
 
const uint8_t kHitachiAc344Dry = kHitachiAc424Dry
 
const uint8_t kHitachiAc344Heat = kHitachiAc424Heat
 
const uint8_t kHitachiAc424FanByte = kHitachiAc424ModeByte
 
const uint8_t kHitachiAc424FanMin = 1
 
const uint8_t kHitachiAc424FanLow = 2
 
const uint8_t kHitachiAc424FanMedium = 3
 
const uint8_t kHitachiAc424FanHigh = 4
 
const uint8_t kHitachiAc424FanAuto = 5
 
const uint8_t kHitachiAc424FanMax = 6
 
const uint8_t kHitachiAc424FanMaxDry = 2
 
const uint8_t kHitachiAc344FanMin = kHitachiAc424FanMin
 
const uint8_t kHitachiAc344FanLow = kHitachiAc424FanLow
 
const uint8_t kHitachiAc344FanMedium = kHitachiAc424FanMedium
 
const uint8_t kHitachiAc344FanHigh = kHitachiAc424FanHigh
 
const uint8_t kHitachiAc344FanAuto = kHitachiAc424FanAuto
 
const uint8_t kHitachiAc344FanMax = kHitachiAc424FanMax
 
const uint8_t kHitachiAc424PowerByte = 27
 
const uint8_t kHitachiAc424PowerOn = 0xF1
 
const uint8_t kHitachiAc424PowerOff = 0xE1
 
const uint8_t kHitachiAc344SwingHByte = 35
 
const uint8_t kHitachiAc344SwingHOffset = 0
 
const uint8_t kHitachiAc344SwingHSize = 3
 
const uint8_t kHitachiAc344SwingHAuto = 0
 
const uint8_t kHitachiAc344SwingHRightMax = 1
 
const uint8_t kHitachiAc344SwingHRight = 2
 
const uint8_t kHitachiAc344SwingHMiddle = 3
 
const uint8_t kHitachiAc344SwingHLeft = 4
 
const uint8_t kHitachiAc344SwingHLeftMax = 5
 
const uint8_t kHitachiAc344SwingVByte = 37
 
const uint8_t kHitachiAc344SwingVOffset = 5
 
const uint8_t kHitachiAc1ModelByte = 3
 
const uint8_t kHitachiAc1ModelOffset = 6
 
const uint8_t kHitachiAc1Model_A = 0b10
 
const uint8_t kHitachiAc1Model_B = 0b01
 
const uint8_t kHitachiAc1ModelSize = 2
 
const uint8_t kHitachiAc1ModeByte = 5
 
const uint8_t kHitachiAc1ModeOffset = 4
 
const uint8_t kHitachiAc1ModeSize = 4
 
const uint8_t kHitachiAc1Dry = 0b0010
 
const uint8_t kHitachiAc1Fan = 0b0100
 
const uint8_t kHitachiAc1Cool = 0b0110
 
const uint8_t kHitachiAc1Heat = 0b1001
 
const uint8_t kHitachiAc1Auto = 0b1110
 
const uint8_t kHitachiAc1FanByte = kHitachiAc1ModeByte
 
const uint8_t kHitachiAc1FanOffset = 0
 
const uint8_t kHitachiAc1FanSize = 4
 
const uint8_t kHitachiAc1FanAuto = 1
 
const uint8_t kHitachiAc1FanHigh = 2
 
const uint8_t kHitachiAc1FanMed = 4
 
const uint8_t kHitachiAc1FanLow = 8
 
const uint8_t kHitachiAc1TempByte = 6
 
const uint8_t kHitachiAc1TempOffset = 2
 
const uint8_t kHitachiAc1TempSize = 5
 
const uint8_t kHitachiAc1TempDelta = 7
 
const uint8_t kHitachiAc1TempAuto = 25
 
const uint8_t kHitachiAc1TimerSize = 16
 
const uint8_t kHitachiAc1OffTimerLowByte = 7
 
const uint8_t kHitachiAc1OffTimerHighByte = 8
 
const uint8_t kHitachiAc1OnTimerLowByte = 9
 
const uint8_t kHitachiAc1OnTimerHighByte = 10
 
const uint8_t kHitachiAc1PowerByte = 11
 
const uint8_t kHitachiAc1PowerOffset = 5
 
const uint8_t kHitachiAc1PowerToggleOffset = 4
 
const uint8_t kHitachiAc1SwingByte = kHitachiAc1PowerByte
 
const uint8_t kHitachiAc1SwingHOffset = 7
 
const uint8_t kHitachiAc1SwingVOffset = 6
 
const uint8_t kHitachiAc1SwingToggleOffset = 0
 
const uint8_t kHitachiAc1SleepByte = kHitachiAc1PowerByte
 
const uint8_t kHitachiAc1SleepOffset = 1
 
const uint8_t kHitachiAc1SleepSize = 3
 
const uint8_t kHitachiAc1SleepOff = 0b000
 
const uint8_t kHitachiAc1Sleep1 = 0b001
 
const uint8_t kHitachiAc1Sleep2 = 0b010
 
const uint8_t kHitachiAc1Sleep3 = 0b011
 
const uint8_t kHitachiAc1Sleep4 = 0b100
 
const uint8_t kHitachiAc1ChecksumStartByte = 5
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kHitachiAc1Auto

+ +
+
+ + + + +
const uint8_t kHitachiAc1Auto = 0b1110
+
+ +
+
+ +

◆ kHitachiAc1ChecksumStartByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1ChecksumStartByte = 5
+
+ +
+
+ +

◆ kHitachiAc1Cool

+ +
+
+ + + + +
const uint8_t kHitachiAc1Cool = 0b0110
+
+ +
+
+ +

◆ kHitachiAc1Dry

+ +
+
+ + + + +
const uint8_t kHitachiAc1Dry = 0b0010
+
+ +
+
+ +

◆ kHitachiAc1Fan

+ +
+
+ + + + +
const uint8_t kHitachiAc1Fan = 0b0100
+
+ +
+
+ +

◆ kHitachiAc1FanAuto

+ +
+
+ + + + +
const uint8_t kHitachiAc1FanAuto = 1
+
+ +
+
+ +

◆ kHitachiAc1FanByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1FanByte = kHitachiAc1ModeByte
+
+ +
+
+ +

◆ kHitachiAc1FanHigh

+ +
+
+ + + + +
const uint8_t kHitachiAc1FanHigh = 2
+
+ +
+
+ +

◆ kHitachiAc1FanLow

+ +
+
+ + + + +
const uint8_t kHitachiAc1FanLow = 8
+
+ +
+
+ +

◆ kHitachiAc1FanMed

+ +
+
+ + + + +
const uint8_t kHitachiAc1FanMed = 4
+
+ +
+
+ +

◆ kHitachiAc1FanOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1FanOffset = 0
+
+ +
+
+ +

◆ kHitachiAc1FanSize

+ +
+
+ + + + +
const uint8_t kHitachiAc1FanSize = 4
+
+ +
+
+ +

◆ kHitachiAc1Heat

+ +
+
+ + + + +
const uint8_t kHitachiAc1Heat = 0b1001
+
+ +
+
+ +

◆ kHitachiAc1ModeByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1ModeByte = 5
+
+ +
+
+ +

◆ kHitachiAc1Model_A

+ +
+
+ + + + +
const uint8_t kHitachiAc1Model_A = 0b10
+
+ +
+
+ +

◆ kHitachiAc1Model_B

+ +
+
+ + + + +
const uint8_t kHitachiAc1Model_B = 0b01
+
+ +
+
+ +

◆ kHitachiAc1ModelByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1ModelByte = 3
+
+ +
+
+ +

◆ kHitachiAc1ModelOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1ModelOffset = 6
+
+ +
+
+ +

◆ kHitachiAc1ModelSize

+ +
+
+ + + + +
const uint8_t kHitachiAc1ModelSize = 2
+
+ +
+
+ +

◆ kHitachiAc1ModeOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1ModeOffset = 4
+
+ +
+
+ +

◆ kHitachiAc1ModeSize

+ +
+
+ + + + +
const uint8_t kHitachiAc1ModeSize = 4
+
+ +
+
+ +

◆ kHitachiAc1OffTimerHighByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1OffTimerHighByte = 8
+
+ +
+
+ +

◆ kHitachiAc1OffTimerLowByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1OffTimerLowByte = 7
+
+ +
+
+ +

◆ kHitachiAc1OnTimerHighByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1OnTimerHighByte = 10
+
+ +
+
+ +

◆ kHitachiAc1OnTimerLowByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1OnTimerLowByte = 9
+
+ +
+
+ +

◆ kHitachiAc1PowerByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1PowerByte = 11
+
+ +
+
+ +

◆ kHitachiAc1PowerOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1PowerOffset = 5
+
+ +
+
+ +

◆ kHitachiAc1PowerToggleOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1PowerToggleOffset = 4
+
+ +
+
+ +

◆ kHitachiAc1Sleep1

+ +
+
+ + + + +
const uint8_t kHitachiAc1Sleep1 = 0b001
+
+ +
+
+ +

◆ kHitachiAc1Sleep2

+ +
+
+ + + + +
const uint8_t kHitachiAc1Sleep2 = 0b010
+
+ +
+
+ +

◆ kHitachiAc1Sleep3

+ +
+
+ + + + +
const uint8_t kHitachiAc1Sleep3 = 0b011
+
+ +
+
+ +

◆ kHitachiAc1Sleep4

+ +
+
+ + + + +
const uint8_t kHitachiAc1Sleep4 = 0b100
+
+ +
+
+ +

◆ kHitachiAc1SleepByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1SleepByte = kHitachiAc1PowerByte
+
+ +
+
+ +

◆ kHitachiAc1SleepOff

+ +
+
+ + + + +
const uint8_t kHitachiAc1SleepOff = 0b000
+
+ +
+
+ +

◆ kHitachiAc1SleepOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1SleepOffset = 1
+
+ +
+
+ +

◆ kHitachiAc1SleepSize

+ +
+
+ + + + +
const uint8_t kHitachiAc1SleepSize = 3
+
+ +
+
+ +

◆ kHitachiAc1SwingByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1SwingByte = kHitachiAc1PowerByte
+
+ +
+
+ +

◆ kHitachiAc1SwingHOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1SwingHOffset = 7
+
+ +
+
+ +

◆ kHitachiAc1SwingToggleOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1SwingToggleOffset = 0
+
+ +
+
+ +

◆ kHitachiAc1SwingVOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1SwingVOffset = 6
+
+ +
+
+ +

◆ kHitachiAc1TempAuto

+ +
+
+ + + + +
const uint8_t kHitachiAc1TempAuto = 25
+
+ +
+
+ +

◆ kHitachiAc1TempByte

+ +
+
+ + + + +
const uint8_t kHitachiAc1TempByte = 6
+
+ +
+
+ +

◆ kHitachiAc1TempDelta

+ +
+
+ + + + +
const uint8_t kHitachiAc1TempDelta = 7
+
+ +
+
+ +

◆ kHitachiAc1TempOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc1TempOffset = 2
+
+ +
+
+ +

◆ kHitachiAc1TempSize

+ +
+
+ + + + +
const uint8_t kHitachiAc1TempSize = 5
+
+ +
+
+ +

◆ kHitachiAc1TimerSize

+ +
+
+ + + + +
const uint8_t kHitachiAc1TimerSize = 16
+
+ +
+
+ +

◆ kHitachiAc344ButtonFan

+ +
+
+ + + + +
const uint8_t kHitachiAc344ButtonFan = kHitachiAc424ButtonFan
+
+ +
+
+ +

◆ kHitachiAc344ButtonPowerMode

+ +
+
+ + + + +
const uint8_t kHitachiAc344ButtonPowerMode = kHitachiAc424ButtonPowerMode
+
+ +
+
+ +

◆ kHitachiAc344ButtonSwingH

+ +
+
+ + + + +
const uint8_t kHitachiAc344ButtonSwingH = kHitachiAc424ButtonSwingH
+
+ +
+
+ +

◆ kHitachiAc344ButtonSwingV

+ +
+
+ + + + +
const uint8_t kHitachiAc344ButtonSwingV = kHitachiAc424ButtonSwingV
+
+ +
+
+ +

◆ kHitachiAc344ButtonTempDown

+ +
+
+ + + + +
const uint8_t kHitachiAc344ButtonTempDown = kHitachiAc424ButtonTempDown
+
+ +
+
+ +

◆ kHitachiAc344ButtonTempUp

+ +
+
+ + + + +
const uint8_t kHitachiAc344ButtonTempUp = kHitachiAc424ButtonTempUp
+
+ +
+
+ +

◆ kHitachiAc344Cool

+ +
+
+ + + + +
const uint8_t kHitachiAc344Cool = kHitachiAc424Cool
+
+ +
+
+ +

◆ kHitachiAc344Dry

+ +
+
+ + + + +
const uint8_t kHitachiAc344Dry = kHitachiAc424Dry
+
+ +
+
+ +

◆ kHitachiAc344Fan

+ +
+
+ + + + +
const uint8_t kHitachiAc344Fan = kHitachiAc424Fan
+
+ +
+
+ +

◆ kHitachiAc344FanAuto

+ +
+
+ + + + +
const uint8_t kHitachiAc344FanAuto = kHitachiAc424FanAuto
+
+ +
+
+ +

◆ kHitachiAc344FanHigh

+ +
+
+ + + + +
const uint8_t kHitachiAc344FanHigh = kHitachiAc424FanHigh
+
+ +
+
+ +

◆ kHitachiAc344FanLow

+ +
+
+ + + + +
const uint8_t kHitachiAc344FanLow = kHitachiAc424FanLow
+
+ +
+
+ +

◆ kHitachiAc344FanMax

+ +
+
+ + + + +
const uint8_t kHitachiAc344FanMax = kHitachiAc424FanMax
+
+ +
+
+ +

◆ kHitachiAc344FanMedium

+ +
+
+ + + + +
const uint8_t kHitachiAc344FanMedium = kHitachiAc424FanMedium
+
+ +
+
+ +

◆ kHitachiAc344FanMin

+ +
+
+ + + + +
const uint8_t kHitachiAc344FanMin = kHitachiAc424FanMin
+
+ +
+
+ +

◆ kHitachiAc344Heat

+ +
+
+ + + + +
const uint8_t kHitachiAc344Heat = kHitachiAc424Heat
+
+ +
+
+ +

◆ kHitachiAc344MaxTemp

+ +
+
+ + + + +
const uint8_t kHitachiAc344MaxTemp = kHitachiAc424MaxTemp
+
+ +
+
+ +

◆ kHitachiAc344MinTemp

+ +
+
+ + + + +
const uint8_t kHitachiAc344MinTemp = kHitachiAc424MinTemp
+
+ +
+
+ +

◆ kHitachiAc344SwingHAuto

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHAuto = 0
+
+ +
+
+ +

◆ kHitachiAc344SwingHByte

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHByte = 35
+
+ +
+
+ +

◆ kHitachiAc344SwingHLeft

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHLeft = 4
+
+ +
+
+ +

◆ kHitachiAc344SwingHLeftMax

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHLeftMax = 5
+
+ +
+
+ +

◆ kHitachiAc344SwingHMiddle

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHMiddle = 3
+
+ +
+
+ +

◆ kHitachiAc344SwingHOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHOffset = 0
+
+ +
+
+ +

◆ kHitachiAc344SwingHRight

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHRight = 2
+
+ +
+
+ +

◆ kHitachiAc344SwingHRightMax

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHRightMax = 1
+
+ +
+
+ +

◆ kHitachiAc344SwingHSize

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingHSize = 3
+
+ +
+
+ +

◆ kHitachiAc344SwingVByte

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingVByte = 37
+
+ +
+
+ +

◆ kHitachiAc344SwingVOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc344SwingVOffset = 5
+
+ +
+
+ +

◆ kHitachiAc424ButtonByte

+ +
+
+ + + + +
const uint8_t kHitachiAc424ButtonByte = 11
+
+ +
+
+ +

◆ kHitachiAc424ButtonFan

+ +
+
+ + + + +
const uint8_t kHitachiAc424ButtonFan = 0x42
+
+ +
+
+ +

◆ kHitachiAc424ButtonPowerMode

+ +
+
+ + + + +
const uint8_t kHitachiAc424ButtonPowerMode = 0x13
+
+ +
+
+ +

◆ kHitachiAc424ButtonSwingH

+ +
+
+ + + + +
const uint8_t kHitachiAc424ButtonSwingH = 0x8C
+
+ +
+
+ +

◆ kHitachiAc424ButtonSwingV

+ +
+
+ + + + +
const uint8_t kHitachiAc424ButtonSwingV = 0x81
+
+ +
+
+ +

◆ kHitachiAc424ButtonTempDown

+ +
+
+ + + + +
const uint8_t kHitachiAc424ButtonTempDown = 0x43
+
+ +
+
+ +

◆ kHitachiAc424ButtonTempUp

+ +
+
+ + + + +
const uint8_t kHitachiAc424ButtonTempUp = 0x44
+
+ +
+
+ +

◆ kHitachiAc424Cool

+ +
+
+ + + + +
const uint8_t kHitachiAc424Cool = 3
+
+ +
+
+ +

◆ kHitachiAc424Dry

+ +
+
+ + + + +
const uint8_t kHitachiAc424Dry = 5
+
+ +
+
+ +

◆ kHitachiAc424Fan

+ +
+
+ + + + +
const uint8_t kHitachiAc424Fan = 1
+
+ +
+
+ +

◆ kHitachiAc424FanAuto

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanAuto = 5
+
+ +
+
+ +

◆ kHitachiAc424FanByte

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanByte = kHitachiAc424ModeByte
+
+ +
+
+ +

◆ kHitachiAc424FanHigh

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanHigh = 4
+
+ +
+
+ +

◆ kHitachiAc424FanLow

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanLow = 2
+
+ +
+
+ +

◆ kHitachiAc424FanMax

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanMax = 6
+
+ +
+
+ +

◆ kHitachiAc424FanMaxDry

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanMaxDry = 2
+
+ +
+
+ +

◆ kHitachiAc424FanMedium

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanMedium = 3
+
+ +
+
+ +

◆ kHitachiAc424FanMin

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanMin = 1
+
+ +
+
+ +

◆ kHitachiAc424FanTemp

+ +
+
+ + + + +
const uint8_t kHitachiAc424FanTemp = 27
+
+ +
+
+ +

◆ kHitachiAc424Heat

+ +
+
+ + + + +
const uint8_t kHitachiAc424Heat = 6
+
+ +
+
+ +

◆ kHitachiAc424MaxTemp

+ +
+
+ + + + +
const uint8_t kHitachiAc424MaxTemp = 32
+
+ +
+
+ +

◆ kHitachiAc424MinTemp

+ +
+
+ + + + +
const uint8_t kHitachiAc424MinTemp = 16
+
+ +
+
+ +

◆ kHitachiAc424ModeByte

+ +
+
+ + + + +
const uint8_t kHitachiAc424ModeByte = 25
+
+ +
+
+ +

◆ kHitachiAc424PowerByte

+ +
+
+ + + + +
const uint8_t kHitachiAc424PowerByte = 27
+
+ +
+
+ +

◆ kHitachiAc424PowerOff

+ +
+
+ + + + +
const uint8_t kHitachiAc424PowerOff = 0xE1
+
+ +
+
+ +

◆ kHitachiAc424PowerOn

+ +
+
+ + + + +
const uint8_t kHitachiAc424PowerOn = 0xF1
+
+ +
+
+ +

◆ kHitachiAc424TempByte

+ +
+
+ + + + +
const uint8_t kHitachiAc424TempByte = 13
+
+ +
+
+ +

◆ kHitachiAc424TempOffset

+ +
+
+ + + + +
const uint8_t kHitachiAc424TempOffset = 2
+
+ +
+
+ +

◆ kHitachiAc424TempSize

+ +
+
+ + + + +
const uint8_t kHitachiAc424TempSize = 6
+
+ +
+
+ +

◆ kHitachiAcAuto

+ +
+
+ + + + +
const uint8_t kHitachiAcAuto = 2
+
+ +
+
+ +

◆ kHitachiAcAutoTemp

+ +
+
+ + + + +
const uint8_t kHitachiAcAutoTemp = 23
+
+ +
+
+ +

◆ kHitachiAcCool

+ +
+
+ + + + +
const uint8_t kHitachiAcCool = 4
+
+ +
+
+ +

◆ kHitachiAcDry

+ +
+
+ + + + +
const uint8_t kHitachiAcDry = 5
+
+ +
+
+ +

◆ kHitachiAcFan

+ +
+
+ + + + +
const uint8_t kHitachiAcFan = 0xC
+
+ +
+
+ +

◆ kHitachiAcFanAuto

+ +
+
+ + + + +
const uint8_t kHitachiAcFanAuto = 1
+
+ +
+
+ +

◆ kHitachiAcFanHigh

+ +
+
+ + + + +
const uint8_t kHitachiAcFanHigh = 5
+
+ +
+
+ +

◆ kHitachiAcFanLow

+ +
+
+ + + + +
const uint8_t kHitachiAcFanLow = 2
+
+ +
+
+ +

◆ kHitachiAcFanMed

+ +
+
+ + + + +
const uint8_t kHitachiAcFanMed = 3
+
+ +
+
+ +

◆ kHitachiAcFreq

+ +
+
+ + + + +
const uint16_t kHitachiAcFreq = 38000
+
+ +
+
+ +

◆ kHitachiAcHeat

+ +
+
+ + + + +
const uint8_t kHitachiAcHeat = 3
+
+ +
+
+ +

◆ kHitachiAcMaxTemp

+ +
+
+ + + + +
const uint8_t kHitachiAcMaxTemp = 32
+
+ +
+
+ +

◆ kHitachiAcMinTemp

+ +
+
+ + + + +
const uint8_t kHitachiAcMinTemp = 16
+
+ +
+
+ +

◆ kHitachiAcPowerOffset

+ +
+
+ + + + +
const uint8_t kHitachiAcPowerOffset = 0
+
+ +
+
+ +

◆ kHitachiAcSwingOffset

+ +
+
+ + + + +
const uint8_t kHitachiAcSwingOffset = 7
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h_source.html new file mode 100644 index 000000000..66b330dd1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Hitachi_8h_source.html @@ -0,0 +1,734 @@ + + + + + + + +IRremoteESP8266: src/ir_Hitachi.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Hitachi.h
+
+
+Go to the documentation of this file.
1 // Copyright 2018-2020 David Conran
+
10 
+
11 // Supports:
+
12 // Brand: Hitachi, Model: RAS-35THA6 remote
+
13 // Brand: Hitachi, Model: LT0541-HTA remote (HITACHI_AC1)
+
14 // Brand: Hitachi, Model: Series VI A/C (Circa 2007) (HITACHI_AC1)
+
15 // Brand: Hitachi, Model: RAR-8P2 remote (HITACHI_AC424)
+
16 // Brand: Hitachi, Model: RAS-AJ25H A/C (HITACHI_AC424)
+
17 // Brand: Hitachi, Model: PC-LH3B (HITACHI_AC3)
+
18 // Brand: Hitachi, Model: KAZE-312KSDP A/C (HITACHI_AC1)
+
19 // Brand: Hitachi, Model: R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)
+
20 // Brand: Hitachi, Model: RAS-22NK A/C (HITACHI_AC344)
+
21 // Brand: Hitachi, Model: RF11T1 remote (HITACHI_AC344)
+
22 
+
23 #ifndef IR_HITACHI_H_
+
24 #define IR_HITACHI_H_
+
25 
+
26 #define __STDC_LIMIT_MACROS
+
27 #include <stdint.h>
+
28 #ifndef UNIT_TEST
+
29 #include <Arduino.h>
+
30 #endif
+
31 #include "IRremoteESP8266.h"
+
32 #include "IRsend.h"
+
33 #ifdef UNIT_TEST
+
34 #include "IRsend_test.h"
+
35 #endif
+
36 
+
37 // Constants
+
38 const uint16_t kHitachiAcFreq = 38000; // Hz.
+
39 const uint8_t kHitachiAcAuto = 2;
+
40 const uint8_t kHitachiAcHeat = 3;
+
41 const uint8_t kHitachiAcCool = 4;
+
42 const uint8_t kHitachiAcDry = 5;
+
43 const uint8_t kHitachiAcFan = 0xC;
+
44 const uint8_t kHitachiAcFanAuto = 1;
+
45 const uint8_t kHitachiAcFanLow = 2;
+
46 const uint8_t kHitachiAcFanMed = 3;
+
47 const uint8_t kHitachiAcFanHigh = 5;
+
48 const uint8_t kHitachiAcMinTemp = 16; // 16C
+
49 const uint8_t kHitachiAcMaxTemp = 32; // 32C
+
50 const uint8_t kHitachiAcAutoTemp = 23; // 23C
+
51 const uint8_t kHitachiAcPowerOffset = 0;
+
52 const uint8_t kHitachiAcSwingOffset = 7;
+
53 
+
54 // HitachiAc424 & HitachiAc344
+
55 // Byte[11]
+
56 const uint8_t kHitachiAc424ButtonByte = 11;
+
57 const uint8_t kHitachiAc424ButtonPowerMode = 0x13;
+
58 const uint8_t kHitachiAc424ButtonFan = 0x42;
+
59 const uint8_t kHitachiAc424ButtonTempDown = 0x43;
+
60 const uint8_t kHitachiAc424ButtonTempUp = 0x44;
+
61 const uint8_t kHitachiAc424ButtonSwingV = 0x81;
+
62 const uint8_t kHitachiAc424ButtonSwingH = 0x8C;
+ + + + + + +
69 
+
70 // Byte[13]
+
71 const uint8_t kHitachiAc424TempByte = 13;
+
72 const uint8_t kHitachiAc424TempOffset = 2;
+
73 const uint8_t kHitachiAc424TempSize = 6;
+
74 const uint8_t kHitachiAc424MinTemp = 16; // 16C
+
75 const uint8_t kHitachiAc424MaxTemp = 32; // 32C
+ + +
78 const uint8_t kHitachiAc424FanTemp = 27; // 27C
+
79 
+
80 // Byte[25]
+
81 const uint8_t kHitachiAc424ModeByte = 25;
+
82 const uint8_t kHitachiAc424Fan = 1;
+
83 const uint8_t kHitachiAc424Cool = 3;
+
84 const uint8_t kHitachiAc424Dry = 5;
+
85 const uint8_t kHitachiAc424Heat = 6;
+ + + + +
90 
+ +
92 const uint8_t kHitachiAc424FanMin = 1;
+
93 const uint8_t kHitachiAc424FanLow = 2;
+
94 const uint8_t kHitachiAc424FanMedium = 3;
+
95 const uint8_t kHitachiAc424FanHigh = 4;
+
96 const uint8_t kHitachiAc424FanAuto = 5;
+
97 const uint8_t kHitachiAc424FanMax = 6;
+
98 const uint8_t kHitachiAc424FanMaxDry = 2;
+ + + + + + +
105 
+
106 // Byte[27]
+
107 const uint8_t kHitachiAc424PowerByte = 27;
+
108 const uint8_t kHitachiAc424PowerOn = 0xF1;
+
109 const uint8_t kHitachiAc424PowerOff = 0xE1;
+
110 
+
111 // Byte[35]
+
112 const uint8_t kHitachiAc344SwingHByte = 35;
+
113 const uint8_t kHitachiAc344SwingHOffset = 0; // Mask 0b00000xxx
+
114 const uint8_t kHitachiAc344SwingHSize = 3; // Mask 0b00000xxx
+
115 const uint8_t kHitachiAc344SwingHAuto = 0; // 0b000
+
116 const uint8_t kHitachiAc344SwingHRightMax = 1; // 0b001
+
117 const uint8_t kHitachiAc344SwingHRight = 2; // 0b010
+
118 const uint8_t kHitachiAc344SwingHMiddle = 3; // 0b011
+
119 const uint8_t kHitachiAc344SwingHLeft = 4; // 0b100
+
120 const uint8_t kHitachiAc344SwingHLeftMax = 5; // 0b101
+
121 
+
122 // Byte[37]
+
123 const uint8_t kHitachiAc344SwingVByte = 37;
+
124 const uint8_t kHitachiAc344SwingVOffset = 5; // Mask 0b00x00000
+
125 
+
126 // HitachiAc1
+
127 // Byte[3] (Model)
+
128 const uint8_t kHitachiAc1ModelByte = 3;
+
129 const uint8_t kHitachiAc1ModelOffset = 6; // Mask 0b11000000
+
130 const uint8_t kHitachiAc1Model_A = 0b10;
+
131 const uint8_t kHitachiAc1Model_B = 0b01;
+
132 const uint8_t kHitachiAc1ModelSize = 2;
+
133 
+
134 // Byte[5] (Mode & Fan)
+
135 const uint8_t kHitachiAc1ModeByte = 5;
+
136 const uint8_t kHitachiAc1ModeOffset = 4;
+
137 const uint8_t kHitachiAc1ModeSize = 4; // Mask 0b11110000
+
138 const uint8_t kHitachiAc1Dry = 0b0010; // 2
+
139 const uint8_t kHitachiAc1Fan = 0b0100; // 4
+
140 const uint8_t kHitachiAc1Cool = 0b0110; // 6
+
141 const uint8_t kHitachiAc1Heat = 0b1001; // 9
+
142 const uint8_t kHitachiAc1Auto = 0b1110; // 14
+ +
144 const uint8_t kHitachiAc1FanOffset = 0;
+
145 const uint8_t kHitachiAc1FanSize = 4; // Mask 0b0001111
+
146 const uint8_t kHitachiAc1FanAuto = 1; // 0b0001
+
147 const uint8_t kHitachiAc1FanHigh = 2; // 0b0010
+
148 const uint8_t kHitachiAc1FanMed = 4; // 0b0100
+
149 const uint8_t kHitachiAc1FanLow = 8; // 0b1000
+
150 // Byte[6] (Temperature)
+
151 // Note: Temp is stored in LSB order.
+
152 const uint8_t kHitachiAc1TempByte = 6;
+
153 const uint8_t kHitachiAc1TempOffset = 2;
+
154 const uint8_t kHitachiAc1TempSize = 5; // Mask 0b01111100
+
155 const uint8_t kHitachiAc1TempDelta = 7;
+
156 const uint8_t kHitachiAc1TempAuto = 25; // Celsius
+
157 // Note: Timers are nr. of minutes & stored in LSB order.
+
158 // Byte[7-8] (Off Timer)
+
159 const uint8_t kHitachiAc1TimerSize = 16; // Mask 0b1111111111111111
+
160 const uint8_t kHitachiAc1OffTimerLowByte = 7;
+
161 const uint8_t kHitachiAc1OffTimerHighByte = 8;
+
162 // Byte[9-10] (On Timer)
+
163 const uint8_t kHitachiAc1OnTimerLowByte = 9;
+
164 const uint8_t kHitachiAc1OnTimerHighByte = 10;
+
165 // Byte[11] (Power/Swing/Sleep)
+
166 const uint8_t kHitachiAc1PowerByte = 11;
+
167 const uint8_t kHitachiAc1PowerOffset = 5; // Mask 0b00100000
+
168 const uint8_t kHitachiAc1PowerToggleOffset = 4; // Mask 0b00010000
+ +
170 const uint8_t kHitachiAc1SwingHOffset = 7; // Mask 0b10000000
+
171 const uint8_t kHitachiAc1SwingVOffset = 6; // Mask 0b01000000
+
172 const uint8_t kHitachiAc1SwingToggleOffset = 0; // Mask 0b00000001
+ +
174 const uint8_t kHitachiAc1SleepOffset = 1; // Mask 0b00001110
+
175 const uint8_t kHitachiAc1SleepSize = 3; // Mask 0b00001110
+
176 const uint8_t kHitachiAc1SleepOff = 0b000;
+
177 const uint8_t kHitachiAc1Sleep1 = 0b001;
+
178 const uint8_t kHitachiAc1Sleep2 = 0b010;
+
179 const uint8_t kHitachiAc1Sleep3 = 0b011;
+
180 const uint8_t kHitachiAc1Sleep4 = 0b100;
+
181 // Byte[12] (Checksum)
+ +
183 
+
184 
+
185 // Classes
+
188 class IRHitachiAc {
+
189  public:
+
190  explicit IRHitachiAc(const uint16_t pin, const bool inverted = false,
+
191  const bool use_modulation = true);
+
192  void stateReset(void);
+
193 #if SEND_HITACHI_AC
+
194  void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
+
199  int8_t calibrate(void) { return _irsend.calibrate(); }
+
200 #endif // SEND_HITACHI_AC
+
201  void begin(void);
+
202  void on(void);
+
203  void off(void);
+
204  void setPower(const bool on);
+
205  bool getPower(void);
+
206  void setTemp(const uint8_t temp);
+
207  uint8_t getTemp(void);
+
208  void setFan(const uint8_t speed);
+
209  uint8_t getFan(void);
+
210  void setMode(const uint8_t mode);
+
211  uint8_t getMode(void);
+
212  void setSwingVertical(const bool on);
+
213  bool getSwingVertical(void);
+
214  void setSwingHorizontal(const bool on);
+
215  bool getSwingHorizontal(void);
+
216  uint8_t* getRaw(void);
+
217  void setRaw(const uint8_t new_code[],
+
218  const uint16_t length = kHitachiAcStateLength);
+
219  static bool validChecksum(const uint8_t state[],
+
220  const uint16_t length = kHitachiAcStateLength);
+
221  static uint8_t calcChecksum(const uint8_t state[],
+
222  const uint16_t length = kHitachiAcStateLength);
+
223  uint8_t convertMode(const stdAc::opmode_t mode);
+
224  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
225  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
226  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
227  stdAc::state_t toCommon(void);
+
228  String toString(void);
+
229 #ifndef UNIT_TEST
+
230 
+
231  private:
+ +
233 #else // UNIT_TEST
+
234  IRsendTest _irsend;
+
236 #endif // UNIT_TEST
+ +
239  void checksum(const uint16_t length = kHitachiAcStateLength);
+
240  uint8_t _previoustemp;
+
241 };
+
242 
+ +
246  public:
+
247  explicit IRHitachiAc1(const uint16_t pin, const bool inverted = false,
+
248  const bool use_modulation = true);
+
249 
+
250  void stateReset(void);
+
251 #if SEND_HITACHI_AC1
+
252  void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
+
257  int8_t calibrate(void) { return _irsend.calibrate(); }
+
258 #endif // SEND_HITACHI_AC1
+
259  void begin(void);
+
260  void on(void);
+
261  void off(void);
+
262  void setModel(const hitachi_ac1_remote_model_t model);
+ +
264  void setPower(const bool on);
+
265  bool getPower(void);
+
266  void setPowerToggle(const bool on);
+
267  bool getPowerToggle(void);
+
268  void setTemp(const uint8_t temp);
+
269  uint8_t getTemp(void);
+
270  void setFan(const uint8_t speed, const bool force = false);
+
271  uint8_t getFan(void);
+
272  void setMode(const uint8_t mode);
+
273  uint8_t getMode(void);
+
274  void setSwingToggle(const bool toggle);
+
275  bool getSwingToggle(void);
+
276  void setSwingV(const bool on);
+
277  bool getSwingV(void);
+
278  void setSwingH(const bool on);
+
279  bool getSwingH(void);
+
280  void setSleep(const uint8_t mode);
+
281  uint8_t getSleep(void);
+
282  void setOnTimer(const uint16_t mins);
+
283  uint16_t getOnTimer(void);
+
284  void setOffTimer(const uint16_t mins);
+
285  uint16_t getOffTimer(void);
+
286  uint8_t* getRaw(void);
+
287  void setRaw(const uint8_t new_code[],
+
288  const uint16_t length = kHitachiAc1StateLength);
+
289  static bool validChecksum(const uint8_t state[],
+
290  const uint16_t length = kHitachiAc1StateLength);
+
291  static uint8_t calcChecksum(const uint8_t state[],
+
292  const uint16_t length = kHitachiAc1StateLength);
+
293  uint8_t convertMode(const stdAc::opmode_t mode);
+
294  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
295  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
296  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
297  stdAc::state_t toCommon(void);
+
298  String toString(void);
+
299 #ifndef UNIT_TEST
+
300 
+
301  private:
+ +
303 #else // UNIT_TEST
+
304  IRsendTest _irsend;
+
306 #endif // UNIT_TEST
+ +
309  void checksum(const uint16_t length = kHitachiAc1StateLength);
+
310 };
+
311 
+ +
314  friend class IRHitachiAc344;
+
315  public:
+
316  explicit IRHitachiAc424(const uint16_t pin, const bool inverted = false,
+
317  const bool use_modulation = true);
+
318  virtual void stateReset(void);
+
319 #if SEND_HITACHI_AC424
+
320  virtual void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
+
325  int8_t calibrate(void) { return _irsend.calibrate(); }
+
326 #endif // SEND_HITACHI_AC424
+
327  void begin(void);
+
328  void on(void);
+
329  void off(void);
+
330  void setPower(const bool on);
+
331  bool getPower(void);
+
332  void setTemp(const uint8_t temp, bool setPrevious = true);
+
333  uint8_t getTemp(void);
+
334  void setFan(const uint8_t speed);
+
335  uint8_t getFan(void);
+
336  uint8_t getButton(void);
+
337  void setButton(const uint8_t button);
+
338  void setSwingVToggle(const bool on);
+
339  bool getSwingVToggle(void);
+
340  void setMode(const uint8_t mode);
+
341  uint8_t getMode(void);
+
342  uint8_t* getRaw(void);
+
343  virtual void setRaw(const uint8_t new_code[],
+
344  const uint16_t length = kHitachiAc424StateLength);
+
345  uint8_t convertMode(const stdAc::opmode_t mode);
+
346  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
347  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
348  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
349  virtual stdAc::state_t toCommon(void);
+
350  String toString(void);
+
351 #ifndef UNIT_TEST
+
352 
+
353  private:
+ +
355 #else // UNIT_TEST
+
356  IRsendTest _irsend;
+
358 #endif // UNIT_TEST
+ +
361  void setInvertedStates(void);
+
362  String _toString(void);
+
363  uint8_t _previoustemp;
+
364 };
+
365 
+ +
368  public:
+
369  explicit IRHitachiAc3(const uint16_t pin, const bool inverted = false,
+
370  const bool use_modulation = true);
+
371 
+
372  void stateReset(void);
+
373 #if SEND_HITACHI_AC3
+
374  void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
+
379  int8_t calibrate(void) { return _irsend.calibrate(); }
+
380 #endif // SEND_HITACHI_AC3
+
381  void begin(void);
+
382  uint8_t getMode(void);
+
383  uint8_t* getRaw(void);
+
384  void setRaw(const uint8_t new_code[],
+
385  const uint16_t length = kHitachiAc3StateLength);
+
386  static bool hasInvertedStates(const uint8_t state[], const uint16_t length);
+
387 #ifndef UNIT_TEST
+
388 
+
389  private:
+ +
391 #else // UNIT_TEST
+
392  IRsendTest _irsend;
+
394 #endif // UNIT_TEST
+ +
397  void setInvertedStates(const uint16_t length = kHitachiAc3StateLength);
+
398 };
+
399 
+ +
402  public:
+
403  explicit IRHitachiAc344(const uint16_t pin, const bool inverted = false,
+
404  const bool use_modulation = true);
+
405  void stateReset(void);
+
406  void setRaw(const uint8_t new_code[],
+
407  const uint16_t length = kHitachiAc344StateLength);
+
408  stdAc::state_t toCommon(void);
+
409 #if SEND_HITACHI_AC344
+
410  void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
+
411 #endif // SEND_HITACHI_AC344
+
412  void setSwingV(const bool on);
+
413  bool getSwingV(void);
+
414  void setSwingH(const uint8_t position);
+
415  uint8_t getSwingH(void);
+
416  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
417  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
+
418  String toString(void);
+
419 };
+
420 #endif // IR_HITACHI_H_
+
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Hitachi.cpp:1585
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Hitachi.cpp:1087
+
uint8_t _previoustemp
Definition: ir_Hitachi.h:363
+
const uint8_t kHitachiAc424Fan
Definition: ir_Hitachi.h:82
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
Calculate the checksum for a given state.
Definition: ir_Hitachi.cpp:448
+
const uint8_t kHitachiAc1TempOffset
Definition: ir_Hitachi.h:153
+
const uint8_t kHitachiAc424ButtonByte
Definition: ir_Hitachi.h:56
+
const uint8_t kHitachiAc1Fan
Definition: ir_Hitachi.h:139
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Hitachi.cpp:1149
+
const uint8_t kHitachiAc344SwingHRightMax
Definition: ir_Hitachi.h:116
+
IRHitachiAc3(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Hitachi.cpp:1378
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Hitachi.cpp:1107
+
const uint8_t kHitachiAcMinTemp
Definition: ir_Hitachi.h:48
+
bool getSwingVertical(void)
Get the Vertical Swing setting of the A/C.
Definition: ir_Hitachi.cpp:298
+
const uint8_t kHitachiAc344SwingVOffset
Definition: ir_Hitachi.h:124
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Hitachi.cpp:363
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Hitachi.cpp:593
+
uint8_t getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Hitachi.cpp:690
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Hitachi.h:354
+
void setTemp(const uint8_t temp, bool setPrevious=true)
Set the temperature.
Definition: ir_Hitachi.cpp:1134
+
const uint8_t kHitachiAcMaxTemp
Definition: ir_Hitachi.h:49
+
void setSleep(const uint8_t mode)
Set the Sleep setting of the A/C.
Definition: ir_Hitachi.cpp:698
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Hitachi.cpp:138
+
const uint8_t kHitachiAc1PowerOffset
Definition: ir_Hitachi.h:167
+
void off(void)
Change the power setting to Off.
Definition: ir_Hitachi.cpp:1097
+
const uint8_t kHitachiAcAuto
Definition: ir_Hitachi.h:39
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Hitachi.h:390
+
bool getSwingToggle(void)
Get the Swing Toggle setting of the A/C.
Definition: ir_Hitachi.cpp:651
+
const uint8_t kHitachiAc344ButtonFan
Definition: ir_Hitachi.h:64
+
const uint8_t kHitachiAc1Model_A
Definition: ir_Hitachi.h:130
+
const uint8_t kHitachiAc344ButtonPowerMode
Definition: ir_Hitachi.h:63
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Hitachi.cpp:279
+
void setPowerToggle(const bool on)
Change the power toggle setting.
Definition: ir_Hitachi.cpp:548
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a standard A/C horizontal swing into its native setting.
Definition: ir_Hitachi.cpp:1558
+
void checksum(const uint16_t length=kHitachiAc1StateLength)
Calculate and set the checksum values for the internal state.
Definition: ir_Hitachi.cpp:462
+
const uint16_t kHitachiAcStateLength
Definition: IRremoteESP8266.h:892
+
const uint8_t kHitachiAcPowerOffset
Definition: ir_Hitachi.h:51
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kHitachiAc344SwingHRight
Definition: ir_Hitachi.h:117
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Hitachi.cpp:1422
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Hitachi.h:379
+
void setSwingVertical(const bool on)
Set the Vertical Swing setting of the A/C.
Definition: ir_Hitachi.cpp:304
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Hitachi.cpp:427
+
void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
+
void setSwingHorizontal(const bool on)
Set the Horizontal Swing setting of the A/C.
Definition: ir_Hitachi.cpp:316
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Hitachi.cpp:1155
+
const uint8_t kHitachiAc1ModeOffset
Definition: ir_Hitachi.h:136
+
const uint16_t kHitachiAc1StateLength
Definition: IRremoteESP8266.h:895
+
void setSwingVToggle(const bool on)
Set the Vertical Swing toggle setting of the A/C.
Definition: ir_Hitachi.cpp:1202
+
const uint8_t kHitachiAc1ChecksumStartByte
Definition: ir_Hitachi.h:182
+
const uint8_t kHitachiAc344SwingHSize
Definition: ir_Hitachi.h:114
+
const uint8_t kHitachiAc344FanHigh
Definition: ir_Hitachi.h:102
+
void setOnTimer(const uint16_t mins)
Set the On Timer time.
Definition: ir_Hitachi.cpp:713
+
const uint8_t kHitachiAcFanHigh
Definition: ir_Hitachi.h:47
+
const uint8_t kHitachiAc1Sleep3
Definition: ir_Hitachi.h:179
+
const uint8_t kHitachiAc1TimerSize
Definition: ir_Hitachi.h:159
+
const uint8_t kHitachiAc1ModeSize
Definition: ir_Hitachi.h:137
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Hitachi.cpp:560
+
void stateReset(void)
Reset the internal state to auto fan, cooling, 23° Celsius.
Definition: ir_Hitachi.cpp:1503
+
const uint8_t kHitachiAc344Fan
Definition: ir_Hitachi.h:86
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Hitachi.cpp:227
+
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition: ir_Hitachi.h:313
+
void setInvertedStates(void)
Update the internal consistency check for the protocol.
Definition: ir_Hitachi.cpp:1049
+
IRHitachiAc1(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Hitachi.cpp:422
+
void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Hitachi.cpp:492
+
const uint8_t kHitachiAc1Sleep1
Definition: ir_Hitachi.h:177
+
IRHitachiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Hitachi.cpp:133
+
const uint8_t kHitachiAc344SwingHOffset
Definition: ir_Hitachi.h:113
+ +
const uint8_t kHitachiAc1Auto
Definition: ir_Hitachi.h:142
+
void setSwingV(const bool on)
Control the vertical swing setting.
Definition: ir_Hitachi.cpp:1526
+
const uint8_t kHitachiAc344MaxTemp
Definition: ir_Hitachi.h:77
+
const uint16_t kHitachiAc3StateLength
Definition: IRremoteESP8266.h:899
+
bool getSwingV(void)
Get the Vertical Swing setting of the A/C.
Definition: ir_Hitachi.cpp:665
+
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:135
+
uint8_t getButton(void)
Get the Button/Command setting of the A/C.
Definition: ir_Hitachi.cpp:1188
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Hitachi.h:257
+
const uint8_t kHitachiAc424ButtonSwingH
Definition: ir_Hitachi.h:62
+
const uint8_t kHitachiAc424PowerByte
Definition: ir_Hitachi.h:107
+
const uint8_t kHitachiAc424ButtonTempDown
Definition: ir_Hitachi.h:59
+
void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
Create and send the IR message to the A/C.
Definition: ir_Hitachi.cpp:1512
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kHitachiAc344SwingHAuto
Definition: ir_Hitachi.h:115
+
void setSwingH(const bool on)
Set the Horizontal Swing setting of the A/C.
Definition: ir_Hitachi.cpp:683
+
const uint8_t kHitachiAc344Heat
Definition: ir_Hitachi.h:89
+
Class for handling detailed Hitachi 224-bit A/C messages.
Definition: ir_Hitachi.h:188
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kHitachiAc344SwingHLeftMax
Definition: ir_Hitachi.h:120
+
const uint8_t kHitachiAc424TempSize
Definition: ir_Hitachi.h:73
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Hitachi.cpp:470
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Hitachi.cpp:746
+
const uint8_t kHitachiAc1FanLow
Definition: ir_Hitachi.h:149
+
Class for handling detailed Hitachi 344-bit A/C messages.
Definition: ir_Hitachi.h:401
+
const uint8_t kHitachiAc424MinTemp
Definition: ir_Hitachi.h:74
+
const uint8_t kHitachiAc344FanAuto
Definition: ir_Hitachi.h:103
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kHitachiAc1Model_B
Definition: ir_Hitachi.h:131
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Hitachi.cpp:336
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
Calculate the checksum for a given state.
Definition: ir_Hitachi.cpp:163
+
const uint8_t kHitachiAc1FanHigh
Definition: ir_Hitachi.h:147
+
const uint8_t kHitachiAc1SleepSize
Definition: ir_Hitachi.h:175
+
const uint8_t kHitachiAc424ButtonSwingV
Definition: ir_Hitachi.h:61
+
const uint8_t kHitachiAcDry
Definition: ir_Hitachi.h:42
+
void setButton(const uint8_t button)
Set the Button/Command pressed setting of the A/C.
Definition: ir_Hitachi.cpp:1194
+
const uint8_t kHitachiAc1Sleep2
Definition: ir_Hitachi.h:178
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_Hitachi.cpp:1595
+
const uint8_t kHitachiAc424ButtonTempUp
Definition: ir_Hitachi.h:60
+
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Hitachi.cpp:1384
+
const uint8_t kHitachiAc1PowerByte
Definition: ir_Hitachi.h:166
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Hitachi.cpp:1059
+
bool getSwingV(void)
Get the current vertical swing setting.
Definition: ir_Hitachi.cpp:1533
+
const uint8_t kHitachiAc1SwingVOffset
Definition: ir_Hitachi.h:171
+
const uint8_t kHitachiAc424ButtonFan
Definition: ir_Hitachi.h:58
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Hitachi.cpp:275
+
const uint8_t kHitachiAcFanAuto
Definition: ir_Hitachi.h:44
+
const uint8_t kHitachiAc1OffTimerHighByte
Definition: ir_Hitachi.h:161
+
const uint8_t kHitachiAc344Dry
Definition: ir_Hitachi.h:88
+
hitachi_ac1_remote_model_t getModel(void)
Get/Detect the model of the A/C.
Definition: ir_Hitachi.cpp:502
+
Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages.
Definition: ir_Hitachi.h:367
+ +
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
+
void setModel(const hitachi_ac1_remote_model_t model)
Set the model of the A/C to emulate.
Definition: ir_Hitachi.cpp:512
+
const uint8_t kHitachiAc344FanLow
Definition: ir_Hitachi.h:100
+
const uint8_t kHitachiAc424FanMaxDry
Definition: ir_Hitachi.h:98
+
const uint8_t kHitachiAc424FanHigh
Definition: ir_Hitachi.h:95
+
void setSwingToggle(const bool toggle)
Set the Swing toggle setting of the A/C.
Definition: ir_Hitachi.cpp:658
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Hitachi.cpp:527
+
Class for handling detailed Hitachi 104-bit A/C messages.
Definition: ir_Hitachi.h:245
+
const uint8_t kHitachiAc344SwingHLeft
Definition: ir_Hitachi.h:119
+
bool getPowerToggle(void)
Get the value of the current power toggle setting.
Definition: ir_Hitachi.cpp:541
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Hitachi.cpp:1248
+
void on(void)
Change the power setting to On.
Definition: ir_Hitachi.cpp:553
+
const uint8_t kHitachiAc1TempSize
Definition: ir_Hitachi.h:154
+
const uint8_t kHitachiAc1SleepByte
Definition: ir_Hitachi.h:173
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Hitachi.cpp:1234
+
const uint8_t kHitachiAc1FanSize
Definition: ir_Hitachi.h:145
+
const uint8_t kHitachiAcFanMed
Definition: ir_Hitachi.h:46
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Hitachi.cpp:601
+
void on(void)
Change the power setting to On.
Definition: ir_Hitachi.cpp:220
+
const uint8_t kHitachiAc424ModeByte
Definition: ir_Hitachi.h:81
+
uint8_t getMode(void)
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Hitachi.cpp:323
+
const uint8_t kHitachiAc1OnTimerLowByte
Definition: ir_Hitachi.h:163
+
const uint8_t kHitachiAc344SwingHByte
Definition: ir_Hitachi.h:112
+
static bool hasInvertedStates(const uint8_t state[], const uint16_t length)
Check if every second byte of the state, after the fixed header is inverted to the previous byte.
Definition: ir_Hitachi.cpp:1414
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Hitachi.cpp:403
+
const uint16_t kHitachiAc424StateLength
Definition: IRremoteESP8266.h:905
+
uint8_t remote_state[kHitachiAc3StateLength]
The state in native code.
Definition: ir_Hitachi.h:396
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Hitachi.cpp:773
+
void off(void)
Change the power setting to Off.
Definition: ir_Hitachi.cpp:223
+
const uint8_t kHitachiAc1Heat
Definition: ir_Hitachi.h:141
+
const uint8_t kHitachiAc1TempByte
Definition: ir_Hitachi.h:152
+
const uint16_t kHitachiAcFreq
Definition: ir_Hitachi.h:38
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Hitachi.h:325
+
const uint8_t kHitachiAc1SleepOffset
Definition: ir_Hitachi.h:174
+
uint16_t getOffTimer(void)
Get the Off Timer vtime of the A/C.
Definition: ir_Hitachi.cpp:737
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Hitachi.cpp:1126
+
const uint8_t kHitachiAc424TempByte
Definition: ir_Hitachi.h:71
+
uint8_t remote_state[kHitachiAcStateLength]
The state in native code.
Definition: ir_Hitachi.h:238
+
const uint8_t kHitachiAcFanLow
Definition: ir_Hitachi.h:45
+
const uint8_t kHitachiAc344FanMin
Definition: ir_Hitachi.h:99
+
const uint8_t kHitachiAc424FanAuto
Definition: ir_Hitachi.h:96
+
void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Hitachi.cpp:195
+
const uint8_t kHitachiAc1FanMed
Definition: ir_Hitachi.h:148
+
const uint8_t kHitachiAc424FanByte
Definition: ir_Hitachi.h:91
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Hitachi.cpp:533
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Hitachi.cpp:209
+
IRHitachiAc424(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Hitachi.cpp:1018
+
const uint8_t kHitachiAcCool
Definition: ir_Hitachi.h:41
+
const uint8_t kHitachiAc1Sleep4
Definition: ir_Hitachi.h:180
+
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_Hitachi.cpp:1572
+
const uint8_t kHitachiAc1FanOffset
Definition: ir_Hitachi.h:144
+
const uint8_t kHitachiAc1SwingToggleOffset
Definition: ir_Hitachi.h:172
+
void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc1StateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Hitachi.cpp:485
+
const uint8_t kHitachiAcHeat
Definition: ir_Hitachi.h:40
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Hitachi.cpp:1055
+
friend class IRHitachiAc344
Definition: ir_Hitachi.h:314
+
const uint8_t kHitachiAc1FanByte
Definition: ir_Hitachi.h:143
+
const uint8_t kHitachiAc424MaxTemp
Definition: ir_Hitachi.h:75
+
uint8_t remote_state[kHitachiAc1StateLength]
The state in native code.
Definition: ir_Hitachi.h:308
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Hitachi.cpp:375
+
void setInvertedStates(const uint16_t length=kHitachiAc3StateLength)
Invert every second byte of the internal state, after the fixed header.
Definition: ir_Hitachi.cpp:1404
+
const uint16_t kHitachiAc344StateLength
Definition: IRremoteESP8266.h:903
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Hitachi.h:232
+
const uint8_t kHitachiAc1SwingHOffset
Definition: ir_Hitachi.h:170
+
void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Hitachi.cpp:202
+
const uint8_t kHitachiAc424FanTemp
Definition: ir_Hitachi.h:78
+
const uint8_t kHitachiAc1Cool
Definition: ir_Hitachi.h:140
+
uint8_t remote_state[kHitachiAc424StateLength]
The state in native code.
Definition: ir_Hitachi.h:360
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Hitachi.cpp:613
+
uint8_t _previoustemp
Definition: ir_Hitachi.h:240
+
const uint8_t kHitachiAc1FanAuto
Definition: ir_Hitachi.h:146
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Hitachi.cpp:157
+
const uint8_t kHitachiAc424TempOffset
Definition: ir_Hitachi.h:72
+
const uint8_t kHitachiAc1ModelByte
Definition: ir_Hitachi.h:128
+
const uint8_t kHitachiAc424PowerOff
Definition: ir_Hitachi.h:109
+
const uint8_t kHitachiAc1PowerToggleOffset
Definition: ir_Hitachi.h:168
+
const uint8_t kHitachiAc424FanMin
Definition: ir_Hitachi.h:92
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Hitachi.cpp:1101
+
virtual void stateReset(void)
Reset the internal state to a fixed known good state.
Definition: ir_Hitachi.cpp:1024
+
const uint8_t kHitachiAc344FanMax
Definition: ir_Hitachi.h:104
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Hitachi.h:302
+
const uint8_t kHitachiAc1ModelOffset
Definition: ir_Hitachi.h:129
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Hitachi.cpp:249
+
const uint8_t kHitachiAc424Dry
Definition: ir_Hitachi.h:84
+
void setSwingH(const uint8_t position)
Control the horizontal swing setting.
Definition: ir_Hitachi.cpp:1540
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Hitachi.cpp:567
+
const uint16_t kHitachiAcDefaultRepeat
Definition: IRremoteESP8266.h:894
+
const uint8_t kHitachiAc424PowerOn
Definition: ir_Hitachi.h:108
+
const uint8_t kHitachiAc344SwingVByte
Definition: ir_Hitachi.h:123
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_Hitachi.cpp:1343
+
const uint8_t kHitachiAc344SwingHMiddle
Definition: ir_Hitachi.h:118
+
void checksum(const uint16_t length=kHitachiAcStateLength)
Calculate and set the checksum values for the internal state.
Definition: ir_Hitachi.cpp:172
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Hitachi.cpp:1221
+
uint16_t getOnTimer(void)
Get the On Timer vtime of the A/C.
Definition: ir_Hitachi.cpp:721
+
void setFan(const uint8_t speed, const bool force=false)
Set the speed of the fan.
Definition: ir_Hitachi.cpp:621
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Hitachi.cpp:759
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Hitachi.cpp:825
+
void setSwingV(const bool on)
Set the Vertical Swing setting of the A/C.
Definition: ir_Hitachi.cpp:671
+
const uint8_t kHitachiAc1SwingByte
Definition: ir_Hitachi.h:169
+
const uint8_t kHitachiAc1ModeByte
Definition: ir_Hitachi.h:135
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Hitachi.cpp:180
+
const uint8_t kHitachiAc424FanMedium
Definition: ir_Hitachi.h:94
+
const uint8_t kHitachiAc344ButtonTempUp
Definition: ir_Hitachi.h:66
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Hitachi.cpp:350
+
const uint8_t kHitachiAc424Cool
Definition: ir_Hitachi.h:83
+
void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc3StateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Hitachi.cpp:1434
+
const uint8_t kHitachiAcFan
Definition: ir_Hitachi.h:43
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Hitachi.cpp:1426
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Hitachi.cpp:797
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Hitachi.cpp:442
+
const uint8_t kHitachiAc1OnTimerHighByte
Definition: ir_Hitachi.h:164
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Hitachi.cpp:187
+
void setOffTimer(const uint16_t mins)
Set the Off Timer time.
Definition: ir_Hitachi.cpp:729
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Hitachi.cpp:786
+
virtual void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Hitachi.cpp:1074
+
const uint8_t kHitachiAc344ButtonSwingH
Definition: ir_Hitachi.h:68
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Hitachi.cpp:215
+
virtual void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc424StateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Hitachi.cpp:1067
+
const uint8_t kHitachiAc424FanLow
Definition: ir_Hitachi.h:93
+
const uint8_t kHitachiAcAutoTemp
Definition: ir_Hitachi.h:50
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Hitachi.h:199
+
void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc344StateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Hitachi.cpp:1520
+
const uint8_t kHitachiAc344FanMedium
Definition: ir_Hitachi.h:101
+
const uint8_t kHitachiAc1Dry
Definition: ir_Hitachi.h:138
+
bool getSwingH(void)
Get the Horizontal Swing setting of the A/C.
Definition: ir_Hitachi.cpp:677
+
bool getSwingHorizontal(void)
Get the Horizontal Swing setting of the A/C.
Definition: ir_Hitachi.cpp:310
+
const uint8_t kHitachiAc344Cool
Definition: ir_Hitachi.h:87
+
const uint8_t kHitachiAc424FanMax
Definition: ir_Hitachi.h:97
+
const uint8_t kHitachiAc424Heat
Definition: ir_Hitachi.h:85
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Hitachi.cpp:1261
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Hitachi.cpp:231
+
const uint8_t kHitachiAc1ModelSize
Definition: ir_Hitachi.h:132
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kHitachiAc344ButtonTempDown
Definition: ir_Hitachi.h:65
+
const uint8_t kHitachiAc424ButtonPowerMode
Definition: ir_Hitachi.h:57
+
const uint8_t kHitachiAc1TempAuto
Definition: ir_Hitachi.h:156
+
const uint8_t kHitachiAc1OffTimerLowByte
Definition: ir_Hitachi.h:160
+
const uint8_t kHitachiAc344MinTemp
Definition: ir_Hitachi.h:76
+
const uint8_t kHitachiAc1TempDelta
Definition: ir_Hitachi.h:155
+
void on(void)
Change the power setting to On.
Definition: ir_Hitachi.cpp:1094
+
const uint8_t kHitachiAcSwingOffset
Definition: ir_Hitachi.h:52
+
void off(void)
Change the power setting to Off.
Definition: ir_Hitachi.cpp:556
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Hitachi.cpp:1081
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Hitachi.cpp:477
+
const uint8_t kHitachiAc344ButtonSwingV
Definition: ir_Hitachi.h:67
+
const uint8_t kHitachiAc1SleepOff
Definition: ir_Hitachi.h:176
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Hitachi.cpp:255
+
virtual stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Hitachi.cpp:1274
+
uint8_t getSwingH(void)
Get the current horizontal swing setting.
Definition: ir_Hitachi.cpp:1550
+
String _toString(void)
Convert the internal state into a human readable string for the settings that are common to protocols...
Definition: ir_Hitachi.cpp:1302
+
bool getSwingVToggle(void)
Get the Vertical Swing toggle setting of the A/C.
Definition: ir_Hitachi.cpp:1214
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Inax_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Inax_8cpp.html new file mode 100644 index 000000000..5e5f3eaf4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Inax_8cpp.html @@ -0,0 +1,207 @@ + + + + + + + +IRremoteESP8266: src/ir_Inax.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Inax.cpp File Reference
+
+
+ +

Support for the Inax Robot Toilet IR protocols. +More...

+ + + + + + + + + + + + + + + + +

+Variables

const uint16_t kInaxTick = 500
 
const uint16_t kInaxHdrMark = 9000
 
const uint16_t kInaxHdrSpace = 4500
 
const uint16_t kInaxBitMark = 560
 
const uint16_t kInaxOneSpace = 1675
 
const uint16_t kInaxZeroSpace = kInaxBitMark
 
const uint16_t kInaxMinGap = 40000
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kInaxBitMark

+ +
+
+ + + + +
const uint16_t kInaxBitMark = 560
+
+ +
+
+ +

◆ kInaxHdrMark

+ +
+
+ + + + +
const uint16_t kInaxHdrMark = 9000
+
+ +
+
+ +

◆ kInaxHdrSpace

+ +
+
+ + + + +
const uint16_t kInaxHdrSpace = 4500
+
+ +
+
+ +

◆ kInaxMinGap

+ +
+
+ + + + +
const uint16_t kInaxMinGap = 40000
+
+ +
+
+ +

◆ kInaxOneSpace

+ +
+
+ + + + +
const uint16_t kInaxOneSpace = 1675
+
+ +
+
+ +

◆ kInaxTick

+ +
+
+ + + + +
const uint16_t kInaxTick = 500
+
+ +
+
+ +

◆ kInaxZeroSpace

+ +
+
+ + + + +
const uint16_t kInaxZeroSpace = kInaxBitMark
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__JVC_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__JVC_8cpp.html new file mode 100644 index 000000000..0392fa940 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__JVC_8cpp.html @@ -0,0 +1,343 @@ + + + + + + + +IRremoteESP8266: src/ir_JVC.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_JVC.cpp File Reference
+
+
+ +

Support for JVC protocols. Originally added by Kristian Lauszus Thanks to zenwheel and other people at the original blog post. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kJvcTick = 75
 
const uint16_t kJvcHdrMarkTicks = 112
 
const uint16_t kJvcHdrMark = kJvcHdrMarkTicks * kJvcTick
 
const uint16_t kJvcHdrSpaceTicks = 56
 
const uint16_t kJvcHdrSpace = kJvcHdrSpaceTicks * kJvcTick
 
const uint16_t kJvcBitMarkTicks = 7
 
const uint16_t kJvcBitMark = kJvcBitMarkTicks * kJvcTick
 
const uint16_t kJvcOneSpaceTicks = 23
 
const uint16_t kJvcOneSpace = kJvcOneSpaceTicks * kJvcTick
 
const uint16_t kJvcZeroSpaceTicks = 7
 
const uint16_t kJvcZeroSpace = kJvcZeroSpaceTicks * kJvcTick
 
const uint16_t kJvcRptLengthTicks = 800
 
const uint16_t kJvcRptLength = kJvcRptLengthTicks * kJvcTick
 
const uint16_t kJvcMinGapTicks
 
const uint16_t kJvcMinGap = kJvcMinGapTicks * kJvcTick
 
+

Detailed Description

+

Support for JVC protocols. Originally added by Kristian Lauszus Thanks to zenwheel and other people at the original blog post.

+
See also
http://www.sbprojects.com/knowledge/ir/jvc.php
+

Variable Documentation

+ +

◆ kJvcBitMark

+ +
+
+ + + + +
const uint16_t kJvcBitMark = kJvcBitMarkTicks * kJvcTick
+
+ +
+
+ +

◆ kJvcBitMarkTicks

+ +
+
+ + + + +
const uint16_t kJvcBitMarkTicks = 7
+
+ +
+
+ +

◆ kJvcHdrMark

+ +
+
+ + + + +
const uint16_t kJvcHdrMark = kJvcHdrMarkTicks * kJvcTick
+
+ +
+
+ +

◆ kJvcHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kJvcHdrMarkTicks = 112
+
+ +
+
+ +

◆ kJvcHdrSpace

+ +
+
+ + + + +
const uint16_t kJvcHdrSpace = kJvcHdrSpaceTicks * kJvcTick
+
+ +
+
+ +

◆ kJvcHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kJvcHdrSpaceTicks = 56
+
+ +
+
+ +

◆ kJvcMinGap

+ +
+
+ + + + +
const uint16_t kJvcMinGap = kJvcMinGapTicks * kJvcTick
+
+ +
+
+ +

◆ kJvcMinGapTicks

+ +
+
+ + + + +
const uint16_t kJvcMinGapTicks
+
+
+ +

◆ kJvcOneSpace

+ +
+
+ + + + +
const uint16_t kJvcOneSpace = kJvcOneSpaceTicks * kJvcTick
+
+ +
+
+ +

◆ kJvcOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kJvcOneSpaceTicks = 23
+
+ +
+
+ +

◆ kJvcRptLength

+ +
+
+ + + + +
const uint16_t kJvcRptLength = kJvcRptLengthTicks * kJvcTick
+
+ +
+
+ +

◆ kJvcRptLengthTicks

+ +
+
+ + + + +
const uint16_t kJvcRptLengthTicks = 800
+
+ +
+
+ +

◆ kJvcTick

+ +
+
+ + + + +
const uint16_t kJvcTick = 75
+
+ +
+
+ +

◆ kJvcZeroSpace

+ +
+
+ + + + +
const uint16_t kJvcZeroSpace = kJvcZeroSpaceTicks * kJvcTick
+
+ +
+
+ +

◆ kJvcZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kJvcZeroSpaceTicks = 7
+
+ +
+
+
+
const uint16_t kJvcHdrSpaceTicks
Definition: ir_JVC.cpp:23
+
const uint16_t kJvcBitMarkTicks
Definition: ir_JVC.cpp:25
+
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:909
+
const uint16_t kJvcOneSpaceTicks
Definition: ir_JVC.cpp:27
+
const uint16_t kJvcHdrMarkTicks
Definition: ir_JVC.cpp:21
+
const uint16_t kJvcRptLengthTicks
Definition: ir_JVC.cpp:31
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8cpp.html new file mode 100644 index 000000000..2fabc1753 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8cpp.html @@ -0,0 +1,569 @@ + + + + + + + +IRremoteESP8266: src/ir_Kelvinator.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Kelvinator.cpp File Reference
+
+
+ +

Support for Kelvinator A/C protocols. Code to emulate IR Kelvinator YALIF remote control unit, which should control at least the following Kelvinator A/C units: KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, KSV70HRC, KSV80HRC. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kKelvinatorTick = 85
 
const uint16_t kKelvinatorHdrMarkTicks = 106
 
const uint16_t kKelvinatorHdrMark = kKelvinatorHdrMarkTicks * kKelvinatorTick
 
const uint16_t kKelvinatorHdrSpaceTicks = 53
 
const uint16_t kKelvinatorHdrSpace = kKelvinatorHdrSpaceTicks * kKelvinatorTick
 
const uint16_t kKelvinatorBitMarkTicks = 8
 
const uint16_t kKelvinatorBitMark = kKelvinatorBitMarkTicks * kKelvinatorTick
 
const uint16_t kKelvinatorOneSpaceTicks = 18
 
const uint16_t kKelvinatorOneSpace = kKelvinatorOneSpaceTicks * kKelvinatorTick
 
const uint16_t kKelvinatorZeroSpaceTicks = 6
 
const uint16_t kKelvinatorZeroSpace
 
const uint16_t kKelvinatorGapSpaceTicks = 235
 
const uint16_t kKelvinatorGapSpace = kKelvinatorGapSpaceTicks * kKelvinatorTick
 
const uint8_t kKelvinatorCmdFooter = 2
 
const uint8_t kKelvinatorCmdFooterBits = 3
 
const uint8_t kKelvinatorModeOffset = 0
 
const uint8_t kKelvinatorPowerOffset = 3
 
const uint8_t kKelvinatorFanOffset = 4
 
const uint8_t kKelvinatorFanSize = 3
 
const uint8_t kKelvinatorBasicFanSize = 2
 
const uint8_t kKelvinatorChecksumStart = 10
 
const uint8_t kKelvinatorVentSwingOffset = 6
 
const uint8_t kKelvinatorVentSwingVOffset = 0
 
const uint8_t kKelvinatorVentSwingHOffset = 4
 
const uint8_t kKelvinatorQuietOffset = 7
 
const uint8_t kKelvinatorIonFilterOffset = 6
 
const uint8_t kKelvinatorLightOffset = 5
 
const uint8_t kKelvinatorXfanOffset = 7
 
const uint8_t kKelvinatorTurboOffset = 4
 
+

Detailed Description

+

Support for Kelvinator A/C protocols. Code to emulate IR Kelvinator YALIF remote control unit, which should control at least the following Kelvinator A/C units: KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, KSV70HRC, KSV80HRC.

+
Note
Unsupported:
    +
  • All Sleep modes.
  • +
  • All Timer modes.
  • +
  • "I Feel" button & mode.
  • +
  • Energy Saving mode.
  • +
  • Low Heat mode.
  • +
  • Fahrenheit.
  • +
+
+

Variable Documentation

+ +

◆ kKelvinatorBasicFanSize

+ +
+
+ + + + +
const uint8_t kKelvinatorBasicFanSize = 2
+
+ +
+
+ +

◆ kKelvinatorBitMark

+ +
+
+ + + + +
const uint16_t kKelvinatorBitMark = kKelvinatorBitMarkTicks * kKelvinatorTick
+
+ +
+
+ +

◆ kKelvinatorBitMarkTicks

+ +
+
+ + + + +
const uint16_t kKelvinatorBitMarkTicks = 8
+
+ +
+
+ +

◆ kKelvinatorChecksumStart

+ +
+
+ + + + +
const uint8_t kKelvinatorChecksumStart = 10
+
+ +
+
+ +

◆ kKelvinatorCmdFooter

+ +
+
+ + + + +
const uint8_t kKelvinatorCmdFooter = 2
+
+ +
+
+ +

◆ kKelvinatorCmdFooterBits

+ +
+
+ + + + +
const uint8_t kKelvinatorCmdFooterBits = 3
+
+ +
+
+ +

◆ kKelvinatorFanOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorFanOffset = 4
+
+ +
+
+ +

◆ kKelvinatorFanSize

+ +
+
+ + + + +
const uint8_t kKelvinatorFanSize = 3
+
+ +
+
+ +

◆ kKelvinatorGapSpace

+ +
+
+ + + + +
const uint16_t kKelvinatorGapSpace = kKelvinatorGapSpaceTicks * kKelvinatorTick
+
+ +
+
+ +

◆ kKelvinatorGapSpaceTicks

+ +
+
+ + + + +
const uint16_t kKelvinatorGapSpaceTicks = 235
+
+ +
+
+ +

◆ kKelvinatorHdrMark

+ +
+
+ + + + +
const uint16_t kKelvinatorHdrMark = kKelvinatorHdrMarkTicks * kKelvinatorTick
+
+ +
+
+ +

◆ kKelvinatorHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kKelvinatorHdrMarkTicks = 106
+
+ +
+
+ +

◆ kKelvinatorHdrSpace

+ +
+
+ + + + +
const uint16_t kKelvinatorHdrSpace = kKelvinatorHdrSpaceTicks * kKelvinatorTick
+
+ +
+
+ +

◆ kKelvinatorHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kKelvinatorHdrSpaceTicks = 53
+
+ +
+
+ +

◆ kKelvinatorIonFilterOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorIonFilterOffset = 6
+
+ +
+
+ +

◆ kKelvinatorLightOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorLightOffset = 5
+
+ +
+
+ +

◆ kKelvinatorModeOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorModeOffset = 0
+
+ +
+
+ +

◆ kKelvinatorOneSpace

+ +
+
+ + + + +
const uint16_t kKelvinatorOneSpace = kKelvinatorOneSpaceTicks * kKelvinatorTick
+
+ +
+
+ +

◆ kKelvinatorOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kKelvinatorOneSpaceTicks = 18
+
+ +
+
+ +

◆ kKelvinatorPowerOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorPowerOffset = 3
+
+ +
+
+ +

◆ kKelvinatorQuietOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorQuietOffset = 7
+
+ +
+
+ +

◆ kKelvinatorTick

+ +
+
+ + + + +
const uint16_t kKelvinatorTick = 85
+
+ +
+
+ +

◆ kKelvinatorTurboOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorTurboOffset = 4
+
+ +
+
+ +

◆ kKelvinatorVentSwingHOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorVentSwingHOffset = 4
+
+ +
+
+ +

◆ kKelvinatorVentSwingOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorVentSwingOffset = 6
+
+ +
+
+ +

◆ kKelvinatorVentSwingVOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorVentSwingVOffset = 0
+
+ +
+
+ +

◆ kKelvinatorXfanOffset

+ +
+
+ + + + +
const uint8_t kKelvinatorXfanOffset = 7
+
+ +
+
+ +

◆ kKelvinatorZeroSpace

+ +
+
+ + + + +
const uint16_t kKelvinatorZeroSpace
+
+Initial value: +
+
+ +

◆ kKelvinatorZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kKelvinatorZeroSpaceTicks = 6
+
+ +
+
+
+
const uint16_t kKelvinatorZeroSpaceTicks
Definition: ir_Kelvinator.cpp:39
+
const uint16_t kKelvinatorTick
Definition: ir_Kelvinator.cpp:30
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h.html new file mode 100644 index 000000000..3feaa32f7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h.html @@ -0,0 +1,293 @@ + + + + + + + +IRremoteESP8266: src/ir_Kelvinator.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Kelvinator.h File Reference
+
+
+ +

Support for Kelvinator A/C protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRKelvinatorAC
 Class for handling detailed Kelvinator A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kKelvinatorAuto = 0
 
const uint8_t kKelvinatorCool = 1
 
const uint8_t kKelvinatorDry = 2
 
const uint8_t kKelvinatorFan = 3
 
const uint8_t kKelvinatorHeat = 4
 
const uint8_t kKelvinatorBasicFanMax = 3
 
const uint8_t kKelvinatorFanAuto = 0
 
const uint8_t kKelvinatorFanMin = 1
 
const uint8_t kKelvinatorFanMax = 5
 
const uint8_t kKelvinatorMinTemp = 16
 
const uint8_t kKelvinatorMaxTemp = 30
 
const uint8_t kKelvinatorAutoTemp = 25
 
+

Detailed Description

+

Support for Kelvinator A/C protocols.

+

Variable Documentation

+ +

◆ kKelvinatorAuto

+ +
+
+ + + + +
const uint8_t kKelvinatorAuto = 0
+
+ +
+
+ +

◆ kKelvinatorAutoTemp

+ +
+
+ + + + +
const uint8_t kKelvinatorAutoTemp = 25
+
+ +
+
+ +

◆ kKelvinatorBasicFanMax

+ +
+
+ + + + +
const uint8_t kKelvinatorBasicFanMax = 3
+
+ +
+
+ +

◆ kKelvinatorCool

+ +
+
+ + + + +
const uint8_t kKelvinatorCool = 1
+
+ +
+
+ +

◆ kKelvinatorDry

+ +
+
+ + + + +
const uint8_t kKelvinatorDry = 2
+
+ +
+
+ +

◆ kKelvinatorFan

+ +
+
+ + + + +
const uint8_t kKelvinatorFan = 3
+
+ +
+
+ +

◆ kKelvinatorFanAuto

+ +
+
+ + + + +
const uint8_t kKelvinatorFanAuto = 0
+
+ +
+
+ +

◆ kKelvinatorFanMax

+ +
+
+ + + + +
const uint8_t kKelvinatorFanMax = 5
+
+ +
+
+ +

◆ kKelvinatorFanMin

+ +
+
+ + + + +
const uint8_t kKelvinatorFanMin = 1
+
+ +
+
+ +

◆ kKelvinatorHeat

+ +
+
+ + + + +
const uint8_t kKelvinatorHeat = 4
+
+ +
+
+ +

◆ kKelvinatorMaxTemp

+ +
+
+ + + + +
const uint8_t kKelvinatorMaxTemp = 30
+
+ +
+
+ +

◆ kKelvinatorMinTemp

+ +
+
+ + + + +
const uint8_t kKelvinatorMinTemp = 16
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h_source.html new file mode 100644 index 000000000..16ffcfeef --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Kelvinator_8h_source.html @@ -0,0 +1,336 @@ + + + + + + + +IRremoteESP8266: src/ir_Kelvinator.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Kelvinator.h
+
+
+Go to the documentation of this file.
1 // Copyright 2016 David Conran
+
4 
+
5 // Supports:
+
6 // Brand: Kelvinator, Model: YALIF Remote
+
7 // Brand: Kelvinator, Model: KSV26CRC A/C
+
8 // Brand: Kelvinator, Model: KSV26HRC A/C
+
9 // Brand: Kelvinator, Model: KSV35CRC A/C
+
10 // Brand: Kelvinator, Model: KSV35HRC A/C
+
11 // Brand: Kelvinator, Model: KSV53HRC A/C
+
12 // Brand: Kelvinator, Model: KSV62HRC A/C
+
13 // Brand: Kelvinator, Model: KSV70CRC A/C
+
14 // Brand: Kelvinator, Model: KSV70HRC A/C
+
15 // Brand: Kelvinator, Model: KSV80HRC A/C
+
16 // Brand: Green, Model: YAPOF3 remote
+
17 
+
18 #ifndef IR_KELVINATOR_H_
+
19 #define IR_KELVINATOR_H_
+
20 
+
21 #define __STDC_LIMIT_MACROS
+
22 #include <stdint.h>
+
23 #ifndef UNIT_TEST
+
24 #include <Arduino.h>
+
25 #endif
+
26 #include "IRremoteESP8266.h"
+
27 #include "IRsend.h"
+
28 #ifdef UNIT_TEST
+
29 #include "IRsend_test.h"
+
30 #endif
+
31 
+
32 // Constants
+
33 const uint8_t kKelvinatorAuto = 0;
+
34 const uint8_t kKelvinatorCool = 1;
+
35 const uint8_t kKelvinatorDry = 2;
+
36 const uint8_t kKelvinatorFan = 3;
+
37 const uint8_t kKelvinatorHeat = 4;
+
38 const uint8_t kKelvinatorBasicFanMax = 3;
+
39 const uint8_t kKelvinatorFanAuto = 0;
+
40 const uint8_t kKelvinatorFanMin = 1;
+
41 const uint8_t kKelvinatorFanMax = 5;
+
42 const uint8_t kKelvinatorMinTemp = 16; // 16C
+
43 const uint8_t kKelvinatorMaxTemp = 30; // 30C
+
44 const uint8_t kKelvinatorAutoTemp = 25; // 25C
+
45 
+
46 // Legacy defines (Deprecated)
+
47 #define KELVINATOR_MIN_TEMP kKelvinatorMinTemp
+
48 #define KELVINATOR_MAX_TEMP kKelvinatorMaxTemp
+
49 #define KELVINATOR_HEAT kKelvinatorHeat
+
50 #define KELVINATOR_FAN_MAX kKelvinatorFanMax
+
51 #define KELVINATOR_FAN_AUTO kKelvinatorFanAuto
+
52 #define KELVINATOR_FAN kKelvinatorFan
+
53 #define KELVINATOR_DRY kKelvinatorDry
+
54 #define KELVINATOR_COOL kKelvinatorCool
+
55 #define KELVINATOR_BASIC_FAN_MAX kKelvinatorBasicFanMax
+
56 #define KELVINATOR_AUTO_TEMP kKelvinatorAutoTemp
+
57 #define KELVINATOR_AUTO kKelvinatorAuto
+
58 
+
59 /*
+
60  Kelvinator AC map
+
61 
+
62  (header mark and space)
+
63  byte 0 = Basic Modes
+
64  b2-0 = Modes
+
65  Modes:
+
66  000 = Auto (temp = 25C)
+
67  001 = Cool
+
68  010 = Dry (temp = 25C, but not shown)
+
69  011 = Fan
+
70  100 = Heat
+
71  b3 = Power Status (1 = On, 0 = Off)
+
72  b5-4 = Fan (Basic modes)
+
73  Fan:
+
74  00 = Auto
+
75  01 = Fan 1
+
76  10 = Fan 2
+
77  11 = Fan 3 or higher (See byte 14)
+
78  b6 = Vent swing (1 = On, 0 = Off) (See byte 4)
+
79  b7 = Sleep Modes 1 & 3 (1 = On, 0 = Off)
+
80  byte 1 = Temperature
+
81  b3-0: Degrees C.
+
82  0000 (0) = 16C
+
83  0001 (1) = 17C
+
84  0010 (2) = 18C
+
85  ...
+
86  1101 (13) = 29C
+
87  1110 (14) = 30C
+
88  byte 2 = Extras
+
89  b3-0 = UNKNOWN, typically 0.
+
90  b4 = Turbo Fan (1 = On, 0 = Off)
+
91  b5 = Light (Display) (1 = On, 0 = Off)
+
92  b6 = Ion Filter (1 = On, 0 = Off)
+
93  b7 = X-Fan (Fan runs for a while after power off) (1 = On, 0 = Off)
+
94  byte 3 = Section Indicator
+
95  b3-0 = Unused (Typically 0)
+
96  b5-4 = Unknown (possibly timer related) (Typically 0b01)
+
97  b7-6 = End of command block (B01)
+
98  (B010 marker and a gap of 20ms)
+
99  byte 4 = Extended options
+
100  b0 = Swing Vent Vertical (1 = On, 0 = Off)
+
101  b4 = Swing Vent Horizontal (1 = On, 0 = Off)
+
102  byte 5-6 = Timer related. Typically 0 except when timer in use.
+
103  byte 7 = checksum
+
104  b3-0 = Unknown (Used in Timer mode)
+
105  b7-4 = checksum of the previous bytes (0-6)
+
106  (gap of 40ms)
+
107  (header mark and space)
+
108  byte 8 = Repeat of byte 0
+
109  byte 9 = Repeat of byte 1
+
110  byte 10 = Repeat of byte 2
+
111  byte 11 = Section Indicator
+
112  b3-0 = Unused (Typically 0)
+
113  b5-4 = Unknown (possibly timer related) (Typically 0b11)
+
114  b7-6 = End of command block (B01)
+
115  (B010 marker and a gap of 20ms)
+
116  byte 12 = Extended options
+
117  b0 = Sleep mode 2 (1 = On, 0=Off)
+
118  b6-1 = Unknown (Used in Sleep Mode 3, Typically 0b000000)
+
119  b7 = Quiet Mode (1 = On, 0=Off)
+
120  byte 13 = Unknown (Sleep Mode 3 related, Typically 0x00)
+
121  byte 14 = Fan control
+
122  b3-0 = Unknown (Sleep Mode 3 related, Typically 0b0000)
+
123  b6-4 = Fan speed
+
124  0b000 (0) = Automatic
+
125  0b001 (1) = Fan 1
+
126  0b010 (2) = Fan 2
+
127  0b011 (3) = Fan 3
+
128  0b100 (4) = Fan 4
+
129  0b101 (5) = Fan 5
+
130  byte 15 = checksum
+
131  b3-0 = Unknown (Typically 0b0000)
+
132  b7-4 = checksum of the previous bytes (8-14)
+
133 */
+
134 
+
135 // Classes
+ +
138  public:
+
139  explicit IRKelvinatorAC(const uint16_t pin, const bool inverted = false,
+
140  const bool use_modulation = true);
+
141  void stateReset(void);
+
142 #if SEND_KELVINATOR
+
143  void send(const uint16_t repeat = kKelvinatorDefaultRepeat);
+
148  int8_t calibrate(void) { return _irsend.calibrate(); }
+
149 #endif // SEND_KELVINATOR
+
150  void begin(void);
+
151  void on(void);
+
152  void off(void);
+
153  void setPower(const bool on);
+
154  bool getPower(void);
+
155  void setTemp(const uint8_t degrees);
+
156  uint8_t getTemp(void);
+
157  void setFan(const uint8_t speed);
+
158  uint8_t getFan(void);
+
159  void setMode(const uint8_t mode);
+
160  uint8_t getMode(void);
+
161  void setSwingVertical(const bool on);
+
162  bool getSwingVertical(void);
+
163  void setSwingHorizontal(const bool on);
+
164  bool getSwingHorizontal(void);
+
165  void setQuiet(const bool on);
+
166  bool getQuiet(void);
+
167  void setIonFilter(const bool on);
+
168  bool getIonFilter(void);
+
169  void setLight(const bool on);
+
170  bool getLight(void);
+
171  void setXFan(const bool on);
+
172  bool getXFan(void);
+
173  void setTurbo(const bool on);
+
174  bool getTurbo(void);
+
175  uint8_t* getRaw(void);
+
176  void setRaw(const uint8_t new_code[]);
+
177  static uint8_t calcBlockChecksum(
+
178  const uint8_t* block, const uint16_t length = kKelvinatorStateLength / 2);
+
179  static bool validChecksum(const uint8_t state[],
+
180  const uint16_t length = kKelvinatorStateLength);
+
181  uint8_t convertMode(const stdAc::opmode_t mode);
+
182  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
183  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
184  stdAc::state_t toCommon(void);
+
185  String toString(void);
+
186 #ifndef UNIT_TEST
+
187 
+
188  private:
+ +
190 #else // UNIT_TEST
+
191  IRsendTest _irsend;
+
193 #endif // UNIT_TEST
+ +
196  void checksum(const uint16_t length = kKelvinatorStateLength);
+
197  void fixup(void);
+
198 };
+
199 
+
200 #endif // IR_KELVINATOR_H_
+
+
void setSwingHorizontal(const bool on)
Control the current horizontal swing setting.
Definition: ir_Kelvinator.cpp:314
+
void stateReset(void)
Reset the internals of the object to a known good state.
Definition: ir_Kelvinator.cpp:129
+
void checksum(const uint16_t length=kKelvinatorStateLength)
Calculate the checksum for the internal state.
Definition: ir_Kelvinator.cpp:188
+
bool getTurbo(void)
Is the Turbo setting on?
Definition: ir_Kelvinator.cpp:392
+
void setTurbo(const bool on)
Control the current Turbo setting.
Definition: ir_Kelvinator.cpp:385
+
bool getSwingVertical(void)
Is the vertical swing setting on?
Definition: ir_Kelvinator.cpp:308
+
const uint8_t kKelvinatorFanAuto
Definition: ir_Kelvinator.h:39
+
void on(void)
Set the internal state to have the power on.
Definition: ir_Kelvinator.cpp:212
+
const uint8_t kKelvinatorFanMax
Definition: ir_Kelvinator.h:41
+
const uint8_t kKelvinatorCool
Definition: ir_Kelvinator.h:34
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
void setLight(const bool on)
Control the current Light setting. i.e. The LED display on the A/C unit that shows the basic settings...
Definition: ir_Kelvinator.cpp:355
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed to it's stdAc::fanspeed_t equivalent.
Definition: ir_Kelvinator.cpp:425
+
const uint8_t kKelvinatorAutoTemp
Definition: ir_Kelvinator.h:44
+
uint8_t * getRaw(void)
Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
Definition: ir_Kelvinator.cpp:158
+ +
void setIonFilter(const bool on)
Control the current Ion Filter setting.
Definition: ir_Kelvinator.cpp:341
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Kelvinator.cpp:248
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kKelvinatorMinTemp
Definition: ir_Kelvinator.h:42
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Kelvinator.h:148
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
std::string String
Definition: IRremoteESP8266.h:1093
+
void setPower(const bool on)
Set the internal state to have the desired power.
Definition: ir_Kelvinator.cpp:219
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Kelvinator.cpp:266
+
void setMode(const uint8_t mode)
Set the desired operation mode.
Definition: ir_Kelvinator.cpp:278
+
void send(const uint16_t repeat=kKelvinatorDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Kelvinator.cpp:149
+
void setRaw(const uint8_t new_code[])
Set the raw state of the object.
Definition: ir_Kelvinator.cpp:165
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Kelvinator.cpp:136
+
uint8_t getMode(void)
Get the current operation mode setting.
Definition: ir_Kelvinator.cpp:272
+
static uint8_t calcBlockChecksum(const uint8_t *block, const uint16_t length=kKelvinatorStateLength/2)
Calculate the checksum for a given block of state.
Definition: ir_Kelvinator.cpp:174
+ +
IRsend _irsend
Instance of the IR send class.
Definition: ir_Kelvinator.h:189
+
bool getPower(void)
Get the power setting from the internal state.
Definition: ir_Kelvinator.cpp:226
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kKelvinatorStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Kelvinator.cpp:200
+
Class for handling detailed Kelvinator A/C messages.
Definition: ir_Kelvinator.h:137
+
const uint8_t kKelvinatorMaxTemp
Definition: ir_Kelvinator.h:43
+
void fixup(void)
Fix up any odd conditions for the current state.
Definition: ir_Kelvinator.cpp:139
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Kelvinator.cpp:241
+
const uint16_t kKelvinatorStateLength
Definition: IRremoteESP8266.h:910
+
stdAc::state_t toCommon(void)
Convert the internal A/C object state to it's stdAc::state_t equivalent.
Definition: ir_Kelvinator.cpp:431
+
void setQuiet(const bool on)
Control the current Quiet setting.
Definition: ir_Kelvinator.cpp:329
+
void setXFan(const bool on)
Control the current XFan setting. This setting will cause the unit blow air after power off to dry ou...
Definition: ir_Kelvinator.cpp:371
+
const uint8_t kKelvinatorFan
Definition: ir_Kelvinator.h:36
+
void setTemp(const uint8_t degrees)
Set the temperature setting.
Definition: ir_Kelvinator.cpp:232
+
const uint8_t kKelvinatorBasicFanMax
Definition: ir_Kelvinator.h:38
+
const uint8_t kKelvinatorFanMin
Definition: ir_Kelvinator.h:40
+
bool getLight(void)
Is the Light (Display) setting on?
Definition: ir_Kelvinator.cpp:362
+
const uint8_t kKelvinatorHeat
Definition: ir_Kelvinator.h:37
+
IRKelvinatorAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Kelvinator.cpp:124
+
void off(void)
Set the internal state to have the power off.
Definition: ir_Kelvinator.cpp:215
+
const uint16_t kKelvinatorDefaultRepeat
Definition: IRremoteESP8266.h:912
+
uint8_t remote_state[kKelvinatorStateLength]
The state in IR code form.
Definition: ir_Kelvinator.h:195
+
void setSwingVertical(const bool on)
Control the current vertical swing setting.
Definition: ir_Kelvinator.cpp:299
+
const uint8_t kKelvinatorDry
Definition: ir_Kelvinator.h:35
+
bool getIonFilter(void)
Is the Ion Filter setting on?
Definition: ir_Kelvinator.cpp:348
+
String toString(void)
Convert the internal settings into a human readable string.
Definition: ir_Kelvinator.cpp:459
+
bool getXFan(void)
Is the XFan setting on?
Definition: ir_Kelvinator.cpp:378
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's stdAc::opmode_t equivalent.
Definition: ir_Kelvinator.cpp:412
+
bool getQuiet(void)
Is the Quiet setting on?
Definition: ir_Kelvinator.cpp:335
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
bool getSwingHorizontal(void)
Is the horizontal swing setting on?
Definition: ir_Kelvinator.cpp:323
+
const uint8_t kKelvinatorAuto
Definition: ir_Kelvinator.h:33
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode (stdAc::opmode_t) into it a native mode.
Definition: ir_Kelvinator.cpp:399
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8cpp.html new file mode 100644 index 000000000..3613112d7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8cpp.html @@ -0,0 +1,557 @@ + + + + + + + +IRremoteESP8266: src/ir_LG.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_LG.cpp File Reference
+
+
+ +

Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kLgTick = 50
 
const uint16_t kLgHdrMarkTicks = 170
 
const uint16_t kLgHdrMark = kLgHdrMarkTicks * kLgTick
 
const uint16_t kLgHdrSpaceTicks = 85
 
const uint16_t kLgHdrSpace = kLgHdrSpaceTicks * kLgTick
 
const uint16_t kLgBitMarkTicks = 11
 
const uint16_t kLgBitMark = kLgBitMarkTicks * kLgTick
 
const uint16_t kLgOneSpaceTicks = 32
 
const uint16_t kLgOneSpace = kLgOneSpaceTicks * kLgTick
 
const uint16_t kLgZeroSpaceTicks = 11
 
const uint16_t kLgZeroSpace = kLgZeroSpaceTicks * kLgTick
 
const uint16_t kLgRptSpaceTicks = 45
 
const uint16_t kLgRptSpace = kLgRptSpaceTicks * kLgTick
 
const uint16_t kLgMinGapTicks = 795
 
const uint16_t kLgMinGap = kLgMinGapTicks * kLgTick
 
const uint16_t kLgMinMessageLengthTicks = 2161
 
const uint32_t kLgMinMessageLength = kLgMinMessageLengthTicks * kLgTick
 
const uint16_t kLg32HdrMarkTicks = 90
 
const uint16_t kLg32HdrMark = kLg32HdrMarkTicks * kLgTick
 
const uint16_t kLg32HdrSpaceTicks = 89
 
const uint16_t kLg32HdrSpace = kLg32HdrSpaceTicks * kLgTick
 
const uint16_t kLg32RptHdrMarkTicks = 179
 
const uint16_t kLg32RptHdrMark = kLg32RptHdrMarkTicks * kLgTick
 
const uint16_t kLg2HdrMarkTicks = 64
 
const uint16_t kLg2HdrMark = kLg2HdrMarkTicks * kLgTick
 
const uint16_t kLg2HdrSpaceTicks = 197
 
const uint16_t kLg2HdrSpace = kLg2HdrSpaceTicks * kLgTick
 
const uint16_t kLg2BitMarkTicks = 10
 
const uint16_t kLg2BitMark = kLg2BitMarkTicks * kLgTick
 
+

Detailed Description

+

Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin.

+
See also
https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438
+

Variable Documentation

+ +

◆ kLg2BitMark

+ +
+
+ + + + +
const uint16_t kLg2BitMark = kLg2BitMarkTicks * kLgTick
+
+ +
+
+ +

◆ kLg2BitMarkTicks

+ +
+
+ + + + +
const uint16_t kLg2BitMarkTicks = 10
+
+ +
+
+ +

◆ kLg2HdrMark

+ +
+
+ + + + +
const uint16_t kLg2HdrMark = kLg2HdrMarkTicks * kLgTick
+
+ +
+
+ +

◆ kLg2HdrMarkTicks

+ +
+
+ + + + +
const uint16_t kLg2HdrMarkTicks = 64
+
+ +
+
+ +

◆ kLg2HdrSpace

+ +
+
+ + + + +
const uint16_t kLg2HdrSpace = kLg2HdrSpaceTicks * kLgTick
+
+ +
+
+ +

◆ kLg2HdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kLg2HdrSpaceTicks = 197
+
+ +
+
+ +

◆ kLg32HdrMark

+ +
+
+ + + + +
const uint16_t kLg32HdrMark = kLg32HdrMarkTicks * kLgTick
+
+ +
+
+ +

◆ kLg32HdrMarkTicks

+ +
+
+ + + + +
const uint16_t kLg32HdrMarkTicks = 90
+
+ +
+
+ +

◆ kLg32HdrSpace

+ +
+
+ + + + +
const uint16_t kLg32HdrSpace = kLg32HdrSpaceTicks * kLgTick
+
+ +
+
+ +

◆ kLg32HdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kLg32HdrSpaceTicks = 89
+
+ +
+
+ +

◆ kLg32RptHdrMark

+ +
+
+ + + + +
const uint16_t kLg32RptHdrMark = kLg32RptHdrMarkTicks * kLgTick
+
+ +
+
+ +

◆ kLg32RptHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kLg32RptHdrMarkTicks = 179
+
+ +
+
+ +

◆ kLgBitMark

+ +
+
+ + + + +
const uint16_t kLgBitMark = kLgBitMarkTicks * kLgTick
+
+ +
+
+ +

◆ kLgBitMarkTicks

+ +
+
+ + + + +
const uint16_t kLgBitMarkTicks = 11
+
+ +
+
+ +

◆ kLgHdrMark

+ +
+
+ + + + +
const uint16_t kLgHdrMark = kLgHdrMarkTicks * kLgTick
+
+ +
+
+ +

◆ kLgHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kLgHdrMarkTicks = 170
+
+ +
+
+ +

◆ kLgHdrSpace

+ +
+
+ + + + +
const uint16_t kLgHdrSpace = kLgHdrSpaceTicks * kLgTick
+
+ +
+
+ +

◆ kLgHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kLgHdrSpaceTicks = 85
+
+ +
+
+ +

◆ kLgMinGap

+ +
+
+ + + + +
const uint16_t kLgMinGap = kLgMinGapTicks * kLgTick
+
+ +
+
+ +

◆ kLgMinGapTicks

+ +
+
+ + + + +
const uint16_t kLgMinGapTicks = 795
+
+ +
+
+ +

◆ kLgMinMessageLength

+ +
+
+ + + + +
const uint32_t kLgMinMessageLength = kLgMinMessageLengthTicks * kLgTick
+
+ +
+
+ +

◆ kLgMinMessageLengthTicks

+ +
+
+ + + + +
const uint16_t kLgMinMessageLengthTicks = 2161
+
+ +
+
+ +

◆ kLgOneSpace

+ +
+
+ + + + +
const uint16_t kLgOneSpace = kLgOneSpaceTicks * kLgTick
+
+ +
+
+ +

◆ kLgOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kLgOneSpaceTicks = 32
+
+ +
+
+ +

◆ kLgRptSpace

+ +
+
+ + + + +
const uint16_t kLgRptSpace = kLgRptSpaceTicks * kLgTick
+
+ +
+
+ +

◆ kLgRptSpaceTicks

+ +
+
+ + + + +
const uint16_t kLgRptSpaceTicks = 45
+
+ +
+
+ +

◆ kLgTick

+ +
+
+ + + + +
const uint16_t kLgTick = 50
+
+ +
+
+ +

◆ kLgZeroSpace

+ +
+
+ + + + +
const uint16_t kLgZeroSpace = kLgZeroSpaceTicks * kLgTick
+
+ +
+
+ +

◆ kLgZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kLgZeroSpaceTicks = 11
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h.html new file mode 100644 index 000000000..76c02aabf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h.html @@ -0,0 +1,550 @@ + + + + + + + +IRremoteESP8266: src/ir_LG.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_LG.h File Reference
+
+
+ +

Support for LG protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRLgAc
 Class for handling detailed LG A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kLgAcChecksumOffset = 0
 
const uint8_t kLgAcChecksumSize = kNibbleSize
 
const uint8_t kLgAcFanOffset = 4
 
const uint8_t kLgAcFanSize = 3
 
const uint8_t kLgAcFanLow = 0
 
const uint8_t kLgAcFanMedium = 2
 
const uint8_t kLgAcFanHigh = 4
 
const uint8_t kLgAcFanAuto = 5
 
const uint8_t kLgAcTempOffset = 8
 
const uint8_t kLgAcTempSize = 4
 
const uint8_t kLgAcTempAdjust = 15
 
const uint8_t kLgAcMinTemp = 16
 
const uint8_t kLgAcMaxTemp = 30
 
const uint8_t kLgAcModeOffset = 12
 
const uint8_t kLgAcModeSize = 3
 
const uint8_t kLgAcCool = 0
 
const uint8_t kLgAcDry = 1
 
const uint8_t kLgAcFan = 2
 
const uint8_t kLgAcAuto = 3
 
const uint8_t kLgAcHeat = 4
 
const uint8_t kLgAcPowerOffset = 18
 
const uint8_t kLgAcPowerSize = 2
 
const uint8_t kLgAcPowerOff = 3
 
const uint8_t kLgAcPowerOn = 0
 
const uint8_t kLgAcSignatureOffset = 20
 
const uint8_t kLgAcSignatureSize = 8
 
const uint8_t kLgAcSignature = 0x88
 
const uint32_t kLgAcOffCommand = 0x88C0051
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kLgAcAuto

+ +
+
+ + + + +
const uint8_t kLgAcAuto = 3
+
+ +
+
+ +

◆ kLgAcChecksumOffset

+ +
+
+ + + + +
const uint8_t kLgAcChecksumOffset = 0
+
+ +
+
+ +

◆ kLgAcChecksumSize

+ +
+
+ + + + +
const uint8_t kLgAcChecksumSize = kNibbleSize
+
+ +
+
+ +

◆ kLgAcCool

+ +
+
+ + + + +
const uint8_t kLgAcCool = 0
+
+ +
+
+ +

◆ kLgAcDry

+ +
+
+ + + + +
const uint8_t kLgAcDry = 1
+
+ +
+
+ +

◆ kLgAcFan

+ +
+
+ + + + +
const uint8_t kLgAcFan = 2
+
+ +
+
+ +

◆ kLgAcFanAuto

+ +
+
+ + + + +
const uint8_t kLgAcFanAuto = 5
+
+ +
+
+ +

◆ kLgAcFanHigh

+ +
+
+ + + + +
const uint8_t kLgAcFanHigh = 4
+
+ +
+
+ +

◆ kLgAcFanLow

+ +
+
+ + + + +
const uint8_t kLgAcFanLow = 0
+
+ +
+
+ +

◆ kLgAcFanMedium

+ +
+
+ + + + +
const uint8_t kLgAcFanMedium = 2
+
+ +
+
+ +

◆ kLgAcFanOffset

+ +
+
+ + + + +
const uint8_t kLgAcFanOffset = 4
+
+ +
+
+ +

◆ kLgAcFanSize

+ +
+
+ + + + +
const uint8_t kLgAcFanSize = 3
+
+ +
+
+ +

◆ kLgAcHeat

+ +
+
+ + + + +
const uint8_t kLgAcHeat = 4
+
+ +
+
+ +

◆ kLgAcMaxTemp

+ +
+
+ + + + +
const uint8_t kLgAcMaxTemp = 30
+
+ +
+
+ +

◆ kLgAcMinTemp

+ +
+
+ + + + +
const uint8_t kLgAcMinTemp = 16
+
+ +
+
+ +

◆ kLgAcModeOffset

+ +
+
+ + + + +
const uint8_t kLgAcModeOffset = 12
+
+ +
+
+ +

◆ kLgAcModeSize

+ +
+
+ + + + +
const uint8_t kLgAcModeSize = 3
+
+ +
+
+ +

◆ kLgAcOffCommand

+ +
+
+ + + + +
const uint32_t kLgAcOffCommand = 0x88C0051
+
+ +
+
+ +

◆ kLgAcPowerOff

+ +
+
+ + + + +
const uint8_t kLgAcPowerOff = 3
+
+ +
+
+ +

◆ kLgAcPowerOffset

+ +
+
+ + + + +
const uint8_t kLgAcPowerOffset = 18
+
+ +
+
+ +

◆ kLgAcPowerOn

+ +
+
+ + + + +
const uint8_t kLgAcPowerOn = 0
+
+ +
+
+ +

◆ kLgAcPowerSize

+ +
+
+ + + + +
const uint8_t kLgAcPowerSize = 2
+
+ +
+
+ +

◆ kLgAcSignature

+ +
+
+ + + + +
const uint8_t kLgAcSignature = 0x88
+
+ +
+
+ +

◆ kLgAcSignatureOffset

+ +
+
+ + + + +
const uint8_t kLgAcSignatureOffset = 20
+
+ +
+
+ +

◆ kLgAcSignatureSize

+ +
+
+ + + + +
const uint8_t kLgAcSignatureSize = 8
+
+ +
+
+ +

◆ kLgAcTempAdjust

+ +
+
+ + + + +
const uint8_t kLgAcTempAdjust = 15
+
+ +
+
+ +

◆ kLgAcTempOffset

+ +
+
+ + + + +
const uint8_t kLgAcTempOffset = 8
+
+ +
+
+ +

◆ kLgAcTempSize

+ +
+
+ + + + +
const uint8_t kLgAcTempSize = 4
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h_source.html new file mode 100644 index 000000000..05bcb6a1b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__LG_8h_source.html @@ -0,0 +1,262 @@ + + + + + + + +IRremoteESP8266: src/ir_LG.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_LG.h
+
+
+Go to the documentation of this file.
1 // Copyright 2017, 2019 David Conran
+
2 
+
6 
+
7 
+
8 // Supports:
+
9 // Brand: LG, Model: 6711A20083V remote (LG)
+
10 // Brand: LG, Model: AKB74395308 remote (LG2)
+
11 // Brand: LG, Model: S4-W12JA3AA A/C (LG2)
+
12 // Brand: LG, Model: AKB75215403 remote (LG2)
+
13 // Brand: General Electric, Model: AG1BH09AW101 Split A/C
+
14 // Brand: General Electric, Model: 6711AR2853M A/C Remote
+
15 
+
16 #ifndef IR_LG_H_
+
17 #define IR_LG_H_
+
18 
+
19 #define __STDC_LIMIT_MACROS
+
20 #include <stdint.h>
+
21 #ifndef UNIT_TEST
+
22 #include <Arduino.h>
+
23 #endif
+
24 #include "IRremoteESP8266.h"
+
25 #include "IRsend.h"
+
26 #include "IRutils.h"
+
27 #ifdef UNIT_TEST
+
28 #include "IRsend_test.h"
+
29 #endif
+
30 
+
31 const uint8_t kLgAcChecksumOffset = 0; // Nr. of bits
+
32 const uint8_t kLgAcChecksumSize = kNibbleSize; // Nr. of bits
+
33 const uint8_t kLgAcFanOffset = 4; // Nr. of bits
+
34 const uint8_t kLgAcFanSize = 3; // Nr. of bits
+
35 const uint8_t kLgAcFanLow = 0; // 0b000
+
36 const uint8_t kLgAcFanMedium = 2; // 0b010
+
37 const uint8_t kLgAcFanHigh = 4; // 0b100
+
38 const uint8_t kLgAcFanAuto = 5; // 0b101
+
39 const uint8_t kLgAcTempOffset = 8; // Nr. of bits
+
40 const uint8_t kLgAcTempSize = 4; // Nr. of bits
+
41 const uint8_t kLgAcTempAdjust = 15;
+
42 const uint8_t kLgAcMinTemp = 16; // Celsius
+
43 const uint8_t kLgAcMaxTemp = 30; // Celsius
+
44 const uint8_t kLgAcModeOffset = 12; // Nr. of bits
+
45 const uint8_t kLgAcModeSize = 3; // Nr. of bits
+
46 const uint8_t kLgAcCool = 0; // 0b000
+
47 const uint8_t kLgAcDry = 1; // 0b001
+
48 const uint8_t kLgAcFan = 2; // 0b010
+
49 const uint8_t kLgAcAuto = 3; // 0b011
+
50 const uint8_t kLgAcHeat = 4; // 0b100
+
51 const uint8_t kLgAcPowerOffset = 18; // Nr. of bits
+
52 const uint8_t kLgAcPowerSize = 2; // Nr. of bits
+
53 const uint8_t kLgAcPowerOff = 3; // 0b11
+
54 const uint8_t kLgAcPowerOn = 0; // 0b00
+
55 const uint8_t kLgAcSignatureOffset = 20; // Nr. of bits
+
56 const uint8_t kLgAcSignatureSize = 8; // Nr. of bits
+
57 const uint8_t kLgAcSignature = 0x88;
+
58 
+
59 const uint32_t kLgAcOffCommand = 0x88C0051;
+
60 
+
61 // Classes
+
63 class IRLgAc {
+
64  public:
+
65  explicit IRLgAc(const uint16_t pin, const bool inverted = false,
+
66  const bool use_modulation = true);
+
67  void stateReset(void);
+
68  static uint8_t calcChecksum(const uint32_t state);
+
69  static bool validChecksum(const uint32_t state);
+
70  bool isValidLgAc(void);
+
71 #if SEND_LG
+
72  void send(const uint16_t repeat = kLgDefaultRepeat);
+
77  int8_t calibrate(void) { return _irsend.calibrate(); }
+
78 #endif // SEND_LG
+
79  void begin(void);
+
80  void on(void);
+
81  void off(void);
+
82  void setPower(const bool on);
+
83  bool getPower(void);
+
84  void setTemp(const uint8_t degrees);
+
85  uint8_t getTemp(void);
+
86  void setFan(const uint8_t speed);
+
87  uint8_t getFan(void);
+
88  void setMode(const uint8_t mode);
+
89  uint8_t getMode(void);
+
90  uint32_t getRaw(void);
+
91  void setRaw(const uint32_t new_code);
+
92  uint8_t convertMode(const stdAc::opmode_t mode);
+
93  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
94  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
95  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+ +
97  String toString(void);
+
98  void setModel(const lg_ac_remote_model_t model);
+ +
100 #ifndef UNIT_TEST
+
101 
+
102  private:
+ +
104 #else // UNIT_TEST
+
105  IRsendTest _irsend;
+
107 #endif // UNIT_TEST
+
109  uint32_t remote_state;
+
110  uint8_t _temp;
+ +
112  void checksum(void);
+
113  void _setTemp(const uint8_t value);
+
114 };
+
115 
+
116 #endif // IR_LG_H_
+
+
const uint8_t kLgAcFanMedium
Definition: ir_LG.h:36
+
void _setTemp(const uint8_t value)
Set the temperature.
Definition: ir_LG.cpp:375
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_LG.cpp:457
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:714
+
uint32_t getRaw(void)
Get a copy of the internal state/code for this protocol.
Definition: ir_LG.cpp:314
+
decode_type_t _protocol
Definition: ir_LG.h:111
+
const uint8_t kLgAcFanSize
Definition: ir_LG.h:34
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_LG.h:77
+
const uint8_t kLgAcFanAuto
Definition: ir_LG.h:38
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kLgAcFanOffset
Definition: ir_LG.h:33
+
const uint8_t kLgAcPowerOff
Definition: ir_LG.h:53
+
lg_ac_remote_model_t getModel(void)
Get the model of the A/C.
Definition: ir_LG.cpp:301
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_LG.cpp:400
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_LG.cpp:521
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_LG.cpp:421
+
const uint8_t kLgAcFanHigh
Definition: ir_LG.h:37
+ +
const uint8_t kLgAcPowerOffset
Definition: ir_LG.h:51
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kLgAcDry
Definition: ir_LG.h:47
+
void setTemp(const uint8_t degrees)
Set the temperature.
Definition: ir_LG.cpp:381
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kLgAcTempOffset
Definition: ir_LG.h:39
+
const uint32_t kLgAcOffCommand
Definition: ir_LG.h:59
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kNibbleSize
Definition: IRutils.h:17
+
static uint8_t calcChecksum(const uint32_t state)
Calculate the checksum for a given state.
Definition: ir_LG.cpp:330
+
const uint8_t kLgAcFanLow
Definition: ir_LG.h:35
+
void setModel(const lg_ac_remote_model_t model)
Set the model of the A/C to emulate.
Definition: ir_LG.cpp:287
+
const uint16_t kLgDefaultRepeat
Definition: IRremoteESP8266.h:919
+
const uint8_t kLgAcMaxTemp
Definition: ir_LG.h:43
+
IRLgAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_LG.cpp:259
+
const uint8_t kLgAcSignature
Definition: ir_LG.h:57
+ +
const uint8_t kLgAcSignatureSize
Definition: ir_LG.h:56
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_LG.cpp:470
+
const uint8_t kLgAcTempSize
Definition: ir_LG.h:40
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_LG.cpp:484
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_LG.cpp:495
+
const uint8_t kLgAcCool
Definition: ir_LG.h:46
+
const uint8_t kLgAcHeat
Definition: ir_LG.h:50
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_LG.cpp:270
+
const uint8_t kLgAcChecksumSize
Definition: ir_LG.h:32
+
const uint8_t kLgAcPowerSize
Definition: ir_LG.h:52
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_LG.cpp:415
+
Class for handling detailed LG A/C messages.
Definition: ir_LG.h:63
+ +
const uint8_t kLgAcSignatureOffset
Definition: ir_LG.h:55
+
const uint8_t kLgAcModeSize
Definition: ir_LG.h:45
+
uint32_t remote_state
The state of the IR remote in IR code form.
Definition: ir_LG.h:109
+
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:158
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_LG.cpp:427
+
uint8_t _temp
Definition: ir_LG.h:110
+
const uint8_t kLgAcModeOffset
Definition: ir_LG.h:44
+
const uint8_t kLgAcAuto
Definition: ir_LG.h:49
+
void setRaw(const uint32_t new_code)
Set the internal state from a valid code for this protocol.
Definition: ir_LG.cpp:321
+
const uint8_t kLgAcPowerOn
Definition: ir_LG.h:54
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_LG.cpp:390
+
void off(void)
Change the power setting to Off.
Definition: ir_LG.cpp:352
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_LG.cpp:367
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_LG.cpp:343
+
void stateReset(void)
Reset the internals of the object to a known good state.
Definition: ir_LG.cpp:264
+
const uint8_t kLgAcChecksumOffset
Definition: ir_LG.h:31
+
const uint8_t kLgAcMinTemp
Definition: ir_LG.h:42
+
const uint8_t kLgAcTempAdjust
Definition: ir_LG.h:41
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_LG.cpp:444
+
void setPower(const bool on)
Change the power setting.
Definition: ir_LG.cpp:356
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void send(const uint16_t repeat=kLgDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_LG.cpp:275
+
static bool validChecksum(const uint32_t state)
Verify the checksum is valid for a given state.
Definition: ir_LG.cpp:337
+
const uint8_t kLgAcFan
Definition: ir_LG.h:48
+
void on(void)
Change the power setting to On.
Definition: ir_LG.cpp:349
+
bool isValidLgAc(void)
Check if the internal state looks like a valud LG A/C message.
Definition: ir_LG.cpp:538
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_LG.h:103
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lasertag_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lasertag_8cpp.html new file mode 100644 index 000000000..568c1faa2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lasertag_8cpp.html @@ -0,0 +1,221 @@ + + + + + + + +IRremoteESP8266: src/ir_Lasertag.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Lasertag.cpp File Reference
+
+
+ +

Support for Lasertag protocols. +More...

+ + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kLasertagMinSamples = 13
 
const uint16_t kLasertagTick = 333
 
const uint32_t kLasertagMinGap = kDefaultMessageGap
 
const uint8_t kLasertagTolerance = 0
 
const uint16_t kLasertagExcess = 0
 
const uint16_t kLasertagDelta = 150
 
const int16_t kSpace = 1
 
const int16_t kMark = 0
 
+

Detailed Description

+

Support for Lasertag protocols.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/366
+

Variable Documentation

+ +

◆ kLasertagDelta

+ +
+
+ + + + +
const uint16_t kLasertagDelta = 150
+
+ +
+
+ +

◆ kLasertagExcess

+ +
+
+ + + + +
const uint16_t kLasertagExcess = 0
+
+ +
+
+ +

◆ kLasertagMinGap

+ +
+
+ + + + +
const uint32_t kLasertagMinGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kLasertagMinSamples

+ +
+
+ + + + +
const uint16_t kLasertagMinSamples = 13
+
+ +
+
+ +

◆ kLasertagTick

+ +
+
+ + + + +
const uint16_t kLasertagTick = 333
+
+ +
+
+ +

◆ kLasertagTolerance

+ +
+
+ + + + +
const uint8_t kLasertagTolerance = 0
+
+ +
+
+ +

◆ kMark

+ +
+
+ + + + +
const int16_t kMark = 0
+
+ +
+
+ +

◆ kSpace

+ +
+
+ + + + +
const int16_t kSpace = 1
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lego_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lego_8cpp.html new file mode 100644 index 000000000..8a2d2c588 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lego_8cpp.html @@ -0,0 +1,176 @@ + + + + + + + +IRremoteESP8266: src/ir_Lego.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Lego.cpp File Reference
+
+
+ +

Support for LEGO protocols. +More...

+ + + + + + + + + + + + +

+Variables

const uint16_t kLegoPfBitMark = 158
 
const uint16_t kLegoPfHdrSpace = 1026
 
const uint16_t kLegoPfZeroSpace = 263
 
const uint16_t kLegoPfOneSpace = 553
 
const uint32_t kLegoPfMinCommandLength = 16000
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kLegoPfBitMark

+ +
+
+ + + + +
const uint16_t kLegoPfBitMark = 158
+
+ +
+
+ +

◆ kLegoPfHdrSpace

+ +
+
+ + + + +
const uint16_t kLegoPfHdrSpace = 1026
+
+ +
+
+ +

◆ kLegoPfMinCommandLength

+ +
+
+ + + + +
const uint32_t kLegoPfMinCommandLength = 16000
+
+ +
+
+ +

◆ kLegoPfOneSpace

+ +
+
+ + + + +
const uint16_t kLegoPfOneSpace = 553
+
+ +
+
+ +

◆ kLegoPfZeroSpace

+ +
+
+ + + + +
const uint16_t kLegoPfZeroSpace = 263
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lutron_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lutron_8cpp.html new file mode 100644 index 000000000..b75090a1f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Lutron_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +IRremoteESP8266: src/ir_Lutron.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Lutron.cpp File Reference
+
+
+ +

Support for Lutron protocols. +More...

+ + + + + + + + +

+Variables

const uint16_t kLutronTick = 2288
 
const uint32_t kLutronGap = 150000
 
const uint16_t kLutronDelta = 400
 
+

Detailed Description

+

Support for Lutron protocols.

+
Note
The Lutron protocol uses a sort of Run Length encoding to encode its data. There is no header or footer per-se. As a mark is the first data we will notice, we always assume the First bit of the technically 36-bit protocol is '1'. So it is assumed, and thus we only care about the 35 bits of data.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/515
+
+http://www.lutron.com/TechnicalDocumentLibrary/048158.doc
+

Variable Documentation

+ +

◆ kLutronDelta

+ +
+
+ + + + +
const uint16_t kLutronDelta = 400
+
+ +
+
+ +

◆ kLutronGap

+ +
+
+ + + + +
const uint32_t kLutronGap = 150000
+
+ +
+
+ +

◆ kLutronTick

+ +
+
+ + + + +
const uint16_t kLutronTick = 2288
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MWM_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MWM_8cpp.html new file mode 100644 index 000000000..8a6c009c2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MWM_8cpp.html @@ -0,0 +1,237 @@ + + + + + + + +IRremoteESP8266: src/ir_MWM.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_MWM.cpp File Reference
+
+
+ +

Disney Made With Magic (MWM) Support derived from ir_Lasertag.cpp. +More...

+ + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kMWMMinSamples = 6
 
const uint16_t kMWMTick = 417
 
const uint32_t kMWMMinGap = 30000
 
const uint8_t kMWMTolerance = 0
 
const uint16_t kMWMExcess = 0
 
const uint16_t kMWMDelta = 150
 
const uint8_t kMWMMaxWidth = 9
 
const int16_t kSpace = 1
 
const int16_t kMark = 0
 
+

Detailed Description

+

Disney Made With Magic (MWM) Support derived from ir_Lasertag.cpp.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/pull/557
+

Variable Documentation

+ +

◆ kMark

+ +
+
+ + + + +
const int16_t kMark = 0
+
+ +
+
+ +

◆ kMWMDelta

+ +
+
+ + + + +
const uint16_t kMWMDelta = 150
+
+ +
+
+ +

◆ kMWMExcess

+ +
+
+ + + + +
const uint16_t kMWMExcess = 0
+
+ +
+
+ +

◆ kMWMMaxWidth

+ +
+
+ + + + +
const uint8_t kMWMMaxWidth = 9
+
+ +
+
+ +

◆ kMWMMinGap

+ +
+
+ + + + +
const uint32_t kMWMMinGap = 30000
+
+ +
+
+ +

◆ kMWMMinSamples

+ +
+
+ + + + +
const uint16_t kMWMMinSamples = 6
+
+ +
+
+ +

◆ kMWMTick

+ +
+
+ + + + +
const uint16_t kMWMTick = 417
+
+ +
+
+ +

◆ kMWMTolerance

+ +
+
+ + + + +
const uint8_t kMWMTolerance = 0
+
+ +
+
+ +

◆ kSpace

+ +
+
+ + + + +
const int16_t kSpace = 1
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8cpp.html new file mode 100644 index 000000000..3b0c54da6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8cpp.html @@ -0,0 +1,88 @@ + + + + + + + +IRremoteESP8266: src/ir_Magiquest.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Magiquest.cpp File Reference
+
+
+ +

Support for MagiQuest protocols. +More...

+

Detailed Description

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h.html new file mode 100644 index 000000000..628b41793 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h.html @@ -0,0 +1,232 @@ + + + + + + + +IRremoteESP8266: src/ir_Magiquest.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Magiquest.h File Reference
+
+
+ +

Support for MagiQuest protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

union  magiquest
 MagiQuest packet is both Wand ID and magnitude of swish and flick. More...
 
+ + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kMagiQuestTotalUsec = 1150
 
const uint8_t kMagiQuestZeroRatio = 30
 
const uint8_t kMagiQuestOneRatio = 38
 
const uint16_t kMagiQuestMarkZero = 280
 
const uint16_t kMagiQuestSpaceZero = 850
 
const uint16_t kMagiQuestMarkOne = 580
 
const uint16_t kMagiQuestSpaceOne = 600
 
const uint32_t kMagiQuestGap = kDefaultMessageGap
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kMagiQuestGap

+ +
+
+ + + + +
const uint32_t kMagiQuestGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kMagiQuestMarkOne

+ +
+
+ + + + +
const uint16_t kMagiQuestMarkOne = 580
+
+ +
+
+ +

◆ kMagiQuestMarkZero

+ +
+
+ + + + +
const uint16_t kMagiQuestMarkZero = 280
+
+ +
+
+ +

◆ kMagiQuestOneRatio

+ +
+
+ + + + +
const uint8_t kMagiQuestOneRatio = 38
+
+ +
+
+ +

◆ kMagiQuestSpaceOne

+ +
+
+ + + + +
const uint16_t kMagiQuestSpaceOne = 600
+
+ +
+
+ +

◆ kMagiQuestSpaceZero

+ +
+
+ + + + +
const uint16_t kMagiQuestSpaceZero = 850
+
+ +
+
+ +

◆ kMagiQuestTotalUsec

+ +
+
+ + + + +
const uint16_t kMagiQuestTotalUsec = 1150
+
+ +
+
+ +

◆ kMagiQuestZeroRatio

+ +
+
+ + + + +
const uint8_t kMagiQuestZeroRatio = 30
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h_source.html new file mode 100644 index 000000000..1928697e9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Magiquest_8h_source.html @@ -0,0 +1,137 @@ + + + + + + + +IRremoteESP8266: src/ir_Magiquest.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Magiquest.h
+
+
+Go to the documentation of this file.
1 // Copyright 2013 mpflaga
+
2 // Copyright 2015 kitlaan
+
3 // Copyright 2017 Jason kendall, David Conran
+
4 
+
9 
+
10 // Supports:
+
11 // Brand: MagiQuest, Model: Wand
+
12 
+
13 #ifndef IR_MAGIQUEST_H_
+
14 #define IR_MAGIQUEST_H_
+
15 
+
16 #define __STDC_LIMIT_MACROS
+
17 #include <stdint.h>
+
18 #include "IRremoteESP8266.h"
+
19 #include "IRsend.h"
+
20 
+
22 union magiquest {
+
23  uint64_t llword;
+
24  uint8_t byte[8];
+
25  // uint16_t word[4];
+
26  uint32_t lword[2];
+
27  struct {
+
28  uint16_t magnitude;
+
29  uint32_t wand_id;
+
30  uint8_t padding;
+
31  uint8_t scrap;
+
32  } cmd;
+
33 };
+
34 
+
35 const uint16_t kMagiQuestTotalUsec = 1150;
+
36 const uint8_t kMagiQuestZeroRatio = 30; // usually <= ~25%
+
37 const uint8_t kMagiQuestOneRatio = 38; // usually >= ~50%
+
38 const uint16_t kMagiQuestMarkZero = 280;
+
39 const uint16_t kMagiQuestSpaceZero = 850;
+
40 const uint16_t kMagiQuestMarkOne = 580;
+
41 const uint16_t kMagiQuestSpaceOne = 600;
+
42 const uint32_t kMagiQuestGap = kDefaultMessageGap; // Just a guess.
+
43 #endif // IR_MAGIQUEST_H_
+
+
const uint32_t kDefaultMessageGap
Definition: IRsend.h:41
+
uint8_t scrap
Definition: ir_Magiquest.h:31
+
const uint16_t kMagiQuestMarkZero
Definition: ir_Magiquest.h:38
+ +
uint16_t magnitude
Definition: ir_Magiquest.h:28
+
struct magiquest::@0 cmd
+
uint64_t llword
Definition: ir_Magiquest.h:23
+ +
const uint16_t kMagiQuestMarkOne
Definition: ir_Magiquest.h:40
+
MagiQuest packet is both Wand ID and magnitude of swish and flick.
Definition: ir_Magiquest.h:22
+
uint32_t wand_id
Definition: ir_Magiquest.h:29
+
const uint32_t kMagiQuestGap
Definition: ir_Magiquest.h:42
+
const uint16_t kMagiQuestSpaceZero
Definition: ir_Magiquest.h:39
+
const uint16_t kMagiQuestSpaceOne
Definition: ir_Magiquest.h:41
+
uint32_t lword[2]
Definition: ir_Magiquest.h:26
+
const uint16_t kMagiQuestTotalUsec
Definition: ir_Magiquest.h:35
+
uint8_t padding
Definition: ir_Magiquest.h:30
+
const uint8_t kMagiQuestOneRatio
Definition: ir_Magiquest.h:37
+
const uint8_t kMagiQuestZeroRatio
Definition: ir_Magiquest.h:36
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8cpp.html new file mode 100644 index 000000000..4d39bc403 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8cpp.html @@ -0,0 +1,341 @@ + + + + + + + +IRremoteESP8266: src/ir_Midea.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Midea.cpp File Reference
+
+
+ +

Support for Midea protocols. Midea added by crankyoldgit & bwze. send: bwze/crankyoldgit, decode: crankyoldgit. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kMideaTick = 80
 
const uint16_t kMideaBitMarkTicks = 7
 
const uint16_t kMideaBitMark = kMideaBitMarkTicks * kMideaTick
 
const uint16_t kMideaOneSpaceTicks = 21
 
const uint16_t kMideaOneSpace = kMideaOneSpaceTicks * kMideaTick
 
const uint16_t kMideaZeroSpaceTicks = 7
 
const uint16_t kMideaZeroSpace = kMideaZeroSpaceTicks * kMideaTick
 
const uint16_t kMideaHdrMarkTicks = 56
 
const uint16_t kMideaHdrMark = kMideaHdrMarkTicks * kMideaTick
 
const uint16_t kMideaHdrSpaceTicks = 56
 
const uint16_t kMideaHdrSpace = kMideaHdrSpaceTicks * kMideaTick
 
const uint16_t kMideaMinGapTicks
 
const uint16_t kMideaMinGap = kMideaMinGapTicks * kMideaTick
 
const uint8_t kMideaTolerance = 30
 
const uint16_t kMidea24MinGap = 13000
 uSecs More...
 
+

Detailed Description

+

Support for Midea protocols. Midea added by crankyoldgit & bwze. send: bwze/crankyoldgit, decode: crankyoldgit.

+
See also
https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing
+

Variable Documentation

+ +

◆ kMidea24MinGap

+ +
+
+ + + + +
const uint16_t kMidea24MinGap = 13000
+
+ +

uSecs

+ +
+
+ +

◆ kMideaBitMark

+ +
+
+ + + + +
const uint16_t kMideaBitMark = kMideaBitMarkTicks * kMideaTick
+
+ +
+
+ +

◆ kMideaBitMarkTicks

+ +
+
+ + + + +
const uint16_t kMideaBitMarkTicks = 7
+
+ +
+
+ +

◆ kMideaHdrMark

+ +
+
+ + + + +
const uint16_t kMideaHdrMark = kMideaHdrMarkTicks * kMideaTick
+
+ +
+
+ +

◆ kMideaHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kMideaHdrMarkTicks = 56
+
+ +
+
+ +

◆ kMideaHdrSpace

+ +
+
+ + + + +
const uint16_t kMideaHdrSpace = kMideaHdrSpaceTicks * kMideaTick
+
+ +
+
+ +

◆ kMideaHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kMideaHdrSpaceTicks = 56
+
+ +
+
+ +

◆ kMideaMinGap

+ +
+
+ + + + +
const uint16_t kMideaMinGap = kMideaMinGapTicks * kMideaTick
+
+ +
+
+ +

◆ kMideaMinGapTicks

+ +
+
+ + + + +
const uint16_t kMideaMinGapTicks
+
+
+ +

◆ kMideaOneSpace

+ +
+
+ + + + +
const uint16_t kMideaOneSpace = kMideaOneSpaceTicks * kMideaTick
+
+ +
+
+ +

◆ kMideaOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kMideaOneSpaceTicks = 21
+
+ +
+
+ +

◆ kMideaTick

+ +
+
+ + + + +
const uint16_t kMideaTick = 80
+
+ +
+
+ +

◆ kMideaTolerance

+ +
+
+ + + + +
const uint8_t kMideaTolerance = 30
+
+ +
+
+ +

◆ kMideaZeroSpace

+ +
+
+ + + + +
const uint16_t kMideaZeroSpace = kMideaZeroSpaceTicks * kMideaTick
+
+ +
+
+ +

◆ kMideaZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kMideaZeroSpaceTicks = 7
+
+ +
+
+
+
const uint16_t kMideaZeroSpaceTicks
Definition: ir_Midea.cpp:25
+
const uint16_t kMideaBitMarkTicks
Definition: ir_Midea.cpp:21
+
const uint16_t kMideaHdrMarkTicks
Definition: ir_Midea.cpp:27
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h.html new file mode 100644 index 000000000..309a3a97a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h.html @@ -0,0 +1,454 @@ + + + + + + + +IRremoteESP8266: src/ir_Midea.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Midea.h File Reference
+
+
+ +

Support for Midea protocols. Midea added by crankyoldgit & bwze. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRMideaAC
 Class for handling detailed Midea A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kMideaACTempOffset = 24
 
const uint8_t kMideaACTempSize = 5
 
const uint8_t kMideaACMinTempF = 62
 
const uint8_t kMideaACMaxTempF = 86
 
const uint8_t kMideaACMinTempC = 17
 
const uint8_t kMideaACMaxTempC = 30
 
const uint8_t kMideaACCelsiusOffset = 29
 
const uint8_t kMideaACModeOffset = 32
 
const uint8_t kMideaACCool = 0
 
const uint8_t kMideaACDry = 1
 
const uint8_t kMideaACAuto = 2
 
const uint8_t kMideaACHeat = 3
 
const uint8_t kMideaACFan = 4
 
const uint8_t kMideaACFanOffset = 35
 
const uint8_t kMideaACFanSize = 2
 
const uint8_t kMideaACFanAuto = 0
 
const uint8_t kMideaACFanLow = 1
 
const uint8_t kMideaACFanMed = 2
 
const uint8_t kMideaACFanHigh = 3
 
const uint8_t kMideaACSleepOffset = 38
 
const uint8_t kMideaACPowerOffset = 39
 
const uint64_t kMideaACToggleSwingV = 0x0000A201FFFFFF7C
 
+

Detailed Description

+

Support for Midea protocols. Midea added by crankyoldgit & bwze.

+
See also
https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing
+

Variable Documentation

+ +

◆ kMideaACAuto

+ +
+
+ + + + +
const uint8_t kMideaACAuto = 2
+
+ +
+
+ +

◆ kMideaACCelsiusOffset

+ +
+
+ + + + +
const uint8_t kMideaACCelsiusOffset = 29
+
+ +
+
+ +

◆ kMideaACCool

+ +
+
+ + + + +
const uint8_t kMideaACCool = 0
+
+ +
+
+ +

◆ kMideaACDry

+ +
+
+ + + + +
const uint8_t kMideaACDry = 1
+
+ +
+
+ +

◆ kMideaACFan

+ +
+
+ + + + +
const uint8_t kMideaACFan = 4
+
+ +
+
+ +

◆ kMideaACFanAuto

+ +
+
+ + + + +
const uint8_t kMideaACFanAuto = 0
+
+ +
+
+ +

◆ kMideaACFanHigh

+ +
+
+ + + + +
const uint8_t kMideaACFanHigh = 3
+
+ +
+
+ +

◆ kMideaACFanLow

+ +
+
+ + + + +
const uint8_t kMideaACFanLow = 1
+
+ +
+
+ +

◆ kMideaACFanMed

+ +
+
+ + + + +
const uint8_t kMideaACFanMed = 2
+
+ +
+
+ +

◆ kMideaACFanOffset

+ +
+
+ + + + +
const uint8_t kMideaACFanOffset = 35
+
+ +
+
+ +

◆ kMideaACFanSize

+ +
+
+ + + + +
const uint8_t kMideaACFanSize = 2
+
+ +
+
+ +

◆ kMideaACHeat

+ +
+
+ + + + +
const uint8_t kMideaACHeat = 3
+
+ +
+
+ +

◆ kMideaACMaxTempC

+ +
+
+ + + + +
const uint8_t kMideaACMaxTempC = 30
+
+ +
+
+ +

◆ kMideaACMaxTempF

+ +
+
+ + + + +
const uint8_t kMideaACMaxTempF = 86
+
+ +
+
+ +

◆ kMideaACMinTempC

+ +
+
+ + + + +
const uint8_t kMideaACMinTempC = 17
+
+ +
+
+ +

◆ kMideaACMinTempF

+ +
+
+ + + + +
const uint8_t kMideaACMinTempF = 62
+
+ +
+
+ +

◆ kMideaACModeOffset

+ +
+
+ + + + +
const uint8_t kMideaACModeOffset = 32
+
+ +
+
+ +

◆ kMideaACPowerOffset

+ +
+
+ + + + +
const uint8_t kMideaACPowerOffset = 39
+
+ +
+
+ +

◆ kMideaACSleepOffset

+ +
+
+ + + + +
const uint8_t kMideaACSleepOffset = 38
+
+ +
+
+ +

◆ kMideaACTempOffset

+ +
+
+ + + + +
const uint8_t kMideaACTempOffset = 24
+
+ +
+
+ +

◆ kMideaACTempSize

+ +
+
+ + + + +
const uint8_t kMideaACTempSize = 5
+
+ +
+
+ +

◆ kMideaACToggleSwingV

+ +
+
+ + + + +
const uint64_t kMideaACToggleSwingV = 0x0000A201FFFFFF7C
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h_source.html new file mode 100644 index 000000000..f8649c8cd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Midea_8h_source.html @@ -0,0 +1,264 @@ + + + + + + + +IRremoteESP8266: src/ir_Midea.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Midea.h
+
+
+Go to the documentation of this file.
1 // Copyright 2017 David Conran
+
2 
+
7 
+
8 // Supports:
+
9 // Brand: Pioneer System, Model: RYBO12GMFILCAD A/C (12K BTU) (MIDEA)
+
10 // Brand: Pioneer System, Model: RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
+
11 // Brand: Comfee, Model: MPD1-12CRN7 A/C (MIDEA)
+
12 // Brand: Keystone, Model: RG57H4(B)BGEF remote (MIDEA)
+
13 // Brand: Midea, Model: FS40-7AR Stand Fan (MIDEA24)
+
14 
+
15 #ifndef IR_MIDEA_H_
+
16 #define IR_MIDEA_H_
+
17 
+
18 #define __STDC_LIMIT_MACROS
+
19 #include <stdint.h>
+
20 #ifdef ARDUINO
+
21 #include <Arduino.h>
+
22 #endif
+
23 #include "IRremoteESP8266.h"
+
24 #include "IRsend.h"
+
25 #ifdef UNIT_TEST
+
26 #include "IRsend_test.h"
+
27 #endif
+
28 
+
29 // Constants
+
30 const uint8_t kMideaACTempOffset = 24;
+
31 const uint8_t kMideaACTempSize = 5; // Bits
+
32 const uint8_t kMideaACMinTempF = 62; // Fahrenheit
+
33 const uint8_t kMideaACMaxTempF = 86; // Fahrenheit
+
34 const uint8_t kMideaACMinTempC = 17; // Celsius
+
35 const uint8_t kMideaACMaxTempC = 30; // Celsius
+
36 const uint8_t kMideaACCelsiusOffset = 29;
+
37 const uint8_t kMideaACModeOffset = 32;
+
38 const uint8_t kMideaACCool = 0; // 0b000
+
39 const uint8_t kMideaACDry = 1; // 0b001
+
40 const uint8_t kMideaACAuto = 2; // 0b010
+
41 const uint8_t kMideaACHeat = 3; // 0b011
+
42 const uint8_t kMideaACFan = 4; // 0b100
+
43 const uint8_t kMideaACFanOffset = 35;
+
44 const uint8_t kMideaACFanSize = 2; // Bits
+
45 const uint8_t kMideaACFanAuto = 0; // 0b00
+
46 const uint8_t kMideaACFanLow = 1; // 0b01
+
47 const uint8_t kMideaACFanMed = 2; // 0b10
+
48 const uint8_t kMideaACFanHigh = 3; // 0b11
+
49 const uint8_t kMideaACSleepOffset = 38;
+
50 const uint8_t kMideaACPowerOffset = 39;
+
51 const uint64_t kMideaACToggleSwingV = 0x0000A201FFFFFF7C;
+
52 
+
53 // Legacy defines. (Deprecated)
+
54 #define MIDEA_AC_COOL kMideaACCool
+
55 #define MIDEA_AC_DRY kMideaACDry
+
56 #define MIDEA_AC_AUTO kMideaACAuto
+
57 #define MIDEA_AC_HEAT kMideaACHeat
+
58 #define MIDEA_AC_FAN kMideaACFan
+
59 #define MIDEA_AC_FAN_AUTO kMideaACFanAuto
+
60 #define MIDEA_AC_FAN_LOW kMideaACFanLow
+
61 #define MIDEA_AC_FAN_MED kMideaACFanMed
+
62 #define MIDEA_AC_FAN_HI kMideaACFanHigh
+
63 #define MIDEA_AC_POWER kMideaACPower
+
64 #define MIDEA_AC_SLEEP kMideaACSleep
+
65 #define MIDEA_AC_MIN_TEMP_F kMideaACMinTempF
+
66 #define MIDEA_AC_MAX_TEMP_F kMideaACMaxTempF
+
67 #define MIDEA_AC_MIN_TEMP_C kMideaACMinTempC
+
68 #define MIDEA_AC_MAX_TEMP_C kMideaACMaxTempC
+
69 
+
70 // Classes
+
73 class IRMideaAC {
+
74  public:
+
75  explicit IRMideaAC(const uint16_t pin, const bool inverted = false,
+
76  const bool use_modulation = true);
+
77  void stateReset(void);
+
78 #if SEND_MIDEA
+
79  void send(const uint16_t repeat = kMideaMinRepeat);
+
84  int8_t calibrate(void) { return _irsend.calibrate(); }
+
85 #endif // SEND_MIDEA
+
86  void begin(void);
+
87  void on(void);
+
88  void off(void);
+
89  void setPower(const bool on);
+
90  bool getPower(void);
+
91  bool getUseCelsius(void);
+
92  void setUseCelsius(const bool celsius);
+
93  void setTemp(const uint8_t temp, const bool useCelsius = false);
+
94  uint8_t getTemp(const bool useCelsius = false);
+
95  void setFan(const uint8_t fan);
+
96  uint8_t getFan(void);
+
97  void setMode(const uint8_t mode);
+
98  uint8_t getMode(void);
+
99  void setRaw(const uint64_t newState);
+
100  uint64_t getRaw(void);
+
101  static bool validChecksum(const uint64_t state);
+
102  void setSleep(const bool on);
+
103  bool getSleep(void);
+
104  bool isSwingVToggle(void);
+
105  void setSwingVToggle(const bool on);
+
106  bool getSwingVToggle(void);
+
107  uint8_t convertMode(const stdAc::opmode_t mode);
+
108  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
109  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
110  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
111  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL);
+
112  String toString(void);
+
113 #ifndef UNIT_TEST
+
114 
+
115  private:
+ +
117 #else // UNIT_TEST
+
118  IRsendTest _irsend;
+
120 #endif // UNIT_TEST
+
122  uint64_t remote_state;
+ +
124  void checksum(void);
+
125  static uint8_t calcChecksum(const uint64_t state);
+
126 };
+
127 
+
128 #endif // IR_MIDEA_H_
+
+
const uint8_t kMideaACMinTempF
Definition: ir_Midea.h:32
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Midea.cpp:105
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Midea.cpp:336
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Midea.cpp:238
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Midea.cpp:133
+
void setUseCelsius(const bool celsius)
Set the A/C unit to use Celsius natively.
Definition: ir_Midea.cpp:158
+
const uint16_t kMideaMinRepeat
Definition: IRremoteESP8266.h:923
+
void setTemp(const uint8_t temp, const bool useCelsius=false)
Set the temperature.
Definition: ir_Midea.cpp:169
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Midea.h:84
+
const uint8_t kMideaACTempOffset
Definition: ir_Midea.h:30
+
const uint8_t kMideaACFanSize
Definition: ir_Midea.h:44
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Midea.cpp:210
+
bool _SwingVToggle
Definition: ir_Midea.h:123
+
const uint8_t kMideaACAuto
Definition: ir_Midea.h:40
+
void checksum(void)
Calculate & set the checksum for the current internal state of the remote.
Definition: ir_Midea.cpp:288
+
IRMideaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Midea.cpp:93
+
const uint8_t kMideaACFan
Definition: ir_Midea.h:42
+
void send(const uint16_t repeat=kMideaMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Midea.cpp:110
+
const uint8_t kMideaACModeOffset
Definition: ir_Midea.h:37
+
bool isSwingVToggle(void)
Is the current state a vertical swing toggle message?
Definition: ir_Midea.cpp:254
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Midea.cpp:244
+ +
const uint8_t kMideaACMaxTempF
Definition: ir_Midea.h:33
+
const uint8_t kMideaACCelsiusOffset
Definition: ir_Midea.h:36
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
void setSwingVToggle(const bool on)
Set the A/C to toggle the vertical swing toggle for the next send.
Definition: ir_Midea.cpp:250
+
std::string String
Definition: IRremoteESP8266.h:1093
+
bool getSwingVToggle(void)
Definition: ir_Midea.cpp:260
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Midea.cpp:136
+ +
const uint8_t kMideaACHeat
Definition: ir_Midea.h:41
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Midea.cpp:146
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Midea.cpp:216
+
bool getUseCelsius(void)
Is the device currently using Celsius or the Fahrenheit temp scale?
Definition: ir_Midea.cpp:152
+
uint8_t getTemp(const bool useCelsius=false)
Get the current temperature setting.
Definition: ir_Midea.cpp:190
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Midea.cpp:323
+
const uint8_t kMideaACFanAuto
Definition: ir_Midea.h:45
+
const uint64_t kMideaACToggleSwingV
Definition: ir_Midea.h:51
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Midea.h:116
+
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:73
+
void setRaw(const uint64_t newState)
Set the internal state from a valid code for this protocol.
Definition: ir_Midea.cpp:130
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Midea.cpp:222
+
static uint8_t calcChecksum(const uint64_t state)
Calculate the checksum for a given state.
Definition: ir_Midea.cpp:268
+
const uint8_t kMideaACTempSize
Definition: ir_Midea.h:31
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Midea.cpp:309
+
const uint8_t kMideaACSleepOffset
Definition: ir_Midea.h:49
+
const uint8_t kMideaACFanMed
Definition: ir_Midea.h:47
+
uint64_t getRaw(void)
Get a copy of the internal state/code for this protocol.
Definition: ir_Midea.cpp:123
+
const uint8_t kMideaACMinTempC
Definition: ir_Midea.h:34
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Midea.cpp:296
+
uint64_t remote_state
The state of the IR remote in IR code form.
Definition: ir_Midea.h:122
+
const uint8_t kMideaACPowerOffset
Definition: ir_Midea.h:50
+
const uint8_t kMideaACFanHigh
Definition: ir_Midea.h:48
+
const uint8_t kMideaACMaxTempC
Definition: ir_Midea.h:35
+
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Midea.cpp:348
+
const uint8_t kMideaACDry
Definition: ir_Midea.h:39
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Midea.cpp:384
+
static bool validChecksum(const uint64_t state)
Verify the checksum is valid for a given state.
Definition: ir_Midea.cpp:283
+
const uint8_t kMideaACFanOffset
Definition: ir_Midea.h:43
+
const uint8_t kMideaACCool
Definition: ir_Midea.h:38
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Midea.cpp:140
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Midea.cpp:98
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kMideaACFanLow
Definition: ir_Midea.h:46
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Midea.cpp:203
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html new file mode 100644 index 000000000..8c6af97fa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html @@ -0,0 +1,194 @@ + + + + + + + +IRremoteESP8266: src/ir_MitsubishiHeavy.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_MitsubishiHeavy.cpp File Reference
+
+
+ +

Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units. +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kMitsubishiHeavyHdrMark = 3140
 
const uint16_t kMitsubishiHeavyHdrSpace = 1630
 
const uint16_t kMitsubishiHeavyBitMark = 370
 
const uint16_t kMitsubishiHeavyOneSpace = 420
 
const uint16_t kMitsubishiHeavyZeroSpace = 1220
 
const uint32_t kMitsubishiHeavyGap = kDefaultMessageGap
 
+

Detailed Description

+

Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.

+
Note
This code was heavily influenced by ToniA's great work & code, but it has been written from scratch. Nothing was copied other than constants and message analysis.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/660
+
+https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp
+
+https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp
+

Variable Documentation

+ +

◆ kMitsubishiHeavyBitMark

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavyBitMark = 370
+
+ +
+
+ +

◆ kMitsubishiHeavyGap

+ +
+
+ + + + +
const uint32_t kMitsubishiHeavyGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kMitsubishiHeavyHdrMark

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavyHdrMark = 3140
+
+ +
+
+ +

◆ kMitsubishiHeavyHdrSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavyHdrSpace = 1630
+
+ +
+
+ +

◆ kMitsubishiHeavyOneSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavyOneSpace = 420
+
+ +
+
+ +

◆ kMitsubishiHeavyZeroSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiHeavyZeroSpace = 1220
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h.html new file mode 100644 index 000000000..320f3cab8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h.html @@ -0,0 +1,1314 @@ + + + + + + + +IRremoteESP8266: src/ir_MitsubishiHeavy.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_MitsubishiHeavy.h File Reference
+
+
+ +

Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units. +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  IRMitsubishiHeavy152Ac
 Class for handling detailed Mitsubishi Heavy 152-bit A/C messages. More...
 
class  IRMitsubishiHeavy88Ac
 Class for handling detailed Mitsubishi Heavy 88-bit A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kMitsubishiHeavySigLength = 5
 
const uint8_t kMitsubishiHeavyZmsSig [kMitsubishiHeavySigLength]
 
const uint8_t kMitsubishiHeavyModeOffset = 0
 
const uint8_t kMitsubishiHeavyAuto = 0
 
const uint8_t kMitsubishiHeavyCool = 1
 
const uint8_t kMitsubishiHeavyDry = 2
 
const uint8_t kMitsubishiHeavyFan = 3
 
const uint8_t kMitsubishiHeavyHeat = 4
 
const uint8_t kMitsubishiHeavyPowerOffset = 3
 
const uint8_t kMitsubishiHeavyCleanOffset = 5
 
const uint8_t kMitsubishiHeavyFilterOffset = 6
 
const uint8_t kMitsubishiHeavyMinTemp = 17
 
const uint8_t kMitsubishiHeavyMaxTemp = 31
 
const uint8_t kMitsubishiHeavy152FanAuto = 0x0
 
const uint8_t kMitsubishiHeavy152FanLow = 0x1
 
const uint8_t kMitsubishiHeavy152FanMed = 0x2
 
const uint8_t kMitsubishiHeavy152FanHigh = 0x3
 
const uint8_t kMitsubishiHeavy152FanMax = 0x4
 
const uint8_t kMitsubishiHeavy152FanEcono = 0x6
 
const uint8_t kMitsubishiHeavy152FanTurbo = 0x8
 
const uint8_t kMitsubishiHeavy3DMask = 0b00010010
 
const uint8_t kMitsubishiHeavy152SwingVOffset = 5
 
const uint8_t kMitsubishiHeavy152SwingVSize = 3
 
const uint8_t kMitsubishiHeavy152SwingVAuto = 0
 
const uint8_t kMitsubishiHeavy152SwingVHighest = 1
 
const uint8_t kMitsubishiHeavy152SwingVHigh = 2
 
const uint8_t kMitsubishiHeavy152SwingVMiddle = 3
 
const uint8_t kMitsubishiHeavy152SwingVLow = 4
 
const uint8_t kMitsubishiHeavy152SwingVLowest = 5
 
const uint8_t kMitsubishiHeavy152SwingVOff = 6
 
const uint8_t kMitsubishiHeavy152SwingHAuto = 0
 
const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1
 
const uint8_t kMitsubishiHeavy152SwingHLeft = 2
 
const uint8_t kMitsubishiHeavy152SwingHMiddle = 3
 
const uint8_t kMitsubishiHeavy152SwingHRight = 4
 
const uint8_t kMitsubishiHeavy152SwingHRightMax = 5
 
const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6
 
const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7
 
const uint8_t kMitsubishiHeavy152SwingHOff = 8
 
const uint8_t kMitsubishiHeavyNightOffset = 6
 
const uint8_t kMitsubishiHeavySilentOffset = 7
 
const uint8_t kMitsubishiHeavyZjsSig [kMitsubishiHeavySigLength]
 
const uint8_t kMitsubishiHeavy88CleanOffset = 5
 
const uint8_t kMitsubishiHeavy88SwingHOffset1 = 2
 
const uint8_t kMitsubishiHeavy88SwingHOffset2 = 6
 
const uint8_t kMitsubishiHeavy88SwingHSize = 2
 
const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000
 
const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000
 
const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001
 
const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101
 
const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001
 
const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101
 
const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010
 
const uint8_t kMitsubishiHeavy88SwingHRightLeft = 0b1010
 
const uint8_t kMitsubishiHeavy88SwingHLeftRight = 0b0110
 
const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110
 
const uint8_t kMitsubishiHeavy88FanOffset = 5
 
const uint8_t kMitsubishiHeavy88FanSize = 3
 
const uint8_t kMitsubishiHeavy88FanAuto = 0
 
const uint8_t kMitsubishiHeavy88FanLow = 2
 
const uint8_t kMitsubishiHeavy88FanMed = 3
 
const uint8_t kMitsubishiHeavy88FanHigh = 4
 
const uint8_t kMitsubishiHeavy88FanTurbo = 6
 
const uint8_t kMitsubishiHeavy88FanEcono = 7
 
const uint8_t kMitsubishiHeavy88SwingVByte5Offset = 1
 
const uint8_t kMitsubishiHeavy88SwingVByte5Size = 1
 
const uint8_t kMitsubishiHeavy88SwingVByte7Offset = 3
 
const uint8_t kMitsubishiHeavy88SwingVByte7Size = 2
 
const uint8_t kMitsubishiHeavy88SwingVOff = 0b000
 
const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100
 
const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110
 
const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001
 
const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011
 
const uint8_t kMitsubishiHeavy88SwingVLow = 0b101
 
const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111
 
+

Detailed Description

+

Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.

+
Note
This code was heavily influenced by ToniA's great work & code, but it has been written from scratch. Nothing was copied other than constants and message analysis.
+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/660
+
+https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp
+
+https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp
+

Variable Documentation

+ +

◆ kMitsubishiHeavy152FanAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152FanAuto = 0x0
+
+ +
+
+ +

◆ kMitsubishiHeavy152FanEcono

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152FanEcono = 0x6
+
+ +
+
+ +

◆ kMitsubishiHeavy152FanHigh

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152FanHigh = 0x3
+
+ +
+
+ +

◆ kMitsubishiHeavy152FanLow

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152FanLow = 0x1
+
+ +
+
+ +

◆ kMitsubishiHeavy152FanMax

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152FanMax = 0x4
+
+ +
+
+ +

◆ kMitsubishiHeavy152FanMed

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152FanMed = 0x2
+
+ +
+
+ +

◆ kMitsubishiHeavy152FanTurbo

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152FanTurbo = 0x8
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHAuto = 0
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHLeft

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHLeft = 2
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHLeftMax

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHLeftRight

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHMiddle

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHMiddle = 3
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHOff

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHOff = 8
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHRight

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHRight = 4
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHRightLeft

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingHRightMax

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingHRightMax = 5
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVAuto = 0
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVHigh

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVHigh = 2
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVHighest

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVHighest = 1
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVLow

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVLow = 4
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVLowest

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVLowest = 5
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVMiddle

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVMiddle = 3
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVOff

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVOff = 6
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVOffset = 5
+
+ +
+
+ +

◆ kMitsubishiHeavy152SwingVSize

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy152SwingVSize = 3
+
+ +
+
+ +

◆ kMitsubishiHeavy3DMask

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy3DMask = 0b00010010
+
+ +
+
+ +

◆ kMitsubishiHeavy88CleanOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88CleanOffset = 5
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanAuto = 0
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanEcono

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanEcono = 7
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanHigh

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanHigh = 4
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanLow

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanLow = 2
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanMed

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanMed = 3
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanOffset = 5
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanSize

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanSize = 3
+
+ +
+
+ +

◆ kMitsubishiHeavy88FanTurbo

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88FanTurbo = 6
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingH3D

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHLeft

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHLeftMax

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHLeftRight

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHLeftRight = 0b0110
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHMiddle

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHOff

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHOffset1

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHOffset1 = 2
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHOffset2

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHOffset2 = 6
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHRight

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHRightLeft

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHRightLeft = 0b1010
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHRightMax

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingHSize

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingHSize = 2
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVByte5Offset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVByte5Offset = 1
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVByte5Size

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVByte5Size = 1
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVByte7Offset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVByte7Offset = 3
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVByte7Size

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVByte7Size = 2
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVHigh

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVHighest

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVLow

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVLow = 0b101
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVLowest

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVMiddle

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011
+
+ +
+
+ +

◆ kMitsubishiHeavy88SwingVOff

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavy88SwingVOff = 0b000
+
+ +
+
+ +

◆ kMitsubishiHeavyAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyAuto = 0
+
+ +
+
+ +

◆ kMitsubishiHeavyCleanOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyCleanOffset = 5
+
+ +
+
+ +

◆ kMitsubishiHeavyCool

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyCool = 1
+
+ +
+
+ +

◆ kMitsubishiHeavyDry

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyDry = 2
+
+ +
+
+ +

◆ kMitsubishiHeavyFan

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyFan = 3
+
+ +
+
+ +

◆ kMitsubishiHeavyFilterOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyFilterOffset = 6
+
+ +
+
+ +

◆ kMitsubishiHeavyHeat

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyHeat = 4
+
+ +
+
+ +

◆ kMitsubishiHeavyMaxTemp

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyMaxTemp = 31
+
+ +
+
+ +

◆ kMitsubishiHeavyMinTemp

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyMinTemp = 17
+
+ +
+
+ +

◆ kMitsubishiHeavyModeOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyModeOffset = 0
+
+ +
+
+ +

◆ kMitsubishiHeavyNightOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyNightOffset = 6
+
+ +
+
+ +

◆ kMitsubishiHeavyPowerOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyPowerOffset = 3
+
+ +
+
+ +

◆ kMitsubishiHeavySigLength

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavySigLength = 5
+
+ +
+
+ +

◆ kMitsubishiHeavySilentOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavySilentOffset = 7
+
+ +
+
+ +

◆ kMitsubishiHeavyZjsSig

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyZjsSig[kMitsubishiHeavySigLength]
+
+Initial value:
= {
+
0xAD, 0x51, 0x3C, 0xD9, 0x26}
+
+
+
+ +

◆ kMitsubishiHeavyZmsSig

+ +
+
+ + + + +
const uint8_t kMitsubishiHeavyZmsSig[kMitsubishiHeavySigLength]
+
+Initial value:
= {
+
0xAD, 0x51, 0x3C, 0xE5, 0x1A}
+
+
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html new file mode 100644 index 000000000..eed842d5d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html @@ -0,0 +1,536 @@ + + + + + + + +IRremoteESP8266: src/ir_MitsubishiHeavy.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_MitsubishiHeavy.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 David Conran
+
2 
+
12 
+
13 // Supports:
+
14 // Brand: Mitsubishi Heavy Industries, Model: RLA502A700B remote (152 bit)
+
15 // Brand: Mitsubishi Heavy Industries, Model: SRKxxZM-S A/C (152 bit)
+
16 // Brand: Mitsubishi Heavy Industries, Model: SRKxxZMXA-S A/C (152 bit)
+
17 // Brand: Mitsubishi Heavy Industries, Model: RKX502A001C remote (88 bit)
+
18 // Brand: Mitsubishi Heavy Industries, Model: SRKxxZJ-S A/C (88 bit)
+
19 
+
20 #ifndef IR_MITSUBISHIHEAVY_H_
+
21 #define IR_MITSUBISHIHEAVY_H_
+
22 
+
23 #ifndef UNIT_TEST
+
24 #include <Arduino.h>
+
25 #endif
+
26 #include "IRremoteESP8266.h"
+
27 #include "IRsend.h"
+
28 #ifdef UNIT_TEST
+
29 #include "IRsend_test.h"
+
30 #endif
+
31 
+
32 // Constants.
+
33 const uint8_t kMitsubishiHeavySigLength = 5;
+
34 
+
35 // ZMS (152 bit)
+ +
37  0xAD, 0x51, 0x3C, 0xE5, 0x1A};
+
38 // Byte[5]
+
39 const uint8_t kMitsubishiHeavyModeOffset = 0;
+
40 // Mode Mask = 0b00000111; // Byte 9 on ZJS
+
41 const uint8_t kMitsubishiHeavyAuto = 0; // 0b000
+
42 const uint8_t kMitsubishiHeavyCool = 1; // 0b001
+
43 const uint8_t kMitsubishiHeavyDry = 2; // 0b010
+
44 const uint8_t kMitsubishiHeavyFan = 3; // 0b011
+
45 const uint8_t kMitsubishiHeavyHeat = 4; // 0b100
+
46 const uint8_t kMitsubishiHeavyPowerOffset = 3; // Byte 9 on ZJS
+
47 const uint8_t kMitsubishiHeavyCleanOffset = 5;
+
48 const uint8_t kMitsubishiHeavyFilterOffset = 6;
+
49 // Byte[7]
+
50 const uint8_t kMitsubishiHeavyMinTemp = 17; // 17C
+
51 const uint8_t kMitsubishiHeavyMaxTemp = 31; // 31C
+
52 // Byte[9]
+
53 // FanMask = 0b00001111; // ~Byte 7 on ZJS.
+
54 const uint8_t kMitsubishiHeavy152FanAuto = 0x0; // 0b0000
+
55 const uint8_t kMitsubishiHeavy152FanLow = 0x1; // 0b0001
+
56 const uint8_t kMitsubishiHeavy152FanMed = 0x2; // 0b0010
+
57 const uint8_t kMitsubishiHeavy152FanHigh = 0x3; // 0b0011
+
58 const uint8_t kMitsubishiHeavy152FanMax = 0x4; // 0b0100
+
59 const uint8_t kMitsubishiHeavy152FanEcono = 0x6; // 0b0110
+
60 const uint8_t kMitsubishiHeavy152FanTurbo = 0x8; // 0b1000
+
61 // Byte[11]
+
62 const uint8_t kMitsubishiHeavy3DMask = 0b00010010;
+ +
64 const uint8_t kMitsubishiHeavy152SwingVSize = 3; // Bits
+
65 const uint8_t kMitsubishiHeavy152SwingVAuto = 0; // 0b000
+
66 const uint8_t kMitsubishiHeavy152SwingVHighest = 1; // 0b001
+
67 const uint8_t kMitsubishiHeavy152SwingVHigh = 2; // 0b010
+
68 const uint8_t kMitsubishiHeavy152SwingVMiddle = 3; // 0b011
+
69 const uint8_t kMitsubishiHeavy152SwingVLow = 4; // 0b100
+
70 const uint8_t kMitsubishiHeavy152SwingVLowest = 5; // 0b101
+
71 const uint8_t kMitsubishiHeavy152SwingVOff = 6; // 0b110
+
72 // Byte[13]
+
73 const uint8_t kMitsubishiHeavy152SwingHAuto = 0; // 0b0000
+
74 const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1; // 0b0001
+
75 const uint8_t kMitsubishiHeavy152SwingHLeft = 2; // 0b0010
+
76 const uint8_t kMitsubishiHeavy152SwingHMiddle = 3; // 0b0011
+
77 const uint8_t kMitsubishiHeavy152SwingHRight = 4; // 0b0100
+
78 const uint8_t kMitsubishiHeavy152SwingHRightMax = 5; // 0b0101
+
79 const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6; // 0b0110
+
80 const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7; // 0b0111
+
81 const uint8_t kMitsubishiHeavy152SwingHOff = 8; // 0b1000
+
82 // Byte[15]
+
83 const uint8_t kMitsubishiHeavyNightOffset = 6;
+
84 const uint8_t kMitsubishiHeavySilentOffset = 7;
+
85 
+
86 
+
87 // ZJS (88 bit)
+ +
89  0xAD, 0x51, 0x3C, 0xD9, 0x26};
+
90 // Byte [5]
+ + + +
94 const uint8_t kMitsubishiHeavy88SwingHSize = 2; // Bits (per offset)
+
95 const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000;
+
96 const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000;
+
97 const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001;
+
98 const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101;
+
99 const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001;
+
100 const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101;
+
101 const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010;
+
102 const uint8_t kMitsubishiHeavy88SwingHRightLeft = 0b1010;
+
103 const uint8_t kMitsubishiHeavy88SwingHLeftRight = 0b0110;
+
104 const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110;
+
105 // Byte[7]
+
106 const uint8_t kMitsubishiHeavy88FanOffset = 5;
+
107 const uint8_t kMitsubishiHeavy88FanSize = 3; // Bits
+
108 const uint8_t kMitsubishiHeavy88FanAuto = 0; // 0b000
+
109 const uint8_t kMitsubishiHeavy88FanLow = 2; // 0b010
+
110 const uint8_t kMitsubishiHeavy88FanMed = 3; // 0b011
+
111 const uint8_t kMitsubishiHeavy88FanHigh = 4; // 0b100
+
112 const uint8_t kMitsubishiHeavy88FanTurbo = 6; // 0b110
+
113 const uint8_t kMitsubishiHeavy88FanEcono = 7; // 0b111
+ + + + +
118 
+
119  // Mask 0b111
+
120 const uint8_t kMitsubishiHeavy88SwingVOff = 0b000; // 0
+
121 const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100; // 4
+
122 const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110; // 6
+
123 const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001; // 1
+
124 const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011; // 3
+
125 const uint8_t kMitsubishiHeavy88SwingVLow = 0b101; // 5
+
126 const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111; // 7
+
127 // Byte[9] is Power & Mode & Temp.
+
128 
+
129 
+
130 // Classes
+
131 
+ +
134  public:
+
135  explicit IRMitsubishiHeavy152Ac(const uint16_t pin,
+
136  const bool inverted = false,
+
137  const bool use_modulation = true);
+
138  void stateReset(void);
+
139 #if SEND_MITSUBISHIHEAVY
+
140  void send(const uint16_t repeat = kMitsubishiHeavy152MinRepeat);
+
145  int8_t calibrate(void) { return _irsend.calibrate(); }
+
146 #endif // SEND_MITSUBISHIHEAVY
+
147  void begin(void);
+
148  void on(void);
+
149  void off(void);
+
150 
+
151  void setPower(const bool on);
+
152  bool getPower(void);
+
153 
+
154  void setTemp(const uint8_t temp);
+
155  uint8_t getTemp(void);
+
156 
+
157  void setFan(const uint8_t fan);
+
158  uint8_t getFan(void);
+
159 
+
160  void setMode(const uint8_t mode);
+
161  uint8_t getMode(void);
+
162 
+
163  void setSwingVertical(const uint8_t pos);
+
164  uint8_t getSwingVertical(void);
+
165  void setSwingHorizontal(const uint8_t pos);
+
166  uint8_t getSwingHorizontal(void);
+
167 
+
168  void setNight(const bool on);
+
169  bool getNight(void);
+
170 
+
171  void set3D(const bool on);
+
172  bool get3D(void);
+
173 
+
174  void setSilent(const bool on);
+
175  bool getSilent(void);
+
176 
+
177  void setFilter(const bool on);
+
178  bool getFilter(void);
+
179 
+
180  void setClean(const bool on);
+
181  bool getClean(void);
+
182 
+
183  void setTurbo(const bool on);
+
184  bool getTurbo(void);
+
185 
+
186  void setEcono(const bool on);
+
187  bool getEcono(void);
+
188 
+
189  uint8_t* getRaw(void);
+
190  void setRaw(const uint8_t* data);
+
191 
+
192  static bool checkZmsSig(const uint8_t *state);
+
193  static bool validChecksum(
+
194  const uint8_t *state,
+
195  const uint16_t length = kMitsubishiHeavy152StateLength);
+
196  static uint8_t convertMode(const stdAc::opmode_t mode);
+
197  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
198  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
199  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
200  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
201  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
202  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
203  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
+
204  stdAc::state_t toCommon(void);
+
205  String toString(void);
+
206 #ifndef UNIT_TEST
+
207 
+
208  private:
+ +
210 #else // UNIT_TEST
+
211  IRsendTest _irsend;
+
213 #endif // UNIT_TEST
+ +
216  void checksum(void);
+
217 };
+
218 
+ +
221  public:
+
222  explicit IRMitsubishiHeavy88Ac(const uint16_t pin,
+
223  const bool inverted = false,
+
224  const bool use_modulation = true);
+
225  void stateReset(void);
+
226 #if SEND_MITSUBISHIHEAVY
+
227  void send(const uint16_t repeat = kMitsubishiHeavy88MinRepeat);
+
232  int8_t calibrate(void) { return _irsend.calibrate(); }
+
233 #endif // SEND_MITSUBISHIHEAVY
+
234  void begin(void);
+
235  void on(void);
+
236  void off(void);
+
237 
+
238  void setPower(const bool on);
+
239  bool getPower(void);
+
240 
+
241  void setTemp(const uint8_t temp);
+
242  uint8_t getTemp(void);
+
243 
+
244  void setFan(const uint8_t fan);
+
245  uint8_t getFan(void);
+
246 
+
247  void setMode(const uint8_t mode);
+
248  uint8_t getMode(void);
+
249 
+
250  void setSwingVertical(const uint8_t pos);
+
251  uint8_t getSwingVertical(void);
+
252  void setSwingHorizontal(const uint8_t pos);
+
253  uint8_t getSwingHorizontal(void);
+
254 
+
255  void setTurbo(const bool on);
+
256  bool getTurbo(void);
+
257 
+
258  void setEcono(const bool on);
+
259  bool getEcono(void);
+
260 
+
261  void set3D(const bool on);
+
262  bool get3D(void);
+
263 
+
264  void setClean(const bool on);
+
265  bool getClean(void);
+
266 
+
267  uint8_t* getRaw(void);
+
268  void setRaw(const uint8_t* data);
+
269 
+
270  static bool checkZjsSig(const uint8_t *state);
+
271  static bool validChecksum(
+
272  const uint8_t *state,
+
273  const uint16_t length = kMitsubishiHeavy88StateLength);
+
274  static uint8_t convertMode(const stdAc::opmode_t mode);
+
275  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
276  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
277  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
278  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
279  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
280  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
+
281  stdAc::state_t toCommon(void);
+
282  String toString(void);
+
283 #ifndef UNIT_TEST
+
284 
+
285  private:
+ +
287 #else // UNIT_TEST
+
288  IRsendTest _irsend;
+
290 #endif // UNIT_TEST
+ +
293  void checksum(void);
+
294 };
+
295 #endif // IR_MITSUBISHIHEAVY_H_
+
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_MitsubishiHeavy.cpp:976
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_MitsubishiHeavy.cpp:688
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_MitsubishiHeavy.cpp:655
+
const uint8_t kMitsubishiHeavy88SwingVByte5Size
Definition: ir_MitsubishiHeavy.h:115
+
const uint16_t kMitsubishiHeavy152StateLength
Definition: IRremoteESP8266.h:942
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_MitsubishiHeavy.h:145
+
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:133
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_MitsubishiHeavy.cpp:632
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_MitsubishiHeavy.cpp:1002
+
void checksum(void)
Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
Definition: ir_MitsubishiHeavy.cpp:325
+
const uint8_t kMitsubishiHeavy152SwingVHigh
Definition: ir_MitsubishiHeavy.h:67
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:398
+
const uint8_t kMitsubishiHeavy152SwingHRightLeft
Definition: ir_MitsubishiHeavy.h:79
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_MitsubishiHeavy.cpp:355
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_MitsubishiHeavy.cpp:665
+
const uint8_t kMitsubishiHeavy3DMask
Definition: ir_MitsubishiHeavy.h:62
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_MitsubishiHeavy.cpp:933
+
bool getEcono(void)
Get the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:310
+
void setPower(const bool on)
Change the power setting.
Definition: ir_MitsubishiHeavy.cpp:123
+
void set3D(const bool on)
Set the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:824
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
const uint8_t kMitsubishiHeavy152FanMed
Definition: ir_MitsubishiHeavy.h:56
+
const uint8_t kMitsubishiHeavyCleanOffset
Definition: ir_MitsubishiHeavy.h:47
+
void setSwingHorizontal(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:763
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_MitsubishiHeavy.h:209
+
const uint8_t kMitsubishiHeavy152FanAuto
Definition: ir_MitsubishiHeavy.h:54
+
IRMitsubishiHeavy152Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_MitsubishiHeavy.cpp:77
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kMitsubishiHeavy152SwingVAuto
Definition: ir_MitsubishiHeavy.h:65
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:711
+
const uint8_t kMitsubishiHeavy88FanTurbo
Definition: ir_MitsubishiHeavy.h:112
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_MitsubishiHeavy.cpp:888
+
const uint8_t kMitsubishiHeavy88SwingHLeftMax
Definition: ir_MitsubishiHeavy.h:97
+
const uint8_t kMitsubishiHeavy152SwingVHighest
Definition: ir_MitsubishiHeavy.h:66
+
const uint8_t kMitsubishiHeavy88SwingH3D
Definition: ir_MitsubishiHeavy.h:104
+
const uint8_t kMitsubishiHeavy88SwingHLeft
Definition: ir_MitsubishiHeavy.h:98
+
const uint8_t kMitsubishiHeavy152SwingVLow
Definition: ir_MitsubishiHeavy.h:69
+
const uint8_t kMitsubishiHeavyNightOffset
Definition: ir_MitsubishiHeavy.h:83
+
const uint8_t kMitsubishiHeavy152SwingHOff
Definition: ir_MitsubishiHeavy.h:81
+
const uint8_t kMitsubishiHeavy88SwingHOffset1
Definition: ir_MitsubishiHeavy.h:92
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_MitsubishiHeavy.cpp:129
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_MitsubishiHeavy.cpp:95
+ +
const uint8_t kMitsubishiHeavy152SwingHLeftRight
Definition: ir_MitsubishiHeavy.h:80
+
void checksum(void)
Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
Definition: ir_MitsubishiHeavy.cpp:860
+
const uint8_t kMitsubishiHeavy88SwingHMiddle
Definition: ir_MitsubishiHeavy.h:99
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_MitsubishiHeavy.cpp:426
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_MitsubishiHeavy.cpp:652
+
bool getTurbo(void)
Get the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:296
+
const uint8_t kMitsubishiHeavy88SwingVAuto
Definition: ir_MitsubishiHeavy.h:121
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_MitsubishiHeavy.cpp:495
+
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:839
+
void setSilent(const bool on)
Set the Silent (Quiet) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:251
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kMitsubishiHeavy88FanEcono
Definition: ir_MitsubishiHeavy.h:113
+
void setSwingVertical(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:733
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_MitsubishiHeavy.cpp:145
+
const uint8_t kMitsubishiHeavy88SwingHSize
Definition: ir_MitsubishiHeavy.h:94
+
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:275
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_MitsubishiHeavy.cpp:135
+
const uint8_t kMitsubishiHeavyPowerOffset
Definition: ir_MitsubishiHeavy.h:46
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_MitsubishiHeavy.cpp:116
+
std::string String
Definition: IRremoteESP8266.h:1093
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_MitsubishiHeavy.cpp:83
+
uint8_t getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:753
+
const uint8_t kMitsubishiHeavyFilterOffset
Definition: ir_MitsubishiHeavy.h:48
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:903
+
void setNight(const bool on)
Set the Night (Sleep) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:224
+
const uint8_t kMitsubishiHeavy88SwingHOffset2
Definition: ir_MitsubishiHeavy.h:93
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_MitsubishiHeavy.h:286
+
const uint8_t kMitsubishiHeavy152SwingVSize
Definition: ir_MitsubishiHeavy.h:64
+
const uint8_t kMitsubishiHeavySigLength
Definition: ir_MitsubishiHeavy.h:33
+
uint8_t getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:204
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_MitsubishiHeavy.cpp:119
+
void setSwingVertical(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:196
+
const uint8_t kMitsubishiHeavy88SwingHRightLeft
Definition: ir_MitsubishiHeavy.h:102
+
uint8_t remote_state[kMitsubishiHeavy88StateLength]
State in code form.
Definition: ir_MitsubishiHeavy.h:292
+
const uint8_t kMitsubishiHeavy152SwingHRight
Definition: ir_MitsubishiHeavy.h:77
+
uint8_t getSwingHorizontal(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:786
+
const uint8_t kMitsubishiHeavyHeat
Definition: ir_MitsubishiHeavy.h:45
+
uint8_t getSwingHorizontal(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:218
+
void setTurbo(const bool on)
Set the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:796
+
bool getNight(void)
Get the Night (Sleep) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:230
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_MitsubishiHeavy.cpp:704
+ +
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
+
const uint8_t kMitsubishiHeavy152SwingHLeftMax
Definition: ir_MitsubishiHeavy.h:74
+
bool getClean(void)
Get the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:282
+
const uint8_t kMitsubishiHeavyZmsSig[kMitsubishiHeavySigLength]
Definition: ir_MitsubishiHeavy.h:36
+
bool getEcono(void)
Get the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:818
+
const uint16_t kMitsubishiHeavy152MinRepeat
Definition: IRremoteESP8266.h:944
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_MitsubishiHeavy.h:232
+
const uint8_t kMitsubishiHeavy88SwingVByte5Offset
Definition: ir_MitsubishiHeavy.h:114
+
static bool checkZjsSig(const uint8_t *state)
Verify the given state has a ZJ-S signature.
Definition: ir_MitsubishiHeavy.cpp:852
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_MitsubishiHeavy.cpp:671
+
IRMitsubishiHeavy88Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_MitsubishiHeavy.cpp:614
+
const uint8_t kMitsubishiHeavy88FanOffset
Definition: ir_MitsubishiHeavy.h:106
+
const uint8_t kMitsubishiHeavyMaxTemp
Definition: ir_MitsubishiHeavy.h:51
+
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:647
+
const uint16_t kMitsubishiHeavy88StateLength
Definition: IRremoteESP8266.h:939
+
const uint8_t kMitsubishiHeavy88SwingVMiddle
Definition: ir_MitsubishiHeavy.h:124
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_MitsubishiHeavy.cpp:368
+
const uint8_t kMitsubishiHeavyZjsSig[kMitsubishiHeavySigLength]
Definition: ir_MitsubishiHeavy.h:88
+
const uint8_t kMitsubishiHeavy152FanLow
Definition: ir_MitsubishiHeavy.h:55
+
const uint8_t kMitsubishiHeavy88FanHigh
Definition: ir_MitsubishiHeavy.h:111
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_MitsubishiHeavy.cpp:413
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:104
+
const uint8_t kMitsubishiHeavyMinTemp
Definition: ir_MitsubishiHeavy.h:50
+
const uint8_t kMitsubishiHeavyCool
Definition: ir_MitsubishiHeavy.h:42
+
void setEcono(const bool on)
Set the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:302
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_MitsubishiHeavy.cpp:681
+
bool getSilent(void)
Get the Silent (Quiet) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:257
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:640
+
const uint8_t kMitsubishiHeavy88FanLow
Definition: ir_MitsubishiHeavy.h:109
+
const uint8_t kMitsubishiHeavy88SwingVLow
Definition: ir_MitsubishiHeavy.h:125
+
static bool checkZmsSig(const uint8_t *state)
Verify the given state has a ZM-S signature.
Definition: ir_MitsubishiHeavy.cpp:317
+
const uint8_t kMitsubishiHeavy152SwingVMiddle
Definition: ir_MitsubishiHeavy.h:68
+
const uint8_t kMitsubishiHeavy88SwingHRight
Definition: ir_MitsubishiHeavy.h:100
+
const uint8_t kMitsubishiHeavy88SwingVHighest
Definition: ir_MitsubishiHeavy.h:122
+
const uint8_t kMitsubishiHeavyModeOffset
Definition: ir_MitsubishiHeavy.h:39
+
const uint8_t kMitsubishiHeavy88SwingVOff
Definition: ir_MitsubishiHeavy.h:120
+
bool getTurbo(void)
Get the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:804
+
void setEcono(const bool on)
Set the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:810
+
const uint8_t kMitsubishiHeavy88SwingVLowest
Definition: ir_MitsubishiHeavy.h:126
+
const uint8_t kMitsubishiHeavy152SwingHAuto
Definition: ir_MitsubishiHeavy.h:73
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_MitsubishiHeavy.cpp:190
+
const uint8_t kMitsubishiHeavy152SwingHLeft
Definition: ir_MitsubishiHeavy.h:75
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_MitsubishiHeavy.cpp:152
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_MitsubishiHeavy.cpp:469
+
const uint8_t kMitsubishiHeavySilentOffset
Definition: ir_MitsubishiHeavy.h:84
+
bool getClean(void)
Get the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:845
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_MitsubishiHeavy.cpp:881
+
const uint8_t kMitsubishiHeavy88SwingHAuto
Definition: ir_MitsubishiHeavy.h:96
+
const uint8_t kMitsubishiHeavyFan
Definition: ir_MitsubishiHeavy.h:44
+
const uint16_t kMitsubishiHeavy88MinRepeat
Definition: IRremoteESP8266.h:941
+
const uint8_t kMitsubishiHeavy88SwingHOff
Definition: ir_MitsubishiHeavy.h:95
+
void setSwingHorizontal(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:211
+
static bool validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy152StateLength)
Verify the checksum is valid for a given state.
Definition: ir_MitsubishiHeavy.cpp:338
+
const uint8_t kMitsubishiHeavy152SwingVOff
Definition: ir_MitsubishiHeavy.h:71
+
const uint8_t kMitsubishiHeavy152SwingVLowest
Definition: ir_MitsubishiHeavy.h:70
+
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:111
+
const uint8_t kMitsubishiHeavy88SwingHLeftRight
Definition: ir_MitsubishiHeavy.h:103
+
const uint8_t kMitsubishiHeavy88FanAuto
Definition: ir_MitsubishiHeavy.h:108
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:174
+
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:440
+
const uint8_t kMitsubishiHeavy88FanMed
Definition: ir_MitsubishiHeavy.h:110
+
void setTurbo(const bool on)
Set the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:288
+
uint8_t remote_state[kMitsubishiHeavy152StateLength]
State in code form.
Definition: ir_MitsubishiHeavy.h:215
+
bool getFilter(void)
Get the Filter mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:269
+
bool get3D(void)
Get the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:833
+
const uint8_t kMitsubishiHeavy88SwingHRightMax
Definition: ir_MitsubishiHeavy.h:101
+
const uint8_t kMitsubishiHeavy152SwingVOffset
Definition: ir_MitsubishiHeavy.h:63
+
void setPower(const bool on)
Change the power setting.
Definition: ir_MitsubishiHeavy.cpp:659
+
const uint8_t kMitsubishiHeavy88SwingVByte7Size
Definition: ir_MitsubishiHeavy.h:117
+
const uint8_t kMitsubishiHeavy152FanHigh
Definition: ir_MitsubishiHeavy.h:57
+
void setFilter(const bool on)
Set the Filter mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:263
+
static bool validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy88StateLength)
Verify the checksum is valid for a given state.
Definition: ir_MitsubishiHeavy.cpp:873
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_MitsubishiHeavy.cpp:620
+
const uint8_t kMitsubishiHeavy152SwingHRightMax
Definition: ir_MitsubishiHeavy.h:78
+
void set3D(const bool on)
Set the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:236
+
const uint8_t kMitsubishiHeavy152SwingHMiddle
Definition: ir_MitsubishiHeavy.h:76
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:383
+
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:220
+
const uint8_t kMitsubishiHeavy152FanTurbo
Definition: ir_MitsubishiHeavy.h:60
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:455
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:918
+
const uint8_t kMitsubishiHeavyDry
Definition: ir_MitsubishiHeavy.h:43
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_MitsubishiHeavy.cpp:168
+
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:947
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kMitsubishiHeavy88FanSize
Definition: ir_MitsubishiHeavy.h:107
+
const uint8_t kMitsubishiHeavy88SwingVByte7Offset
Definition: ir_MitsubishiHeavy.h:116
+
const uint8_t kMitsubishiHeavy88SwingVHigh
Definition: ir_MitsubishiHeavy.h:123
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:962
+
void send(const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
Send the current internal state as an IR message.
Definition: ir_MitsubishiHeavy.cpp:625
+
void send(const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
Send the current internal state as an IR message.
Definition: ir_MitsubishiHeavy.cpp:88
+
const uint8_t kMitsubishiHeavy88CleanOffset
Definition: ir_MitsubishiHeavy.h:91
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_MitsubishiHeavy.cpp:727
+
const uint8_t kMitsubishiHeavyAuto
Definition: ir_MitsubishiHeavy.h:41
+
const uint8_t kMitsubishiHeavy152FanEcono
Definition: ir_MitsubishiHeavy.h:59
+
bool get3D(void)
Get the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:245
+
const uint8_t kMitsubishiHeavy152FanMax
Definition: ir_MitsubishiHeavy.h:58
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8cpp.html new file mode 100644 index 000000000..ae23abaec --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8cpp.html @@ -0,0 +1,722 @@ + + + + + + + +IRremoteESP8266: src/ir_Mitsubishi.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Mitsubishi.cpp File Reference
+
+
+ +

Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kMitsubishiTick = 30
 
const uint16_t kMitsubishiBitMarkTicks = 10
 
const uint16_t kMitsubishiBitMark = kMitsubishiBitMarkTicks * kMitsubishiTick
 
const uint16_t kMitsubishiOneSpaceTicks = 70
 
const uint16_t kMitsubishiOneSpace = kMitsubishiOneSpaceTicks * kMitsubishiTick
 
const uint16_t kMitsubishiZeroSpaceTicks = 30
 
const uint16_t kMitsubishiZeroSpace
 
const uint16_t kMitsubishiMinCommandLengthTicks = 1786
 
const uint16_t kMitsubishiMinCommandLength
 
const uint16_t kMitsubishiMinGapTicks = 936
 
const uint16_t kMitsubishiMinGap = kMitsubishiMinGapTicks * kMitsubishiTick
 
const uint16_t kMitsubishi2HdrMark = 8400
 
const uint16_t kMitsubishi2HdrSpace = kMitsubishi2HdrMark / 2
 
const uint16_t kMitsubishi2BitMark = 560
 
const uint16_t kMitsubishi2ZeroSpace = 520
 
const uint16_t kMitsubishi2OneSpace = kMitsubishi2ZeroSpace * 3
 
const uint16_t kMitsubishi2MinGap = 28500
 
const uint16_t kMitsubishiAcHdrMark = 3400
 
const uint16_t kMitsubishiAcHdrSpace = 1750
 
const uint16_t kMitsubishiAcBitMark = 450
 
const uint16_t kMitsubishiAcOneSpace = 1300
 
const uint16_t kMitsubishiAcZeroSpace = 420
 
const uint16_t kMitsubishiAcRptMark = 440
 
const uint16_t kMitsubishiAcRptSpace = 17100
 
const uint8_t kMitsubishiAcExtraTolerance = 5
 
const uint16_t kMitsubishi136HdrMark = 3324
 
const uint16_t kMitsubishi136HdrSpace = 1474
 
const uint16_t kMitsubishi136BitMark = 467
 
const uint16_t kMitsubishi136OneSpace = 1137
 
const uint16_t kMitsubishi136ZeroSpace = 351
 
const uint32_t kMitsubishi136Gap = kDefaultMessageGap
 
const uint16_t kMitsubishi112HdrMark = 3450
 
const uint16_t kMitsubishi112HdrSpace = 1696
 
const uint16_t kMitsubishi112BitMark = 450
 
const uint16_t kMitsubishi112OneSpace = 1250
 
const uint16_t kMitsubishi112ZeroSpace = 385
 
const uint32_t kMitsubishi112Gap = kDefaultMessageGap
 
const uint8_t kMitsubishi112HdrMarkTolerance = 5
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kMitsubishi112BitMark

+ +
+
+ + + + +
const uint16_t kMitsubishi112BitMark = 450
+
+ +
+
+ +

◆ kMitsubishi112Gap

+ +
+
+ + + + +
const uint32_t kMitsubishi112Gap = kDefaultMessageGap
+
+ +
+
+ +

◆ kMitsubishi112HdrMark

+ +
+
+ + + + +
const uint16_t kMitsubishi112HdrMark = 3450
+
+ +
+
+ +

◆ kMitsubishi112HdrMarkTolerance

+ +
+
+ + + + +
const uint8_t kMitsubishi112HdrMarkTolerance = 5
+
+ +
+
+ +

◆ kMitsubishi112HdrSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi112HdrSpace = 1696
+
+ +
+
+ +

◆ kMitsubishi112OneSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi112OneSpace = 1250
+
+ +
+
+ +

◆ kMitsubishi112ZeroSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi112ZeroSpace = 385
+
+ +
+
+ +

◆ kMitsubishi136BitMark

+ +
+
+ + + + +
const uint16_t kMitsubishi136BitMark = 467
+
+ +
+
+ +

◆ kMitsubishi136Gap

+ +
+
+ + + + +
const uint32_t kMitsubishi136Gap = kDefaultMessageGap
+
+ +
+
+ +

◆ kMitsubishi136HdrMark

+ +
+
+ + + + +
const uint16_t kMitsubishi136HdrMark = 3324
+
+ +
+
+ +

◆ kMitsubishi136HdrSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi136HdrSpace = 1474
+
+ +
+
+ +

◆ kMitsubishi136OneSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi136OneSpace = 1137
+
+ +
+
+ +

◆ kMitsubishi136ZeroSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi136ZeroSpace = 351
+
+ +
+
+ +

◆ kMitsubishi2BitMark

+ +
+
+ + + + +
const uint16_t kMitsubishi2BitMark = 560
+
+ +
+
+ +

◆ kMitsubishi2HdrMark

+ +
+
+ + + + +
const uint16_t kMitsubishi2HdrMark = 8400
+
+ +
+
+ +

◆ kMitsubishi2HdrSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi2HdrSpace = kMitsubishi2HdrMark / 2
+
+ +
+
+ +

◆ kMitsubishi2MinGap

+ +
+
+ + + + +
const uint16_t kMitsubishi2MinGap = 28500
+
+ +
+
+ +

◆ kMitsubishi2OneSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi2OneSpace = kMitsubishi2ZeroSpace * 3
+
+ +
+
+ +

◆ kMitsubishi2ZeroSpace

+ +
+
+ + + + +
const uint16_t kMitsubishi2ZeroSpace = 520
+
+ +
+
+ +

◆ kMitsubishiAcBitMark

+ +
+
+ + + + +
const uint16_t kMitsubishiAcBitMark = 450
+
+ +
+
+ +

◆ kMitsubishiAcExtraTolerance

+ +
+
+ + + + +
const uint8_t kMitsubishiAcExtraTolerance = 5
+
+ +
+
+ +

◆ kMitsubishiAcHdrMark

+ +
+
+ + + + +
const uint16_t kMitsubishiAcHdrMark = 3400
+
+ +
+
+ +

◆ kMitsubishiAcHdrSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiAcHdrSpace = 1750
+
+ +
+
+ +

◆ kMitsubishiAcOneSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiAcOneSpace = 1300
+
+ +
+
+ +

◆ kMitsubishiAcRptMark

+ +
+
+ + + + +
const uint16_t kMitsubishiAcRptMark = 440
+
+ +
+
+ +

◆ kMitsubishiAcRptSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiAcRptSpace = 17100
+
+ +
+
+ +

◆ kMitsubishiAcZeroSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiAcZeroSpace = 420
+
+ +
+
+ +

◆ kMitsubishiBitMark

+ +
+
+ + + + +
const uint16_t kMitsubishiBitMark = kMitsubishiBitMarkTicks * kMitsubishiTick
+
+ +
+
+ +

◆ kMitsubishiBitMarkTicks

+ +
+
+ + + + +
const uint16_t kMitsubishiBitMarkTicks = 10
+
+ +
+
+ +

◆ kMitsubishiMinCommandLength

+ +
+
+ + + + +
const uint16_t kMitsubishiMinCommandLength
+
+
+ +

◆ kMitsubishiMinCommandLengthTicks

+ +
+
+ + + + +
const uint16_t kMitsubishiMinCommandLengthTicks = 1786
+
+ +
+
+ +

◆ kMitsubishiMinGap

+ +
+
+ + + + +
const uint16_t kMitsubishiMinGap = kMitsubishiMinGapTicks * kMitsubishiTick
+
+ +
+
+ +

◆ kMitsubishiMinGapTicks

+ +
+
+ + + + +
const uint16_t kMitsubishiMinGapTicks = 936
+
+ +
+
+ +

◆ kMitsubishiOneSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiOneSpace = kMitsubishiOneSpaceTicks * kMitsubishiTick
+
+ +
+
+ +

◆ kMitsubishiOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kMitsubishiOneSpaceTicks = 70
+
+ +
+
+ +

◆ kMitsubishiTick

+ +
+
+ + + + +
const uint16_t kMitsubishiTick = 30
+
+ +
+
+ +

◆ kMitsubishiZeroSpace

+ +
+
+ + + + +
const uint16_t kMitsubishiZeroSpace
+
+Initial value: +
+
+ +

◆ kMitsubishiZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kMitsubishiZeroSpaceTicks = 30
+
+ +
+
+
+
const uint16_t kMitsubishiTick
Definition: ir_Mitsubishi.cpp:34
+
const uint16_t kMitsubishiMinCommandLengthTicks
Definition: ir_Mitsubishi.cpp:42
+
const uint16_t kMitsubishiZeroSpaceTicks
Definition: ir_Mitsubishi.cpp:39
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h.html new file mode 100644 index 000000000..968bfbb6c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h.html @@ -0,0 +1,1609 @@ + + + + + + + +IRremoteESP8266: src/ir_Mitsubishi.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Mitsubishi.h File Reference
+
+
+ +

Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

class  IRMitsubishiAC
 Class for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done at: https://github.com/r45635/HVAC-IR-Control. More...
 
class  IRMitsubishi136
 Class for handling detailed Mitsubishi 136-bit A/C messages. More...
 
class  IRMitsubishi112
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kMitsubishiAcModeOffset = 3
 
const uint8_t kMitsubishiAcAuto = 0b100
 
const uint8_t kMitsubishiAcCool = 0b011
 
const uint8_t kMitsubishiAcDry = 0b010
 
const uint8_t kMitsubishiAcHeat = 0b001
 
const uint8_t kMitsubishiAcPowerOffset = 5
 
const uint8_t kMitsubishiAcPower = 1 << kMitsubishiAcPowerOffset
 
const uint8_t kMitsubishiAcFanOffset = 0
 
const uint8_t kMitsubishiAcFanSize = 3
 
const uint8_t kMitsubishiAcFanAuto = 0
 
const uint8_t kMitsubishiAcFanAutoOffset = 7
 
const uint8_t kMitsubishiAcFanMax = 5
 
const uint8_t kMitsubishiAcFanRealMax = 4
 
const uint8_t kMitsubishiAcFanSilent = 6
 
const uint8_t kMitsubishiAcFanQuiet = kMitsubishiAcFanSilent
 
const uint8_t kMitsubishiAcMinTemp = 16
 
const uint8_t kMitsubishiAcMaxTemp = 31
 
const uint8_t kMitsubishiAcVaneBitOffset = 6
 
const uint8_t kMitsubishiAcVaneOffset = 3
 
const uint8_t kMitsubishiAcVaneSize = 3
 
const uint8_t kMitsubishiAcVaneAuto = 0
 
const uint8_t kMitsubishiAcVaneAutoMove = 7
 
const uint8_t kMitsubishiAcNoTimer = 0
 
const uint8_t kMitsubishiAcStartTimer = 5
 
const uint8_t kMitsubishiAcStopTimer = 3
 
const uint8_t kMitsubishiAcStartStopTimer = 7
 
const uint8_t kMitsubishiAcWideVaneAuto = 8
 
const uint8_t kMitsubishi136PowerByte = 5
 
const uint8_t kMitsubishi136PowerOffset = 6
 
const uint8_t kMitsubishi136PowerBit = 1 << kMitsubishi136PowerOffset
 
const uint8_t kMitsubishi136TempByte = 6
 
const uint8_t kMitsubishi136MinTemp = 17
 
const uint8_t kMitsubishi136MaxTemp = 30
 
const uint8_t kMitsubishi136ModeByte = kMitsubishi136TempByte
 
const uint8_t kMitsubishi136ModeOffset = 0
 
const uint8_t kMitsubishi136Fan = 0b000
 
const uint8_t kMitsubishi136Cool = 0b001
 
const uint8_t kMitsubishi136Heat = 0b010
 
const uint8_t kMitsubishi136Auto = 0b011
 
const uint8_t kMitsubishi136Dry = 0b101
 
const uint8_t kMitsubishi136SwingVByte = 7
 
const uint8_t kMitsubishi136SwingVLowest = 0b0000
 
const uint8_t kMitsubishi136SwingVLow = 0b0001
 
const uint8_t kMitsubishi136SwingVHigh = 0b0010
 
const uint8_t kMitsubishi136SwingVHighest = 0b0011
 
const uint8_t kMitsubishi136SwingVAuto = 0b1100
 
const uint8_t kMitsubishi136FanByte = kMitsubishi136SwingVByte
 
const uint8_t kMitsubishi136FanOffset = 1
 
const uint8_t kMitsubishi136FanSize = 2
 
const uint8_t kMitsubishi136FanMin = 0b00
 
const uint8_t kMitsubishi136FanLow = 0b01
 
const uint8_t kMitsubishi136FanMed = 0b10
 
const uint8_t kMitsubishi136FanMax = 0b11
 
const uint8_t kMitsubishi136FanQuiet = kMitsubishi136FanMin
 
const uint8_t kMitsubishi112PowerByte = 5
 
const uint8_t kMitsubishi112PowerOffset = 2
 
const uint8_t kMitsubishi112ModeByte = 6
 
const uint8_t kMitsubishi112ModeOffset = 0
 
const uint8_t kMitsubishi112Cool = 0b011
 
const uint8_t kMitsubishi112Heat = 0b001
 
const uint8_t kMitsubishi112Auto = 0b111
 
const uint8_t kMitsubishi112Dry = 0b010
 
const uint8_t kMitsubishi112TempByte = 7
 
const uint8_t kMitsubishi112TempSize = 4
 
const uint8_t kMitsubishi112MinTemp = 16
 
const uint8_t kMitsubishi112MaxTemp = 31
 
const uint8_t kMitsubishi112FanByte = 8
 
const uint8_t kMitsubishi112FanOffset = 0
 
const uint8_t kMitsubishi112FanSize = 3
 
const uint8_t kMitsubishi112FanMin = 0b010
 
const uint8_t kMitsubishi112FanLow = 0b011
 
const uint8_t kMitsubishi112FanMed = 0b101
 
const uint8_t kMitsubishi112FanMax = 0b000
 
const uint8_t kMitsubishi112FanQuiet = kMitsubishi112FanMin
 
const uint8_t kMitsubishi112SwingVByte = kMitsubishi112FanByte
 
const uint8_t kMitsubishi112SwingVOffset = 3
 
const uint8_t kMitsubishi112SwingVSize = 3
 
const uint8_t kMitsubishi112SwingVLowest = 0b101
 
const uint8_t kMitsubishi112SwingVLow = 0b100
 
const uint8_t kMitsubishi112SwingVMiddle = 0b011
 
const uint8_t kMitsubishi112SwingVHigh = 0b010
 
const uint8_t kMitsubishi112SwingVHighest = 0b001
 
const uint8_t kMitsubishi112SwingVAuto = 0b111
 
const uint8_t kMitsubishi112SwingHByte = 12
 
const uint8_t kMitsubishi112SwingHSize = 4
 
const uint8_t kMitsubishi112SwingHOffset = 2
 
const uint8_t kMitsubishi112SwingHLeftMax = 0b0001
 
const uint8_t kMitsubishi112SwingHLeft = 0b0010
 
const uint8_t kMitsubishi112SwingHMiddle = 0b0011
 
const uint8_t kMitsubishi112SwingHRight = 0b0100
 
const uint8_t kMitsubishi112SwingHRightMax = 0b0101
 
const uint8_t kMitsubishi112SwingHWide = 0b1000
 
const uint8_t kMitsubishi112SwingHAuto = 0b1100
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kMitsubishi112Auto

+ +
+
+ + + + +
const uint8_t kMitsubishi112Auto = 0b111
+
+ +
+
+ +

◆ kMitsubishi112Cool

+ +
+
+ + + + +
const uint8_t kMitsubishi112Cool = 0b011
+
+ +
+
+ +

◆ kMitsubishi112Dry

+ +
+
+ + + + +
const uint8_t kMitsubishi112Dry = 0b010
+
+ +
+
+ +

◆ kMitsubishi112FanByte

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanByte = 8
+
+ +
+
+ +

◆ kMitsubishi112FanLow

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanLow = 0b011
+
+ +
+
+ +

◆ kMitsubishi112FanMax

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanMax = 0b000
+
+ +
+
+ +

◆ kMitsubishi112FanMed

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanMed = 0b101
+
+ +
+
+ +

◆ kMitsubishi112FanMin

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanMin = 0b010
+
+ +
+
+ +

◆ kMitsubishi112FanOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanOffset = 0
+
+ +
+
+ +

◆ kMitsubishi112FanQuiet

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanQuiet = kMitsubishi112FanMin
+
+ +
+
+ +

◆ kMitsubishi112FanSize

+ +
+
+ + + + +
const uint8_t kMitsubishi112FanSize = 3
+
+ +
+
+ +

◆ kMitsubishi112Heat

+ +
+
+ + + + +
const uint8_t kMitsubishi112Heat = 0b001
+
+ +
+
+ +

◆ kMitsubishi112MaxTemp

+ +
+
+ + + + +
const uint8_t kMitsubishi112MaxTemp = 31
+
+ +
+
+ +

◆ kMitsubishi112MinTemp

+ +
+
+ + + + +
const uint8_t kMitsubishi112MinTemp = 16
+
+ +
+
+ +

◆ kMitsubishi112ModeByte

+ +
+
+ + + + +
const uint8_t kMitsubishi112ModeByte = 6
+
+ +
+
+ +

◆ kMitsubishi112ModeOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi112ModeOffset = 0
+
+ +
+
+ +

◆ kMitsubishi112PowerByte

+ +
+
+ + + + +
const uint8_t kMitsubishi112PowerByte = 5
+
+ +
+
+ +

◆ kMitsubishi112PowerOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi112PowerOffset = 2
+
+ +
+
+ +

◆ kMitsubishi112SwingHAuto

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHAuto = 0b1100
+
+ +
+
+ +

◆ kMitsubishi112SwingHByte

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHByte = 12
+
+ +
+
+ +

◆ kMitsubishi112SwingHLeft

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHLeft = 0b0010
+
+ +
+
+ +

◆ kMitsubishi112SwingHLeftMax

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHLeftMax = 0b0001
+
+ +
+
+ +

◆ kMitsubishi112SwingHMiddle

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHMiddle = 0b0011
+
+ +
+
+ +

◆ kMitsubishi112SwingHOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHOffset = 2
+
+ +
+
+ +

◆ kMitsubishi112SwingHRight

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHRight = 0b0100
+
+ +
+
+ +

◆ kMitsubishi112SwingHRightMax

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHRightMax = 0b0101
+
+ +
+
+ +

◆ kMitsubishi112SwingHSize

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHSize = 4
+
+ +
+
+ +

◆ kMitsubishi112SwingHWide

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingHWide = 0b1000
+
+ +
+
+ +

◆ kMitsubishi112SwingVAuto

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVAuto = 0b111
+
+ +
+
+ +

◆ kMitsubishi112SwingVByte

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVByte = kMitsubishi112FanByte
+
+ +
+
+ +

◆ kMitsubishi112SwingVHigh

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVHigh = 0b010
+
+ +
+
+ +

◆ kMitsubishi112SwingVHighest

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVHighest = 0b001
+
+ +
+
+ +

◆ kMitsubishi112SwingVLow

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVLow = 0b100
+
+ +
+
+ +

◆ kMitsubishi112SwingVLowest

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVLowest = 0b101
+
+ +
+
+ +

◆ kMitsubishi112SwingVMiddle

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVMiddle = 0b011
+
+ +
+
+ +

◆ kMitsubishi112SwingVOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVOffset = 3
+
+ +
+
+ +

◆ kMitsubishi112SwingVSize

+ +
+
+ + + + +
const uint8_t kMitsubishi112SwingVSize = 3
+
+ +
+
+ +

◆ kMitsubishi112TempByte

+ +
+
+ + + + +
const uint8_t kMitsubishi112TempByte = 7
+
+ +
+
+ +

◆ kMitsubishi112TempSize

+ +
+
+ + + + +
const uint8_t kMitsubishi112TempSize = 4
+
+ +
+
+ +

◆ kMitsubishi136Auto

+ +
+
+ + + + +
const uint8_t kMitsubishi136Auto = 0b011
+
+ +
+
+ +

◆ kMitsubishi136Cool

+ +
+
+ + + + +
const uint8_t kMitsubishi136Cool = 0b001
+
+ +
+
+ +

◆ kMitsubishi136Dry

+ +
+
+ + + + +
const uint8_t kMitsubishi136Dry = 0b101
+
+ +
+
+ +

◆ kMitsubishi136Fan

+ +
+
+ + + + +
const uint8_t kMitsubishi136Fan = 0b000
+
+ +
+
+ +

◆ kMitsubishi136FanByte

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanByte = kMitsubishi136SwingVByte
+
+ +
+
+ +

◆ kMitsubishi136FanLow

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanLow = 0b01
+
+ +
+
+ +

◆ kMitsubishi136FanMax

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanMax = 0b11
+
+ +
+
+ +

◆ kMitsubishi136FanMed

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanMed = 0b10
+
+ +
+
+ +

◆ kMitsubishi136FanMin

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanMin = 0b00
+
+ +
+
+ +

◆ kMitsubishi136FanOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanOffset = 1
+
+ +
+
+ +

◆ kMitsubishi136FanQuiet

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanQuiet = kMitsubishi136FanMin
+
+ +
+
+ +

◆ kMitsubishi136FanSize

+ +
+
+ + + + +
const uint8_t kMitsubishi136FanSize = 2
+
+ +
+
+ +

◆ kMitsubishi136Heat

+ +
+
+ + + + +
const uint8_t kMitsubishi136Heat = 0b010
+
+ +
+
+ +

◆ kMitsubishi136MaxTemp

+ +
+
+ + + + +
const uint8_t kMitsubishi136MaxTemp = 30
+
+ +
+
+ +

◆ kMitsubishi136MinTemp

+ +
+
+ + + + +
const uint8_t kMitsubishi136MinTemp = 17
+
+ +
+
+ +

◆ kMitsubishi136ModeByte

+ +
+
+ + + + +
const uint8_t kMitsubishi136ModeByte = kMitsubishi136TempByte
+
+ +
+
+ +

◆ kMitsubishi136ModeOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi136ModeOffset = 0
+
+ +
+
+ +

◆ kMitsubishi136PowerBit

+ +
+
+ + + + +
const uint8_t kMitsubishi136PowerBit = 1 << kMitsubishi136PowerOffset
+
+ +
+
+ +

◆ kMitsubishi136PowerByte

+ +
+
+ + + + +
const uint8_t kMitsubishi136PowerByte = 5
+
+ +
+
+ +

◆ kMitsubishi136PowerOffset

+ +
+
+ + + + +
const uint8_t kMitsubishi136PowerOffset = 6
+
+ +
+
+ +

◆ kMitsubishi136SwingVAuto

+ +
+
+ + + + +
const uint8_t kMitsubishi136SwingVAuto = 0b1100
+
+ +
+
+ +

◆ kMitsubishi136SwingVByte

+ +
+
+ + + + +
const uint8_t kMitsubishi136SwingVByte = 7
+
+ +
+
+ +

◆ kMitsubishi136SwingVHigh

+ +
+
+ + + + +
const uint8_t kMitsubishi136SwingVHigh = 0b0010
+
+ +
+
+ +

◆ kMitsubishi136SwingVHighest

+ +
+
+ + + + +
const uint8_t kMitsubishi136SwingVHighest = 0b0011
+
+ +
+
+ +

◆ kMitsubishi136SwingVLow

+ +
+
+ + + + +
const uint8_t kMitsubishi136SwingVLow = 0b0001
+
+ +
+
+ +

◆ kMitsubishi136SwingVLowest

+ +
+
+ + + + +
const uint8_t kMitsubishi136SwingVLowest = 0b0000
+
+ +
+
+ +

◆ kMitsubishi136TempByte

+ +
+
+ + + + +
const uint8_t kMitsubishi136TempByte = 6
+
+ +
+
+ +

◆ kMitsubishiAcAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiAcAuto = 0b100
+
+ +
+
+ +

◆ kMitsubishiAcCool

+ +
+
+ + + + +
const uint8_t kMitsubishiAcCool = 0b011
+
+ +
+
+ +

◆ kMitsubishiAcDry

+ +
+
+ + + + +
const uint8_t kMitsubishiAcDry = 0b010
+
+ +
+
+ +

◆ kMitsubishiAcFanAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanAuto = 0
+
+ +
+
+ +

◆ kMitsubishiAcFanAutoOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanAutoOffset = 7
+
+ +
+
+ +

◆ kMitsubishiAcFanMax

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanMax = 5
+
+ +
+
+ +

◆ kMitsubishiAcFanOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanOffset = 0
+
+ +
+
+ +

◆ kMitsubishiAcFanQuiet

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanQuiet = kMitsubishiAcFanSilent
+
+ +
+
+ +

◆ kMitsubishiAcFanRealMax

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanRealMax = 4
+
+ +
+
+ +

◆ kMitsubishiAcFanSilent

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanSilent = 6
+
+ +
+
+ +

◆ kMitsubishiAcFanSize

+ +
+
+ + + + +
const uint8_t kMitsubishiAcFanSize = 3
+
+ +
+
+ +

◆ kMitsubishiAcHeat

+ +
+
+ + + + +
const uint8_t kMitsubishiAcHeat = 0b001
+
+ +
+
+ +

◆ kMitsubishiAcMaxTemp

+ +
+
+ + + + +
const uint8_t kMitsubishiAcMaxTemp = 31
+
+ +
+
+ +

◆ kMitsubishiAcMinTemp

+ +
+
+ + + + +
const uint8_t kMitsubishiAcMinTemp = 16
+
+ +
+
+ +

◆ kMitsubishiAcModeOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiAcModeOffset = 3
+
+ +
+
+ +

◆ kMitsubishiAcNoTimer

+ +
+
+ + + + +
const uint8_t kMitsubishiAcNoTimer = 0
+
+ +
+
+ +

◆ kMitsubishiAcPower

+ +
+
+ + + + +
const uint8_t kMitsubishiAcPower = 1 << kMitsubishiAcPowerOffset
+
+ +
+
+ +

◆ kMitsubishiAcPowerOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiAcPowerOffset = 5
+
+ +
+
+ +

◆ kMitsubishiAcStartStopTimer

+ +
+
+ + + + +
const uint8_t kMitsubishiAcStartStopTimer = 7
+
+ +
+
+ +

◆ kMitsubishiAcStartTimer

+ +
+
+ + + + +
const uint8_t kMitsubishiAcStartTimer = 5
+
+ +
+
+ +

◆ kMitsubishiAcStopTimer

+ +
+
+ + + + +
const uint8_t kMitsubishiAcStopTimer = 3
+
+ +
+
+ +

◆ kMitsubishiAcVaneAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiAcVaneAuto = 0
+
+ +
+
+ +

◆ kMitsubishiAcVaneAutoMove

+ +
+
+ + + + +
const uint8_t kMitsubishiAcVaneAutoMove = 7
+
+ +
+
+ +

◆ kMitsubishiAcVaneBitOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiAcVaneBitOffset = 6
+
+ +
+
+ +

◆ kMitsubishiAcVaneOffset

+ +
+
+ + + + +
const uint8_t kMitsubishiAcVaneOffset = 3
+
+ +
+
+ +

◆ kMitsubishiAcVaneSize

+ +
+
+ + + + +
const uint8_t kMitsubishiAcVaneSize = 3
+
+ +
+
+ +

◆ kMitsubishiAcWideVaneAuto

+ +
+
+ + + + +
const uint8_t kMitsubishiAcWideVaneAuto = 8
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h_source.html new file mode 100644 index 000000000..7c5ef139b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Mitsubishi_8h_source.html @@ -0,0 +1,612 @@ + + + + + + + +IRremoteESP8266: src/ir_Mitsubishi.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Mitsubishi.h
+
+
+Go to the documentation of this file.
1 // Copyright 2009 Ken Shirriff
+
2 // Copyright 2017-2019 David Conran
+
3 // Copyright 2019 Mark Kuchel
+
4 
+
17 
+
18 // Supports:
+
19 // Brand: Mitsubishi, Model: TV (MITSUBISHI)
+
20 // Brand: Mitsubishi, Model: HC3000 Projector (MITSUBISHI2)
+
21 // Brand: Mitsubishi, Model: MS-GK24VA A/C
+
22 // Brand: Mitsubishi, Model: KM14A 0179213 remote
+
23 // Brand: Mitsubishi Electric, Model: PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
+
24 // Brand: Mitsubishi Electric, Model: 001CP T7WE10714 remote (MITSUBISHI136)
+
25 // Brand: Mitsubishi Electric, Model: MSH-A24WV A/C (MITSUBISHI112)
+
26 // Brand: Mitsubishi Electric, Model: MUH-A24WV A/C (MITSUBISHI112)
+
27 // Brand: Mitsubishi Electric, Model: KPOA remote (MITSUBISHI112)
+
28 
+
29 #ifndef IR_MITSUBISHI_H_
+
30 #define IR_MITSUBISHI_H_
+
31 
+
32 #define __STDC_LIMIT_MACROS
+
33 #include <stdint.h>
+
34 #ifndef UNIT_TEST
+
35 #include <Arduino.h>
+
36 #endif
+
37 #include "IRremoteESP8266.h"
+
38 #include "IRsend.h"
+
39 #ifdef UNIT_TEST
+
40 #include "IRsend_test.h"
+
41 #endif
+
42 
+
43 
+
44 // Constants
+
45 const uint8_t kMitsubishiAcModeOffset = 3;
+
46 const uint8_t kMitsubishiAcAuto = 0b100;
+
47 const uint8_t kMitsubishiAcCool = 0b011;
+
48 const uint8_t kMitsubishiAcDry = 0b010;
+
49 const uint8_t kMitsubishiAcHeat = 0b001;
+
50 const uint8_t kMitsubishiAcPowerOffset = 5;
+
51 const uint8_t kMitsubishiAcPower = 1 << kMitsubishiAcPowerOffset; // 0x20
+
52 const uint8_t kMitsubishiAcFanOffset = 0;
+
53 const uint8_t kMitsubishiAcFanSize = 3; // Mask 0b111
+
54 const uint8_t kMitsubishiAcFanAuto = 0;
+
55 const uint8_t kMitsubishiAcFanAutoOffset = 7;
+
56 const uint8_t kMitsubishiAcFanMax = 5;
+
57 const uint8_t kMitsubishiAcFanRealMax = 4;
+
58 const uint8_t kMitsubishiAcFanSilent = 6;
+ +
60 const uint8_t kMitsubishiAcMinTemp = 16; // 16C
+
61 const uint8_t kMitsubishiAcMaxTemp = 31; // 31C
+
62 const uint8_t kMitsubishiAcVaneBitOffset = 6;
+
63 const uint8_t kMitsubishiAcVaneOffset = 3;
+
64 const uint8_t kMitsubishiAcVaneSize = 3;
+
65 const uint8_t kMitsubishiAcVaneAuto = 0;
+
66 const uint8_t kMitsubishiAcVaneAutoMove = 7;
+
67 const uint8_t kMitsubishiAcNoTimer = 0;
+
68 const uint8_t kMitsubishiAcStartTimer = 5;
+
69 const uint8_t kMitsubishiAcStopTimer = 3;
+
70 const uint8_t kMitsubishiAcStartStopTimer = 7;
+
71 const uint8_t kMitsubishiAcWideVaneAuto = 8;
+
72 
+
73 const uint8_t kMitsubishi136PowerByte = 5;
+
74 const uint8_t kMitsubishi136PowerOffset = 6;
+ +
76 const uint8_t kMitsubishi136TempByte = 6;
+
77 const uint8_t kMitsubishi136MinTemp = 17; // 17C
+
78 const uint8_t kMitsubishi136MaxTemp = 30; // 30C
+ +
80 const uint8_t kMitsubishi136ModeOffset = 0;
+
81 const uint8_t kMitsubishi136Fan = 0b000;
+
82 const uint8_t kMitsubishi136Cool = 0b001;
+
83 const uint8_t kMitsubishi136Heat = 0b010;
+
84 const uint8_t kMitsubishi136Auto = 0b011;
+
85 const uint8_t kMitsubishi136Dry = 0b101;
+
86 const uint8_t kMitsubishi136SwingVByte = 7;
+
87 const uint8_t kMitsubishi136SwingVLowest = 0b0000;
+
88 const uint8_t kMitsubishi136SwingVLow = 0b0001;
+
89 const uint8_t kMitsubishi136SwingVHigh = 0b0010;
+
90 const uint8_t kMitsubishi136SwingVHighest = 0b0011;
+
91 const uint8_t kMitsubishi136SwingVAuto = 0b1100;
+ +
93 // FanMask = 0b00000110;
+
94 const uint8_t kMitsubishi136FanOffset = 1;
+
95 const uint8_t kMitsubishi136FanSize = 2; // Bits
+
96 const uint8_t kMitsubishi136FanMin = 0b00;
+
97 const uint8_t kMitsubishi136FanLow = 0b01;
+
98 const uint8_t kMitsubishi136FanMed = 0b10;
+
99 const uint8_t kMitsubishi136FanMax = 0b11;
+ +
101 
+
102 // Mitsubishi112
+
103 
+
104 // remote_state[5]
+
105 const uint8_t kMitsubishi112PowerByte = 5;
+
106 const uint8_t kMitsubishi112PowerOffset = 2; // 0b00000100
+
107 // remote_state[6]
+
108 const uint8_t kMitsubishi112ModeByte = 6;
+
109 const uint8_t kMitsubishi112ModeOffset = 0; // Mask 0b00000111
+
110 const uint8_t kMitsubishi112Cool = 0b011;
+
111 const uint8_t kMitsubishi112Heat = 0b001;
+
112 const uint8_t kMitsubishi112Auto = 0b111;
+
113 const uint8_t kMitsubishi112Dry = 0b010;
+
114 // remote_state[7]
+
115 const uint8_t kMitsubishi112TempByte = 7;
+
116 const uint8_t kMitsubishi112TempSize = 4; // Mask 0b00001111
+
117 const uint8_t kMitsubishi112MinTemp = 16; // 16C
+
118 const uint8_t kMitsubishi112MaxTemp = 31; // 31C
+
119 // remote_state[8]
+
120 const uint8_t kMitsubishi112FanByte = 8;
+
121 const uint8_t kMitsubishi112FanOffset = 0; // Mask 0b00000111;
+
122 const uint8_t kMitsubishi112FanSize = 3;
+
123 const uint8_t kMitsubishi112FanMin = 0b010;
+
124 const uint8_t kMitsubishi112FanLow = 0b011;
+
125 const uint8_t kMitsubishi112FanMed = 0b101;
+
126 const uint8_t kMitsubishi112FanMax = 0b000;
+ + +
129 const uint8_t kMitsubishi112SwingVOffset = 3; // Mask 0b00111000
+
130 const uint8_t kMitsubishi112SwingVSize = 3; // Mask 0b00111000
+
131 const uint8_t kMitsubishi112SwingVLowest = 0b101;
+
132 const uint8_t kMitsubishi112SwingVLow = 0b100;
+
133 const uint8_t kMitsubishi112SwingVMiddle = 0b011;
+
134 const uint8_t kMitsubishi112SwingVHigh = 0b010;
+
135 const uint8_t kMitsubishi112SwingVHighest = 0b001;
+
136 const uint8_t kMitsubishi112SwingVAuto = 0b111;
+
137 // remote_state[12]
+
138 const uint8_t kMitsubishi112SwingHByte = 12;
+
139 const uint8_t kMitsubishi112SwingHSize = 4;
+
140 const uint8_t kMitsubishi112SwingHOffset = 2; // Mask 0b00111100
+
141 const uint8_t kMitsubishi112SwingHLeftMax = 0b0001;
+
142 const uint8_t kMitsubishi112SwingHLeft = 0b0010;
+
143 const uint8_t kMitsubishi112SwingHMiddle = 0b0011;
+
144 const uint8_t kMitsubishi112SwingHRight = 0b0100;
+
145 const uint8_t kMitsubishi112SwingHRightMax = 0b0101;
+
146 const uint8_t kMitsubishi112SwingHWide = 0b1000;
+
147 const uint8_t kMitsubishi112SwingHAuto = 0b1100;
+
148 
+
149 // Legacy defines (Deprecated)
+
150 #define MITSUBISHI_AC_VANE_AUTO_MOVE kMitsubishiAcVaneAutoMove
+
151 #define MITSUBISHI_AC_VANE_AUTO kMitsubishiAcVaneAuto
+
152 #define MITSUBISHI_AC_POWER kMitsubishiAcPower
+
153 #define MITSUBISHI_AC_MIN_TEMP kMitsubishiAcMinTemp
+
154 #define MITSUBISHI_AC_MAX_TEMP kMitsubishiAcMaxTemp
+
155 #define MITSUBISHI_AC_HEAT kMitsubishiAcHeat
+
156 #define MITSUBISHI_AC_FAN_SILENT kMitsubishiAcFanSilent
+
157 #define MITSUBISHI_AC_FAN_REAL_MAX kMitsubishiAcFanRealMax
+
158 #define MITSUBISHI_AC_FAN_MAX kMitsubishiAcFanMax
+
159 #define MITSUBISHI_AC_FAN_AUTO kMitsubishiAcFanAuto
+
160 #define MITSUBISHI_AC_DRY kMitsubishiAcDry
+
161 #define MITSUBISHI_AC_COOL kMitsubishiAcCool
+
162 #define MITSUBISHI_AC_AUTO kMitsubishiAcAuto
+
163 
+
164 
+ +
169  public:
+
170  explicit IRMitsubishiAC(const uint16_t pin, const bool inverted = false,
+
171  const bool use_modulation = true);
+
172  void stateReset(void);
+
173  static bool validChecksum(const uint8_t* data);
+
174 #if SEND_MITSUBISHI_AC
+
175  void send(const uint16_t repeat = kMitsubishiACMinRepeat);
+
180  int8_t calibrate(void) { return _irsend.calibrate(); }
+
181 #endif // SEND_MITSUBISHI_AC
+
182  void begin(void);
+
183  void on(void);
+
184  void off(void);
+
185  void setPower(const bool on);
+
186  bool getPower(void);
+
187  void setTemp(const uint8_t degrees);
+
188  uint8_t getTemp(void);
+
189  void setFan(const uint8_t speed);
+
190  uint8_t getFan(void);
+
191  void setMode(const uint8_t mode);
+
192  uint8_t getMode(void);
+
193  void setVane(const uint8_t position);
+
194  void setWideVane(const uint8_t position);
+
195  uint8_t getVane(void);
+
196  uint8_t getWideVane(void);
+
197  uint8_t* getRaw(void);
+
198  void setRaw(const uint8_t* data);
+
199  uint8_t getClock(void);
+
200  void setClock(const uint8_t clock);
+
201  uint8_t getStartClock(void);
+
202  void setStartClock(const uint8_t clock);
+
203  uint8_t getStopClock(void);
+
204  void setStopClock(const uint8_t clock);
+
205  uint8_t getTimer(void);
+
206  void setTimer(const uint8_t timer);
+
207  static uint8_t convertMode(const stdAc::opmode_t mode);
+
208  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
209  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
210  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
211  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
212  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
213  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
214  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
+
215  stdAc::state_t toCommon(void);
+
216  String toString(void);
+
217 #ifndef UNIT_TEST
+
218 
+
219  private:
+ +
221 #else // UNIT_TEST
+
222  IRsendTest _irsend;
+
224 #endif // UNIT_TEST
+ +
227  void checksum(void);
+
228  static uint8_t calculateChecksum(const uint8_t* data);
+
229 };
+
230 
+ +
233  public:
+
234  explicit IRMitsubishi136(const uint16_t pin, const bool inverted = false,
+
235  const bool use_modulation = true);
+
236  void stateReset(void);
+
237 #if SEND_MITSUBISHI136
+
238  void send(const uint16_t repeat = kMitsubishi136MinRepeat);
+
243  int8_t calibrate(void) { return _irsend.calibrate(); }
+
244 #endif // SEND_MITSUBISHI136
+
245  void begin(void);
+
246  static bool validChecksum(const uint8_t* data,
+
247  const uint16_t len = kMitsubishi136StateLength);
+
248  void on(void);
+
249  void off(void);
+
250  void setPower(const bool on);
+
251  bool getPower(void);
+
252  void setTemp(const uint8_t degrees);
+
253  uint8_t getTemp(void);
+
254  void setFan(const uint8_t speed);
+
255  uint8_t getFan(void);
+
256  void setMode(const uint8_t mode);
+
257  uint8_t getMode(void);
+
258  void setSwingV(const uint8_t position);
+
259  uint8_t getSwingV(void);
+
260  void setQuiet(const bool on);
+
261  bool getQuiet(void);
+
262  uint8_t* getRaw(void);
+
263  void setRaw(const uint8_t* data);
+
264  static uint8_t convertMode(const stdAc::opmode_t mode);
+
265  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
266  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
267  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
268  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
269  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
270  stdAc::state_t toCommon(void);
+
271  String toString(void);
+
272 #ifndef UNIT_TEST
+
273 
+
274  private:
+ +
276 #else // UNIT_TEST
+
277  IRsendTest _irsend;
+
279 #endif // UNIT_TEST
+ +
282  void checksum(void);
+
283 };
+
284 
+
285 
+ +
287  public:
+
288  explicit IRMitsubishi112(const uint16_t pin, const bool inverted = false,
+
289  const bool use_modulation = true);
+
290  void stateReset(void);
+
291 #if SEND_MITSUBISHI112
+
292  void send(const uint16_t repeat = kMitsubishi112MinRepeat);
+
297  int8_t calibrate(void) { return _irsend.calibrate(); }
+
298 #endif // SEND_MITSUBISHI112
+
299  void begin(void);
+
300  void on(void);
+
301  void off(void);
+
302  void setPower(const bool on);
+
303  bool getPower(void);
+
304  void setTemp(const uint8_t degrees);
+
305  uint8_t getTemp(void);
+
306  void setFan(const uint8_t speed);
+
307  uint8_t getFan(void);
+
308  void setMode(const uint8_t mode);
+
309  uint8_t getMode(void);
+
310  void setSwingV(const uint8_t position);
+
311  uint8_t getSwingV(void);
+
312  void setSwingH(const uint8_t position);
+
313  uint8_t getSwingH(void);
+
314  void setQuiet(const bool on);
+
315  bool getQuiet(void);
+
316  uint8_t* getRaw(void);
+
317  void setRaw(const uint8_t* data);
+
318  static uint8_t convertMode(const stdAc::opmode_t mode);
+
319  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
320  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
321  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
322  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
323  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
324  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
325  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
+
326  stdAc::state_t toCommon(void);
+
327  String toString(void);
+
328 #ifndef UNIT_TEST
+
329 
+
330  private:
+ +
332 #else // UNIT_TEST
+
333  IRsendTest _irsend;
+
335 #endif // UNIT_TEST
+ +
338  void checksum(void);
+
339 };
+
340 
+
341 #endif // IR_MITSUBISHI_H_
+
+
const uint8_t kMitsubishi112SwingVMiddle
Definition: ir_Mitsubishi.h:133
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Mitsubishi.cpp:1399
+
const uint8_t kMitsubishi112SwingVLowest
Definition: ir_Mitsubishi.h:131
+
const uint8_t kMitsubishi112ModeOffset
Definition: ir_Mitsubishi.h:109
+
const uint8_t kMitsubishi112SwingVAuto
Definition: ir_Mitsubishi.h:136
+
const uint8_t kMitsubishi112FanQuiet
Definition: ir_Mitsubishi.h:127
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Mitsubishi.cpp:1295
+
const uint8_t kMitsubishi112SwingHLeft
Definition: ir_Mitsubishi.h:142
+
const uint8_t kMitsubishi136ModeByte
Definition: ir_Mitsubishi.h:79
+
const uint8_t kMitsubishi112FanMed
Definition: ir_Mitsubishi.h:125
+
const uint16_t kMitsubishiACStateLength
Definition: IRremoteESP8266.h:930
+
const uint8_t kMitsubishiAcHeat
Definition: ir_Mitsubishi.h:49
+
const uint8_t kMitsubishiAcAuto
Definition: ir_Mitsubishi.h:46
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Mitsubishi.cpp:1309
+
const uint8_t kMitsubishi112ModeByte
Definition: ir_Mitsubishi.h:108
+
const uint8_t kMitsubishi112SwingHRight
Definition: ir_Mitsubishi.h:144
+
const uint8_t kMitsubishiAcFanSilent
Definition: ir_Mitsubishi.h:58
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Mitsubishi.h:297
+
const uint8_t kMitsubishiAcVaneAuto
Definition: ir_Mitsubishi.h:65
+
const uint8_t kMitsubishi112SwingHRightMax
Definition: ir_Mitsubishi.h:145
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Mitsubishi.cpp:874
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Mitsubishi.cpp:454
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Mitsubishi.cpp:907
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Mitsubishi.cpp:498
+
uint8_t getStopClock(void)
Get the desired stop time of the A/C unit.
Definition: ir_Mitsubishi.cpp:574
+
bool getQuiet(void)
Get the Quiet mode of the A/C.
Definition: ir_Mitsubishi.cpp:1482
+
const uint16_t kMitsubishi136MinRepeat
Definition: IRremoteESP8266.h:935
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
const uint8_t kMitsubishiAcFanOffset
Definition: ir_Mitsubishi.h:52
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Mitsubishi.cpp:388
+
void setVane(const uint8_t position)
Set the requested vane (Vertical Swing) operation mode of the a/c unit.
Definition: ir_Mitsubishi.cpp:520
+
const uint8_t kMitsubishi136FanMed
Definition: ir_Mitsubishi.h:98
+
const uint8_t kMitsubishi136PowerByte
Definition: ir_Mitsubishi.h:73
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kMitsubishi136PowerBit
Definition: ir_Mitsubishi.h:75
+
void setStopClock(const uint8_t clock)
Set the desired stop time of the A/C unit.
Definition: ir_Mitsubishi.cpp:579
+
const uint8_t kMitsubishi136MaxTemp
Definition: ir_Mitsubishi.h:78
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Mitsubishi.cpp:1046
+
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition: ir_Mitsubishi.cpp:417
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Mitsubishi.cpp:967
+
const uint16_t kMitsubishi112MinRepeat
Definition: IRremoteESP8266.h:938
+
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition: ir_Mitsubishi.cpp:1328
+
void setStartClock(const uint8_t clock)
Set the desired start time of the A/C unit.
Definition: ir_Mitsubishi.cpp:567
+
const uint8_t kMitsubishi112FanLow
Definition: ir_Mitsubishi.h:124
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Mitsubishi.cpp:1558
+
const uint8_t kMitsubishi136FanSize
Definition: ir_Mitsubishi.h:95
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Mitsubishi.cpp:422
+
const uint8_t kMitsubishi136SwingVByte
Definition: ir_Mitsubishi.h:86
+
const uint8_t kMitsubishi112Heat
Definition: ir_Mitsubishi.h:111
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Mitsubishi.cpp:981
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Mitsubishi.cpp:960
+
const uint8_t kMitsubishi112SwingHLeftMax
Definition: ir_Mitsubishi.h:141
+
bool getQuiet(void)
Get the Quiet mode of the A/C.
Definition: ir_Mitsubishi.cpp:1039
+
static bool validChecksum(const uint8_t *data)
Verify the checksum is valid for a given state.
Definition: ir_Mitsubishi.cpp:429
+
uint8_t getClock(void)
Get the clock time of the A/C unit.
Definition: ir_Mitsubishi.cpp:550
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Mitsubishi.h:243
+
const uint8_t kMitsubishi112Cool
Definition: ir_Mitsubishi.h:110
+
const uint8_t kMitsubishi112PowerByte
Definition: ir_Mitsubishi.h:105
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Mitsubishi.cpp:1031
+ +
const uint8_t kMitsubishiAcNoTimer
Definition: ir_Mitsubishi.h:67
+
void send(const uint16_t repeat=kMitsubishi112MinRepeat)
Send the current internal state as an IR message.
Definition: ir_Mitsubishi.cpp:1314
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Mitsubishi.cpp:489
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Mitsubishi.cpp:448
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Mitsubishi.cpp:1546
+
static uint8_t calculateChecksum(const uint8_t *data)
Calculate the checksum for a given state.
Definition: ir_Mitsubishi.cpp:436
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
uint8_t getWideVane(void)
Get the Wide Vane (Horizontal Swing) mode of the A/C.
Definition: ir_Mitsubishi.cpp:543
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kMitsubishi136Cool
Definition: ir_Mitsubishi.h:82
+
const uint8_t kMitsubishi136Dry
Definition: ir_Mitsubishi.h:85
+
IRMitsubishi112(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Mitsubishi.cpp:1290
+
void setClock(const uint8_t clock)
Set the clock time on the A/C unit.
Definition: ir_Mitsubishi.cpp:555
+
const uint8_t kMitsubishiAcPowerOffset
Definition: ir_Mitsubishi.h:50
+
uint8_t getStartClock(void)
Get the desired start time of the A/C unit.
Definition: ir_Mitsubishi.cpp:562
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Mitsubishi.cpp:1362
+
std::string String
Definition: IRremoteESP8266.h:1093
+
Class for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done ...
Definition: ir_Mitsubishi.h:168
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Mitsubishi.cpp:631
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Mitsubishi.cpp:674
+
Definition: ir_Mitsubishi.h:286
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Mitsubishi.cpp:474
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Mitsubishi.cpp:1385
+
const uint8_t kMitsubishi112SwingVLow
Definition: ir_Mitsubishi.h:132
+
const uint8_t kMitsubishiAcFanSize
Definition: ir_Mitsubishi.h:53
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_Mitsubishi.cpp:646
+
void setTemp(const uint8_t degrees)
Set the temperature.
Definition: ir_Mitsubishi.cpp:1353
+
uint8_t getVane(void)
Get the Vane (Vertical Swing) mode of the A/C.
Definition: ir_Mitsubishi.cpp:536
+
const uint8_t kMitsubishi112SwingHAuto
Definition: ir_Mitsubishi.h:147
+
const uint8_t kMitsubishi112MinTemp
Definition: ir_Mitsubishi.h:117
+
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:232
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Mitsubishi.cpp:1340
+
void checksum(void)
Calculate the checksum for the current internal state of the remote.
Definition: ir_Mitsubishi.cpp:1303
+ +
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Mitsubishi.cpp:604
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_Mitsubishi.cpp:1150
+
const uint8_t kMitsubishi112TempByte
Definition: ir_Mitsubishi.h:115
+
const uint8_t kMitsubishiAcStopTimer
Definition: ir_Mitsubishi.h:69
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_Mitsubishi.cpp:1627
+
const uint8_t kMitsubishiAcVaneSize
Definition: ir_Mitsubishi.h:64
+
const uint8_t kMitsubishiAcFanMax
Definition: ir_Mitsubishi.h:56
+
const uint8_t kMitsubishi112SwingVHighest
Definition: ir_Mitsubishi.h:135
+
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_Mitsubishi.cpp:702
+
const uint8_t kMitsubishi136FanLow
Definition: ir_Mitsubishi.h:97
+
const uint16_t kMitsubishiACMinRepeat
Definition: IRremoteESP8266.h:932
+
const uint8_t kMitsubishi136MinTemp
Definition: ir_Mitsubishi.h:77
+
const uint8_t kMitsubishi112SwingVOffset
Definition: ir_Mitsubishi.h:129
+
const uint8_t kMitsubishi112SwingVSize
Definition: ir_Mitsubishi.h:130
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_Mitsubishi.cpp:1112
+
IRMitsubishi136(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Mitsubishi.cpp:869
+
uint8_t remote_state[kMitsubishi112StateLength]
The state in code form.
Definition: ir_Mitsubishi.h:337
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Mitsubishi.h:220
+
const uint8_t kMitsubishi136Auto
Definition: ir_Mitsubishi.h:84
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Mitsubishi.cpp:1599
+
const uint8_t kMitsubishi112TempSize
Definition: ir_Mitsubishi.h:116
+
const uint8_t kMitsubishi136FanMax
Definition: ir_Mitsubishi.h:99
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Mitsubishi.cpp:410
+
const uint8_t kMitsubishiAcFanAuto
Definition: ir_Mitsubishi.h:54
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Mitsubishi.cpp:441
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_Mitsubishi.cpp:742
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Mitsubishi.cpp:1124
+
const uint8_t kMitsubishiAcVaneOffset
Definition: ir_Mitsubishi.h:63
+
const uint8_t kMitsubishiAcFanQuiet
Definition: ir_Mitsubishi.h:59
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Mitsubishi.cpp:1502
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Mitsubishi.cpp:1489
+
const uint8_t kMitsubishiAcWideVaneAuto
Definition: ir_Mitsubishi.h:71
+
const uint8_t kMitsubishi112PowerOffset
Definition: ir_Mitsubishi.h:106
+
void send(const uint16_t repeat=kMitsubishi136MinRepeat)
Send the current internal state as an IR message.
Definition: ir_Mitsubishi.cpp:912
+
const uint8_t kMitsubishi136Fan
Definition: ir_Mitsubishi.h:81
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Mitsubishi.cpp:1369
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Mitsubishi.h:180
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Mitsubishi.cpp:1336
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Mitsubishi.cpp:504
+
const uint8_t kMitsubishi136FanOffset
Definition: ir_Mitsubishi.h:94
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Mitsubishi.cpp:1321
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_Mitsubishi.cpp:1530
+
void setSwingH(const uint8_t position)
Set the Horizontal Swing mode of the A/C.
Definition: ir_Mitsubishi.cpp:1443
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Mitsubishi.cpp:1086
+
const uint8_t kMitsubishi112SwingVByte
Definition: ir_Mitsubishi.h:128
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Mitsubishi.cpp:398
+
uint8_t remote_state[kMitsubishi136StateLength]
The state in code form.
Definition: ir_Mitsubishi.h:281
+
IRMitsubishiAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Mitsubishi.cpp:383
+
const uint8_t kMitsubishi112SwingHSize
Definition: ir_Mitsubishi.h:139
+
const uint8_t kMitsubishi136FanMin
Definition: ir_Mitsubishi.h:96
+
const uint8_t kMitsubishi136SwingVAuto
Definition: ir_Mitsubishi.h:91
+
const uint8_t kMitsubishiAcVaneBitOffset
Definition: ir_Mitsubishi.h:62
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Mitsubishi.h:331
+
const uint8_t kMitsubishi136Heat
Definition: ir_Mitsubishi.h:83
+
void setTemp(const uint8_t degrees)
Set the temperature.
Definition: ir_Mitsubishi.cpp:951
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Mitsubishi.cpp:662
+
void checksum(void)
Calculate the checksum for the current internal state of the remote.
Definition: ir_Mitsubishi.cpp:884
+
const uint8_t kMitsubishi112FanMin
Definition: ir_Mitsubishi.h:123
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Mitsubishi.cpp:974
+
const uint8_t kMitsubishiAcModeOffset
Definition: ir_Mitsubishi.h:45
+
const uint8_t kMitsubishiAcFanRealMax
Definition: ir_Mitsubishi.h:57
+
const uint8_t kMitsubishiAcStartStopTimer
Definition: ir_Mitsubishi.h:70
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Mitsubishi.cpp:616
+
uint8_t getTimer(void)
Get the timers active setting of the A/C.
Definition: ir_Mitsubishi.cpp:588
+
const uint8_t kMitsubishi112FanByte
Definition: ir_Mitsubishi.h:120
+
const uint8_t kMitsubishi112SwingVHigh
Definition: ir_Mitsubishi.h:134
+
const uint8_t kMitsubishi112SwingHMiddle
Definition: ir_Mitsubishi.h:143
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Mitsubishi.cpp:1346
+
const uint8_t kMitsubishi136SwingVLow
Definition: ir_Mitsubishi.h:88
+
const uint8_t kMitsubishi112FanSize
Definition: ir_Mitsubishi.h:122
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Mitsubishi.cpp:1059
+
const uint8_t kMitsubishiAcVaneAutoMove
Definition: ir_Mitsubishi.h:66
+
void send(const uint16_t repeat=kMitsubishiACMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Mitsubishi.cpp:403
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Mitsubishi.cpp:919
+
void setWideVane(const uint8_t position)
Set the requested wide-vane (Horizontal Swing) operation mode of the a/c.
Definition: ir_Mitsubishi.cpp:529
+
uint8_t getSwingV(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Mitsubishi.cpp:1024
+
const uint8_t kMitsubishi112SwingHByte
Definition: ir_Mitsubishi.h:138
+
uint8_t getSwingV(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Mitsubishi.cpp:1436
+
const uint8_t kMitsubishi112Auto
Definition: ir_Mitsubishi.h:112
+
const uint8_t kMitsubishiAcMinTemp
Definition: ir_Mitsubishi.h:60
+
const uint8_t kMitsubishi136SwingVLowest
Definition: ir_Mitsubishi.h:87
+
const uint8_t kMitsubishiAcStartTimer
Definition: ir_Mitsubishi.h:68
+
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition: ir_Mitsubishi.cpp:926
+
const uint8_t kMitsubishi136FanByte
Definition: ir_Mitsubishi.h:92
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Mitsubishi.cpp:1072
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_Mitsubishi.cpp:1571
+
const uint8_t kMitsubishi136PowerOffset
Definition: ir_Mitsubishi.h:74
+
const uint8_t kMitsubishi112FanMax
Definition: ir_Mitsubishi.h:126
+
void on(void)
Set the requested power state of the A/C to off.
Definition: ir_Mitsubishi.cpp:1333
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Mitsubishi.h:275
+
void setSwingV(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition: ir_Mitsubishi.cpp:1006
+
const uint8_t kMitsubishi136TempByte
Definition: ir_Mitsubishi.h:76
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Mitsubishi.cpp:468
+
const uint8_t kMitsubishi112FanOffset
Definition: ir_Mitsubishi.h:121
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Mitsubishi.cpp:716
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Mitsubishi.cpp:944
+
const uint8_t kMitsubishi136FanQuiet
Definition: ir_Mitsubishi.h:100
+
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition: ir_Mitsubishi.cpp:1472
+
const uint8_t kMitsubishiAcFanAutoOffset
Definition: ir_Mitsubishi.h:55
+
void setSwingV(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition: ir_Mitsubishi.cpp:1417
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Mitsubishi.cpp:1099
+
const uint8_t kMitsubishi112SwingHOffset
Definition: ir_Mitsubishi.h:140
+
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_Mitsubishi.cpp:1585
+
uint8_t getSwingH(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_Mitsubishi.cpp:1464
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Mitsubishi.cpp:934
+
void setTemp(const uint8_t degrees)
Set the temperature.
Definition: ir_Mitsubishi.cpp:460
+
const uint8_t kMitsubishiAcMaxTemp
Definition: ir_Mitsubishi.h:61
+
const uint16_t kMitsubishi136StateLength
Definition: IRremoteESP8266.h:933
+
const uint8_t kMitsubishi136SwingVHigh
Definition: ir_Mitsubishi.h:89
+
const uint8_t kMitsubishiAcCool
Definition: ir_Mitsubishi.h:47
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_Mitsubishi.cpp:688
+
const uint8_t kMitsubishi112SwingHWide
Definition: ir_Mitsubishi.h:146
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Mitsubishi.cpp:931
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_Mitsubishi.cpp:1516
+
const uint8_t kMitsubishi112Dry
Definition: ir_Mitsubishi.h:113
+
const uint8_t kMitsubishi136SwingVHighest
Definition: ir_Mitsubishi.h:90
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Mitsubishi.cpp:1392
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Mitsubishi.cpp:938
+
const uint8_t kMitsubishiAcPower
Definition: ir_Mitsubishi.h:51
+
void setTimer(const uint8_t timer)
Set the timers active setting of the A/C.
Definition: ir_Mitsubishi.cpp:597
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Mitsubishi.cpp:444
+
uint8_t remote_state[kMitsubishiACStateLength]
The state in code form.
Definition: ir_Mitsubishi.h:226
+
const uint16_t kMitsubishi112StateLength
Definition: IRremoteESP8266.h:936
+
const uint8_t kMitsubishi136ModeOffset
Definition: ir_Mitsubishi.h:80
+
const uint8_t kMitsubishi112MaxTemp
Definition: ir_Mitsubishi.h:118
+
static bool validChecksum(const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)
Verify the checksum is valid for a given state.
Definition: ir_Mitsubishi.cpp:894
+
const uint8_t kMitsubishiAcDry
Definition: ir_Mitsubishi.h:48
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Mitsubishi.cpp:988
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Multibrackets_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Multibrackets_8cpp.html new file mode 100644 index 000000000..ce9f031d1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Multibrackets_8cpp.html @@ -0,0 +1,175 @@ + + + + + + + +IRremoteESP8266: src/ir_Multibrackets.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Multibrackets.cpp File Reference
+
+
+ +

Support for Multibrackets protocols. +More...

+ + + + + + + + + + + + +

+Variables

const uint16_t kMultibracketsTick = 5000
 
const uint16_t kMultibracketsHdrMark = 3 * kMultibracketsTick
 
const uint16_t kMultibracketsFooterSpace = 6 * kMultibracketsTick
 
const uint8_t kMultibracketsTolerance = 5
 
const uint16_t kMultibracketsFreq = 38000
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kMultibracketsFooterSpace

+ +
+
+ + + + +
const uint16_t kMultibracketsFooterSpace = 6 * kMultibracketsTick
+
+ +
+
+ +

◆ kMultibracketsFreq

+ +
+
+ + + + +
const uint16_t kMultibracketsFreq = 38000
+
+ +
+
+ +

◆ kMultibracketsHdrMark

+ +
+
+ + + + +
const uint16_t kMultibracketsHdrMark = 3 * kMultibracketsTick
+
+ +
+
+ +

◆ kMultibracketsTick

+ +
+
+ + + + +
const uint16_t kMultibracketsTick = 5000
+
+ +
+
+ +

◆ kMultibracketsTolerance

+ +
+
+ + + + +
const uint8_t kMultibracketsTolerance = 5
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8cpp.html new file mode 100644 index 000000000..bcfee8232 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8cpp.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: src/ir_NEC.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_NEC.cpp File Reference
+
+
+ +

Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/. +More...

+

Detailed Description

+

Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.

+
See also
http://www.sbprojects.com/knowledge/ir/nec.php
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h.html new file mode 100644 index 000000000..945f7a962 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h.html @@ -0,0 +1,642 @@ + + + + + + + +IRremoteESP8266: src/ir_NEC.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_NEC.h File Reference
+
+
+ +

Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kNecTick = 560
 
const uint16_t kNecHdrMarkTicks = 16
 
const uint16_t kNecHdrMark = kNecHdrMarkTicks * kNecTick
 
const uint16_t kNecHdrSpaceTicks = 8
 
const uint16_t kNecHdrSpace = kNecHdrSpaceTicks * kNecTick
 
const uint16_t kNecBitMarkTicks = 1
 
const uint16_t kNecBitMark = kNecBitMarkTicks * kNecTick
 
const uint16_t kNecOneSpaceTicks = 3
 
const uint16_t kNecOneSpace = kNecOneSpaceTicks * kNecTick
 
const uint16_t kNecZeroSpaceTicks = 1
 
const uint16_t kNecZeroSpace = kNecZeroSpaceTicks * kNecTick
 
const uint16_t kNecRptSpaceTicks = 4
 
const uint16_t kNecRptSpace = kNecRptSpaceTicks * kNecTick
 
const uint16_t kNecRptLength = 4
 
const uint16_t kNecMinCommandLengthTicks = 193
 
const uint32_t kNecMinCommandLength = kNecMinCommandLengthTicks * kNecTick
 
const uint32_t kNecMinGap
 
const uint16_t kNecMinGapTicks
 
const uint32_t kAlokaPower = 0xFF609F
 
const uint32_t kAlokaLedWhite = 0xFF906F
 
const uint32_t kAlokaLedGreen = 0xFF9867
 
const uint32_t kAlokaLedBlue = 0xFFD827
 
const uint32_t kAlokaLedPinkRed = 0xFF8877
 
const uint32_t kAlokaLedRed = 0xFFA857
 
const uint32_t kAlokaLedLightGreen = 0xFFE817
 
const uint32_t kAlokaLedMidBlue = 0xFF48B7
 
const uint32_t kAlokaLedPink = 0xFF6897
 
const uint32_t kAlokaLedOrange = 0xFFB24D
 
const uint32_t kAlokaLedYellow = 0xFF00FF
 
const uint32_t kAlokaNightFade = 0xFF50AF
 
const uint32_t kAlokaNightTimer = 0xFF7887
 
const uint32_t kAlokaLedRainbow = 0xFF708F
 
const uint32_t kAlokaLedTreeGrow = 0xFF58A7
 
+

Detailed Description

+

Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.

+
See also
http://www.sbprojects.com/knowledge/ir/nec.php
+

Variable Documentation

+ +

◆ kAlokaLedBlue

+ +
+
+ + + + +
const uint32_t kAlokaLedBlue = 0xFFD827
+
+ +
+
+ +

◆ kAlokaLedGreen

+ +
+
+ + + + +
const uint32_t kAlokaLedGreen = 0xFF9867
+
+ +
+
+ +

◆ kAlokaLedLightGreen

+ +
+
+ + + + +
const uint32_t kAlokaLedLightGreen = 0xFFE817
+
+ +
+
+ +

◆ kAlokaLedMidBlue

+ +
+
+ + + + +
const uint32_t kAlokaLedMidBlue = 0xFF48B7
+
+ +
+
+ +

◆ kAlokaLedOrange

+ +
+
+ + + + +
const uint32_t kAlokaLedOrange = 0xFFB24D
+
+ +
+
+ +

◆ kAlokaLedPink

+ +
+
+ + + + +
const uint32_t kAlokaLedPink = 0xFF6897
+
+ +
+
+ +

◆ kAlokaLedPinkRed

+ +
+
+ + + + +
const uint32_t kAlokaLedPinkRed = 0xFF8877
+
+ +
+
+ +

◆ kAlokaLedRainbow

+ +
+
+ + + + +
const uint32_t kAlokaLedRainbow = 0xFF708F
+
+ +
+
+ +

◆ kAlokaLedRed

+ +
+
+ + + + +
const uint32_t kAlokaLedRed = 0xFFA857
+
+ +
+
+ +

◆ kAlokaLedTreeGrow

+ +
+
+ + + + +
const uint32_t kAlokaLedTreeGrow = 0xFF58A7
+
+ +
+
+ +

◆ kAlokaLedWhite

+ +
+
+ + + + +
const uint32_t kAlokaLedWhite = 0xFF906F
+
+ +
+
+ +

◆ kAlokaLedYellow

+ +
+
+ + + + +
const uint32_t kAlokaLedYellow = 0xFF00FF
+
+ +
+
+ +

◆ kAlokaNightFade

+ +
+
+ + + + +
const uint32_t kAlokaNightFade = 0xFF50AF
+
+ +
+
+ +

◆ kAlokaNightTimer

+ +
+
+ + + + +
const uint32_t kAlokaNightTimer = 0xFF7887
+
+ +
+
+ +

◆ kAlokaPower

+ +
+
+ + + + +
const uint32_t kAlokaPower = 0xFF609F
+
+ +
+
+ +

◆ kNecBitMark

+ +
+
+ + + + +
const uint16_t kNecBitMark = kNecBitMarkTicks * kNecTick
+
+ +
+
+ +

◆ kNecBitMarkTicks

+ +
+
+ + + + +
const uint16_t kNecBitMarkTicks = 1
+
+ +
+
+ +

◆ kNecHdrMark

+ +
+
+ + + + +
const uint16_t kNecHdrMark = kNecHdrMarkTicks * kNecTick
+
+ +
+
+ +

◆ kNecHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kNecHdrMarkTicks = 16
+
+ +
+
+ +

◆ kNecHdrSpace

+ +
+
+ + + + +
const uint16_t kNecHdrSpace = kNecHdrSpaceTicks * kNecTick
+
+ +
+
+ +

◆ kNecHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kNecHdrSpaceTicks = 8
+
+ +
+
+ +

◆ kNecMinCommandLength

+ +
+
+ + + + +
const uint32_t kNecMinCommandLength = kNecMinCommandLengthTicks * kNecTick
+
+ +
+
+ +

◆ kNecMinCommandLengthTicks

+ +
+
+ + + + +
const uint16_t kNecMinCommandLengthTicks = 193
+
+ +
+
+ +

◆ kNecMinGap

+ +
+
+ + + + +
const uint32_t kNecMinGap
+
+
+ +

◆ kNecMinGapTicks

+ +
+
+ + + + +
const uint16_t kNecMinGapTicks
+
+
+ +

◆ kNecOneSpace

+ +
+
+ + + + +
const uint16_t kNecOneSpace = kNecOneSpaceTicks * kNecTick
+
+ +
+
+ +

◆ kNecOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kNecOneSpaceTicks = 3
+
+ +
+
+ +

◆ kNecRptLength

+ +
+
+ + + + +
const uint16_t kNecRptLength = 4
+
+ +
+
+ +

◆ kNecRptSpace

+ +
+
+ + + + +
const uint16_t kNecRptSpace = kNecRptSpaceTicks * kNecTick
+
+ +
+
+ +

◆ kNecRptSpaceTicks

+ +
+
+ + + + +
const uint16_t kNecRptSpaceTicks = 4
+
+ +
+
+ +

◆ kNecTick

+ +
+
+ + + + +
const uint16_t kNecTick = 560
+
+ +
+
+ +

◆ kNecZeroSpace

+ +
+
+ + + + +
const uint16_t kNecZeroSpace = kNecZeroSpaceTicks * kNecTick
+
+ +
+
+ +

◆ kNecZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kNecZeroSpaceTicks = 1
+
+ +
+
+
+
const uint16_t kNecBitMarkTicks
Definition: ir_NEC.h:30
+
const uint16_t kNecHdrSpace
Definition: ir_NEC.h:29
+
const uint16_t kNecBitMark
Definition: ir_NEC.h:31
+
const uint32_t kNecMinCommandLength
Definition: ir_NEC.h:40
+
const uint16_t kNecOneSpace
Definition: ir_NEC.h:33
+
const uint16_t kNecMinCommandLengthTicks
Definition: ir_NEC.h:39
+
const uint16_t kNecOneSpaceTicks
Definition: ir_NEC.h:32
+
const uint16_t kNecHdrMarkTicks
Definition: ir_NEC.h:26
+
const uint16_t kNECBits
Definition: IRremoteESP8266.h:948
+
const uint16_t kNecHdrMark
Definition: ir_NEC.h:27
+
const uint16_t kNecHdrSpaceTicks
Definition: ir_NEC.h:28
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h_source.html new file mode 100644 index 000000000..6e315d527 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__NEC_8h_source.html @@ -0,0 +1,189 @@ + + + + + + + +IRremoteESP8266: src/ir_NEC.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_NEC.h
+
+
+Go to the documentation of this file.
1 // Copyright 2009 Ken Shirriff
+
2 // Copyright 2017, 2018 David Conran
+
3 
+
8 
+
9 // Supports:
+
10 // Brand: Yamaha, Model: RAV561 remote
+
11 // Brand: Yamaha, Model: RXV585B A/V Receiver
+
12 // Brand: Aloka, Model: SleepyLights LED Lamp
+
13 // Brand: Toshiba, Model: 42TL838 LCD TV
+
14 // Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C
+
15 // Brand: Duux, Model: YJ-A081 TR Remote
+
16 // Brand: Silan Microelectronics, Model: SC6121-001 IC
+
17 
+
18 #ifndef IR_NEC_H_
+
19 #define IR_NEC_H_
+
20 
+
21 #include <stdint.h>
+
22 #include "IRremoteESP8266.h"
+
23 
+
24 // Constants
+
25 const uint16_t kNecTick = 560;
+
26 const uint16_t kNecHdrMarkTicks = 16;
+ +
28 const uint16_t kNecHdrSpaceTicks = 8;
+ +
30 const uint16_t kNecBitMarkTicks = 1;
+ +
32 const uint16_t kNecOneSpaceTicks = 3;
+ +
34 const uint16_t kNecZeroSpaceTicks = 1;
+ +
36 const uint16_t kNecRptSpaceTicks = 4;
+ +
38 const uint16_t kNecRptLength = 4;
+
39 const uint16_t kNecMinCommandLengthTicks = 193;
+ +
41 const uint32_t kNecMinGap =
+ + +
44  kNecBitMark);
+
45 const uint16_t kNecMinGapTicks =
+ + + +
49 
+
50 // IR codes and structure for kids ALOKA SleepyLights LED Lamp.
+
51 // https://aloka-designs.com/
+
52 // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1004
+
53 //
+
54 // May be useful for someone wanting to control the lamp.
+
55 //
+
56 // The lamp is toggled On and Off with the same power button.
+
57 // The colour, when selected, is the brightest and there are 4 levels of
+
58 // brightness that decrease on each send of the colour. A fifth send of the
+
59 // colour resets to brightest again.
+
60 //
+
61 // Remote buttons defined left to right, top line to bottom line on the remote.
+
62 const uint32_t kAlokaPower = 0xFF609F;
+
63 const uint32_t kAlokaLedWhite = 0xFF906F;
+
64 const uint32_t kAlokaLedGreen = 0xFF9867;
+
65 const uint32_t kAlokaLedBlue = 0xFFD827;
+
66 const uint32_t kAlokaLedPinkRed = 0xFF8877;
+
67 const uint32_t kAlokaLedRed = 0xFFA857;
+
68 const uint32_t kAlokaLedLightGreen = 0xFFE817;
+
69 const uint32_t kAlokaLedMidBlue = 0xFF48B7;
+
70 const uint32_t kAlokaLedPink = 0xFF6897;
+
71 const uint32_t kAlokaLedOrange = 0xFFB24D;
+
72 const uint32_t kAlokaLedYellow = 0xFF00FF;
+
73 const uint32_t kAlokaNightFade = 0xFF50AF;
+
74 const uint32_t kAlokaNightTimer = 0xFF7887;
+
75 const uint32_t kAlokaLedRainbow = 0xFF708F;
+
76 // Didn't have a better description for it...
+
77 const uint32_t kAlokaLedTreeGrow = 0xFF58A7;
+
78 #endif // IR_NEC_H_
+
+
const uint32_t kAlokaLedWhite
Definition: ir_NEC.h:63
+
const uint16_t kNecBitMarkTicks
Definition: ir_NEC.h:30
+
const uint16_t kNecHdrSpace
Definition: ir_NEC.h:29
+
const uint16_t kNecBitMark
Definition: ir_NEC.h:31
+
const uint32_t kNecMinCommandLength
Definition: ir_NEC.h:40
+
const uint16_t kNecZeroSpaceTicks
Definition: ir_NEC.h:34
+
const uint32_t kAlokaLedBlue
Definition: ir_NEC.h:65
+
const uint32_t kAlokaLedLightGreen
Definition: ir_NEC.h:68
+
const uint16_t kNecOneSpace
Definition: ir_NEC.h:33
+
const uint32_t kAlokaNightTimer
Definition: ir_NEC.h:74
+
const uint16_t kNecMinCommandLengthTicks
Definition: ir_NEC.h:39
+
const uint16_t kNecZeroSpace
Definition: ir_NEC.h:35
+
const uint16_t kNecOneSpaceTicks
Definition: ir_NEC.h:32
+
const uint16_t kNecRptSpace
Definition: ir_NEC.h:37
+
const uint16_t kNecHdrMarkTicks
Definition: ir_NEC.h:26
+
const uint32_t kAlokaNightFade
Definition: ir_NEC.h:73
+ +
const uint16_t kNecRptLength
Definition: ir_NEC.h:38
+
const uint32_t kAlokaLedPink
Definition: ir_NEC.h:70
+
const uint16_t kNecMinGapTicks
Definition: ir_NEC.h:45
+
const uint32_t kAlokaLedPinkRed
Definition: ir_NEC.h:66
+
const uint16_t kNECBits
Definition: IRremoteESP8266.h:948
+
const uint32_t kAlokaLedRed
Definition: ir_NEC.h:67
+
const uint32_t kAlokaLedTreeGrow
Definition: ir_NEC.h:77
+
const uint16_t kNecHdrMark
Definition: ir_NEC.h:27
+
const uint16_t kNecRptSpaceTicks
Definition: ir_NEC.h:36
+
const uint32_t kAlokaLedOrange
Definition: ir_NEC.h:71
+
const uint32_t kNecMinGap
Definition: ir_NEC.h:41
+
const uint32_t kAlokaPower
Definition: ir_NEC.h:62
+
const uint32_t kAlokaLedMidBlue
Definition: ir_NEC.h:69
+
const uint32_t kAlokaLedRainbow
Definition: ir_NEC.h:75
+
const uint32_t kAlokaLedYellow
Definition: ir_NEC.h:72
+
const uint16_t kNecHdrSpaceTicks
Definition: ir_NEC.h:28
+
const uint16_t kNecTick
Definition: ir_NEC.h:25
+
const uint32_t kAlokaLedGreen
Definition: ir_NEC.h:64
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8cpp.html new file mode 100644 index 000000000..3de0b6df2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8cpp.html @@ -0,0 +1,191 @@ + + + + + + + +IRremoteESP8266: src/ir_Neoclima.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Neoclima.cpp File Reference
+
+
+ +

Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy Code by crankyoldgit. +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kNeoclimaHdrMark = 6112
 
const uint16_t kNeoclimaHdrSpace = 7391
 
const uint16_t kNeoclimaBitMark = 537
 
const uint16_t kNeoclimaOneSpace = 1651
 
const uint16_t kNeoclimaZeroSpace = 571
 
const uint32_t kNeoclimaMinGap = kDefaultMessageGap
 
+

Detailed Description

+

Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy Code by crankyoldgit.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/764
+
+https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view
+

Variable Documentation

+ +

◆ kNeoclimaBitMark

+ +
+
+ + + + +
const uint16_t kNeoclimaBitMark = 537
+
+ +
+
+ +

◆ kNeoclimaHdrMark

+ +
+
+ + + + +
const uint16_t kNeoclimaHdrMark = 6112
+
+ +
+
+ +

◆ kNeoclimaHdrSpace

+ +
+
+ + + + +
const uint16_t kNeoclimaHdrSpace = 7391
+
+ +
+
+ +

◆ kNeoclimaMinGap

+ +
+
+ + + + +
const uint32_t kNeoclimaMinGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kNeoclimaOneSpace

+ +
+
+ + + + +
const uint16_t kNeoclimaOneSpace = 1651
+
+ +
+
+ +

◆ kNeoclimaZeroSpace

+ +
+
+ + + + +
const uint16_t kNeoclimaZeroSpace = 571
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h.html new file mode 100644 index 000000000..6ca564a14 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h.html @@ -0,0 +1,888 @@ + + + + + + + +IRremoteESP8266: src/ir_Neoclima.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Neoclima.h File Reference
+
+
+ +

Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRNeoclimaAc
 Class for handling detailed Neoclima A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kNeoclima8CHeatOffset = 1
 
const uint8_t kNeoclimaIonOffset = 2
 
const uint8_t kNeoclimaLightOffset = 0
 
const uint8_t kNeoclimaHoldOffset = 2
 
const uint8_t kNeoclimaTurboOffset = 3
 
const uint8_t kNeoclimaEyeOffset = 6
 
const uint8_t kNeoclimaFreshOffset = 7
 
const uint8_t kNeoclimaButtonOffset = 0
 
const uint8_t kNeoclimaButtonSize = 5
 
const uint8_t kNeoclimaButtonPower = 0x00
 
const uint8_t kNeoclimaButtonMode = 0x01
 
const uint8_t kNeoclimaButtonTempUp = 0x02
 
const uint8_t kNeoclimaButtonTempDown = 0x03
 
const uint8_t kNeoclimaButtonSwing = 0x04
 
const uint8_t kNeoclimaButtonFanSpeed = 0x05
 
const uint8_t kNeoclimaButtonAirFlow = 0x07
 
const uint8_t kNeoclimaButtonHold = 0x08
 
const uint8_t kNeoclimaButtonSleep = 0x09
 
const uint8_t kNeoclimaButtonTurbo = 0x0A
 
const uint8_t kNeoclimaButtonLight = 0x0B
 
const uint8_t kNeoclimaButtonEye = 0x0E
 
const uint8_t kNeoclimaButtonFollow = 0x13
 
const uint8_t kNeoclimaButtonIon = 0x14
 
const uint8_t kNeoclimaButtonFresh = 0x15
 
const uint8_t kNeoclimaButton8CHeat = 0x1D
 
const uint8_t kNeoclimaSleepOffset = 0
 
const uint8_t kNeoclimaPowerOffset = 1
 
const uint8_t kNeoclimaSwingVOffset = 2
 
const uint8_t kNeoclimaSwingVSize = 2
 
const uint8_t kNeoclimaSwingVOn = 0b01
 
const uint8_t kNeoclimaSwingVOff = 0b10
 
const uint8_t kNeoclimaSwingHOffset = 4
 
const uint8_t kNeoclimaFanOffest = 5
 
const uint8_t kNeoclimaFanSize = 2
 
const uint8_t kNeoclimaFanAuto = 0b00
 
const uint8_t kNeoclimaFanHigh = 0b01
 
const uint8_t kNeoclimaFanMed = 0b10
 
const uint8_t kNeoclimaFanLow = 0b11
 
const uint8_t kNeoclimaFollowMe = 0x5D
 
const uint8_t kNeoclimaTempOffset = 0
 
const uint8_t kNeoclimaTempSize = 5
 
const uint8_t kNeoclimaMinTemp = 16
 
const uint8_t kNeoclimaMaxTemp = 32
 
const uint8_t kNeoclimaModeOffset = 5
 
const uint8_t kNeoclimaAuto = 0b000
 
const uint8_t kNeoclimaCool = 0b001
 
const uint8_t kNeoclimaDry = 0b010
 
const uint8_t kNeoclimaFan = 0b011
 
const uint8_t kNeoclimaHeat = 0b100
 
+

Detailed Description

+

Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/764
+
+https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view
+

Variable Documentation

+ +

◆ kNeoclima8CHeatOffset

+ +
+
+ + + + +
const uint8_t kNeoclima8CHeatOffset = 1
+
+ +
+
+ +

◆ kNeoclimaAuto

+ +
+
+ + + + +
const uint8_t kNeoclimaAuto = 0b000
+
+ +
+
+ +

◆ kNeoclimaButton8CHeat

+ +
+
+ + + + +
const uint8_t kNeoclimaButton8CHeat = 0x1D
+
+ +
+
+ +

◆ kNeoclimaButtonAirFlow

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonAirFlow = 0x07
+
+ +
+
+ +

◆ kNeoclimaButtonEye

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonEye = 0x0E
+
+ +
+
+ +

◆ kNeoclimaButtonFanSpeed

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonFanSpeed = 0x05
+
+ +
+
+ +

◆ kNeoclimaButtonFollow

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonFollow = 0x13
+
+ +
+
+ +

◆ kNeoclimaButtonFresh

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonFresh = 0x15
+
+ +
+
+ +

◆ kNeoclimaButtonHold

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonHold = 0x08
+
+ +
+
+ +

◆ kNeoclimaButtonIon

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonIon = 0x14
+
+ +
+
+ +

◆ kNeoclimaButtonLight

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonLight = 0x0B
+
+ +
+
+ +

◆ kNeoclimaButtonMode

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonMode = 0x01
+
+ +
+
+ +

◆ kNeoclimaButtonOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonOffset = 0
+
+ +
+
+ +

◆ kNeoclimaButtonPower

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonPower = 0x00
+
+ +
+
+ +

◆ kNeoclimaButtonSize

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonSize = 5
+
+ +
+
+ +

◆ kNeoclimaButtonSleep

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonSleep = 0x09
+
+ +
+
+ +

◆ kNeoclimaButtonSwing

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonSwing = 0x04
+
+ +
+
+ +

◆ kNeoclimaButtonTempDown

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonTempDown = 0x03
+
+ +
+
+ +

◆ kNeoclimaButtonTempUp

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonTempUp = 0x02
+
+ +
+
+ +

◆ kNeoclimaButtonTurbo

+ +
+
+ + + + +
const uint8_t kNeoclimaButtonTurbo = 0x0A
+
+ +
+
+ +

◆ kNeoclimaCool

+ +
+
+ + + + +
const uint8_t kNeoclimaCool = 0b001
+
+ +
+
+ +

◆ kNeoclimaDry

+ +
+
+ + + + +
const uint8_t kNeoclimaDry = 0b010
+
+ +
+
+ +

◆ kNeoclimaEyeOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaEyeOffset = 6
+
+ +
+
+ +

◆ kNeoclimaFan

+ +
+
+ + + + +
const uint8_t kNeoclimaFan = 0b011
+
+ +
+
+ +

◆ kNeoclimaFanAuto

+ +
+
+ + + + +
const uint8_t kNeoclimaFanAuto = 0b00
+
+ +
+
+ +

◆ kNeoclimaFanHigh

+ +
+
+ + + + +
const uint8_t kNeoclimaFanHigh = 0b01
+
+ +
+
+ +

◆ kNeoclimaFanLow

+ +
+
+ + + + +
const uint8_t kNeoclimaFanLow = 0b11
+
+ +
+
+ +

◆ kNeoclimaFanMed

+ +
+
+ + + + +
const uint8_t kNeoclimaFanMed = 0b10
+
+ +
+
+ +

◆ kNeoclimaFanOffest

+ +
+
+ + + + +
const uint8_t kNeoclimaFanOffest = 5
+
+ +
+
+ +

◆ kNeoclimaFanSize

+ +
+
+ + + + +
const uint8_t kNeoclimaFanSize = 2
+
+ +
+
+ +

◆ kNeoclimaFollowMe

+ +
+
+ + + + +
const uint8_t kNeoclimaFollowMe = 0x5D
+
+ +
+
+ +

◆ kNeoclimaFreshOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaFreshOffset = 7
+
+ +
+
+ +

◆ kNeoclimaHeat

+ +
+
+ + + + +
const uint8_t kNeoclimaHeat = 0b100
+
+ +
+
+ +

◆ kNeoclimaHoldOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaHoldOffset = 2
+
+ +
+
+ +

◆ kNeoclimaIonOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaIonOffset = 2
+
+ +
+
+ +

◆ kNeoclimaLightOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaLightOffset = 0
+
+ +
+
+ +

◆ kNeoclimaMaxTemp

+ +
+
+ + + + +
const uint8_t kNeoclimaMaxTemp = 32
+
+ +
+
+ +

◆ kNeoclimaMinTemp

+ +
+
+ + + + +
const uint8_t kNeoclimaMinTemp = 16
+
+ +
+
+ +

◆ kNeoclimaModeOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaModeOffset = 5
+
+ +
+
+ +

◆ kNeoclimaPowerOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaPowerOffset = 1
+
+ +
+
+ +

◆ kNeoclimaSleepOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaSleepOffset = 0
+
+ +
+
+ +

◆ kNeoclimaSwingHOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaSwingHOffset = 4
+
+ +
+
+ +

◆ kNeoclimaSwingVOff

+ +
+
+ + + + +
const uint8_t kNeoclimaSwingVOff = 0b10
+
+ +
+
+ +

◆ kNeoclimaSwingVOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaSwingVOffset = 2
+
+ +
+
+ +

◆ kNeoclimaSwingVOn

+ +
+
+ + + + +
const uint8_t kNeoclimaSwingVOn = 0b01
+
+ +
+
+ +

◆ kNeoclimaSwingVSize

+ +
+
+ + + + +
const uint8_t kNeoclimaSwingVSize = 2
+
+ +
+
+ +

◆ kNeoclimaTempOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaTempOffset = 0
+
+ +
+
+ +

◆ kNeoclimaTempSize

+ +
+
+ + + + +
const uint8_t kNeoclimaTempSize = 5
+
+ +
+
+ +

◆ kNeoclimaTurboOffset

+ +
+
+ + + + +
const uint8_t kNeoclimaTurboOffset = 3
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h_source.html new file mode 100644 index 000000000..ccfa9da53 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Neoclima_8h_source.html @@ -0,0 +1,340 @@ + + + + + + + +IRremoteESP8266: src/ir_Neoclima.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Neoclima.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 David Conran
+
2 
+
8 
+
9 // Supports:
+
10 // Brand: Neoclima, Model: NS-09AHTI A/C
+
11 // Brand: Neoclima, Model: ZH/TY-01 remote
+
12 
+
13 #ifndef IR_NEOCLIMA_H_
+
14 #define IR_NEOCLIMA_H_
+
15 
+
16 #define __STDC_LIMIT_MACROS
+
17 #include <stdint.h>
+
18 #ifndef UNIT_TEST
+
19 #include <Arduino.h>
+
20 #endif
+
21 #include "IRremoteESP8266.h"
+
22 #include "IRsend.h"
+
23 #ifdef UNIT_TEST
+
24 #include "IRsend_test.h"
+
25 #endif
+
26 
+
27 // Constants
+
28 // state[1]
+
29 const uint8_t kNeoclima8CHeatOffset = 1;
+
30 const uint8_t kNeoclimaIonOffset = 2;
+
31 // state[3]
+
32 const uint8_t kNeoclimaLightOffset = 0;
+
33 const uint8_t kNeoclimaHoldOffset = 2;
+
34 const uint8_t kNeoclimaTurboOffset = 3;
+
35 const uint8_t kNeoclimaEyeOffset = 6;
+
36 // state[5]
+
37 const uint8_t kNeoclimaFreshOffset = 7;
+
38 const uint8_t kNeoclimaButtonOffset = 0;
+
39 const uint8_t kNeoclimaButtonSize = 5;
+
40 const uint8_t kNeoclimaButtonPower = 0x00;
+
41 const uint8_t kNeoclimaButtonMode = 0x01;
+
42 const uint8_t kNeoclimaButtonTempUp = 0x02;
+
43 const uint8_t kNeoclimaButtonTempDown = 0x03;
+
44 const uint8_t kNeoclimaButtonSwing = 0x04;
+
45 const uint8_t kNeoclimaButtonFanSpeed = 0x05;
+
46 const uint8_t kNeoclimaButtonAirFlow = 0x07;
+
47 const uint8_t kNeoclimaButtonHold = 0x08;
+
48 const uint8_t kNeoclimaButtonSleep = 0x09;
+
49 const uint8_t kNeoclimaButtonTurbo = 0x0A;
+
50 const uint8_t kNeoclimaButtonLight = 0x0B;
+
51 const uint8_t kNeoclimaButtonEye = 0x0E;
+
52 const uint8_t kNeoclimaButtonFollow = 0x13;
+
53 const uint8_t kNeoclimaButtonIon = 0x14;
+
54 const uint8_t kNeoclimaButtonFresh = 0x15;
+
55 const uint8_t kNeoclimaButton8CHeat = 0x1D;
+
56 // state[7]
+
57 const uint8_t kNeoclimaSleepOffset = 0;
+
58 const uint8_t kNeoclimaPowerOffset = 1;
+
59 const uint8_t kNeoclimaSwingVOffset = 2;
+
60 const uint8_t kNeoclimaSwingVSize = 2; // Bits
+
61 const uint8_t kNeoclimaSwingVOn = 0b01;
+
62 const uint8_t kNeoclimaSwingVOff = 0b10;
+
63 const uint8_t kNeoclimaSwingHOffset = 4;
+
64 const uint8_t kNeoclimaFanOffest = 5;
+
65 const uint8_t kNeoclimaFanSize = 2;
+
66 const uint8_t kNeoclimaFanAuto = 0b00;
+
67 const uint8_t kNeoclimaFanHigh = 0b01;
+
68 const uint8_t kNeoclimaFanMed = 0b10;
+
69 const uint8_t kNeoclimaFanLow = 0b11;
+
70 // state[8]
+
71 const uint8_t kNeoclimaFollowMe = 0x5D; // Also 0x5F
+
72 // state[9]
+
73 const uint8_t kNeoclimaTempOffset = 0;
+
74 const uint8_t kNeoclimaTempSize = 5; // Bits
+
75 const uint8_t kNeoclimaMinTemp = 16; // 16C
+
76 const uint8_t kNeoclimaMaxTemp = 32; // 32C
+
77 const uint8_t kNeoclimaModeOffset = 5;
+
78 const uint8_t kNeoclimaAuto = 0b000;
+
79 const uint8_t kNeoclimaCool = 0b001;
+
80 const uint8_t kNeoclimaDry = 0b010;
+
81 const uint8_t kNeoclimaFan = 0b011;
+
82 const uint8_t kNeoclimaHeat = 0b100;
+
83 
+
84 // Classes
+
86 class IRNeoclimaAc {
+
87  public:
+
88  explicit IRNeoclimaAc(const uint16_t pin, const bool inverted = false,
+
89  const bool use_modulation = true);
+
90  void stateReset(void);
+
91 #if SEND_NEOCLIMA
+
92  void send(const uint16_t repeat = kNeoclimaMinRepeat);
+
97  int8_t calibrate(void) { return _irsend.calibrate(); }
+
98 #endif // SEND_NEOCLIMA
+
99  void begin(void);
+
100  void setButton(const uint8_t button);
+
101  uint8_t getButton(void);
+
102  void on(void);
+
103  void off(void);
+
104  void setPower(const bool on);
+
105  bool getPower(void);
+
106  void setMode(const uint8_t mode);
+
107  uint8_t getMode(void);
+
108  void setTemp(const uint8_t temp);
+
109  uint8_t getTemp(void);
+
110  void setFan(const uint8_t speed);
+
111  uint8_t getFan(void);
+
112  void setSwingV(const bool on);
+
113  bool getSwingV(void);
+
114  void setSwingH(const bool on);
+
115  bool getSwingH(void);
+
116  void setSleep(const bool on);
+
117  bool getSleep(void);
+
118  void setTurbo(const bool on);
+
119  bool getTurbo(void);
+
120  void setFresh(const bool on);
+
121  bool getFresh(void);
+
122  void setHold(const bool on);
+
123  bool getHold(void);
+
124  void setIon(const bool on);
+
125  bool getIon(void);
+
126  void setLight(const bool on);
+
127  bool getLight(void);
+
128  void set8CHeat(const bool on);
+
129  bool get8CHeat(void);
+
130  void setEye(const bool on);
+
131  bool getEye(void);
+
132  // DISABLED: See TODO in ir_Neoclima.cpp
+
133  // void setFollow(const bool on);
+
134  bool getFollow(void);
+
135  uint8_t* getRaw(void);
+
136  void setRaw(const uint8_t new_code[],
+
137  const uint16_t length = kNeoclimaStateLength);
+
138  static bool validChecksum(const uint8_t state[],
+
139  const uint16_t length = kNeoclimaStateLength);
+
140  static uint8_t calcChecksum(const uint8_t state[],
+
141  const uint16_t length = kNeoclimaStateLength);
+
142  String toString(void);
+
143  uint8_t convertMode(const stdAc::opmode_t mode);
+
144  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
145  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
146  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
147  stdAc::state_t toCommon(void);
+
148 #ifndef UNIT_TEST
+
149 
+
150  private:
+ +
152 #else // UNIT_TEST
+
153  IRsendTest _irsend;
+
155 #endif // UNIT_TEST
+ +
158  void checksum(const uint16_t length = kNeoclimaStateLength);
+
159 };
+
160 
+
161 #endif // IR_NEOCLIMA_H_
+
+
const uint8_t kNeoclimaFanHigh
Definition: ir_Neoclima.h:67
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Neoclima.cpp:237
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Neoclima.cpp:301
+
const uint8_t kNeoclimaButtonFanSpeed
Definition: ir_Neoclima.h:45
+
const uint8_t kNeoclimaButtonTurbo
Definition: ir_Neoclima.h:49
+
const uint8_t kNeoclimaFollowMe
Definition: ir_Neoclima.h:71
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Neoclima.cpp:319
+
const uint8_t kNeoclimaEyeOffset
Definition: ir_Neoclima.h:35
+
const uint8_t kNeoclimaTempOffset
Definition: ir_Neoclima.h:73
+
bool getEye(void)
Get the Eye (Sensor) setting of the A/C.
Definition: ir_Neoclima.cpp:442
+
bool getFollow(void)
Get the Follow Me setting of the A/C.
Definition: ir_Neoclima.cpp:459
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kNeoclimaIonOffset
Definition: ir_Neoclima.h:30
+
const uint8_t kNeoclimaDry
Definition: ir_Neoclima.h:80
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
Calculate the checksum for a given state.
Definition: ir_Neoclima.cpp:84
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Neoclima.h:97
+
const uint8_t kNeoclimaMaxTemp
Definition: ir_Neoclima.h:76
+
void set8CHeat(const bool on)
Set the 8°C Heat setting of the A/C.
Definition: ir_Neoclima.cpp:422
+
const uint8_t kNeoclimaButtonEye
Definition: ir_Neoclima.h:51
+
const uint8_t kNeoclimaMinTemp
Definition: ir_Neoclima.h:75
+
const uint8_t kNeoclimaButtonPower
Definition: ir_Neoclima.h:40
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Neoclima.cpp:258
+
const uint8_t kNeoclimaSwingVOn
Definition: ir_Neoclima.h:61
+
const uint8_t kNeoclimaButtonMode
Definition: ir_Neoclima.h:41
+
const uint16_t kNeoclimaStateLength
Definition: IRremoteESP8266.h:949
+
void setHold(const bool on)
Set the Hold setting of the A/C.
Definition: ir_Neoclima.cpp:379
+
const uint8_t kNeoclimaSleepOffset
Definition: ir_Neoclima.h:57
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Neoclima.cpp:205
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Neoclima.cpp:178
+
void setRaw(const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Neoclima.cpp:125
+
const uint8_t kNeoclimaButtonHold
Definition: ir_Neoclima.h:47
+ +
const uint8_t kNeoclimaSwingVSize
Definition: ir_Neoclima.h:60
+
const uint8_t kNeoclimaAuto
Definition: ir_Neoclima.h:78
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Neoclima.cpp:280
+
void setLight(const bool on)
Set the Light(LED display) setting of the A/C.
Definition: ir_Neoclima.cpp:405
+
const uint8_t kNeoclimaFan
Definition: ir_Neoclima.h:81
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Neoclima.cpp:117
+
const uint8_t kNeoclimaFanAuto
Definition: ir_Neoclima.h:66
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kNeoclimaFreshOffset
Definition: ir_Neoclima.h:37
+
bool getFresh(void)
Get the Frsh (air) setting of the A/C.
Definition: ir_Neoclima.cpp:373
+
uint8_t getButton(void)
Get the Button/Command setting of the A/C.
Definition: ir_Neoclima.cpp:159
+
std::string String
Definition: IRremoteESP8266.h:1093
+
bool getSwingH(void)
Get the horizontal swing (Air Flow) setting of the A/C.
Definition: ir_Neoclima.cpp:347
+
const uint8_t kNeoclimaButtonFresh
Definition: ir_Neoclima.h:54
+
bool getTurbo(void)
Get the Turbo setting of the A/C.
Definition: ir_Neoclima.cpp:360
+
const uint8_t kNeoclimaButtonAirFlow
Definition: ir_Neoclima.h:46
+ +
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Neoclima.cpp:71
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Neoclima.cpp:287
+
const uint8_t kNeoclimaButtonOffset
Definition: ir_Neoclima.h:38
+
const uint8_t kNeoclimaButtonTempDown
Definition: ir_Neoclima.h:43
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Neoclima.cpp:78
+
const uint8_t kNeoclima8CHeatOffset
Definition: ir_Neoclima.h:29
+
const uint8_t kNeoclimaSwingHOffset
Definition: ir_Neoclima.h:63
+
const uint8_t kNeoclimaPowerOffset
Definition: ir_Neoclima.h:58
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Neoclima.cpp:251
+
const uint8_t kNeoclimaFanSize
Definition: ir_Neoclima.h:65
+
bool getSwingV(void)
Get the vertical swing setting of the A/C.
Definition: ir_Neoclima.cpp:333
+
const uint8_t kNeoclimaButtonSize
Definition: ir_Neoclima.h:39
+
const uint8_t kNeoclimaLightOffset
Definition: ir_Neoclima.h:32
+
uint8_t remote_state[kNeoclimaStateLength]
State of the remote in code.
Definition: ir_Neoclima.h:157
+
const uint8_t kNeoclimaTempSize
Definition: ir_Neoclima.h:74
+
const uint8_t kNeoclimaButtonLight
Definition: ir_Neoclima.h:50
+
void setIon(const bool on)
Set the Ion (filter) setting of the A/C.
Definition: ir_Neoclima.cpp:392
+
const uint8_t kNeoclimaButtonSwing
Definition: ir_Neoclima.h:44
+
const uint8_t kNeoclimaButtonFollow
Definition: ir_Neoclima.h:52
+
bool getHold(void)
Get the Hold setting of the A/C.
Definition: ir_Neoclima.cpp:386
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Neoclima.h:151
+
const uint8_t kNeoclimaSwingVOff
Definition: ir_Neoclima.h:62
+
void setSwingV(const bool on)
Set the vertical swing setting of the A/C.
Definition: ir_Neoclima.cpp:325
+
void setEye(const bool on)
Set the Eye (Sensor) setting of the A/C.
Definition: ir_Neoclima.cpp:435
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Neoclima.cpp:225
+
const uint8_t kNeoclimaButtonSleep
Definition: ir_Neoclima.h:48
+
const uint8_t kNeoclimaTurboOffset
Definition: ir_Neoclima.h:34
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Neoclima.cpp:164
+
const uint8_t kNeoclimaFanMed
Definition: ir_Neoclima.h:68
+
void setFresh(const bool on)
Set the Fresh (air) setting of the A/C.
Definition: ir_Neoclima.cpp:366
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Neoclima.cpp:465
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Neoclima.cpp:171
+
const uint8_t kNeoclimaCool
Definition: ir_Neoclima.h:79
+
const uint8_t kNeoclimaHoldOffset
Definition: ir_Neoclima.h:33
+
const uint8_t kNeoclimaButton8CHeat
Definition: ir_Neoclima.h:55
+
bool getIon(void)
Get the Ion (filter) setting of the A/C.
Definition: ir_Neoclima.cpp:399
+
const uint8_t kNeoclimaSwingVOffset
Definition: ir_Neoclima.h:59
+
bool get8CHeat(void)
Get the 8°C Heat setting of the A/C.
Definition: ir_Neoclima.cpp:429
+
const uint8_t kNeoclimaFanOffest
Definition: ir_Neoclima.h:64
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Neoclima.cpp:212
+
const uint8_t kNeoclimaHeat
Definition: ir_Neoclima.h:82
+
void setButton(const uint8_t button)
Set the Button/Command pressed setting of the A/C.
Definition: ir_Neoclima.cpp:131
+
const uint8_t kNeoclimaButtonIon
Definition: ir_Neoclima.h:53
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Neoclima.cpp:493
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Neoclima.cpp:184
+
const uint8_t kNeoclimaFanLow
Definition: ir_Neoclima.h:69
+
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition: ir_Neoclima.cpp:353
+
void checksum(const uint16_t length=kNeoclimaStateLength)
Calculate & update the checksum for the internal state.
Definition: ir_Neoclima.cpp:102
+
const uint8_t kNeoclimaModeOffset
Definition: ir_Neoclima.h:77
+
void setSwingH(const bool on)
Set the horizontal swing setting of the A/C.
Definition: ir_Neoclima.cpp:340
+
void send(const uint16_t repeat=kNeoclimaMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Neoclima.cpp:110
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Neoclima.cpp:167
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint16_t kNeoclimaMinRepeat
Definition: IRremoteESP8266.h:951
+
IRNeoclimaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Neoclima.cpp:64
+
Class for handling detailed Neoclima A/C messages.
Definition: ir_Neoclima.h:86
+
bool getLight(void)
Get the Light (LED display) setting of the A/C.
Definition: ir_Neoclima.cpp:412
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Neoclima.cpp:312
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Neoclima.cpp:94
+
const uint8_t kNeoclimaButtonTempUp
Definition: ir_Neoclima.h:42
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Nikai_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Nikai_8cpp.html new file mode 100644 index 000000000..95c82cd74 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Nikai_8cpp.html @@ -0,0 +1,301 @@ + + + + + + + +IRremoteESP8266: src/ir_Nikai.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Nikai.cpp File Reference
+
+
+ +

Nikai. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kNikaiTick = 500
 
const uint16_t kNikaiHdrMarkTicks = 8
 
const uint16_t kNikaiHdrMark = kNikaiHdrMarkTicks * kNikaiTick
 
const uint16_t kNikaiHdrSpaceTicks = 8
 
const uint16_t kNikaiHdrSpace = kNikaiHdrSpaceTicks * kNikaiTick
 
const uint16_t kNikaiBitMarkTicks = 1
 
const uint16_t kNikaiBitMark = kNikaiBitMarkTicks * kNikaiTick
 
const uint16_t kNikaiOneSpaceTicks = 2
 
const uint16_t kNikaiOneSpace = kNikaiOneSpaceTicks * kNikaiTick
 
const uint16_t kNikaiZeroSpaceTicks = 4
 
const uint16_t kNikaiZeroSpace = kNikaiZeroSpaceTicks * kNikaiTick
 
const uint16_t kNikaiMinGapTicks = 17
 
const uint16_t kNikaiMinGap = kNikaiMinGapTicks * kNikaiTick
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kNikaiBitMark

+ +
+
+ + + + +
const uint16_t kNikaiBitMark = kNikaiBitMarkTicks * kNikaiTick
+
+ +
+
+ +

◆ kNikaiBitMarkTicks

+ +
+
+ + + + +
const uint16_t kNikaiBitMarkTicks = 1
+
+ +
+
+ +

◆ kNikaiHdrMark

+ +
+
+ + + + +
const uint16_t kNikaiHdrMark = kNikaiHdrMarkTicks * kNikaiTick
+
+ +
+
+ +

◆ kNikaiHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kNikaiHdrMarkTicks = 8
+
+ +
+
+ +

◆ kNikaiHdrSpace

+ +
+
+ + + + +
const uint16_t kNikaiHdrSpace = kNikaiHdrSpaceTicks * kNikaiTick
+
+ +
+
+ +

◆ kNikaiHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kNikaiHdrSpaceTicks = 8
+
+ +
+
+ +

◆ kNikaiMinGap

+ +
+
+ + + + +
const uint16_t kNikaiMinGap = kNikaiMinGapTicks * kNikaiTick
+
+ +
+
+ +

◆ kNikaiMinGapTicks

+ +
+
+ + + + +
const uint16_t kNikaiMinGapTicks = 17
+
+ +
+
+ +

◆ kNikaiOneSpace

+ +
+
+ + + + +
const uint16_t kNikaiOneSpace = kNikaiOneSpaceTicks * kNikaiTick
+
+ +
+
+ +

◆ kNikaiOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kNikaiOneSpaceTicks = 2
+
+ +
+
+ +

◆ kNikaiTick

+ +
+
+ + + + +
const uint16_t kNikaiTick = 500
+
+ +
+
+ +

◆ kNikaiZeroSpace

+ +
+
+ + + + +
const uint16_t kNikaiZeroSpace = kNikaiZeroSpaceTicks * kNikaiTick
+
+ +
+
+ +

◆ kNikaiZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kNikaiZeroSpaceTicks = 4
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8cpp.html new file mode 100644 index 000000000..8e777f8ec --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8cpp.html @@ -0,0 +1,416 @@ + + + + + + + +IRremoteESP8266: src/ir_Panasonic.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Panasonic.cpp File Reference
+
+
+ +

Support for Panasonic protocols. Panasonic protocol originally added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post) +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kPanasonicTick = 432
 
const uint16_t kPanasonicHdrMarkTicks = 8
 
const uint16_t kPanasonicHdrMark = kPanasonicHdrMarkTicks * kPanasonicTick
 
const uint16_t kPanasonicHdrSpaceTicks = 4
 
const uint16_t kPanasonicHdrSpace = kPanasonicHdrSpaceTicks * kPanasonicTick
 
const uint16_t kPanasonicBitMarkTicks = 1
 
const uint16_t kPanasonicBitMark = kPanasonicBitMarkTicks * kPanasonicTick
 
const uint16_t kPanasonicOneSpaceTicks = 3
 
const uint16_t kPanasonicOneSpace = kPanasonicOneSpaceTicks * kPanasonicTick
 
const uint16_t kPanasonicZeroSpaceTicks = 1
 
const uint16_t kPanasonicZeroSpace = kPanasonicZeroSpaceTicks * kPanasonicTick
 
const uint16_t kPanasonicMinCommandLengthTicks = 378
 
const uint32_t kPanasonicMinCommandLength
 
const uint16_t kPanasonicEndGap = 5000
 
const uint16_t kPanasonicMinGapTicks
 
const uint32_t kPanasonicMinGap = kPanasonicMinGapTicks * kPanasonicTick
 
const uint16_t kPanasonicAcSectionGap = 10000
 
const uint16_t kPanasonicAcSection1Length = 8
 
const uint32_t kPanasonicAcMessageGap = kDefaultMessageGap
 
+

Detailed Description

+

Support for Panasonic protocols. Panasonic protocol originally added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)

+
See also
Panasonic https://github.com/z3t0/Arduino-IRremote
+
+http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615
+
+Panasonic A/C support heavily influenced by https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp Panasonic A/C Clock & Timer support: Reverse Engineering by MikkelTb Code by crankyoldgit
+

Variable Documentation

+ +

◆ kPanasonicAcMessageGap

+ +
+
+ + + + +
const uint32_t kPanasonicAcMessageGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kPanasonicAcSection1Length

+ +
+
+ + + + +
const uint16_t kPanasonicAcSection1Length = 8
+
+ +
+
+ +

◆ kPanasonicAcSectionGap

+ +
+
+ + + + +
const uint16_t kPanasonicAcSectionGap = 10000
+
+ +
+
+ +

◆ kPanasonicBitMark

+ +
+
+ + + + +
const uint16_t kPanasonicBitMark = kPanasonicBitMarkTicks * kPanasonicTick
+
+ +
+
+ +

◆ kPanasonicBitMarkTicks

+ +
+
+ + + + +
const uint16_t kPanasonicBitMarkTicks = 1
+
+ +
+
+ +

◆ kPanasonicEndGap

+ +
+
+ + + + +
const uint16_t kPanasonicEndGap = 5000
+
+ +
+
+ +

◆ kPanasonicHdrMark

+ +
+
+ + + + +
const uint16_t kPanasonicHdrMark = kPanasonicHdrMarkTicks * kPanasonicTick
+
+ +
+
+ +

◆ kPanasonicHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kPanasonicHdrMarkTicks = 8
+
+ +
+
+ +

◆ kPanasonicHdrSpace

+ +
+
+ + + + +
const uint16_t kPanasonicHdrSpace = kPanasonicHdrSpaceTicks * kPanasonicTick
+
+ +
+
+ +

◆ kPanasonicHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kPanasonicHdrSpaceTicks = 4
+
+ +
+
+ +

◆ kPanasonicMinCommandLength

+ +
+
+ + + + +
const uint32_t kPanasonicMinCommandLength
+
+
+ +

◆ kPanasonicMinCommandLengthTicks

+ +
+
+ + + + +
const uint16_t kPanasonicMinCommandLengthTicks = 378
+
+ +
+
+ +

◆ kPanasonicMinGap

+ +
+
+ + + + +
const uint32_t kPanasonicMinGap = kPanasonicMinGapTicks * kPanasonicTick
+
+ +
+
+ +

◆ kPanasonicMinGapTicks

+ +
+
+ + + + +
const uint16_t kPanasonicMinGapTicks
+
+
+ +

◆ kPanasonicOneSpace

+ +
+
+ + + + +
const uint16_t kPanasonicOneSpace = kPanasonicOneSpaceTicks * kPanasonicTick
+
+ +
+
+ +

◆ kPanasonicOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kPanasonicOneSpaceTicks = 3
+
+ +
+
+ +

◆ kPanasonicTick

+ +
+
+ + + + +
const uint16_t kPanasonicTick = 432
+
+
+ +

◆ kPanasonicZeroSpace

+ +
+
+ + + + +
const uint16_t kPanasonicZeroSpace = kPanasonicZeroSpaceTicks * kPanasonicTick
+
+ +
+
+ +

◆ kPanasonicZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kPanasonicZeroSpaceTicks = 1
+
+ +
+
+
+
const uint16_t kPanasonicHdrMarkTicks
Definition: ir_Panasonic.cpp:29
+
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:952
+
const uint16_t kPanasonicTick
Definition: ir_Panasonic.cpp:28
+
const uint16_t kPanasonicBitMarkTicks
Definition: ir_Panasonic.cpp:33
+
const uint16_t kPanasonicOneSpaceTicks
Definition: ir_Panasonic.cpp:35
+
const uint16_t kPanasonicHdrSpaceTicks
Definition: ir_Panasonic.cpp:31
+
const uint16_t kPanasonicMinCommandLengthTicks
Definition: ir_Panasonic.cpp:39
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h.html new file mode 100644 index 000000000..1eab81246 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h.html @@ -0,0 +1,826 @@ + + + + + + + +IRremoteESP8266: src/ir_Panasonic.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Panasonic.h File Reference
+
+
+ +

Support for Panasonic protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRPanasonicAc
 Class for handling detailed Panasonic A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kPanasonicFreq = 36700
 
const uint16_t kPanasonicAcExcess = 0
 
const uint16_t kPanasonicAcTolerance = 40
 
const uint8_t kPanasonicAcAuto = 0
 
const uint8_t kPanasonicAcDry = 2
 
const uint8_t kPanasonicAcCool = 3
 
const uint8_t kPanasonicAcHeat = 4
 
const uint8_t kPanasonicAcFan = 6
 
const uint8_t kPanasonicAcFanMin = 0
 
const uint8_t kPanasonicAcFanMed = 2
 
const uint8_t kPanasonicAcFanMax = 4
 
const uint8_t kPanasonicAcFanAuto = 7
 
const uint8_t kPanasonicAcFanDelta = 3
 
const uint8_t kPanasonicAcPowerOffset = 0
 
const uint8_t kPanasonicAcTempOffset = 1
 
const uint8_t kPanasonicAcTempSize = 5
 
const uint8_t kPanasonicAcMinTemp = 16
 
const uint8_t kPanasonicAcMaxTemp = 30
 
const uint8_t kPanasonicAcFanModeTemp = 27
 
const uint8_t kPanasonicAcQuietOffset = 0
 
const uint8_t kPanasonicAcPowerfulOffset = 5
 
const uint8_t kPanasonicAcQuietCkpOffset = kPanasonicAcPowerfulOffset
 
const uint8_t kPanasonicAcPowerfulCkpOffset = kPanasonicAcQuietOffset
 
const uint8_t kPanasonicAcSwingVHighest = 0x1
 
const uint8_t kPanasonicAcSwingVHigh = 0x2
 
const uint8_t kPanasonicAcSwingVMiddle = 0x3
 
const uint8_t kPanasonicAcSwingVLow = 0x4
 
const uint8_t kPanasonicAcSwingVLowest = 0x5
 
const uint8_t kPanasonicAcSwingVAuto = 0xF
 
const uint8_t kPanasonicAcSwingHMiddle = 0x6
 
const uint8_t kPanasonicAcSwingHFullLeft = 0x9
 
const uint8_t kPanasonicAcSwingHLeft = 0xA
 
const uint8_t kPanasonicAcSwingHRight = 0xB
 
const uint8_t kPanasonicAcSwingHFullRight = 0xC
 
const uint8_t kPanasonicAcSwingHAuto = 0xD
 
const uint8_t kPanasonicAcChecksumInit = 0xF4
 
const uint8_t kPanasonicAcOnTimerOffset = 1
 
const uint8_t kPanasonicAcOffTimerOffset = 2
 
const uint8_t kPanasonicAcTimeSize = 11
 
const uint8_t kPanasonicAcTimeOverflowSize = 3
 
const uint16_t kPanasonicAcTimeMax = 23 * 60 + 59
 
const uint16_t kPanasonicAcTimeSpecial = 0x600
 
const uint8_t kPanasonicAcIonFilterByte = 22
 
const uint8_t kPanasonicAcIonFilterOffset = 0
 
const uint8_t kPanasonicKnownGoodState [kPanasonicAcStateLength]
 
+

Detailed Description

+

Support for Panasonic protocols.

+
See also
Panasonic A/C support heavily influenced by https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp
+

Variable Documentation

+ +

◆ kPanasonicAcAuto

+ +
+
+ + + + +
const uint8_t kPanasonicAcAuto = 0
+
+ +
+
+ +

◆ kPanasonicAcChecksumInit

+ +
+
+ + + + +
const uint8_t kPanasonicAcChecksumInit = 0xF4
+
+ +
+
+ +

◆ kPanasonicAcCool

+ +
+
+ + + + +
const uint8_t kPanasonicAcCool = 3
+
+ +
+
+ +

◆ kPanasonicAcDry

+ +
+
+ + + + +
const uint8_t kPanasonicAcDry = 2
+
+ +
+
+ +

◆ kPanasonicAcExcess

+ +
+
+ + + + +
const uint16_t kPanasonicAcExcess = 0
+
+ +
+
+ +

◆ kPanasonicAcFan

+ +
+
+ + + + +
const uint8_t kPanasonicAcFan = 6
+
+ +
+
+ +

◆ kPanasonicAcFanAuto

+ +
+
+ + + + +
const uint8_t kPanasonicAcFanAuto = 7
+
+ +
+
+ +

◆ kPanasonicAcFanDelta

+ +
+
+ + + + +
const uint8_t kPanasonicAcFanDelta = 3
+
+ +
+
+ +

◆ kPanasonicAcFanMax

+ +
+
+ + + + +
const uint8_t kPanasonicAcFanMax = 4
+
+ +
+
+ +

◆ kPanasonicAcFanMed

+ +
+
+ + + + +
const uint8_t kPanasonicAcFanMed = 2
+
+ +
+
+ +

◆ kPanasonicAcFanMin

+ +
+
+ + + + +
const uint8_t kPanasonicAcFanMin = 0
+
+ +
+
+ +

◆ kPanasonicAcFanModeTemp

+ +
+
+ + + + +
const uint8_t kPanasonicAcFanModeTemp = 27
+
+ +
+
+ +

◆ kPanasonicAcHeat

+ +
+
+ + + + +
const uint8_t kPanasonicAcHeat = 4
+
+ +
+
+ +

◆ kPanasonicAcIonFilterByte

+ +
+
+ + + + +
const uint8_t kPanasonicAcIonFilterByte = 22
+
+ +
+
+ +

◆ kPanasonicAcIonFilterOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcIonFilterOffset = 0
+
+ +
+
+ +

◆ kPanasonicAcMaxTemp

+ +
+
+ + + + +
const uint8_t kPanasonicAcMaxTemp = 30
+
+ +
+
+ +

◆ kPanasonicAcMinTemp

+ +
+
+ + + + +
const uint8_t kPanasonicAcMinTemp = 16
+
+ +
+
+ +

◆ kPanasonicAcOffTimerOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcOffTimerOffset = 2
+
+ +
+
+ +

◆ kPanasonicAcOnTimerOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcOnTimerOffset = 1
+
+ +
+
+ +

◆ kPanasonicAcPowerfulCkpOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcPowerfulCkpOffset = kPanasonicAcQuietOffset
+
+ +
+
+ +

◆ kPanasonicAcPowerfulOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcPowerfulOffset = 5
+
+ +
+
+ +

◆ kPanasonicAcPowerOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcPowerOffset = 0
+
+ +
+
+ +

◆ kPanasonicAcQuietCkpOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcQuietCkpOffset = kPanasonicAcPowerfulOffset
+
+ +
+
+ +

◆ kPanasonicAcQuietOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcQuietOffset = 0
+
+ +
+
+ +

◆ kPanasonicAcSwingHAuto

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingHAuto = 0xD
+
+ +
+
+ +

◆ kPanasonicAcSwingHFullLeft

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingHFullLeft = 0x9
+
+ +
+
+ +

◆ kPanasonicAcSwingHFullRight

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingHFullRight = 0xC
+
+ +
+
+ +

◆ kPanasonicAcSwingHLeft

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingHLeft = 0xA
+
+ +
+
+ +

◆ kPanasonicAcSwingHMiddle

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingHMiddle = 0x6
+
+ +
+
+ +

◆ kPanasonicAcSwingHRight

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingHRight = 0xB
+
+ +
+
+ +

◆ kPanasonicAcSwingVAuto

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingVAuto = 0xF
+
+ +
+
+ +

◆ kPanasonicAcSwingVHigh

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingVHigh = 0x2
+
+ +
+
+ +

◆ kPanasonicAcSwingVHighest

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingVHighest = 0x1
+
+ +
+
+ +

◆ kPanasonicAcSwingVLow

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingVLow = 0x4
+
+ +
+
+ +

◆ kPanasonicAcSwingVLowest

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingVLowest = 0x5
+
+ +
+
+ +

◆ kPanasonicAcSwingVMiddle

+ +
+
+ + + + +
const uint8_t kPanasonicAcSwingVMiddle = 0x3
+
+ +
+
+ +

◆ kPanasonicAcTempOffset

+ +
+
+ + + + +
const uint8_t kPanasonicAcTempOffset = 1
+
+ +
+
+ +

◆ kPanasonicAcTempSize

+ +
+
+ + + + +
const uint8_t kPanasonicAcTempSize = 5
+
+ +
+
+ +

◆ kPanasonicAcTimeMax

+ +
+
+ + + + +
const uint16_t kPanasonicAcTimeMax = 23 * 60 + 59
+
+ +
+
+ +

◆ kPanasonicAcTimeOverflowSize

+ +
+
+ + + + +
const uint8_t kPanasonicAcTimeOverflowSize = 3
+
+ +
+
+ +

◆ kPanasonicAcTimeSize

+ +
+
+ + + + +
const uint8_t kPanasonicAcTimeSize = 11
+
+ +
+
+ +

◆ kPanasonicAcTimeSpecial

+ +
+
+ + + + +
const uint16_t kPanasonicAcTimeSpecial = 0x600
+
+ +
+
+ +

◆ kPanasonicAcTolerance

+ +
+
+ + + + +
const uint16_t kPanasonicAcTolerance = 40
+
+ +
+
+ +

◆ kPanasonicFreq

+ +
+
+ + + + +
const uint16_t kPanasonicFreq = 36700
+
+ +
+
+ +

◆ kPanasonicKnownGoodState

+ +
+
+ + + + +
const uint8_t kPanasonicKnownGoodState[kPanasonicAcStateLength]
+
+Initial value:
= {
+
0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02,
+
0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+
0x00, 0x0E, 0xE0, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00}
+
+
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h_source.html new file mode 100644 index 000000000..5e233c8dc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Panasonic_8h_source.html @@ -0,0 +1,368 @@ + + + + + + + +IRremoteESP8266: src/ir_Panasonic.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Panasonic.h
+
+
+Go to the documentation of this file.
1 // Copyright 2018 David Conran
+
2 
+
6 
+
7 // Supports:
+
8 // Brand: Panasonic, Model: TV (PANASONIC)
+
9 // Brand: Panasonic, Model: NKE series A/C (PANASONIC_AC NKE/2)
+
10 // Brand: Panasonic, Model: DKE series A/C (PANASONIC_AC DKE/3)
+
11 // Brand: Panasonic, Model: DKW series A/C (PANASONIC_AC DKE/3)
+
12 // Brand: Panasonic, Model: PKR series A/C (PANASONIC_AC DKE/3)
+
13 // Brand: Panasonic, Model: JKE series A/C (PANASONIC_AC JKE/4)
+
14 // Brand: Panasonic, Model: CKP series A/C (PANASONIC_AC CKP/5)
+
15 // Brand: Panasonic, Model: RKR series A/C (PANASONIC_AC RKR/6)
+
16 // Brand: Panasonic, Model: CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
+
17 // Brand: Panasonic, Model: CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
+
18 // Brand: Panasonic, Model: CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
+
19 // Brand: Panasonic, Model: CS-E7PKR A/C (PANASONIC_AC DKE/2)
+
20 // Brand: Panasonic, Model: CS-Z9RKR A/C (PANASONIC_AC RKR/6)
+
21 // Brand: Panasonic, Model: CS-YW9MKD A/C (PANASONIC_AC JKE/4)
+
22 // Brand: Panasonic, Model: A75C2311 remote (PANASONIC_AC CKP/5)
+
23 // Brand: Panasonic, Model: A75C2616-1 remote (PANASONIC_AC DKE/3)
+
24 // Brand: Panasonic, Model: A75C3704 remote (PANASONIC_AC DKE/3)
+
25 // Brand: Panasonic, Model: A75C3747 remote (PANASONIC_AC JKE/4)
+
26 
+
27 #ifndef IR_PANASONIC_H_
+
28 #define IR_PANASONIC_H_
+
29 
+
30 #define __STDC_LIMIT_MACROS
+
31 #include <stdint.h>
+
32 #ifdef ARDUINO
+
33 #include <Arduino.h>
+
34 #endif
+
35 #include "IRremoteESP8266.h"
+
36 #include "IRsend.h"
+
37 #ifdef UNIT_TEST
+
38 #include "IRsend_test.h"
+
39 #endif
+
40 
+
41 // Constants
+
42 const uint16_t kPanasonicFreq = 36700;
+
43 const uint16_t kPanasonicAcExcess = 0;
+
44 // Much higher than usual. See issue #540.
+
45 const uint16_t kPanasonicAcTolerance = 40;
+
46 
+
47 const uint8_t kPanasonicAcAuto = 0; // 0b000
+
48 const uint8_t kPanasonicAcDry = 2; // 0b010
+
49 const uint8_t kPanasonicAcCool = 3; // 0b011
+
50 const uint8_t kPanasonicAcHeat = 4; // 0b010
+
51 const uint8_t kPanasonicAcFan = 6; // 0b110
+
52 const uint8_t kPanasonicAcFanMin = 0;
+
53 const uint8_t kPanasonicAcFanMed = 2;
+
54 const uint8_t kPanasonicAcFanMax = 4;
+
55 const uint8_t kPanasonicAcFanAuto = 7;
+
56 const uint8_t kPanasonicAcFanDelta = 3;
+
57 const uint8_t kPanasonicAcPowerOffset = 0;
+
58 const uint8_t kPanasonicAcTempOffset = 1; // Bits
+
59 const uint8_t kPanasonicAcTempSize = 5; // Bits
+
60 const uint8_t kPanasonicAcMinTemp = 16; // Celsius
+
61 const uint8_t kPanasonicAcMaxTemp = 30; // Celsius
+
62 const uint8_t kPanasonicAcFanModeTemp = 27; // Celsius
+
63 const uint8_t kPanasonicAcQuietOffset = 0;
+
64 const uint8_t kPanasonicAcPowerfulOffset = 5; // 0b100000
+
65 // CKP & RKR models have Powerful and Quiet bits swapped.
+ + +
68 const uint8_t kPanasonicAcSwingVHighest = 0x1; // 0b0001
+
69 const uint8_t kPanasonicAcSwingVHigh = 0x2; // 0b0010
+
70 const uint8_t kPanasonicAcSwingVMiddle = 0x3; // 0b0011
+
71 const uint8_t kPanasonicAcSwingVLow = 0x4; // 0b0100
+
72 const uint8_t kPanasonicAcSwingVLowest = 0x5; // 0b0101
+
73 const uint8_t kPanasonicAcSwingVAuto = 0xF; // 0b1111
+
74 
+
75 const uint8_t kPanasonicAcSwingHMiddle = 0x6; // 0b0110
+
76 const uint8_t kPanasonicAcSwingHFullLeft = 0x9; // 0b1001
+
77 const uint8_t kPanasonicAcSwingHLeft = 0xA; // 0b1010
+
78 const uint8_t kPanasonicAcSwingHRight = 0xB; // 0b1011
+
79 const uint8_t kPanasonicAcSwingHFullRight = 0xC; // 0b1100
+
80 const uint8_t kPanasonicAcSwingHAuto = 0xD; // 0b1101
+
81 const uint8_t kPanasonicAcChecksumInit = 0xF4;
+
82 const uint8_t kPanasonicAcOnTimerOffset = 1;
+
83 const uint8_t kPanasonicAcOffTimerOffset = 2;
+
84 const uint8_t kPanasonicAcTimeSize = 11; // Bits
+
85 const uint8_t kPanasonicAcTimeOverflowSize = 3; // Bits
+
86 const uint16_t kPanasonicAcTimeMax = 23 * 60 + 59; // Mins since midnight.
+
87 const uint16_t kPanasonicAcTimeSpecial = 0x600;
+
88 
+
89 const uint8_t kPanasonicAcIonFilterByte = 22; // Byte
+
90 const uint8_t kPanasonicAcIonFilterOffset = 0; // Bit
+
91 
+ +
93  0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02,
+
94  0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+
95  0x00, 0x0E, 0xE0, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00};
+
96 
+ +
99  public:
+
100  explicit IRPanasonicAc(const uint16_t pin, const bool inverted = false,
+
101  const bool use_modulation = true);
+
102  void stateReset(void);
+
103 #if SEND_PANASONIC
+
104  void send(const uint16_t repeat = kPanasonicAcDefaultRepeat);
+
109  int8_t calibrate(void) { return _irsend.calibrate(); }
+
110 #endif // SEND_PANASONIC
+
111  void begin(void);
+
112  void on(void);
+
113  void off(void);
+
114  void setPower(const bool on);
+
115  bool getPower(void);
+
116  void setTemp(const uint8_t temp, const bool remember = true);
+
117  uint8_t getTemp(void);
+
118  void setFan(const uint8_t fan);
+
119  uint8_t getFan(void);
+
120  void setMode(const uint8_t mode);
+
121  uint8_t getMode(void);
+
122  void setRaw(const uint8_t state[]);
+
123  uint8_t *getRaw(void);
+
124  static bool validChecksum(const uint8_t *state,
+
125  const uint16_t length = kPanasonicAcStateLength);
+
126  static uint8_t calcChecksum(const uint8_t *state,
+
127  const uint16_t length = kPanasonicAcStateLength);
+
128  void setQuiet(const bool on);
+
129  bool getQuiet(void);
+
130  void setPowerful(const bool on);
+
131  bool getPowerful(void);
+
132  void setIon(const bool on);
+
133  bool getIon(void);
+
134  void setModel(const panasonic_ac_remote_model_t model);
+ +
136  void setSwingVertical(const uint8_t elevation);
+
137  uint8_t getSwingVertical(void);
+
138  void setSwingHorizontal(const uint8_t direction);
+
139  uint8_t getSwingHorizontal(void);
+
140  static uint16_t encodeTime(const uint8_t hours, const uint8_t mins);
+
141  uint16_t getClock(void);
+
142  void setClock(const uint16_t mins_since_midnight);
+
143  uint16_t getOnTimer(void);
+
144  void setOnTimer(const uint16_t mins_since_midnight, const bool enable = true);
+
145  void cancelOnTimer(void);
+
146  bool isOnTimerEnabled(void);
+
147  uint16_t getOffTimer(void);
+
148  void setOffTimer(const uint16_t mins_since_midnight,
+
149  const bool enable = true);
+
150  void cancelOffTimer(void);
+
151  bool isOffTimerEnabled(void);
+
152  static uint8_t convertMode(const stdAc::opmode_t mode);
+
153  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
154  static uint8_t convertSwingV(const stdAc::swingv_t position);
+
155  static uint8_t convertSwingH(const stdAc::swingh_t position);
+
156  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
157  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
158  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
+
159  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
+
160  stdAc::state_t toCommon(void);
+
161  String toString(void);
+
162 #ifndef UNIT_TEST
+
163 
+
164  private:
+ +
166 #else // UNIT_TEST
+
167  IRsendTest _irsend;
+
169 #endif // UNIT_TEST
+ +
172  uint8_t _swingh;
+
173  uint8_t _temp;
+
174  void fixChecksum(const uint16_t length = kPanasonicAcStateLength);
+
175  static uint16_t _getTime(const uint8_t ptr[]);
+
176  static void _setTime(uint8_t * const ptr, const uint16_t mins_since_midnight,
+
177  const bool round_down);
+
178 };
+
179 
+
180 #endif // IR_PANASONIC_H_
+
+
const uint8_t kPanasonicAcFanAuto
Definition: ir_Panasonic.h:55
+
static uint16_t _getTime(const uint8_t ptr[])
Get the time from a given pointer location.
Definition: ir_Panasonic.cpp:540
+
Class for handling detailed Panasonic A/C messages.
Definition: ir_Panasonic.h:98
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Panasonic.cpp:385
+
const uint8_t kPanasonicAcIonFilterOffset
Definition: ir_Panasonic.h:90
+
const uint8_t kPanasonicAcAuto
Definition: ir_Panasonic.h:47
+
const uint8_t kPanasonicAcTimeSize
Definition: ir_Panasonic.h:84
+
void setRaw(const uint8_t state[])
Set the internal state from a valid code for this protocol.
Definition: ir_Panasonic.cpp:322
+
const uint8_t kPanasonicAcSwingHRight
Definition: ir_Panasonic.h:78
+
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
+
const uint8_t kPanasonicAcFanMin
Definition: ir_Panasonic.h:52
+
uint16_t getOffTimer(void)
Get the Off Timer time value.
Definition: ir_Panasonic.cpp:601
+
const uint8_t kPanasonicAcQuietOffset
Definition: ir_Panasonic.h:63
+
const uint8_t kPanasonicAcOffTimerOffset
Definition: ir_Panasonic.h:83
+
const uint16_t kPanasonicAcTolerance
Definition: ir_Panasonic.h:45
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint16_t kPanasonicAcExcess
Definition: ir_Panasonic.h:43
+
uint8_t _swingh
Definition: ir_Panasonic.h:172
+
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a standard A/C vertical swing into its native setting.
Definition: ir_Panasonic.cpp:684
+
const uint8_t kPanasonicAcPowerfulOffset
Definition: ir_Panasonic.h:64
+
static uint16_t encodeTime(const uint8_t hours, const uint8_t mins)
Convert standard (military/24hr) time to nr. of minutes since midnight.
Definition: ir_Panasonic.cpp:532
+
const uint8_t kPanasonicAcTimeOverflowSize
Definition: ir_Panasonic.h:85
+
const uint8_t kPanasonicAcFanMed
Definition: ir_Panasonic.h:53
+ +
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Panasonic.cpp:457
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Panasonic.cpp:472
+
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition: ir_Panasonic.cpp:491
+
uint8_t _temp
Definition: ir_Panasonic.h:173
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
void setSwingVertical(const uint8_t elevation)
Control the vertical swing setting.
Definition: ir_Panasonic.cpp:411
+
std::string String
Definition: IRremoteESP8266.h:1093
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Panasonic.cpp:725
+
void setIon(const bool on)
Set the Ion (filter) setting of the A/C.
Definition: ir_Panasonic.cpp:648
+
const uint8_t kPanasonicAcPowerfulCkpOffset
Definition: ir_Panasonic.h:67
+
const uint8_t kPanasonicAcSwingHAuto
Definition: ir_Panasonic.h:80
+
const uint8_t kPanasonicAcMinTemp
Definition: ir_Panasonic.h:60
+
const uint8_t kPanasonicAcPowerOffset
Definition: ir_Panasonic.h:57
+
const uint8_t kPanasonicAcHeat
Definition: ir_Panasonic.h:50
+
void send(const uint16_t repeat=kPanasonicAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Panasonic.cpp:239
+
uint16_t getClock(void)
Get the current clock time value.
Definition: ir_Panasonic.cpp:550
+
bool getPower(void)
Get the A/C power state of the remote.
Definition: ir_Panasonic.cpp:344
+
bool getQuiet(void)
Get the Quiet setting of the A/C.
Definition: ir_Panasonic.cpp:479
+
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:141
+ +
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
+
void setOffTimer(const uint16_t mins_since_midnight, const bool enable=true)
Set/Enable the Off Timer.
Definition: ir_Panasonic.cpp:611
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Panasonic.cpp:762
+
static uint8_t calcChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
Calculate the checksum for a given state.
Definition: ir_Panasonic.cpp:225
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Panasonic.cpp:657
+
const uint8_t kPanasonicAcChecksumInit
Definition: ir_Panasonic.h:81
+
static void _setTime(uint8_t *const ptr, const uint16_t mins_since_midnight, const bool round_down)
Set the time at a given pointer location.
Definition: ir_Panasonic.cpp:557
+
uint8_t getSwingVertical(void)
Get the current vertical swing setting.
Definition: ir_Panasonic.cpp:405
+
const uint16_t kPanasonicAcDefaultRepeat
Definition: IRremoteESP8266.h:958
+
const uint8_t kPanasonicAcSwingHFullRight
Definition: ir_Panasonic.h:79
+
const uint8_t kPanasonicAcSwingHLeft
Definition: ir_Panasonic.h:77
+
bool getPowerful(void)
Get the Powerful (Turbo) setting of the A/C.
Definition: ir_Panasonic.cpp:504
+
void setSwingHorizontal(const uint8_t direction)
Control the horizontal swing setting.
Definition: ir_Panasonic.cpp:428
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Panasonic.cpp:315
+
const uint16_t kPanasonicAcStateLength
Definition: IRremoteESP8266.h:954
+
const uint8_t kPanasonicAcSwingHMiddle
Definition: ir_Panasonic.h:75
+
const uint8_t kPanasonicAcCool
Definition: ir_Panasonic.h:49
+
const uint16_t kPanasonicFreq
Definition: ir_Panasonic.h:42
+
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_Panasonic.cpp:739
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Panasonic.h:165
+
void setOnTimer(const uint16_t mins_since_midnight, const bool enable=true)
Set/Enable the On Timer.
Definition: ir_Panasonic.cpp:582
+
void on(void)
Change the power setting to On.
Definition: ir_Panasonic.cpp:349
+
IRPanasonicAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Panasonic.cpp:197
+
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_Panasonic.cpp:788
+
const uint8_t kPanasonicAcQuietCkpOffset
Definition: ir_Panasonic.h:66
+
const uint8_t kPanasonicKnownGoodState[kPanasonicAcStateLength]
Definition: ir_Panasonic.h:92
+
const uint8_t kPanasonicAcSwingVAuto
Definition: ir_Panasonic.h:73
+
const uint8_t kPanasonicAcSwingVHigh
Definition: ir_Panasonic.h:69
+
bool isOnTimerEnabled(void)
Check if the On Timer is Enabled.
Definition: ir_Panasonic.cpp:595
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Panasonic.cpp:209
+
void fixChecksum(const uint16_t length=kPanasonicAcStateLength)
Calculate and set the checksum values for the internal state.
Definition: ir_Panasonic.cpp:232
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Panasonic.h:109
+
void setPower(const bool on)
Control the power state of the A/C unit.
Definition: ir_Panasonic.cpp:336
+
const uint8_t kPanasonicAcTempOffset
Definition: ir_Panasonic.h:58
+
void setClock(const uint16_t mins_since_midnight)
Set the current clock time value.
Definition: ir_Panasonic.cpp:571
+
const uint16_t kPanasonicAcTimeSpecial
Definition: ir_Panasonic.h:87
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Panasonic.cpp:362
+
const uint8_t kPanasonicAcSwingVLow
Definition: ir_Panasonic.h:71
+
void cancelOnTimer(void)
Cancel the On Timer.
Definition: ir_Panasonic.cpp:591
+
uint8_t getSwingHorizontal(void)
Get the current horizontal swing setting.
Definition: ir_Panasonic.cpp:422
+
const uint8_t kPanasonicAcFan
Definition: ir_Panasonic.h:51
+
void off(void)
Change the power setting to Off.
Definition: ir_Panasonic.cpp:352
+
const uint8_t kPanasonicAcDry
Definition: ir_Panasonic.h:48
+
uint8_t remote_state[kPanasonicAcStateLength]
The state in code form.
Definition: ir_Panasonic.h:171
+
void cancelOffTimer(void)
Cancel the Off Timer.
Definition: ir_Panasonic.cpp:626
+
const uint8_t kPanasonicAcIonFilterByte
Definition: ir_Panasonic.h:89
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Panasonic.cpp:670
+
const uint8_t kPanasonicAcSwingVMiddle
Definition: ir_Panasonic.h:70
+
static bool validChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Panasonic.cpp:215
+
const uint8_t kPanasonicAcFanDelta
Definition: ir_Panasonic.h:56
+
const uint8_t kPanasonicAcSwingVHighest
Definition: ir_Panasonic.h:68
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Panasonic.cpp:202
+
const uint8_t kPanasonicAcTempSize
Definition: ir_Panasonic.h:59
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Panasonic.cpp:356
+
void setPowerful(const bool on)
Set the Powerful (Turbo) setting of the A/C.
Definition: ir_Panasonic.cpp:516
+
const uint8_t kPanasonicAcFanModeTemp
Definition: ir_Panasonic.h:62
+
const uint8_t kPanasonicAcFanMax
Definition: ir_Panasonic.h:54
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Panasonic.cpp:712
+
bool isOffTimerEnabled(void)
Check if the Off Timer is Enabled.
Definition: ir_Panasonic.cpp:630
+
const uint16_t kPanasonicAcTimeMax
Definition: ir_Panasonic.h:86
+
const uint8_t kPanasonicAcSwingHFullLeft
Definition: ir_Panasonic.h:76
+
panasonic_ac_remote_model_t getModel(void)
Get/Detect the model of the A/C.
Definition: ir_Panasonic.cpp:296
+
bool getIon(void)
Get the Ion (filter) setting of the A/C.
Definition: ir_Panasonic.cpp:636
+
uint16_t getOnTimer(void)
Get the On Timer time value.
Definition: ir_Panasonic.cpp:577
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void setModel(const panasonic_ac_remote_model_t model)
Set the model of the A/C to emulate.
Definition: ir_Panasonic.cpp:246
+
const uint8_t kPanasonicAcMaxTemp
Definition: ir_Panasonic.h:61
+
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a standard A/C horizontal swing into its native setting.
Definition: ir_Panasonic.cpp:698
+
void setTemp(const uint8_t temp, const bool remember=true)
Set the temperature.
Definition: ir_Panasonic.cpp:394
+
const uint8_t kPanasonicAcSwingVLowest
Definition: ir_Panasonic.h:72
+
const uint8_t kPanasonicAcOnTimerOffset
Definition: ir_Panasonic.h:82
+
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_Panasonic.cpp:753
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pioneer_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pioneer_8cpp.html new file mode 100644 index 000000000..bd39de11e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pioneer_8cpp.html @@ -0,0 +1,341 @@ + + + + + + + +IRremoteESP8266: src/ir_Pioneer.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Pioneer.cpp File Reference
+
+
+ +

Pioneer remote emulation. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kPioneerTick = 534
 
const uint16_t kPioneerHdrMarkTicks = 16
 
const uint16_t kPioneerHdrMark = kPioneerHdrMarkTicks * kPioneerTick
 
const uint16_t kPioneerHdrSpaceTicks = 8
 
const uint16_t kPioneerHdrSpace = kPioneerHdrSpaceTicks * kPioneerTick
 
const uint16_t kPioneerBitMarkTicks = 1
 
const uint16_t kPioneerBitMark = kPioneerBitMarkTicks * kPioneerTick
 
const uint16_t kPioneerOneSpaceTicks = 3
 
const uint16_t kPioneerOneSpace = kPioneerOneSpaceTicks * kPioneerTick
 
const uint16_t kPioneerZeroSpaceTicks = 1
 
const uint16_t kPioneerZeroSpace = kPioneerZeroSpaceTicks * kPioneerTick
 
const uint16_t kPioneerMinCommandLengthTicks = 159
 
const uint32_t kPioneerMinCommandLength
 
const uint16_t kPioneerMinGapTicks = 47
 
const uint32_t kPioneerMinGap = kPioneerMinGapTicks * kPioneerTick
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kPioneerBitMark

+ +
+
+ + + + +
const uint16_t kPioneerBitMark = kPioneerBitMarkTicks * kPioneerTick
+
+ +
+
+ +

◆ kPioneerBitMarkTicks

+ +
+
+ + + + +
const uint16_t kPioneerBitMarkTicks = 1
+
+ +
+
+ +

◆ kPioneerHdrMark

+ +
+
+ + + + +
const uint16_t kPioneerHdrMark = kPioneerHdrMarkTicks * kPioneerTick
+
+ +
+
+ +

◆ kPioneerHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kPioneerHdrMarkTicks = 16
+
+ +
+
+ +

◆ kPioneerHdrSpace

+ +
+
+ + + + +
const uint16_t kPioneerHdrSpace = kPioneerHdrSpaceTicks * kPioneerTick
+
+ +
+
+ +

◆ kPioneerHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kPioneerHdrSpaceTicks = 8
+
+ +
+
+ +

◆ kPioneerMinCommandLength

+ +
+
+ + + + +
const uint32_t kPioneerMinCommandLength
+
+
+ +

◆ kPioneerMinCommandLengthTicks

+ +
+
+ + + + +
const uint16_t kPioneerMinCommandLengthTicks = 159
+
+ +
+
+ +

◆ kPioneerMinGap

+ +
+
+ + + + +
const uint32_t kPioneerMinGap = kPioneerMinGapTicks * kPioneerTick
+
+ +
+
+ +

◆ kPioneerMinGapTicks

+ +
+
+ + + + +
const uint16_t kPioneerMinGapTicks = 47
+
+ +
+
+ +

◆ kPioneerOneSpace

+ +
+
+ + + + +
const uint16_t kPioneerOneSpace = kPioneerOneSpaceTicks * kPioneerTick
+
+ +
+
+ +

◆ kPioneerOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kPioneerOneSpaceTicks = 3
+
+ +
+
+ +

◆ kPioneerTick

+ +
+
+ + + + +
const uint16_t kPioneerTick = 534
+
+ +
+
+ +

◆ kPioneerZeroSpace

+ +
+
+ + + + +
const uint16_t kPioneerZeroSpace = kPioneerZeroSpaceTicks * kPioneerTick
+
+ +
+
+ +

◆ kPioneerZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kPioneerZeroSpaceTicks = 1
+
+ +
+
+
+
const uint16_t kPioneerMinCommandLengthTicks
Definition: ir_Pioneer.cpp:34
+
const uint16_t kPioneerTick
Definition: ir_Pioneer.cpp:23
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pronto_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pronto_8cpp.html new file mode 100644 index 000000000..e962543bf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Pronto_8cpp.html @@ -0,0 +1,195 @@ + + + + + + + +IRremoteESP8266: src/ir_Pronto.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Pronto.cpp File Reference
+
+
+ +

Pronto code message generation. +More...

+ + + + + + + + + + + + + + +

+Variables

const float kProntoFreqFactor = 0.241246
 
const uint16_t kProntoTypeOffset = 0
 
const uint16_t kProntoFreqOffset = 1
 
const uint16_t kProntoSeq1LenOffset = 2
 
const uint16_t kProntoSeq2LenOffset = 3
 
const uint16_t kProntoDataOffset = 4
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kProntoDataOffset

+ +
+
+ + + + +
const uint16_t kProntoDataOffset = 4
+
+ +
+
+ +

◆ kProntoFreqFactor

+ +
+
+ + + + +
const float kProntoFreqFactor = 0.241246
+
+ +
+
+ +

◆ kProntoFreqOffset

+ +
+
+ + + + +
const uint16_t kProntoFreqOffset = 1
+
+ +
+
+ +

◆ kProntoSeq1LenOffset

+ +
+
+ + + + +
const uint16_t kProntoSeq1LenOffset = 2
+
+ +
+
+ +

◆ kProntoSeq2LenOffset

+ +
+
+ + + + +
const uint16_t kProntoSeq2LenOffset = 3
+
+ +
+
+ +

◆ kProntoTypeOffset

+ +
+
+ + + + +
const uint16_t kProntoTypeOffset = 0
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RC5__RC6_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RC5__RC6_8cpp.html new file mode 100644 index 000000000..0a479e434 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RC5__RC6_8cpp.html @@ -0,0 +1,361 @@ + + + + + + + +IRremoteESP8266: src/ir_RC5_RC6.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_RC5_RC6.cpp File Reference
+
+
+ +

RC-5 & RC-6 support RC-5 & RC-6 support added from https://github.com/z3t0/Arduino-IRremote RC-5X support added by David Conran. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kRc5T1 = 889
 
const uint32_t kRc5MinCommandLength = 113778
 
const uint32_t kRc5MinGap = kRc5MinCommandLength - kRC5RawBits * (2 * kRc5T1)
 
const uint16_t kRc5ToggleMask = 0x800
 
const uint16_t kRc5SamplesMin = 11
 
const uint16_t kRc6Tick = 444
 
const uint16_t kRc6HdrMarkTicks = 6
 
const uint16_t kRc6HdrMark = kRc6HdrMarkTicks * kRc6Tick
 
const uint16_t kRc6HdrSpaceTicks = 2
 
const uint16_t kRc6HdrSpace = kRc6HdrSpaceTicks * kRc6Tick
 
const uint16_t kRc6RptLengthTicks = 187
 
const uint32_t kRc6RptLength = kRc6RptLengthTicks * kRc6Tick
 
const uint32_t kRc6ToggleMask = 0x10000UL
 
const uint16_t kRc6_36ToggleMask = 0x8000
 
const int16_t kMark = 0
 
const int16_t kSpace = 1
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kMark

+ +
+
+ + + + +
const int16_t kMark = 0
+
+ +
+
+ +

◆ kRc5MinCommandLength

+ +
+
+ + + + +
const uint32_t kRc5MinCommandLength = 113778
+
+ +
+
+ +

◆ kRc5MinGap

+ +
+
+ + + + +
const uint32_t kRc5MinGap = kRc5MinCommandLength - kRC5RawBits * (2 * kRc5T1)
+
+ +
+
+ +

◆ kRc5SamplesMin

+ +
+
+ + + + +
const uint16_t kRc5SamplesMin = 11
+
+ +
+
+ +

◆ kRc5T1

+ +
+
+ + + + +
const uint16_t kRc5T1 = 889
+
+ +
+
+ +

◆ kRc5ToggleMask

+ +
+
+ + + + +
const uint16_t kRc5ToggleMask = 0x800
+
+ +
+
+ +

◆ kRc6_36ToggleMask

+ +
+
+ + + + +
const uint16_t kRc6_36ToggleMask = 0x8000
+
+ +
+
+ +

◆ kRc6HdrMark

+ +
+
+ + + + +
const uint16_t kRc6HdrMark = kRc6HdrMarkTicks * kRc6Tick
+
+ +
+
+ +

◆ kRc6HdrMarkTicks

+ +
+
+ + + + +
const uint16_t kRc6HdrMarkTicks = 6
+
+ +
+
+ +

◆ kRc6HdrSpace

+ +
+
+ + + + +
const uint16_t kRc6HdrSpace = kRc6HdrSpaceTicks * kRc6Tick
+
+ +
+
+ +

◆ kRc6HdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kRc6HdrSpaceTicks = 2
+
+ +
+
+ +

◆ kRc6RptLength

+ +
+
+ + + + +
const uint32_t kRc6RptLength = kRc6RptLengthTicks * kRc6Tick
+
+ +
+
+ +

◆ kRc6RptLengthTicks

+ +
+
+ + + + +
const uint16_t kRc6RptLengthTicks = 187
+
+ +
+
+ +

◆ kRc6Tick

+ +
+
+ + + + +
const uint16_t kRc6Tick = 444
+
+ +
+
+ +

◆ kRc6ToggleMask

+ +
+
+ + + + +
const uint32_t kRc6ToggleMask = 0x10000UL
+
+ +
+
+ +

◆ kSpace

+ +
+
+ + + + +
const int16_t kSpace = 1
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RCMM_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RCMM_8cpp.html new file mode 100644 index 000000000..fcffe316b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__RCMM_8cpp.html @@ -0,0 +1,429 @@ + + + + + + + +IRremoteESP8266: src/ir_RCMM.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_RCMM.cpp File Reference
+
+
+ +

Support for the Phillips RC-MM protocol. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kRcmmTick = 28
 
const uint16_t kRcmmHdrMarkTicks = 15
 
const uint16_t kRcmmHdrMark = 416
 
const uint16_t kRcmmHdrSpaceTicks = 10
 
const uint16_t kRcmmHdrSpace = 277
 
const uint16_t kRcmmBitMarkTicks = 6
 
const uint16_t kRcmmBitMark = 166
 
const uint16_t kRcmmBitSpace0Ticks = 10
 
const uint16_t kRcmmBitSpace0 = 277
 
const uint16_t kRcmmBitSpace1Ticks = 16
 
const uint16_t kRcmmBitSpace1 = 444
 
const uint16_t kRcmmBitSpace2Ticks = 22
 
const uint16_t kRcmmBitSpace2 = 611
 
const uint16_t kRcmmBitSpace3Ticks = 28
 
const uint16_t kRcmmBitSpace3 = 777
 
const uint16_t kRcmmRptLengthTicks = 992
 
const uint32_t kRcmmRptLength = 27778
 
const uint16_t kRcmmMinGapTicks = 120
 
const uint32_t kRcmmMinGap = 3360
 
const uint8_t kRcmmTolerance = 10
 
const uint16_t kRcmmExcess = 50
 
+

Detailed Description

+

Support for the Phillips RC-MM protocol.

+
See also
http://www.sbprojects.com/knowledge/ir/rcmm.php
+

Variable Documentation

+ +

◆ kRcmmBitMark

+ +
+
+ + + + +
const uint16_t kRcmmBitMark = 166
+
+ +
+
+ +

◆ kRcmmBitMarkTicks

+ +
+
+ + + + +
const uint16_t kRcmmBitMarkTicks = 6
+
+ +
+
+ +

◆ kRcmmBitSpace0

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace0 = 277
+
+ +
+
+ +

◆ kRcmmBitSpace0Ticks

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace0Ticks = 10
+
+ +
+
+ +

◆ kRcmmBitSpace1

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace1 = 444
+
+ +
+
+ +

◆ kRcmmBitSpace1Ticks

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace1Ticks = 16
+
+ +
+
+ +

◆ kRcmmBitSpace2

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace2 = 611
+
+ +
+
+ +

◆ kRcmmBitSpace2Ticks

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace2Ticks = 22
+
+ +
+
+ +

◆ kRcmmBitSpace3

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace3 = 777
+
+ +
+
+ +

◆ kRcmmBitSpace3Ticks

+ +
+
+ + + + +
const uint16_t kRcmmBitSpace3Ticks = 28
+
+ +
+
+ +

◆ kRcmmExcess

+ +
+
+ + + + +
const uint16_t kRcmmExcess = 50
+
+ +
+
+ +

◆ kRcmmHdrMark

+ +
+
+ + + + +
const uint16_t kRcmmHdrMark = 416
+
+ +
+
+ +

◆ kRcmmHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kRcmmHdrMarkTicks = 15
+
+ +
+
+ +

◆ kRcmmHdrSpace

+ +
+
+ + + + +
const uint16_t kRcmmHdrSpace = 277
+
+ +
+
+ +

◆ kRcmmHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kRcmmHdrSpaceTicks = 10
+
+ +
+
+ +

◆ kRcmmMinGap

+ +
+
+ + + + +
const uint32_t kRcmmMinGap = 3360
+
+ +
+
+ +

◆ kRcmmMinGapTicks

+ +
+
+ + + + +
const uint16_t kRcmmMinGapTicks = 120
+
+ +
+
+ +

◆ kRcmmRptLength

+ +
+
+ + + + +
const uint32_t kRcmmRptLength = 27778
+
+ +
+
+ +

◆ kRcmmRptLengthTicks

+ +
+
+ + + + +
const uint16_t kRcmmRptLengthTicks = 992
+
+ +
+
+ +

◆ kRcmmTick

+ +
+
+ + + + +
const uint16_t kRcmmTick = 28
+
+ +
+
+ +

◆ kRcmmTolerance

+ +
+
+ + + + +
const uint8_t kRcmmTolerance = 10
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8cpp.html new file mode 100644 index 000000000..c0203d881 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8cpp.html @@ -0,0 +1,529 @@ + + + + + + + +IRremoteESP8266: src/ir_Samsung.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Samsung.cpp File Reference
+
+
+ +

Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kSamsungTick = 560
 
const uint16_t kSamsungHdrMarkTicks = 8
 
const uint16_t kSamsungHdrMark = kSamsungHdrMarkTicks * kSamsungTick
 
const uint16_t kSamsungHdrSpaceTicks = 8
 
const uint16_t kSamsungHdrSpace = kSamsungHdrSpaceTicks * kSamsungTick
 
const uint16_t kSamsungBitMarkTicks = 1
 
const uint16_t kSamsungBitMark = kSamsungBitMarkTicks * kSamsungTick
 
const uint16_t kSamsungOneSpaceTicks = 3
 
const uint16_t kSamsungOneSpace = kSamsungOneSpaceTicks * kSamsungTick
 
const uint16_t kSamsungZeroSpaceTicks = 1
 
const uint16_t kSamsungZeroSpace = kSamsungZeroSpaceTicks * kSamsungTick
 
const uint16_t kSamsungRptSpaceTicks = 4
 
const uint16_t kSamsungRptSpace = kSamsungRptSpaceTicks * kSamsungTick
 
const uint16_t kSamsungMinMessageLengthTicks = 193
 
const uint32_t kSamsungMinMessageLength
 
const uint16_t kSamsungMinGapTicks
 
const uint32_t kSamsungMinGap = kSamsungMinGapTicks * kSamsungTick
 
const uint16_t kSamsungAcHdrMark = 690
 
const uint16_t kSamsungAcHdrSpace = 17844
 
const uint8_t kSamsungAcSections = 2
 
const uint16_t kSamsungAcSectionMark = 3086
 
const uint16_t kSamsungAcSectionSpace = 8864
 
const uint16_t kSamsungAcSectionGap = 2886
 
const uint16_t kSamsungAcBitMark = 586
 
const uint16_t kSamsungAcOneSpace = 1432
 
const uint16_t kSamsungAcZeroSpace = 436
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kSamsungAcBitMark

+ +
+
+ + + + +
const uint16_t kSamsungAcBitMark = 586
+
+ +
+
+ +

◆ kSamsungAcHdrMark

+ +
+
+ + + + +
const uint16_t kSamsungAcHdrMark = 690
+
+ +
+
+ +

◆ kSamsungAcHdrSpace

+ +
+
+ + + + +
const uint16_t kSamsungAcHdrSpace = 17844
+
+ +
+
+ +

◆ kSamsungAcOneSpace

+ +
+
+ + + + +
const uint16_t kSamsungAcOneSpace = 1432
+
+ +
+
+ +

◆ kSamsungAcSectionGap

+ +
+
+ + + + +
const uint16_t kSamsungAcSectionGap = 2886
+
+ +
+
+ +

◆ kSamsungAcSectionMark

+ +
+
+ + + + +
const uint16_t kSamsungAcSectionMark = 3086
+
+ +
+
+ +

◆ kSamsungAcSections

+ +
+
+ + + + +
const uint8_t kSamsungAcSections = 2
+
+ +
+
+ +

◆ kSamsungAcSectionSpace

+ +
+
+ + + + +
const uint16_t kSamsungAcSectionSpace = 8864
+
+ +
+
+ +

◆ kSamsungAcZeroSpace

+ +
+
+ + + + +
const uint16_t kSamsungAcZeroSpace = 436
+
+ +
+
+ +

◆ kSamsungBitMark

+ +
+
+ + + + +
const uint16_t kSamsungBitMark = kSamsungBitMarkTicks * kSamsungTick
+
+ +
+
+ +

◆ kSamsungBitMarkTicks

+ +
+
+ + + + +
const uint16_t kSamsungBitMarkTicks = 1
+
+ +
+
+ +

◆ kSamsungHdrMark

+ +
+
+ + + + +
const uint16_t kSamsungHdrMark = kSamsungHdrMarkTicks * kSamsungTick
+
+ +
+
+ +

◆ kSamsungHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kSamsungHdrMarkTicks = 8
+
+ +
+
+ +

◆ kSamsungHdrSpace

+ +
+
+ + + + +
const uint16_t kSamsungHdrSpace = kSamsungHdrSpaceTicks * kSamsungTick
+
+ +
+
+ +

◆ kSamsungHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kSamsungHdrSpaceTicks = 8
+
+ +
+
+ +

◆ kSamsungMinGap

+ +
+
+ + + + +
const uint32_t kSamsungMinGap = kSamsungMinGapTicks * kSamsungTick
+
+ +
+
+ +

◆ kSamsungMinGapTicks

+ +
+
+ + + + +
const uint16_t kSamsungMinGapTicks
+
+
+ +

◆ kSamsungMinMessageLength

+ +
+
+ + + + +
const uint32_t kSamsungMinMessageLength
+
+
+ +

◆ kSamsungMinMessageLengthTicks

+ +
+
+ + + + +
const uint16_t kSamsungMinMessageLengthTicks = 193
+
+ +
+
+ +

◆ kSamsungOneSpace

+ +
+
+ + + + +
const uint16_t kSamsungOneSpace = kSamsungOneSpaceTicks * kSamsungTick
+
+ +
+
+ +

◆ kSamsungOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kSamsungOneSpaceTicks = 3
+
+ +
+
+ +

◆ kSamsungRptSpace

+ +
+
+ + + + +
const uint16_t kSamsungRptSpace = kSamsungRptSpaceTicks * kSamsungTick
+
+ +
+
+ +

◆ kSamsungRptSpaceTicks

+ +
+
+ + + + +
const uint16_t kSamsungRptSpaceTicks = 4
+
+ +
+
+ +

◆ kSamsungTick

+ +
+
+ + + + +
const uint16_t kSamsungTick = 560
+
+ +
+
+ +

◆ kSamsungZeroSpace

+ +
+
+ + + + +
const uint16_t kSamsungZeroSpace = kSamsungZeroSpaceTicks * kSamsungTick
+
+ +
+
+ +

◆ kSamsungZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kSamsungZeroSpaceTicks = 1
+
+ +
+
+
+
const uint16_t kSamsungMinMessageLengthTicks
Definition: ir_Samsung.cpp:36
+
const uint16_t kSamsungTick
Definition: ir_Samsung.cpp:23
+
const uint16_t kSamsungBitMarkTicks
Definition: ir_Samsung.cpp:28
+
const uint16_t kSamsungHdrMarkTicks
Definition: ir_Samsung.cpp:24
+
const uint16_t kSamsungOneSpaceTicks
Definition: ir_Samsung.cpp:30
+
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:967
+
const uint16_t kSamsungHdrSpaceTicks
Definition: ir_Samsung.cpp:26
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h.html new file mode 100644 index 000000000..09282ae84 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h.html @@ -0,0 +1,748 @@ + + + + + + + +IRremoteESP8266: src/ir_Samsung.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Samsung.h File Reference
+
+
+ +

Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRSamsungAc
 Class for handling detailed Samsung A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kSamsungAcPower1Offset = 5
 
const uint8_t kSamsungAcQuiet1Offset = 4
 
const uint8_t kSamsungAcQuiet5Offset = 5
 
const uint8_t kSamsungAcPower6Offset = 4
 
const uint8_t kSamsungAcPower6Size = 2
 
const uint8_t kSamsungAcPowerfulMask8 = 0b01010000
 
const uint8_t kSamsungAcSwingOffset = 4
 
const uint8_t kSamsungAcSwingSize = 3
 
const uint8_t kSamsungAcSwingMove = 0b010
 
const uint8_t kSamsungAcSwingStop = 0b111
 
const uint8_t kSamsungAcPowerful10Offset = 1
 
const uint8_t kSamsungAcPowerful10Size = 3
 
const uint8_t kSamsungAcPowerful10On = 0b011
 
const uint8_t kSamsungAcBreezeOffset = kSamsungAcPowerful10Offset
 
const uint8_t kSamsungAcBreezeSize = kSamsungAcPowerful10Size
 
const uint8_t kSamsungAcBreezeOn = 0b101
 
const uint8_t kSamsungAcDisplayOffset = 4
 
const uint8_t kSamsungAcClean10Offset = 7
 
const uint8_t kSamsungAcIonOffset = 0
 
const uint8_t kSamsungAcClean11Offset = 1
 
const uint8_t kSamsungAcMinTemp = 16
 
const uint8_t kSamsungAcMaxTemp = 30
 
const uint8_t kSamsungAcAutoTemp = 25
 
const uint8_t kSamsungAcModeOffset = 4
 
const uint8_t kSamsungAcAuto = 0
 
const uint8_t kSamsungAcCool = 1
 
const uint8_t kSamsungAcDry = 2
 
const uint8_t kSamsungAcFan = 3
 
const uint8_t kSamsungAcHeat = 4
 
const uint8_t kSamsungAcFanOffest = 1
 
const uint8_t kSamsungAcFanSize = 3
 
const uint8_t kSamsungAcFanAuto = 0
 
const uint8_t kSamsungAcFanLow = 2
 
const uint8_t kSamsungAcFanMed = 4
 
const uint8_t kSamsungAcFanHigh = 5
 
const uint8_t kSamsungAcFanAuto2 = 6
 
const uint8_t kSamsungAcFanTurbo = 7
 
const uint8_t kSamsungAcBeepOffset = 1
 
const uint16_t kSamsungAcSectionLength = 7
 
const uint64_t kSamsungAcPowerSection = 0x1D20F00000000
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kSamsungAcAuto

+ +
+
+ + + + +
const uint8_t kSamsungAcAuto = 0
+
+ +
+
+ +

◆ kSamsungAcAutoTemp

+ +
+
+ + + + +
const uint8_t kSamsungAcAutoTemp = 25
+
+ +
+
+ +

◆ kSamsungAcBeepOffset

+ +
+
+ + + + +
const uint8_t kSamsungAcBeepOffset = 1
+
+ +
+
+ +

◆ kSamsungAcBreezeOffset

+ +
+
+ + + + +
const uint8_t kSamsungAcBreezeOffset = kSamsungAcPowerful10Offset
+
+ +
+
+ +

◆ kSamsungAcBreezeOn

+ +
+
+ + + + +
const uint8_t kSamsungAcBreezeOn = 0b101
+
+ +
+
+ +

◆ kSamsungAcBreezeSize

+ +
+
+ + + + +
const uint8_t kSamsungAcBreezeSize = kSamsungAcPowerful10Size
+
+ +
+
+ +

◆ kSamsungAcClean10Offset

+ +
+
+ + + + +
const uint8_t kSamsungAcClean10Offset = 7
+
+ +
+
+ +

◆ kSamsungAcClean11Offset

+ +
+
+ + + + +
const uint8_t kSamsungAcClean11Offset = 1
+
+ +
+
+ +

◆ kSamsungAcCool

+ +
+
+ + + + +
const uint8_t kSamsungAcCool = 1
+
+ +
+
+ +

◆ kSamsungAcDisplayOffset

+ +
+
+ + + + +
const uint8_t kSamsungAcDisplayOffset = 4
+
+ +
+
+ +

◆ kSamsungAcDry

+ +
+
+ + + + +
const uint8_t kSamsungAcDry = 2
+
+ +
+
+ +

◆ kSamsungAcFan

+ +
+
+ + + + +
const uint8_t kSamsungAcFan = 3
+
+ +
+
+ +

◆ kSamsungAcFanAuto

+ +
+
+ + + + +
const uint8_t kSamsungAcFanAuto = 0
+
+ +
+
+ +

◆ kSamsungAcFanAuto2

+ +
+
+ + + + +
const uint8_t kSamsungAcFanAuto2 = 6
+
+ +
+
+ +

◆ kSamsungAcFanHigh

+ +
+
+ + + + +
const uint8_t kSamsungAcFanHigh = 5
+
+ +
+
+ +

◆ kSamsungAcFanLow

+ +
+
+ + + + +
const uint8_t kSamsungAcFanLow = 2
+
+ +
+
+ +

◆ kSamsungAcFanMed

+ +
+
+ + + + +
const uint8_t kSamsungAcFanMed = 4
+
+ +
+
+ +

◆ kSamsungAcFanOffest

+ +
+
+ + + + +
const uint8_t kSamsungAcFanOffest = 1
+
+ +
+
+ +

◆ kSamsungAcFanSize

+ +
+
+ + + + +
const uint8_t kSamsungAcFanSize = 3
+
+ +
+
+ +

◆ kSamsungAcFanTurbo

+ +
+
+ + + + +
const uint8_t kSamsungAcFanTurbo = 7
+
+ +
+
+ +

◆ kSamsungAcHeat

+ +
+
+ + + + +
const uint8_t kSamsungAcHeat = 4
+
+ +
+
+ +

◆ kSamsungAcIonOffset

+ +
+
+ + + + +
const uint8_t kSamsungAcIonOffset = 0
+
+ +
+
+ +

◆ kSamsungAcMaxTemp

+ +
+
+ + + + +
const uint8_t kSamsungAcMaxTemp = 30
+
+ +
+
+ +

◆ kSamsungAcMinTemp

+ +
+
+ + + + +
const uint8_t kSamsungAcMinTemp = 16
+
+ +
+
+ +

◆ kSamsungAcModeOffset

+ +
+
+ + + + +
const uint8_t kSamsungAcModeOffset = 4
+
+ +
+
+ +

◆ kSamsungAcPower1Offset

+ +
+
+ + + + +
const uint8_t kSamsungAcPower1Offset = 5
+
+ +
+
+ +

◆ kSamsungAcPower6Offset

+ +
+
+ + + + +
const uint8_t kSamsungAcPower6Offset = 4
+
+ +
+
+ +

◆ kSamsungAcPower6Size

+ +
+
+ + + + +
const uint8_t kSamsungAcPower6Size = 2
+
+ +
+
+ +

◆ kSamsungAcPowerful10Offset

+ +
+
+ + + + +
const uint8_t kSamsungAcPowerful10Offset = 1
+
+ +
+
+ +

◆ kSamsungAcPowerful10On

+ +
+
+ + + + +
const uint8_t kSamsungAcPowerful10On = 0b011
+
+ +
+
+ +

◆ kSamsungAcPowerful10Size

+ +
+
+ + + + +
const uint8_t kSamsungAcPowerful10Size = 3
+
+ +
+
+ +

◆ kSamsungAcPowerfulMask8

+ +
+
+ + + + +
const uint8_t kSamsungAcPowerfulMask8 = 0b01010000
+
+ +
+
+ +

◆ kSamsungAcPowerSection

+ +
+
+ + + + +
const uint64_t kSamsungAcPowerSection = 0x1D20F00000000
+
+ +
+
+ +

◆ kSamsungAcQuiet1Offset

+ +
+
+ + + + +
const uint8_t kSamsungAcQuiet1Offset = 4
+
+ +
+
+ +

◆ kSamsungAcQuiet5Offset

+ +
+
+ + + + +
const uint8_t kSamsungAcQuiet5Offset = 5
+
+ +
+
+ +

◆ kSamsungAcSectionLength

+ +
+
+ + + + +
const uint16_t kSamsungAcSectionLength = 7
+
+ +
+
+ +

◆ kSamsungAcSwingMove

+ +
+
+ + + + +
const uint8_t kSamsungAcSwingMove = 0b010
+
+ +
+
+ +

◆ kSamsungAcSwingOffset

+ +
+
+ + + + +
const uint8_t kSamsungAcSwingOffset = 4
+
+ +
+
+ +

◆ kSamsungAcSwingSize

+ +
+
+ + + + +
const uint8_t kSamsungAcSwingSize = 3
+
+ +
+
+ +

◆ kSamsungAcSwingStop

+ +
+
+ + + + +
const uint8_t kSamsungAcSwingStop = 0b111
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h_source.html new file mode 100644 index 000000000..a6c27ffcd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Samsung_8h_source.html @@ -0,0 +1,335 @@ + + + + + + + +IRremoteESP8266: src/ir_Samsung.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Samsung.h
+
+
+Go to the documentation of this file.
1 // Copyright 2018 David Conran
+
9 
+
10 // Supports:
+
11 // Brand: Samsung, Model: UA55H6300 TV (SAMSUNG)
+
12 // Brand: Samsung, Model: BN59-01178B TV remote (SAMSUNG)
+
13 // Brand: Samsung, Model: DB63-03556X003 remote
+
14 // Brand: Samsung, Model: DB93-16761C remote
+
15 // Brand: Samsung, Model: IEC-R03 remote
+
16 // Brand: Samsung, Model: AK59-00167A Bluray remote (SAMSUNG36)
+
17 // Brand: Samsung, Model: AR09FSSDAWKNFA A/C (SAMSUNG_AC)
+
18 // Brand: Samsung, Model: AR12KSFPEWQNET A/C (SAMSUNG_AC)
+
19 // Brand: Samsung, Model: AR12HSSDBWKNEU A/C (SAMSUNG_AC)
+
20 // Brand: Samsung, Model: AR12NXCXAWKXEU A/C (SAMSUNG_AC)
+
21 
+
22 #ifndef IR_SAMSUNG_H_
+
23 #define IR_SAMSUNG_H_
+
24 
+
25 #define __STDC_LIMIT_MACROS
+
26 #include <stdint.h>
+
27 #ifndef UNIT_TEST
+
28 #include <Arduino.h>
+
29 #endif
+
30 #include "IRremoteESP8266.h"
+
31 #include "IRsend.h"
+
32 #ifdef UNIT_TEST
+
33 #include "IRsend_test.h"
+
34 #endif
+
35 
+
36 // Constants
+
37 
+
38 // SamsungAc
+
39 // Byte[1]
+
40 // Checksum 0b11110000 ???
+
41 const uint8_t kSamsungAcPower1Offset = 5; // Mask 0b00100000
+
42 const uint8_t kSamsungAcQuiet1Offset = 4; // Mask 0b00010000
+
43 // Byte[5]
+
44 const uint8_t kSamsungAcQuiet5Offset = 5;
+
45 // Byte[6]
+
46 const uint8_t kSamsungAcPower6Offset = 4; // Mask 0b00110000
+
47 const uint8_t kSamsungAcPower6Size = 2; // Bits
+
48 // Byte[8]
+
49 // Checksum 0b11110000 ???
+
50 const uint8_t kSamsungAcPowerfulMask8 = 0b01010000;
+
51 // Byte[9]
+
52 const uint8_t kSamsungAcSwingOffset = 4; // Mask 0b01110000
+
53 const uint8_t kSamsungAcSwingSize = 3; // Bits
+
54 const uint8_t kSamsungAcSwingMove = 0b010;
+
55 const uint8_t kSamsungAcSwingStop = 0b111;
+
56 // Byte[10]
+
57 const uint8_t kSamsungAcPowerful10Offset = 1; // Mask 0b00001110
+
58 const uint8_t kSamsungAcPowerful10Size = 3; // Mask 0b00001110
+
59 const uint8_t kSamsungAcPowerful10On = 0b011;
+
60 // Breeze (aka. WindFree)
+ + +
63 const uint8_t kSamsungAcBreezeOn = 0b101;
+
64 const uint8_t kSamsungAcDisplayOffset = 4; // Mask 0b00010000
+
65 const uint8_t kSamsungAcClean10Offset = 7; // Mask 0b10000000
+
66 // Byte[11]
+
67 const uint8_t kSamsungAcIonOffset = 0; // Mask 0b00000001
+
68 const uint8_t kSamsungAcClean11Offset = 1; // Mask 0b00000010
+
69 const uint8_t kSamsungAcMinTemp = 16; // C Mask 0b11110000
+
70 const uint8_t kSamsungAcMaxTemp = 30; // C Mask 0b11110000
+
71 const uint8_t kSamsungAcAutoTemp = 25; // C Mask 0b11110000
+
72 // Byte[12]
+
73 const uint8_t kSamsungAcModeOffset = 4; // Mask 0b01110000
+
74 const uint8_t kSamsungAcAuto = 0;
+
75 const uint8_t kSamsungAcCool = 1;
+
76 const uint8_t kSamsungAcDry = 2;
+
77 const uint8_t kSamsungAcFan = 3;
+
78 const uint8_t kSamsungAcHeat = 4;
+
79 const uint8_t kSamsungAcFanOffest = 1; // Mask 0b00001110
+
80 const uint8_t kSamsungAcFanSize = 3; // Bits
+
81 const uint8_t kSamsungAcFanAuto = 0;
+
82 const uint8_t kSamsungAcFanLow = 2;
+
83 const uint8_t kSamsungAcFanMed = 4;
+
84 const uint8_t kSamsungAcFanHigh = 5;
+
85 const uint8_t kSamsungAcFanAuto2 = 6;
+
86 const uint8_t kSamsungAcFanTurbo = 7;
+
87 // Byte[13]
+
88 const uint8_t kSamsungAcBeepOffset = 1; // Mask 0b00000010
+
89 
+
90 const uint16_t kSamsungAcSectionLength = 7;
+
91 const uint64_t kSamsungAcPowerSection = 0x1D20F00000000;
+
92 
+
93 // Classes
+
95 class IRSamsungAc {
+
96  public:
+
97  explicit IRSamsungAc(const uint16_t pin, const bool inverted = false,
+
98  const bool use_modulation = true);
+
99  void stateReset(const bool forcepower = true, const bool initialPower = true);
+
100 #if SEND_SAMSUNG_AC
+
101  void send(const uint16_t repeat = kSamsungAcDefaultRepeat,
+
102  const bool calcchecksum = true);
+
103  void sendExtended(const uint16_t repeat = kSamsungAcDefaultRepeat,
+
104  const bool calcchecksum = true);
+
105  void sendOn(const uint16_t repeat = kSamsungAcDefaultRepeat);
+
106  void sendOff(const uint16_t repeat = kSamsungAcDefaultRepeat);
+
111  int8_t calibrate(void) { return _irsend.calibrate(); }
+
112 #endif // SEND_SAMSUNG_AC
+
113  void begin(void);
+
114  void on(void);
+
115  void off(void);
+
116  void setPower(const bool on);
+
117  bool getPower(void);
+
118  void setTemp(const uint8_t temp);
+
119  uint8_t getTemp(void);
+
120  void setFan(const uint8_t speed);
+
121  uint8_t getFan(void);
+
122  void setMode(const uint8_t mode);
+
123  uint8_t getMode(void);
+
124  void setSwing(const bool on);
+
125  bool getSwing(void);
+
126  void setBeep(const bool on);
+
127  bool getBeep(void);
+
128  void setClean(const bool on);
+
129  bool getClean(void);
+
130  void setQuiet(const bool on);
+
131  bool getQuiet(void);
+
132  void setPowerful(const bool on);
+
133  bool getPowerful(void);
+
134  void setBreeze(const bool on);
+
135  bool getBreeze(void);
+
136  void setDisplay(const bool on);
+
137  bool getDisplay(void);
+
138  void setIon(const bool on);
+
139  bool getIon(void);
+
140  uint8_t* getRaw(void);
+
141  void setRaw(const uint8_t new_code[],
+
142  const uint16_t length = kSamsungAcStateLength);
+
143  static bool validChecksum(const uint8_t state[],
+
144  const uint16_t length = kSamsungAcStateLength);
+
145  static uint8_t calcChecksum(const uint8_t state[],
+
146  const uint16_t length = kSamsungAcStateLength);
+
147  uint8_t convertMode(const stdAc::opmode_t mode);
+
148  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
149  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
150  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
151  stdAc::state_t toCommon(void);
+
152  String toString(void);
+
153 #ifndef UNIT_TEST
+
154 
+
155  private:
+ +
157 #else // UNIT_TEST
+
158  IRsendTest _irsend;
+
160 #endif // UNIT_TEST
+ +
163  bool _forcepower;
+ +
165  void checksum(const uint16_t length = kSamsungAcStateLength);
+
166 };
+
167 
+
168 #endif // IR_SAMSUNG_H_
+
+
bool getIon(void)
Get the Ion (Filter) setting of the A/C.
Definition: ir_Samsung.cpp:636
+
const uint8_t kSamsungAcDry
Definition: ir_Samsung.h:76
+
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:95
+
bool _forcepower
Hack to know when we need to send a special power mesg.
Definition: ir_Samsung.h:163
+
const uint8_t kSamsungAcCool
Definition: ir_Samsung.h:75
+
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition: ir_Samsung.cpp:563
+
const uint8_t kSamsungAcFanMed
Definition: ir_Samsung.h:83
+
void send(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
Send the current internal state as an IR message.
Definition: ir_Samsung.cpp:337
+
const uint8_t kSamsungAcFanAuto2
Definition: ir_Samsung.h:85
+
const uint8_t kSamsungAcAuto
Definition: ir_Samsung.h:74
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Samsung.h:156
+
IRSamsungAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Samsung.cpp:264
+
const uint8_t kSamsungAcFanHigh
Definition: ir_Samsung.h:84
+
const uint8_t kSamsungAcBreezeSize
Definition: ir_Samsung.h:62
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kSamsungAcFan
Definition: ir_Samsung.h:77
+
bool getBreeze(void)
Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree.
Definition: ir_Samsung.cpp:603
+
void setBreeze(const bool on)
Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree.
Definition: ir_Samsung.cpp:612
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Samsung.cpp:701
+
const uint8_t kSamsungAcSwingStop
Definition: ir_Samsung.h:55
+
const uint8_t kSamsungAcPower1Offset
Definition: ir_Samsung.h:41
+
bool getDisplay(void)
Get the Display (Light/LED) setting of the A/C.
Definition: ir_Samsung.cpp:624
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Samsung.cpp:480
+
const uint16_t kSamsungAcDefaultRepeat
Definition: IRremoteESP8266.h:973
+
const uint8_t kSamsungAcPowerful10On
Definition: ir_Samsung.h:59
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Samsung.cpp:438
+ +
void setSwing(const bool on)
Set the vertical swing setting of the A/C.
Definition: ir_Samsung.cpp:523
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Samsung.cpp:728
+
const uint16_t kSamsungAcSectionLength
Definition: ir_Samsung.h:90
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Samsung.cpp:285
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
void setIon(const bool on)
Set the Ion (Filter) setting of the A/C.
Definition: ir_Samsung.cpp:642
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
void setRaw(const uint8_t new_code[], const uint16_t length=kSamsungAcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Samsung.cpp:412
+
std::string String
Definition: IRremoteESP8266.h:1093
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Samsung.cpp:455
+
void sendOff(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the special extended "Off" message as the library can't seem to reproduce this message automatic...
Definition: ir_Samsung.cpp:392
+
const uint8_t kSamsungAcQuiet1Offset
Definition: ir_Samsung.h:42
+
bool getPowerful(void)
Get the Powerful (Turbo) setting of the A/C.
Definition: ir_Samsung.cpp:575
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Samsung.cpp:423
+
bool getBeep(void)
Get the Beep setting of the A/C.
Definition: ir_Samsung.cpp:530
+
const uint8_t kSamsungAcFanSize
Definition: ir_Samsung.h:80
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Samsung.cpp:662
+
uint8_t remote_state[kSamsungAcExtendedStateLength]
State in code form.
Definition: ir_Samsung.h:162
+
const uint8_t kSamsungAcPowerfulMask8
Definition: ir_Samsung.h:50
+
const uint16_t kSamsungAcStateLength
Definition: IRremoteESP8266.h:969
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Samsung.cpp:310
+ +
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Samsung.cpp:446
+
const uint8_t kSamsungAcSwingOffset
Definition: ir_Samsung.h:52
+
const uint64_t kSamsungAcPowerSection
Definition: ir_Samsung.h:91
+
void setPowerful(const bool on)
Set the Powerful (Turbo) setting of the A/C.
Definition: ir_Samsung.cpp:584
+
const uint8_t kSamsungAcModeOffset
Definition: ir_Samsung.h:73
+
const uint16_t kSamsungAcExtendedStateLength
Definition: IRremoteESP8266.h:971
+
bool getQuiet(void)
Get the Quiet setting of the A/C.
Definition: ir_Samsung.cpp:556
+
const uint8_t kSamsungAcDisplayOffset
Definition: ir_Samsung.h:64
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Samsung.cpp:430
+
void setDisplay(const bool on)
Set the Display (Light/LED) setting of the A/C.
Definition: ir_Samsung.cpp:630
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Samsung.cpp:506
+
const uint8_t kSamsungAcBreezeOn
Definition: ir_Samsung.h:63
+
const uint8_t kSamsungAcPowerful10Offset
Definition: ir_Samsung.h:57
+
void stateReset(const bool forcepower=true, const bool initialPower=true)
Reset the internal state of the emulation.
Definition: ir_Samsung.cpp:274
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
Calculate the checksum for a given state.
Definition: ir_Samsung.cpp:291
+
bool _lastsentpowerstate
Definition: ir_Samsung.h:164
+
const uint8_t kSamsungAcAutoTemp
Definition: ir_Samsung.h:71
+
const uint8_t kSamsungAcSwingMove
Definition: ir_Samsung.h:54
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Samsung.cpp:462
+
const uint8_t kSamsungAcBreezeOffset
Definition: ir_Samsung.h:61
+
const uint8_t kSamsungAcSwingSize
Definition: ir_Samsung.h:53
+
const uint8_t kSamsungAcFanLow
Definition: ir_Samsung.h:82
+
void setClean(const bool on)
Set the Clean setting of the A/C.
Definition: ir_Samsung.cpp:549
+
const uint8_t kSamsungAcHeat
Definition: ir_Samsung.h:78
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Samsung.cpp:676
+
void sendOn(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the special extended "On" message as the library can't seem to reproduce this message automatica...
Definition: ir_Samsung.cpp:379
+
const uint8_t kSamsungAcFanAuto
Definition: ir_Samsung.h:81
+
const uint8_t kSamsungAcClean11Offset
Definition: ir_Samsung.h:68
+
void checksum(const uint16_t length=kSamsungAcStateLength)
Update the checksum for the internal state.
Definition: ir_Samsung.cpp:323
+
void setBeep(const bool on)
Set the Beep setting of the A/C.
Definition: ir_Samsung.cpp:536
+
bool getClean(void)
Get the Clean setting of the A/C.
Definition: ir_Samsung.cpp:542
+
const uint8_t kSamsungAcFanOffest
Definition: ir_Samsung.h:79
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Samsung.cpp:649
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Samsung.h:111
+
void sendExtended(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
Send the extended current internal state as an IR message.
Definition: ir_Samsung.cpp:358
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Samsung.cpp:486
+
const uint8_t kSamsungAcMaxTemp
Definition: ir_Samsung.h:70
+
const uint8_t kSamsungAcIonOffset
Definition: ir_Samsung.h:67
+
const uint8_t kSamsungAcPower6Offset
Definition: ir_Samsung.h:46
+
const uint8_t kSamsungAcPowerful10Size
Definition: ir_Samsung.h:58
+
const uint8_t kSamsungAcClean10Offset
Definition: ir_Samsung.h:65
+
bool getSwing(void)
Get the vertical swing setting of the A/C.
Definition: ir_Samsung.cpp:514
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Samsung.cpp:426
+
const uint8_t kSamsungAcPower6Size
Definition: ir_Samsung.h:47
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Samsung.cpp:689
+
const uint8_t kSamsungAcBeepOffset
Definition: ir_Samsung.h:88
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Samsung.cpp:404
+
const uint8_t kSamsungAcQuiet5Offset
Definition: ir_Samsung.h:44
+
const uint8_t kSamsungAcFanTurbo
Definition: ir_Samsung.h:86
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kSamsungAcMinTemp
Definition: ir_Samsung.h:69
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sanyo_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sanyo_8cpp.html new file mode 100644 index 000000000..51a096705 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sanyo_8cpp.html @@ -0,0 +1,352 @@ + + + + + + + +IRremoteESP8266: src/ir_Sanyo.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Sanyo.cpp File Reference
+
+
+ +

Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B originally added from https://github.com/shirriff/Arduino-IRremote/. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kSanyoSa8650bHdrMark = 3500
 
const uint16_t kSanyoSa8650bHdrSpace = 950
 
const uint16_t kSanyoSa8650bOneMark = 2400
 
const uint16_t kSanyoSa8650bZeroMark = 700
 
const uint16_t kSanyoSa8650bDoubleSpaceUsecs = 800
 
const uint16_t kSanyoSa8650bRptLength = 45000
 
const uint16_t kSanyoLc7461AddressMask = (1 << kSanyoLC7461AddressBits) - 1
 
const uint16_t kSanyoLc7461CommandMask = (1 << kSanyoLC7461CommandBits) - 1
 
const uint16_t kSanyoLc7461HdrMark = 9000
 
const uint16_t kSanyoLc7461HdrSpace = 4500
 
const uint16_t kSanyoLc7461BitMark = 560
 
const uint16_t kSanyoLc7461OneSpace = 1690
 
const uint16_t kSanyoLc7461ZeroSpace = 560
 
const uint32_t kSanyoLc7461MinCommandLength = 108000
 
const uint16_t kSanyoLc7461MinGap
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kSanyoLc7461AddressMask

+ +
+
+ + + + +
const uint16_t kSanyoLc7461AddressMask = (1 << kSanyoLC7461AddressBits) - 1
+
+ +
+
+ +

◆ kSanyoLc7461BitMark

+ +
+
+ + + + +
const uint16_t kSanyoLc7461BitMark = 560
+
+ +
+
+ +

◆ kSanyoLc7461CommandMask

+ +
+
+ + + + +
const uint16_t kSanyoLc7461CommandMask = (1 << kSanyoLC7461CommandBits) - 1
+
+ +
+
+ +

◆ kSanyoLc7461HdrMark

+ +
+
+ + + + +
const uint16_t kSanyoLc7461HdrMark = 9000
+
+ +
+
+ +

◆ kSanyoLc7461HdrSpace

+ +
+
+ + + + +
const uint16_t kSanyoLc7461HdrSpace = 4500
+
+ +
+
+ +

◆ kSanyoLc7461MinCommandLength

+ +
+
+ + + + +
const uint32_t kSanyoLc7461MinCommandLength = 108000
+
+ +
+
+ +

◆ kSanyoLc7461MinGap

+ +
+
+ + + + +
const uint16_t kSanyoLc7461MinGap
+
+
+ +

◆ kSanyoLc7461OneSpace

+ +
+
+ + + + +
const uint16_t kSanyoLc7461OneSpace = 1690
+
+ +
+
+ +

◆ kSanyoLc7461ZeroSpace

+ +
+
+ + + + +
const uint16_t kSanyoLc7461ZeroSpace = 560
+
+ +
+
+ +

◆ kSanyoSa8650bDoubleSpaceUsecs

+ +
+
+ + + + +
const uint16_t kSanyoSa8650bDoubleSpaceUsecs = 800
+
+ +
+
+ +

◆ kSanyoSa8650bHdrMark

+ +
+
+ + + + +
const uint16_t kSanyoSa8650bHdrMark = 3500
+
+ +
+
+ +

◆ kSanyoSa8650bHdrSpace

+ +
+
+ + + + +
const uint16_t kSanyoSa8650bHdrSpace = 950
+
+ +
+
+ +

◆ kSanyoSa8650bOneMark

+ +
+
+ + + + +
const uint16_t kSanyoSa8650bOneMark = 2400
+
+ +
+
+ +

◆ kSanyoSa8650bRptLength

+ +
+
+ + + + +
const uint16_t kSanyoSa8650bRptLength = 45000
+
+ +
+
+ +

◆ kSanyoSa8650bZeroMark

+ +
+
+ + + + +
const uint16_t kSanyoSa8650bZeroMark = 700
+
+ +
+
+
+
const uint16_t kSanyoLc7461HdrMark
Definition: ir_Sanyo.cpp:37
+
const uint32_t kSanyoLc7461MinCommandLength
Definition: ir_Sanyo.cpp:42
+
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:977
+
const uint16_t kSanyoLc7461HdrSpace
Definition: ir_Sanyo.cpp:38
+
const uint16_t kSanyoLc7461BitMark
Definition: ir_Sanyo.cpp:39
+
const uint16_t kSanyoLc7461ZeroSpace
Definition: ir_Sanyo.cpp:41
+
const uint16_t kSanyoLc7461OneSpace
Definition: ir_Sanyo.cpp:40
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8cpp.html new file mode 100644 index 000000000..27e3c360b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8cpp.html @@ -0,0 +1,301 @@ + + + + + + + +IRremoteESP8266: src/ir_Sharp.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Sharp.cpp File Reference
+
+
+ +

Support for Sharp protocols. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kSharpTick = 26
 
const uint16_t kSharpBitMarkTicks = 10
 
const uint16_t kSharpBitMark = kSharpBitMarkTicks * kSharpTick
 
const uint16_t kSharpOneSpaceTicks = 70
 
const uint16_t kSharpOneSpace = kSharpOneSpaceTicks * kSharpTick
 
const uint16_t kSharpZeroSpaceTicks = 30
 
const uint16_t kSharpZeroSpace = kSharpZeroSpaceTicks * kSharpTick
 
const uint16_t kSharpGapTicks = 1677
 
const uint16_t kSharpGap = kSharpGapTicks * kSharpTick
 
const uint64_t kSharpToggleMask
 
const uint64_t kSharpAddressMask = ((uint64_t)1 << kSharpAddressBits) - 1
 
const uint64_t kSharpCommandMask = ((uint64_t)1 << kSharpCommandBits) - 1
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kSharpAddressMask

+ +
+
+ + + + +
const uint64_t kSharpAddressMask = ((uint64_t)1 << kSharpAddressBits) - 1
+
+ +
+
+ +

◆ kSharpBitMark

+ +
+
+ + + + +
const uint16_t kSharpBitMark = kSharpBitMarkTicks * kSharpTick
+
+ +
+
+ +

◆ kSharpBitMarkTicks

+ +
+
+ + + + +
const uint16_t kSharpBitMarkTicks = 10
+
+ +
+
+ +

◆ kSharpCommandMask

+ +
+
+ + + + +
const uint64_t kSharpCommandMask = ((uint64_t)1 << kSharpCommandBits) - 1
+
+ +
+
+ +

◆ kSharpGap

+ +
+
+ + + + +
const uint16_t kSharpGap = kSharpGapTicks * kSharpTick
+
+ +
+
+ +

◆ kSharpGapTicks

+ +
+
+ + + + +
const uint16_t kSharpGapTicks = 1677
+
+ +
+
+ +

◆ kSharpOneSpace

+ +
+
+ + + + +
const uint16_t kSharpOneSpace = kSharpOneSpaceTicks * kSharpTick
+
+ +
+
+ +

◆ kSharpOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kSharpOneSpaceTicks = 70
+
+ +
+
+ +

◆ kSharpTick

+ +
+
+ + + + +
const uint16_t kSharpTick = 26
+
+ +
+
+ +

◆ kSharpToggleMask

+ +
+
+ + + + +
const uint64_t kSharpToggleMask
+
+Initial value:
=
+
((uint64_t)1 << (kSharpBits - kSharpAddressBits)) - 1
+
+
+
+ +

◆ kSharpZeroSpace

+ +
+
+ + + + +
const uint16_t kSharpZeroSpace = kSharpZeroSpaceTicks * kSharpTick
+
+ +
+
+ +

◆ kSharpZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kSharpZeroSpaceTicks = 30
+
+ +
+
+
+
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:981
+
const uint8_t kSharpAddressBits
Definition: IRremoteESP8266.h:979
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h.html new file mode 100644 index 000000000..a5f909c81 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h.html @@ -0,0 +1,1074 @@ + + + + + + + +IRremoteESP8266: src/ir_Sharp.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Sharp.h File Reference
+
+
+ +

Support for Sharp protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRSharpAc
 Class for handling detailed Sharp A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kSharpAcHdrMark = 3800
 
const uint16_t kSharpAcHdrSpace = 1900
 
const uint16_t kSharpAcBitMark = 470
 
const uint16_t kSharpAcZeroSpace = 500
 
const uint16_t kSharpAcOneSpace = 1400
 
const uint32_t kSharpAcGap = kDefaultMessageGap
 
const uint8_t kSharpAcByteTemp = 4
 
const uint8_t kSharpAcMinTemp = 15
 
const uint8_t kSharpAcMaxTemp = 30
 
const uint8_t kSharpAcBytePowerSpecial = 5
 
const uint8_t kSharpAcPowerSetSpecialOffset = kHighNibble
 
const uint8_t kSharpAcPowerSpecialSize = kNibbleSize
 
const uint8_t kSharpAcPowerUnknown = 0
 
const uint8_t kSharpAcPowerOnFromOff = 1
 
const uint8_t kSharpAcPowerOff = 2
 
const uint8_t kSharpAcPowerOn = 3
 
const uint8_t kSharpAcPowerSetSpecialOn = 6
 
const uint8_t kSharpAcPowerSetSpecialOff = 7
 
const uint8_t kSharpAcPowerTimerSetting = 8
 
const uint8_t kSharpAcByteMode = 6
 
const uint8_t kSharpAcModeSize = 2
 
const uint8_t kSharpAcAuto = 0b00
 
const uint8_t kSharpAcDry = 0b11
 
const uint8_t kSharpAcCool = 0b10
 
const uint8_t kSharpAcHeat = 0b01
 
const uint8_t kSharpAcByteClean = kSharpAcByteMode
 
const uint8_t kSharpAcBitCleanOffset = 3
 
const uint8_t kSharpAcByteFan = kSharpAcByteMode
 
const uint8_t kSharpAcFanOffset = 4
 
const uint8_t kSharpAcFanSize = 3
 
const uint8_t kSharpAcFanAuto = 0b010
 
const uint8_t kSharpAcFanMin = 0b100
 
const uint8_t kSharpAcFanMed = 0b011
 
const uint8_t kSharpAcFanHigh = 0b101
 
const uint8_t kSharpAcFanMax = 0b111
 
const uint8_t kSharpAcByteTimer = 7
 
const uint8_t kSharpAcTimerIncrement = 30
 
const uint8_t kSharpAcTimerHoursOffset = kLowNibble
 
const uint8_t kSharpAcTimerHoursSize = kNibbleSize
 
const uint8_t kSharpAcTimerHoursOff = 0b0000
 
const uint8_t kSharpAcTimerHoursMax = 0b1100
 
const uint8_t kSharpAcBitTimerType = 6
 
const uint8_t kSharpAcOffTimerType = 0b0
 
const uint8_t kSharpAcOnTimerType = 0b1
 
const uint8_t kSharpAcBitTimerEnabled = 7
 
const uint8_t kSharpAcByteSwing = 8
 
const uint8_t kSharpAcSwingOffset = 0
 
const uint8_t kSharpAcSwingSize = 3
 
const uint8_t kSharpAcSwingToggle = 0b111
 
const uint8_t kSharpAcSwingNoToggle = 0b000
 
const uint8_t kSharpAcByteSpecial = 10
 
const uint8_t kSharpAcSpecialPower = 0x00
 
const uint8_t kSharpAcSpecialTurbo = 0x01
 
const uint8_t kSharpAcSpecialTempEcono = 0x04
 
const uint8_t kSharpAcSpecialFan = 0x05
 
const uint8_t kSharpAcSpecialSwing = 0x06
 
const uint8_t kSharpAcSpecialTimer = 0xC0
 
const uint8_t kSharpAcSpecialTimerHalfHour = 0xDE
 
const uint8_t kSharpAcByteIon = 11
 
const uint8_t kSharpAcBitIonOffset = 2
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kSharpAcAuto

+ +
+
+ + + + +
const uint8_t kSharpAcAuto = 0b00
+
+ +
+
+ +

◆ kSharpAcBitCleanOffset

+ +
+
+ + + + +
const uint8_t kSharpAcBitCleanOffset = 3
+
+ +
+
+ +

◆ kSharpAcBitIonOffset

+ +
+
+ + + + +
const uint8_t kSharpAcBitIonOffset = 2
+
+ +
+
+ +

◆ kSharpAcBitMark

+ +
+
+ + + + +
const uint16_t kSharpAcBitMark = 470
+
+ +
+
+ +

◆ kSharpAcBitTimerEnabled

+ +
+
+ + + + +
const uint8_t kSharpAcBitTimerEnabled = 7
+
+ +
+
+ +

◆ kSharpAcBitTimerType

+ +
+
+ + + + +
const uint8_t kSharpAcBitTimerType = 6
+
+ +
+
+ +

◆ kSharpAcByteClean

+ +
+
+ + + + +
const uint8_t kSharpAcByteClean = kSharpAcByteMode
+
+ +
+
+ +

◆ kSharpAcByteFan

+ +
+
+ + + + +
const uint8_t kSharpAcByteFan = kSharpAcByteMode
+
+ +
+
+ +

◆ kSharpAcByteIon

+ +
+
+ + + + +
const uint8_t kSharpAcByteIon = 11
+
+ +
+
+ +

◆ kSharpAcByteMode

+ +
+
+ + + + +
const uint8_t kSharpAcByteMode = 6
+
+ +
+
+ +

◆ kSharpAcBytePowerSpecial

+ +
+
+ + + + +
const uint8_t kSharpAcBytePowerSpecial = 5
+
+ +
+
+ +

◆ kSharpAcByteSpecial

+ +
+
+ + + + +
const uint8_t kSharpAcByteSpecial = 10
+
+ +
+
+ +

◆ kSharpAcByteSwing

+ +
+
+ + + + +
const uint8_t kSharpAcByteSwing = 8
+
+ +
+
+ +

◆ kSharpAcByteTemp

+ +
+
+ + + + +
const uint8_t kSharpAcByteTemp = 4
+
+ +
+
+ +

◆ kSharpAcByteTimer

+ +
+
+ + + + +
const uint8_t kSharpAcByteTimer = 7
+
+ +
+
+ +

◆ kSharpAcCool

+ +
+
+ + + + +
const uint8_t kSharpAcCool = 0b10
+
+ +
+
+ +

◆ kSharpAcDry

+ +
+
+ + + + +
const uint8_t kSharpAcDry = 0b11
+
+ +
+
+ +

◆ kSharpAcFanAuto

+ +
+
+ + + + +
const uint8_t kSharpAcFanAuto = 0b010
+
+ +
+
+ +

◆ kSharpAcFanHigh

+ +
+
+ + + + +
const uint8_t kSharpAcFanHigh = 0b101
+
+ +
+
+ +

◆ kSharpAcFanMax

+ +
+
+ + + + +
const uint8_t kSharpAcFanMax = 0b111
+
+ +
+
+ +

◆ kSharpAcFanMed

+ +
+
+ + + + +
const uint8_t kSharpAcFanMed = 0b011
+
+ +
+
+ +

◆ kSharpAcFanMin

+ +
+
+ + + + +
const uint8_t kSharpAcFanMin = 0b100
+
+ +
+
+ +

◆ kSharpAcFanOffset

+ +
+
+ + + + +
const uint8_t kSharpAcFanOffset = 4
+
+ +
+
+ +

◆ kSharpAcFanSize

+ +
+
+ + + + +
const uint8_t kSharpAcFanSize = 3
+
+ +
+
+ +

◆ kSharpAcGap

+ +
+
+ + + + +
const uint32_t kSharpAcGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kSharpAcHdrMark

+ +
+
+ + + + +
const uint16_t kSharpAcHdrMark = 3800
+
+ +
+
+ +

◆ kSharpAcHdrSpace

+ +
+
+ + + + +
const uint16_t kSharpAcHdrSpace = 1900
+
+ +
+
+ +

◆ kSharpAcHeat

+ +
+
+ + + + +
const uint8_t kSharpAcHeat = 0b01
+
+ +
+
+ +

◆ kSharpAcMaxTemp

+ +
+
+ + + + +
const uint8_t kSharpAcMaxTemp = 30
+
+ +
+
+ +

◆ kSharpAcMinTemp

+ +
+
+ + + + +
const uint8_t kSharpAcMinTemp = 15
+
+ +
+
+ +

◆ kSharpAcModeSize

+ +
+
+ + + + +
const uint8_t kSharpAcModeSize = 2
+
+ +
+
+ +

◆ kSharpAcOffTimerType

+ +
+
+ + + + +
const uint8_t kSharpAcOffTimerType = 0b0
+
+ +
+
+ +

◆ kSharpAcOneSpace

+ +
+
+ + + + +
const uint16_t kSharpAcOneSpace = 1400
+
+ +
+
+ +

◆ kSharpAcOnTimerType

+ +
+
+ + + + +
const uint8_t kSharpAcOnTimerType = 0b1
+
+ +
+
+ +

◆ kSharpAcPowerOff

+ +
+
+ + + + +
const uint8_t kSharpAcPowerOff = 2
+
+ +
+
+ +

◆ kSharpAcPowerOn

+ +
+
+ + + + +
const uint8_t kSharpAcPowerOn = 3
+
+ +
+
+ +

◆ kSharpAcPowerOnFromOff

+ +
+
+ + + + +
const uint8_t kSharpAcPowerOnFromOff = 1
+
+ +
+
+ +

◆ kSharpAcPowerSetSpecialOff

+ +
+
+ + + + +
const uint8_t kSharpAcPowerSetSpecialOff = 7
+
+ +
+
+ +

◆ kSharpAcPowerSetSpecialOffset

+ +
+
+ + + + +
const uint8_t kSharpAcPowerSetSpecialOffset = kHighNibble
+
+ +
+
+ +

◆ kSharpAcPowerSetSpecialOn

+ +
+
+ + + + +
const uint8_t kSharpAcPowerSetSpecialOn = 6
+
+ +
+
+ +

◆ kSharpAcPowerSpecialSize

+ +
+
+ + + + +
const uint8_t kSharpAcPowerSpecialSize = kNibbleSize
+
+ +
+
+ +

◆ kSharpAcPowerTimerSetting

+ +
+
+ + + + +
const uint8_t kSharpAcPowerTimerSetting = 8
+
+ +
+
+ +

◆ kSharpAcPowerUnknown

+ +
+
+ + + + +
const uint8_t kSharpAcPowerUnknown = 0
+
+ +
+
+ +

◆ kSharpAcSpecialFan

+ +
+
+ + + + +
const uint8_t kSharpAcSpecialFan = 0x05
+
+ +
+
+ +

◆ kSharpAcSpecialPower

+ +
+
+ + + + +
const uint8_t kSharpAcSpecialPower = 0x00
+
+ +
+
+ +

◆ kSharpAcSpecialSwing

+ +
+
+ + + + +
const uint8_t kSharpAcSpecialSwing = 0x06
+
+ +
+
+ +

◆ kSharpAcSpecialTempEcono

+ +
+
+ + + + +
const uint8_t kSharpAcSpecialTempEcono = 0x04
+
+ +
+
+ +

◆ kSharpAcSpecialTimer

+ +
+
+ + + + +
const uint8_t kSharpAcSpecialTimer = 0xC0
+
+ +
+
+ +

◆ kSharpAcSpecialTimerHalfHour

+ +
+
+ + + + +
const uint8_t kSharpAcSpecialTimerHalfHour = 0xDE
+
+ +
+
+ +

◆ kSharpAcSpecialTurbo

+ +
+
+ + + + +
const uint8_t kSharpAcSpecialTurbo = 0x01
+
+ +
+
+ +

◆ kSharpAcSwingNoToggle

+ +
+
+ + + + +
const uint8_t kSharpAcSwingNoToggle = 0b000
+
+ +
+
+ +

◆ kSharpAcSwingOffset

+ +
+
+ + + + +
const uint8_t kSharpAcSwingOffset = 0
+
+ +
+
+ +

◆ kSharpAcSwingSize

+ +
+
+ + + + +
const uint8_t kSharpAcSwingSize = 3
+
+ +
+
+ +

◆ kSharpAcSwingToggle

+ +
+
+ + + + +
const uint8_t kSharpAcSwingToggle = 0b111
+
+ +
+
+ +

◆ kSharpAcTimerHoursMax

+ +
+
+ + + + +
const uint8_t kSharpAcTimerHoursMax = 0b1100
+
+ +
+
+ +

◆ kSharpAcTimerHoursOff

+ +
+
+ + + + +
const uint8_t kSharpAcTimerHoursOff = 0b0000
+
+ +
+
+ +

◆ kSharpAcTimerHoursOffset

+ +
+
+ + + + +
const uint8_t kSharpAcTimerHoursOffset = kLowNibble
+
+ +
+
+ +

◆ kSharpAcTimerHoursSize

+ +
+
+ + + + +
const uint8_t kSharpAcTimerHoursSize = kNibbleSize
+
+ +
+
+ +

◆ kSharpAcTimerIncrement

+ +
+
+ + + + +
const uint8_t kSharpAcTimerIncrement = 30
+
+ +
+
+ +

◆ kSharpAcZeroSpace

+ +
+
+ + + + +
const uint16_t kSharpAcZeroSpace = 500
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h_source.html new file mode 100644 index 000000000..9091598a9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sharp_8h_source.html @@ -0,0 +1,373 @@ + + + + + + + +IRremoteESP8266: src/ir_Sharp.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Sharp.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 crankyoldgit
+
2 
+
12 
+
13 // Supports:
+
14 // Brand: Sharp, Model: LC-52D62U TV
+
15 // Brand: Sharp, Model: AY-ZP40KR A/C
+
16 // Brand: Sharp, Model: AH-AxSAY A/C
+
17 // Brand: Sharp, Model: CRMC-A907 JBEZ remote
+
18 // Brand: Sharp, Model: AH-XP10NRY A/C
+
19 // Brand: Sharp, Model: CRMC-820JBEZ remote
+
20 
+
21 #ifndef IR_SHARP_H_
+
22 #define IR_SHARP_H_
+
23 
+
24 #ifndef UNIT_TEST
+
25 #include <Arduino.h>
+
26 #endif
+
27 #include "IRrecv.h"
+
28 #include "IRremoteESP8266.h"
+
29 #include "IRsend.h"
+
30 #ifdef UNIT_TEST
+
31 #include "IRsend_test.h"
+
32 #endif
+
33 #include "IRutils.h"
+
34 
+
35 // Constants
+
36 const uint16_t kSharpAcHdrMark = 3800;
+
37 const uint16_t kSharpAcHdrSpace = 1900;
+
38 const uint16_t kSharpAcBitMark = 470;
+
39 const uint16_t kSharpAcZeroSpace = 500;
+
40 const uint16_t kSharpAcOneSpace = 1400;
+ +
42 
+
43 // Byte[4]
+
44 const uint8_t kSharpAcByteTemp = 4;
+
45 const uint8_t kSharpAcMinTemp = 15; // Celsius
+
46 const uint8_t kSharpAcMaxTemp = 30; // Celsius
+
47 // Byte[5]
+
48 const uint8_t kSharpAcBytePowerSpecial = 5;
+
49 const uint8_t kSharpAcPowerSetSpecialOffset = kHighNibble; // 0bxxxx0000
+
50 const uint8_t kSharpAcPowerSpecialSize = kNibbleSize; // 0bxxxx0000
+
51 const uint8_t kSharpAcPowerUnknown = 0; // 0b0000
+
52 const uint8_t kSharpAcPowerOnFromOff = 1; // 0b0001
+
53 const uint8_t kSharpAcPowerOff = 2; // 0b0010
+
54 const uint8_t kSharpAcPowerOn = 3; // 0b0011 (Normal)
+
55 const uint8_t kSharpAcPowerSetSpecialOn = 6; // 0b0110
+
56 const uint8_t kSharpAcPowerSetSpecialOff = 7; // 0b0111
+
57 const uint8_t kSharpAcPowerTimerSetting = 8; // 0b1000
+
58 // Byte[6]
+
59 const uint8_t kSharpAcByteMode = 6;
+
60 const uint8_t kSharpAcModeSize = 2; // Mask 0b000000xx;
+
61 const uint8_t kSharpAcAuto = 0b00;
+
62 const uint8_t kSharpAcDry = 0b11;
+
63 const uint8_t kSharpAcCool = 0b10;
+
64 const uint8_t kSharpAcHeat = 0b01;
+ +
66 const uint8_t kSharpAcBitCleanOffset = 3; // Mask 0b0000x000
+ +
68 const uint8_t kSharpAcFanOffset = 4; // Mask 0b0xxx0000
+
69 const uint8_t kSharpAcFanSize = 3; // Nr. of Bits
+
70 const uint8_t kSharpAcFanAuto = 0b010; // 2
+
71 const uint8_t kSharpAcFanMin = 0b100; // 4 (FAN1)
+
72 const uint8_t kSharpAcFanMed = 0b011; // 3 (FAN2)
+
73 const uint8_t kSharpAcFanHigh = 0b101; // 5 (FAN3)
+
74 const uint8_t kSharpAcFanMax = 0b111; // 7 (FAN4)
+
75 // Byte[7]
+
76 const uint8_t kSharpAcByteTimer = 7;
+
77 const uint8_t kSharpAcTimerIncrement = 30; // Mins
+ +
79 const uint8_t kSharpAcTimerHoursSize = kNibbleSize; // Mask 0b0000xxxx
+
80 const uint8_t kSharpAcTimerHoursOff = 0b0000;
+
81 const uint8_t kSharpAcTimerHoursMax = 0b1100; // 12
+
82 const uint8_t kSharpAcBitTimerType = 6; // Mask 0b0x000000
+
83 const uint8_t kSharpAcOffTimerType = 0b0;
+
84 const uint8_t kSharpAcOnTimerType = 0b1;
+
85 const uint8_t kSharpAcBitTimerEnabled = 7; // Mask 0bx0000000
+
86 // Byte[8]
+
87 const uint8_t kSharpAcByteSwing = 8;
+
88 const uint8_t kSharpAcSwingOffset = 0;
+
89 const uint8_t kSharpAcSwingSize = 3; // Mask 0b00000xxx
+
90 const uint8_t kSharpAcSwingToggle = 0b111;
+
91 const uint8_t kSharpAcSwingNoToggle = 0b000;
+
92 // Byte[10]
+
93 const uint8_t kSharpAcByteSpecial = 10; // Mask 0bxxxxxxxx
+
94 const uint8_t kSharpAcSpecialPower = 0x00;
+
95 const uint8_t kSharpAcSpecialTurbo = 0x01;
+
96 const uint8_t kSharpAcSpecialTempEcono = 0x04;
+
97 const uint8_t kSharpAcSpecialFan = 0x05;
+
98 const uint8_t kSharpAcSpecialSwing = 0x06;
+
99 const uint8_t kSharpAcSpecialTimer = 0xC0;
+
100 const uint8_t kSharpAcSpecialTimerHalfHour = 0xDE;
+
101 // Byte[11]
+
102 const uint8_t kSharpAcByteIon = 11;
+
103 const uint8_t kSharpAcBitIonOffset = 2; // Mask 0b00000x00
+
104 // Byte[12] (Checksum)
+
105 
+
106 // Classes
+
108 class IRSharpAc {
+
109  public:
+
110  explicit IRSharpAc(const uint16_t pin, const bool inverted = false,
+
111  const bool use_modulation = true);
+
112 #if SEND_SHARP_AC
+
113  void send(const uint16_t repeat = kSharpAcDefaultRepeat);
+
118  int8_t calibrate(void) { return _irsend.calibrate(); }
+
119 #endif // SEND_SHARP_AC
+
120  void begin(void);
+
121  void on(void);
+
122  void off(void);
+
123  void setPower(const bool on, const bool prev_on = true);
+
124  bool getPower(void);
+
125  bool isPowerSpecial(void);
+
126  void setTemp(const uint8_t temp, const bool save = true);
+
127  uint8_t getTemp(void);
+
128  void setFan(const uint8_t fan, const bool save = true);
+
129  uint8_t getFan(void);
+
130  void setMode(const uint8_t mode, const bool save = true);
+
131  uint8_t getMode(void);
+
132  void setSpecial(const uint8_t mode);
+
133  uint8_t getSpecial(void);
+
134  bool getTurbo(void);
+
135  void setTurbo(const bool on);
+
136  bool getSwingToggle(void);
+
137  void setSwingToggle(const bool on);
+
138  bool getIon(void);
+
139  void setIon(const bool on);
+
140  bool getEconoToggle(void);
+
141  void setEconoToggle(const bool on);
+
142  uint16_t getTimerTime(void);
+
143  bool getTimerEnabled(void);
+
144  bool getTimerType(void);
+
145  void setTimer(bool enable, bool timer_type, uint16_t mins);
+
146  bool getClean(void);
+
147  void setClean(const bool on);
+
148  uint8_t* getRaw(void);
+
149  void setRaw(const uint8_t new_code[],
+
150  const uint16_t length = kSharpAcStateLength);
+
151  static bool validChecksum(uint8_t state[],
+
152  const uint16_t length = kSharpAcStateLength);
+
153  static uint8_t convertMode(const stdAc::opmode_t mode);
+
154  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
155  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
156  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
157  stdAc::state_t toCommon(void);
+
158  String toString(void);
+
159 #ifndef UNIT_TEST
+
160 
+
161  private:
+ +
163 #else // UNIT_TEST
+
164  IRsendTest _irsend;
+
166 #endif // UNIT_TEST
+ +
169  uint8_t _temp;
+
170  uint8_t _mode;
+
171  uint8_t _fan;
+
172  void stateReset(void);
+
173  void checksum(void);
+
174  static uint8_t calcChecksum(uint8_t state[],
+
175  const uint16_t length = kSharpAcStateLength);
+
176  void setPowerSpecial(const uint8_t value);
+
177  uint8_t getPowerSpecial(void);
+
178  void clearPowerSpecial(void);
+
179 };
+
180 
+
181 #endif // IR_SHARP_H_
+
+
uint8_t getPowerSpecial(void)
Get the value of the Power Special setting.
Definition: ir_Sharp.cpp:319
+
const uint8_t kSharpAcTimerHoursSize
Definition: ir_Sharp.h:79
+
const uint8_t kSharpAcByteFan
Definition: ir_Sharp.h:67
+
const uint8_t kSharpAcFanSize
Definition: ir_Sharp.h:69
+
const uint8_t kSharpAcHeat
Definition: ir_Sharp.h:64
+
const uint8_t kSharpAcSpecialTempEcono
Definition: ir_Sharp.h:96
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Sharp.cpp:421
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Sharp.h:118
+
void setTimer(bool enable, bool timer_type, uint16_t mins)
Set or cancel the timer function.
Definition: ir_Sharp.cpp:568
+
bool isPowerSpecial(void)
Is one of the special power states in use?
Definition: ir_Sharp.cpp:332
+
void setTemp(const uint8_t temp, const bool save=true)
Set the temperature.
Definition: ir_Sharp.cpp:393
+
const uint8_t kSharpAcPowerOnFromOff
Definition: ir_Sharp.h:52
+
const uint8_t kSharpAcPowerSpecialSize
Definition: ir_Sharp.h:50
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Sharp.cpp:345
+
const uint16_t kSharpAcOneSpace
Definition: ir_Sharp.h:40
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
uint8_t _temp
Saved copy of the desired temp.
Definition: ir_Sharp.h:169
+
const uint32_t kDefaultMessageGap
Definition: IRsend.h:41
+
static uint8_t calcChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)
Calculate the checksum for a given state.
Definition: ir_Sharp.cpp:263
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Sharp.cpp:663
+
bool getIon(void)
Get the Ion (Filter) setting of the A/C.
Definition: ir_Sharp.cpp:515
+
const uint8_t kSharpAcSpecialTimer
Definition: ir_Sharp.h:99
+
const uint8_t kSharpAcOnTimerType
Definition: ir_Sharp.h:84
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Sharp.cpp:476
+
const uint8_t kSharpAcCool
Definition: ir_Sharp.h:63
+ +
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Sharp.cpp:360
+
const uint8_t kSharpAcSpecialFan
Definition: ir_Sharp.h:97
+
const uint8_t kSharpAcSpecialSwing
Definition: ir_Sharp.h:98
+
const uint8_t kSharpAcOffTimerType
Definition: ir_Sharp.h:83
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kSharpAcMaxTemp
Definition: ir_Sharp.h:46
+
void setFan(const uint8_t fan, const bool save=true)
Set the speed of the fan.
Definition: ir_Sharp.cpp:455
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
IRSharpAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Sharp.cpp:244
+
const uint8_t kSharpAcSwingOffset
Definition: ir_Sharp.h:88
+
const uint16_t kSharpAcZeroSpace
Definition: ir_Sharp.h:39
+
void setPower(const bool on, const bool prev_on=true)
Change the power setting, including the previous power state.
Definition: ir_Sharp.cpp:350
+
const uint8_t kSharpAcDry
Definition: ir_Sharp.h:62
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kNibbleSize
Definition: IRutils.h:17
+
const uint8_t kSharpAcTimerHoursMax
Definition: ir_Sharp.h:81
+
const uint8_t kSharpAcPowerOff
Definition: ir_Sharp.h:53
+
uint16_t getTimerTime(void)
Get how long the timer is set for, in minutes.
Definition: ir_Sharp.cpp:544
+
const uint8_t kLowNibble
Definition: IRutils.h:18
+
const uint8_t kSharpAcSwingNoToggle
Definition: ir_Sharp.h:91
+
const uint8_t kSharpAcTimerIncrement
Definition: ir_Sharp.h:77
+ +
const uint8_t kSharpAcPowerSetSpecialOn
Definition: ir_Sharp.h:55
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Sharp.cpp:612
+
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition: ir_Sharp.cpp:492
+
static bool validChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Sharp.cpp:274
+
uint8_t getSpecial(void)
Get the value of the Special (button/command?) setting.
Definition: ir_Sharp.cpp:388
+
const uint8_t kSharpAcSpecialTimerHalfHour
Definition: ir_Sharp.h:100
+
const uint8_t kSharpAcTimerHoursOff
Definition: ir_Sharp.h:80
+
const uint8_t kSharpAcBitTimerEnabled
Definition: ir_Sharp.h:85
+
const uint8_t kSharpAcByteTimer
Definition: ir_Sharp.h:76
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Sharp.cpp:414
+
const uint8_t kHighNibble
Definition: IRutils.h:19
+
const uint8_t kSharpAcByteSpecial
Definition: ir_Sharp.h:93
+
const uint8_t kSharpAcSwingToggle
Definition: ir_Sharp.h:90
+
void setPowerSpecial(const uint8_t value)
Set the value of the Power Special setting without any checks.
Definition: ir_Sharp.cpp:312
+
const uint8_t kSharpAcFanAuto
Definition: ir_Sharp.h:70
+
void send(const uint16_t repeat=kSharpAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Sharp.cpp:254
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Sharp.h:162
+
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Sharp.cpp:280
+
const uint32_t kSharpAcGap
Definition: ir_Sharp.h:41
+
const uint8_t kSharpAcBitTimerType
Definition: ir_Sharp.h:82
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Sharp.cpp:298
+
const uint8_t kSharpAcSwingSize
Definition: ir_Sharp.h:89
+
const uint8_t kSharpAcByteMode
Definition: ir_Sharp.h:59
+
bool getTimerType(void)
Get the current timer type.
Definition: ir_Sharp.cpp:559
+
const uint8_t kSharpAcPowerUnknown
Definition: ir_Sharp.h:51
+ +
const uint8_t kSharpAcPowerOn
Definition: ir_Sharp.h:54
+
void setSpecial(const uint8_t mode)
Set the value of the Special (button/command?) setting.
Definition: ir_Sharp.cpp:370
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Sharp.cpp:249
+
const uint8_t kSharpAcByteClean
Definition: ir_Sharp.h:65
+
const uint16_t kSharpAcStateLength
Definition: IRremoteESP8266.h:982
+
const uint8_t kSharpAcModeSize
Definition: ir_Sharp.h:60
+
const uint8_t kSharpAcFanMax
Definition: ir_Sharp.h:74
+ +
uint8_t _mode
Saved copy of the desired mode.
Definition: ir_Sharp.h:170
+
const uint8_t kSharpAcBytePowerSpecial
Definition: ir_Sharp.h:48
+
Class for handling detailed Sharp A/C messages.
Definition: ir_Sharp.h:108
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Sharp.cpp:639
+
bool getEconoToggle(void)
Get the Economical mode toggle setting of the A/C.
Definition: ir_Sharp.cpp:529
+
const uint8_t kSharpAcPowerTimerSetting
Definition: ir_Sharp.h:57
+
const uint8_t kSharpAcBitIonOffset
Definition: ir_Sharp.h:103
+
const uint8_t kSharpAcFanHigh
Definition: ir_Sharp.h:73
+
bool getSwingToggle(void)
Get the (vertical) Swing Toggle setting of the A/C.
Definition: ir_Sharp.cpp:500
+
const uint8_t kSharpAcFanMin
Definition: ir_Sharp.h:71
+
const uint8_t kSharpAcByteSwing
Definition: ir_Sharp.h:87
+
void setClean(const bool on)
Set the Economical mode toggle setting of the A/C.
Definition: ir_Sharp.cpp:595
+
uint8_t remote[kSharpAcStateLength]
State of the remote in IR code form.
Definition: ir_Sharp.h:168
+
const uint8_t kSharpAcFanMed
Definition: ir_Sharp.h:72
+
const uint16_t kSharpAcDefaultRepeat
Definition: IRremoteESP8266.h:984
+
const uint8_t kSharpAcTimerHoursOffset
Definition: ir_Sharp.h:78
+
uint8_t _fan
Saved copy of the desired fan speed.
Definition: ir_Sharp.h:171
+
const uint8_t kSharpAcByteIon
Definition: ir_Sharp.h:102
+
void setEconoToggle(const bool on)
Set the Economical mode toggle setting of the A/C.
Definition: ir_Sharp.cpp:537
+
const uint8_t kSharpAcFanOffset
Definition: ir_Sharp.h:68
+
bool getClean(void)
Get the Clean setting of the A/C.
Definition: ir_Sharp.cpp:588
+
const uint16_t kSharpAcHdrSpace
Definition: ir_Sharp.h:37
+
bool getTurbo(void)
Get the Turbo setting of the A/C.
Definition: ir_Sharp.cpp:482
+
const uint8_t kSharpAcAuto
Definition: ir_Sharp.h:61
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Sharp.cpp:651
+
void setSwingToggle(const bool on)
Set the (vertical) Swing Toggle setting of the A/C.
Definition: ir_Sharp.cpp:507
+
bool getTimerEnabled(void)
Is the Timer enabled?
Definition: ir_Sharp.cpp:553
+
const uint8_t kSharpAcPowerSetSpecialOffset
Definition: ir_Sharp.h:49
+
const uint8_t kSharpAcPowerSetSpecialOff
Definition: ir_Sharp.h:56
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Sharp.cpp:342
+
void setMode(const uint8_t mode, const bool save=true)
Set the operating mode of the A/C.
Definition: ir_Sharp.cpp:428
+
const uint16_t kSharpAcBitMark
Definition: ir_Sharp.h:38
+
const uint8_t kSharpAcMinTemp
Definition: ir_Sharp.h:45
+
const uint8_t kSharpAcSpecialTurbo
Definition: ir_Sharp.h:95
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Sharp.cpp:690
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Sharp.cpp:286
+
const uint8_t kSharpAcByteTemp
Definition: ir_Sharp.h:44
+
void setIon(const bool on)
Set the Ion (Filter) setting of the A/C.
Definition: ir_Sharp.cpp:521
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void clearPowerSpecial(void)
Clear the "special"/non-normal bits in the power section. e.g. for normal/common command modes.
Definition: ir_Sharp.cpp:326
+
const uint16_t kSharpAcHdrMark
Definition: ir_Sharp.h:36
+
void setRaw(const uint8_t new_code[], const uint16_t length=kSharpAcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Sharp.cpp:306
+
const uint8_t kSharpAcSpecialPower
Definition: ir_Sharp.h:94
+
const uint8_t kSharpAcBitCleanOffset
Definition: ir_Sharp.h:66
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Sharp.cpp:625
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sherwood_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sherwood_8cpp.html new file mode 100644 index 000000000..a6b133aa1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sherwood_8cpp.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: src/ir_Sherwood.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Sherwood.cpp File Reference
+
+
+ +

Support for Sherwood protocols. +More...

+

Detailed Description

+

Support for Sherwood protocols.

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sony_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sony_8cpp.html new file mode 100644 index 000000000..fa1d5b055 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Sony_8cpp.html @@ -0,0 +1,335 @@ + + + + + + + +IRremoteESP8266: src/ir_Sony.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Sony.cpp File Reference
+
+
+ +

Support for Sony SIRC(Serial Infra-Red Control) protocols. Sony originally added from https://github.com/shirriff/Arduino-IRremote/ Updates from marcosamarinho. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kSonyTick = 200
 
const uint16_t kSonyHdrMarkTicks = 12
 
const uint16_t kSonyHdrMark = kSonyHdrMarkTicks * kSonyTick
 
const uint16_t kSonySpaceTicks = 3
 
const uint16_t kSonySpace = kSonySpaceTicks * kSonyTick
 
const uint16_t kSonyOneMarkTicks = 6
 
const uint16_t kSonyOneMark = kSonyOneMarkTicks * kSonyTick
 
const uint16_t kSonyZeroMarkTicks = 3
 
const uint16_t kSonyZeroMark = kSonyZeroMarkTicks * kSonyTick
 
const uint16_t kSonyRptLengthTicks = 225
 
const uint16_t kSonyRptLength = kSonyRptLengthTicks * kSonyTick
 
const uint16_t kSonyMinGapTicks = 50
 
const uint16_t kSonyMinGap = kSonyMinGapTicks * kSonyTick
 
const uint16_t kSonyStdFreq = 40000
 
const uint16_t kSonyAltFreq = 38000
 
+

Detailed Description

+

Support for Sony SIRC(Serial Infra-Red Control) protocols. Sony originally added from https://github.com/shirriff/Arduino-IRremote/ Updates from marcosamarinho.

+
See also
http://www.sbprojects.com/knowledge/ir/sirc.php
+
+https://github.com/crankyoldgit/IRremoteESP8266/issues/1018
+

Variable Documentation

+ +

◆ kSonyAltFreq

+ +
+
+ + + + +
const uint16_t kSonyAltFreq = 38000
+
+ +
+
+ +

◆ kSonyHdrMark

+ +
+
+ + + + +
const uint16_t kSonyHdrMark = kSonyHdrMarkTicks * kSonyTick
+
+ +
+
+ +

◆ kSonyHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kSonyHdrMarkTicks = 12
+
+ +
+
+ +

◆ kSonyMinGap

+ +
+
+ + + + +
const uint16_t kSonyMinGap = kSonyMinGapTicks * kSonyTick
+
+ +
+
+ +

◆ kSonyMinGapTicks

+ +
+
+ + + + +
const uint16_t kSonyMinGapTicks = 50
+
+ +
+
+ +

◆ kSonyOneMark

+ +
+
+ + + + +
const uint16_t kSonyOneMark = kSonyOneMarkTicks * kSonyTick
+
+ +
+
+ +

◆ kSonyOneMarkTicks

+ +
+
+ + + + +
const uint16_t kSonyOneMarkTicks = 6
+
+ +
+
+ +

◆ kSonyRptLength

+ +
+
+ + + + +
const uint16_t kSonyRptLength = kSonyRptLengthTicks * kSonyTick
+
+ +
+
+ +

◆ kSonyRptLengthTicks

+ +
+
+ + + + +
const uint16_t kSonyRptLengthTicks = 225
+
+ +
+
+ +

◆ kSonySpace

+ +
+
+ + + + +
const uint16_t kSonySpace = kSonySpaceTicks * kSonyTick
+
+ +
+
+ +

◆ kSonySpaceTicks

+ +
+
+ + + + +
const uint16_t kSonySpaceTicks = 3
+
+ +
+
+ +

◆ kSonyStdFreq

+ +
+
+ + + + +
const uint16_t kSonyStdFreq = 40000
+
+ +
+
+ +

◆ kSonyTick

+ +
+
+ + + + +
const uint16_t kSonyTick = 200
+
+ +
+
+ +

◆ kSonyZeroMark

+ +
+
+ + + + +
const uint16_t kSonyZeroMark = kSonyZeroMarkTicks * kSonyTick
+
+ +
+
+ +

◆ kSonyZeroMarkTicks

+ +
+
+ + + + +
const uint16_t kSonyZeroMarkTicks = 3
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Symphony_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Symphony_8cpp.html new file mode 100644 index 000000000..9ad124022 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Symphony_8cpp.html @@ -0,0 +1,181 @@ + + + + + + + +IRremoteESP8266: src/ir_Symphony.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Symphony.cpp File Reference
+
+
+ +

Support for Symphony protocols. +More...

+ + + + + + + + + + + + +

+Variables

const uint16_t kSymphonyZeroMark = 400
 
const uint16_t kSymphonyZeroSpace = 1250
 
const uint16_t kSymphonyOneMark = kSymphonyZeroSpace
 
const uint16_t kSymphonyOneSpace = kSymphonyZeroMark
 
const uint32_t kSymphonyFooterGap
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kSymphonyFooterGap

+ +
+
+ + + + +
const uint32_t kSymphonyFooterGap
+
+Initial value: +
+
+ +

◆ kSymphonyOneMark

+ +
+
+ + + + +
const uint16_t kSymphonyOneMark = kSymphonyZeroSpace
+
+ +
+
+ +

◆ kSymphonyOneSpace

+ +
+
+ + + + +
const uint16_t kSymphonyOneSpace = kSymphonyZeroMark
+
+ +
+
+ +

◆ kSymphonyZeroMark

+ +
+
+ + + + +
const uint16_t kSymphonyZeroMark = 400
+
+ +
+
+ +

◆ kSymphonyZeroSpace

+ +
+
+ + + + +
const uint16_t kSymphonyZeroSpace = 1250
+
+ +
+
+
+
const uint16_t kSymphonyZeroMark
Definition: ir_Symphony.cpp:29
+
const uint16_t kSymphonyZeroSpace
Definition: ir_Symphony.cpp:30
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8cpp.html new file mode 100644 index 000000000..722bb446c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8cpp.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: src/ir_Tcl.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Tcl.cpp File Reference
+
+
+ +

Support for TCL protocols. +More...

+

Detailed Description

+

Support for TCL protocols.

+
Note
There is no decodedecodeTcl112Ac(). It's the same as decodeMitsubishi112(). A shared routine is used. You can find it in: ir_Mitsubishi.cpp
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h.html new file mode 100644 index 000000000..9a6621ade --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h.html @@ -0,0 +1,613 @@ + + + + + + + +IRremoteESP8266: src/ir_Tcl.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Tcl.h File Reference
+
+
+ +

Support for TCL protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRTcl112Ac
 Class for handling detailed TCL A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kTcl112AcHdrMark = 3000
 
const uint16_t kTcl112AcHdrSpace = 1650
 
const uint16_t kTcl112AcBitMark = 500
 
const uint16_t kTcl112AcOneSpace = 1050
 
const uint16_t kTcl112AcZeroSpace = 325
 
const uint32_t kTcl112AcGap = kDefaultMessageGap
 
const uint8_t kTcl112AcHdrMarkTolerance = 6
 
const uint8_t kTcl112AcTolerance = 5
 
const uint8_t kTcl112AcHeat = 1
 
const uint8_t kTcl112AcDry = 2
 
const uint8_t kTcl112AcCool = 3
 
const uint8_t kTcl112AcFan = 7
 
const uint8_t kTcl112AcAuto = 8
 
const uint8_t kTcl112AcModeSize = 4
 
const uint8_t kTcl112AcFanSize = 3
 
const uint8_t kTcl112AcFanAuto = 0b000
 
const uint8_t kTcl112AcFanLow = 0b010
 
const uint8_t kTcl112AcFanMed = 0b011
 
const uint8_t kTcl112AcFanHigh = 0b101
 
const uint8_t kTcl112AcHalfDegreeOffset = 5
 
const float kTcl112AcTempMax = 31.0
 
const float kTcl112AcTempMin = 16.0
 
const uint8_t kTcl112AcPowerOffset = 2
 
const uint8_t kTcl112AcBitEconoOffset = 7
 
const uint8_t kTcl112AcBitLightOffset = 6
 
const uint8_t kTcl112AcBitHealthOffset = 4
 
const uint8_t kTcl112AcBitSwingHOffset = 3
 
const uint8_t kTcl112AcSwingVOffset = 3
 
const uint8_t kTcl112AcSwingVSize = 3
 
const uint8_t kTcl112AcSwingVOn = 0b111
 
const uint8_t kTcl112AcSwingVOff = 0b000
 
const uint8_t kTcl112AcBitTurboOffset = 6
 
+

Detailed Description

+

Support for TCL protocols.

+

Variable Documentation

+ +

◆ kTcl112AcAuto

+ +
+
+ + + + +
const uint8_t kTcl112AcAuto = 8
+
+ +
+
+ +

◆ kTcl112AcBitEconoOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcBitEconoOffset = 7
+
+ +
+
+ +

◆ kTcl112AcBitHealthOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcBitHealthOffset = 4
+
+ +
+
+ +

◆ kTcl112AcBitLightOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcBitLightOffset = 6
+
+ +
+
+ +

◆ kTcl112AcBitMark

+ +
+
+ + + + +
const uint16_t kTcl112AcBitMark = 500
+
+ +
+
+ +

◆ kTcl112AcBitSwingHOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcBitSwingHOffset = 3
+
+ +
+
+ +

◆ kTcl112AcBitTurboOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcBitTurboOffset = 6
+
+ +
+
+ +

◆ kTcl112AcCool

+ +
+
+ + + + +
const uint8_t kTcl112AcCool = 3
+
+ +
+
+ +

◆ kTcl112AcDry

+ +
+
+ + + + +
const uint8_t kTcl112AcDry = 2
+
+ +
+
+ +

◆ kTcl112AcFan

+ +
+
+ + + + +
const uint8_t kTcl112AcFan = 7
+
+ +
+
+ +

◆ kTcl112AcFanAuto

+ +
+
+ + + + +
const uint8_t kTcl112AcFanAuto = 0b000
+
+ +
+
+ +

◆ kTcl112AcFanHigh

+ +
+
+ + + + +
const uint8_t kTcl112AcFanHigh = 0b101
+
+ +
+
+ +

◆ kTcl112AcFanLow

+ +
+
+ + + + +
const uint8_t kTcl112AcFanLow = 0b010
+
+ +
+
+ +

◆ kTcl112AcFanMed

+ +
+
+ + + + +
const uint8_t kTcl112AcFanMed = 0b011
+
+ +
+
+ +

◆ kTcl112AcFanSize

+ +
+
+ + + + +
const uint8_t kTcl112AcFanSize = 3
+
+ +
+
+ +

◆ kTcl112AcGap

+ +
+
+ + + + +
const uint32_t kTcl112AcGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kTcl112AcHalfDegreeOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcHalfDegreeOffset = 5
+
+ +
+
+ +

◆ kTcl112AcHdrMark

+ +
+
+ + + + +
const uint16_t kTcl112AcHdrMark = 3000
+
+ +
+
+ +

◆ kTcl112AcHdrMarkTolerance

+ +
+
+ + + + +
const uint8_t kTcl112AcHdrMarkTolerance = 6
+
+ +
+
+ +

◆ kTcl112AcHdrSpace

+ +
+
+ + + + +
const uint16_t kTcl112AcHdrSpace = 1650
+
+ +
+
+ +

◆ kTcl112AcHeat

+ +
+
+ + + + +
const uint8_t kTcl112AcHeat = 1
+
+ +
+
+ +

◆ kTcl112AcModeSize

+ +
+
+ + + + +
const uint8_t kTcl112AcModeSize = 4
+
+ +
+
+ +

◆ kTcl112AcOneSpace

+ +
+
+ + + + +
const uint16_t kTcl112AcOneSpace = 1050
+
+ +
+
+ +

◆ kTcl112AcPowerOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcPowerOffset = 2
+
+ +
+
+ +

◆ kTcl112AcSwingVOff

+ +
+
+ + + + +
const uint8_t kTcl112AcSwingVOff = 0b000
+
+ +
+
+ +

◆ kTcl112AcSwingVOffset

+ +
+
+ + + + +
const uint8_t kTcl112AcSwingVOffset = 3
+
+ +
+
+ +

◆ kTcl112AcSwingVOn

+ +
+
+ + + + +
const uint8_t kTcl112AcSwingVOn = 0b111
+
+ +
+
+ +

◆ kTcl112AcSwingVSize

+ +
+
+ + + + +
const uint8_t kTcl112AcSwingVSize = 3
+
+ +
+
+ +

◆ kTcl112AcTempMax

+ +
+
+ + + + +
const float kTcl112AcTempMax = 31.0
+
+ +
+
+ +

◆ kTcl112AcTempMin

+ +
+
+ + + + +
const float kTcl112AcTempMin = 16.0
+
+ +
+
+ +

◆ kTcl112AcTolerance

+ +
+
+ + + + +
const uint8_t kTcl112AcTolerance = 5
+
+ +
+
+ +

◆ kTcl112AcZeroSpace

+ +
+
+ + + + +
const uint16_t kTcl112AcZeroSpace = 325
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h_source.html new file mode 100644 index 000000000..3c6dbbbcf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Tcl_8h_source.html @@ -0,0 +1,281 @@ + + + + + + + +IRremoteESP8266: src/ir_Tcl.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Tcl.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 David Conran
+
2 
+
5 
+
6 // Supports:
+
7 // Brand: Leberg, Model: LBS-TOR07 A/C
+
8 
+
9 #ifndef IR_TCL_H_
+
10 #define IR_TCL_H_
+
11 
+
12 #ifndef UNIT_TEST
+
13 #include <Arduino.h>
+
14 #endif
+
15 #include "IRremoteESP8266.h"
+
16 #include "IRsend.h"
+
17 #include "IRrecv.h"
+
18 #ifdef UNIT_TEST
+
19 #include "IRsend_test.h"
+
20 #endif
+
21 
+
22 // Constants
+
23 const uint16_t kTcl112AcHdrMark = 3000;
+
24 const uint16_t kTcl112AcHdrSpace = 1650;
+
25 const uint16_t kTcl112AcBitMark = 500;
+
26 const uint16_t kTcl112AcOneSpace = 1050;
+
27 const uint16_t kTcl112AcZeroSpace = 325;
+
28 const uint32_t kTcl112AcGap = kDefaultMessageGap; // Just a guess.
+
29 // Total tolerance percentage to use for matching the header mark.
+
30 const uint8_t kTcl112AcHdrMarkTolerance = 6;
+
31 const uint8_t kTcl112AcTolerance = 5; // Extra Percentage for the rest.
+
32 
+
33 const uint8_t kTcl112AcHeat = 1;
+
34 const uint8_t kTcl112AcDry = 2;
+
35 const uint8_t kTcl112AcCool = 3;
+
36 const uint8_t kTcl112AcFan = 7;
+
37 const uint8_t kTcl112AcAuto = 8;
+
38 const uint8_t kTcl112AcModeSize = 4; // Nr. of Bits
+
39 
+
40 const uint8_t kTcl112AcFanSize = 3; // Nr. of Bits. Mask = 0b00000111
+
41 const uint8_t kTcl112AcFanAuto = 0b000;
+
42 const uint8_t kTcl112AcFanLow = 0b010;
+
43 const uint8_t kTcl112AcFanMed = 0b011;
+
44 const uint8_t kTcl112AcFanHigh = 0b101;
+
45 
+
46 const uint8_t kTcl112AcHalfDegreeOffset = 5;
+
47 const float kTcl112AcTempMax = 31.0;
+
48 const float kTcl112AcTempMin = 16.0;
+
49 
+
50 const uint8_t kTcl112AcPowerOffset = 2;
+
51 const uint8_t kTcl112AcBitEconoOffset = 7;
+
52 const uint8_t kTcl112AcBitLightOffset = 6;
+
53 const uint8_t kTcl112AcBitHealthOffset = 4;
+
54 const uint8_t kTcl112AcBitSwingHOffset = 3;
+
55 const uint8_t kTcl112AcSwingVOffset = 3; // Mask 0b00111000
+
56 const uint8_t kTcl112AcSwingVSize = 3; // Nr. of bits.
+
57 const uint8_t kTcl112AcSwingVOn = 0b111;
+
58 const uint8_t kTcl112AcSwingVOff = 0b000;
+
59 const uint8_t kTcl112AcBitTurboOffset = 6;
+
60 
+
61 // Classes
+
63 class IRTcl112Ac {
+
64  public:
+
65  explicit IRTcl112Ac(const uint16_t pin, const bool inverted = false,
+
66  const bool use_modulation = true);
+
67 #if SEND_TCL112AC
+
68  void send(const uint16_t repeat = kTcl112AcDefaultRepeat);
+
73  int8_t calibrate(void) { return _irsend.calibrate(); }
+
74 #endif // SEND_TCL
+
75  void begin(void);
+
76  void stateReset(void);
+
77  uint8_t* getRaw(void);
+
78  void setRaw(const uint8_t new_code[],
+
79  const uint16_t length = kTcl112AcStateLength);
+
80  void on(void);
+
81  void off(void);
+
82  void setPower(const bool on);
+
83  bool getPower(void);
+
84  void setTemp(const float celsius); // Celsius in 0.5 increments
+
85  float getTemp(void);
+
86  void setMode(const uint8_t mode);
+
87  uint8_t getMode(void);
+
88  static uint8_t calcChecksum(uint8_t state[],
+
89  const uint16_t length = kTcl112AcStateLength);
+
90  static bool validChecksum(uint8_t state[],
+
91  const uint16_t length = kTcl112AcStateLength);
+
92  void setFan(const uint8_t speed);
+
93  uint8_t getFan(void);
+
94  void setEcono(const bool on);
+
95  bool getEcono(void);
+
96  void setHealth(const bool on);
+
97  bool getHealth(void);
+
98  void setLight(const bool on);
+
99  bool getLight(void);
+
100  void setSwingHorizontal(const bool on);
+
101  bool getSwingHorizontal(void);
+
102  void setSwingVertical(const bool on);
+
103  bool getSwingVertical(void);
+
104  void setTurbo(const bool on);
+
105  bool getTurbo(void);
+
106  uint8_t convertMode(const stdAc::opmode_t mode);
+
107  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
108  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
109  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
110  stdAc::state_t toCommon(void);
+
111  String toString(void);
+
112 #ifndef UNIT_TEST
+
113 
+
114  private:
+ +
116 #else // UNIT_TEST
+
117  IRsendTest _irsend;
+
119 #endif // UNIT_TEST
+ +
122  void checksum(const uint16_t length = kTcl112AcStateLength);
+
123 };
+
124 
+
125 #endif // IR_TCL_H_
+
+
bool getSwingHorizontal(void)
Get the horizontal swing setting of the A/C.
Definition: ir_Tcl.cpp:248
+
void setSwingHorizontal(const bool on)
Set the horizontal swing setting of the A/C.
Definition: ir_Tcl.cpp:242
+
const uint8_t kTcl112AcBitSwingHOffset
Definition: ir_Tcl.h:54
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Tcl.cpp:297
+
static uint8_t calcChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)
Calculate the checksum for a given state.
Definition: ir_Tcl.cpp:66
+
const float kTcl112AcTempMin
Definition: ir_Tcl.h:48
+
void setSwingVertical(const bool on)
Set the vertical swing setting of the A/C.
Definition: ir_Tcl.cpp:254
+
bool getEcono(void)
Get the economy setting of the A/C.
Definition: ir_Tcl.cpp:212
+
const uint16_t kTcl112AcHdrSpace
Definition: ir_Tcl.h:24
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Tcl.cpp:284
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint32_t kDefaultMessageGap
Definition: IRsend.h:41
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Tcl.cpp:363
+
const uint8_t kTcl112AcFanLow
Definition: ir_Tcl.h:42
+
void send(const uint16_t repeat=kTcl112AcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Tcl.cpp:57
+
const uint16_t kTcl112AcBitMark
Definition: ir_Tcl.h:25
+
const uint8_t kTcl112AcSwingVOffset
Definition: ir_Tcl.h:55
+
const uint8_t kTcl112AcFanMed
Definition: ir_Tcl.h:43
+
bool getLight(void)
Get the Light (LED/Display) setting of the A/C.
Definition: ir_Tcl.cpp:236
+
bool getHealth(void)
Get the Health (Filter) setting of the A/C.
Definition: ir_Tcl.cpp:224
+ +
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
void setEcono(const bool on)
Set the economy setting of the A/C.
Definition: ir_Tcl.cpp:206
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Tcl.cpp:200
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kTcl112AcBitLightOffset
Definition: ir_Tcl.h:52
+
const uint16_t kTcl112AcOneSpace
Definition: ir_Tcl.h:26
+
std::string String
Definition: IRremoteESP8266.h:1093
+
void stateReset(void)
Reset the internal state of the emulation. (On, Cool, 24C)
Definition: ir_Tcl.cpp:90
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Tcl.cpp:132
+
Class for handling detailed TCL A/C messages.
Definition: ir_Tcl.h:63
+
void checksum(const uint16_t length=kTcl112AcStateLength)
Calculate & set the checksum for the current internal state of the remote.
Definition: ir_Tcl.cpp:75
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Tcl.cpp:335
+ +
IRsend _irsend
Instance of the IR send class.
Definition: ir_Tcl.h:115
+
void setTemp(const float celsius)
Set the temperature.
Definition: ir_Tcl.cpp:160
+
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Tcl.cpp:100
+
void setLight(const bool on)
Set the Light (LED/Display) setting of the A/C.
Definition: ir_Tcl.cpp:230
+
const uint8_t kTcl112AcHalfDegreeOffset
Definition: ir_Tcl.h:46
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Tcl.cpp:120
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Tcl.h:73
+
const uint32_t kTcl112AcGap
Definition: ir_Tcl.h:28
+
static bool validChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Tcl.cpp:85
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Tcl.cpp:52
+
const uint8_t kTcl112AcSwingVOn
Definition: ir_Tcl.h:57
+
const uint8_t kTcl112AcAuto
Definition: ir_Tcl.h:37
+
const uint16_t kTcl112AcDefaultRepeat
Definition: IRremoteESP8266.h:996
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Tcl.cpp:324
+
const float kTcl112AcTempMax
Definition: ir_Tcl.h:47
+
const uint16_t kTcl112AcHdrMark
Definition: ir_Tcl.h:23
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Tcl.cpp:140
+
const uint8_t kTcl112AcBitHealthOffset
Definition: ir_Tcl.h:53
+
const uint8_t kTcl112AcFanAuto
Definition: ir_Tcl.h:41
+
const uint8_t kTcl112AcModeSize
Definition: ir_Tcl.h:38
+
const uint8_t kTcl112AcSwingVSize
Definition: ir_Tcl.h:56
+
const uint8_t kTcl112AcCool
Definition: ir_Tcl.h:35
+
float getTemp(void)
Get the current temperature setting.
Definition: ir_Tcl.cpp:175
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Tcl.cpp:113
+
const uint8_t kTcl112AcFanSize
Definition: ir_Tcl.h:40
+ +
const uint8_t kTcl112AcPowerOffset
Definition: ir_Tcl.h:50
+
void setHealth(const bool on)
Set the Health (Filter) setting of the A/C.
Definition: ir_Tcl.cpp:218
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Tcl.cpp:116
+
void setRaw(const uint8_t new_code[], const uint16_t length=kTcl112AcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Tcl.cpp:108
+
const uint8_t kTcl112AcSwingVOff
Definition: ir_Tcl.h:58
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Tcl.cpp:185
+
const uint8_t kTcl112AcHdrMarkTolerance
Definition: ir_Tcl.h:30
+
uint8_t remote_state[kTcl112AcStateLength]
The State in IR code form.
Definition: ir_Tcl.h:121
+
const uint8_t kTcl112AcDry
Definition: ir_Tcl.h:34
+
const uint8_t kTcl112AcFanHigh
Definition: ir_Tcl.h:44
+
const uint16_t kTcl112AcStateLength
Definition: IRremoteESP8266.h:994
+
const uint8_t kTcl112AcFan
Definition: ir_Tcl.h:36
+
const uint8_t kTcl112AcBitTurboOffset
Definition: ir_Tcl.h:59
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Tcl.cpp:126
+
const uint8_t kTcl112AcBitEconoOffset
Definition: ir_Tcl.h:51
+
const uint16_t kTcl112AcZeroSpace
Definition: ir_Tcl.h:27
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Tcl.cpp:311
+
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition: ir_Tcl.cpp:267
+
IRTcl112Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Tcl.cpp:47
+
bool getTurbo(void)
Get the Turbo setting of the A/C.
Definition: ir_Tcl.cpp:277
+
const uint8_t kTcl112AcTolerance
Definition: ir_Tcl.h:31
+
const uint8_t kTcl112AcHeat
Definition: ir_Tcl.h:33
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
bool getSwingVertical(void)
Get the vertical swing setting of the A/C.
Definition: ir_Tcl.cpp:261
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8cpp.html new file mode 100644 index 000000000..56e288060 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8cpp.html @@ -0,0 +1,188 @@ + + + + + + + +IRremoteESP8266: src/ir_Teco.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Teco.cpp File Reference
+
+
+ +

Support for Teco protocols. +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kTecoHdrMark = 9000
 
const uint16_t kTecoHdrSpace = 4440
 
const uint16_t kTecoBitMark = 620
 
const uint16_t kTecoOneSpace = 1650
 
const uint16_t kTecoZeroSpace = 580
 
const uint32_t kTecoGap = kDefaultMessageGap
 
+

Detailed Description

+

Support for Teco protocols.

+

Variable Documentation

+ +

◆ kTecoBitMark

+ +
+
+ + + + +
const uint16_t kTecoBitMark = 620
+
+ +
+
+ +

◆ kTecoGap

+ +
+
+ + + + +
const uint32_t kTecoGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kTecoHdrMark

+ +
+
+ + + + +
const uint16_t kTecoHdrMark = 9000
+
+ +
+
+ +

◆ kTecoHdrSpace

+ +
+
+ + + + +
const uint16_t kTecoHdrSpace = 4440
+
+ +
+
+ +

◆ kTecoOneSpace

+ +
+
+ + + + +
const uint16_t kTecoOneSpace = 1650
+
+ +
+
+ +

◆ kTecoZeroSpace

+ +
+
+ + + + +
const uint16_t kTecoZeroSpace = 580
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h.html new file mode 100644 index 000000000..a387292b9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h.html @@ -0,0 +1,565 @@ + + + + + + + +IRremoteESP8266: src/ir_Teco.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Teco.h File Reference
+
+
+ +

Support for Teco protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRTecoAc
 Class for handling detailed Teco A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kTecoAuto = 0
 
const uint8_t kTecoCool = 1
 
const uint8_t kTecoDry = 2
 
const uint8_t kTecoFan = 3
 
const uint8_t kTecoHeat = 4
 
const uint8_t kTecoFanAuto = 0
 
const uint8_t kTecoFanLow = 1
 
const uint8_t kTecoFanMed = 2
 
const uint8_t kTecoFanHigh = 3
 
const uint8_t kTecoMinTemp = 16
 
const uint8_t kTecoMaxTemp = 30
 
const uint8_t kTecoModeOffset = 0
 
const uint8_t kTecoPowerOffset = 3
 
const uint8_t kTecoFanOffset = 4
 
const uint8_t kTecoFanSize = 2
 
const uint8_t kTecoSwingOffset = 6
 
const uint8_t kTecoSleepOffset = 7
 
const uint8_t kTecoTempOffset = 8
 
const uint8_t kTecoTempSize = 4
 
const uint8_t kTecoTimerHalfHourOffset = 12
 
const uint8_t kTecoTimerTensHoursOffset = 13
 
const uint8_t kTecoTimerTensHoursSize = 2
 
const uint8_t kTecoTimerOnOffset = 15
 
const uint8_t kTecoTimerUnitHoursOffset = 16
 
const uint8_t kTecoTimerUnitHoursSize = 4
 
const uint8_t kTecoHumidOffset = 20
 
const uint8_t kTecoLightOffset = 21
 
const uint8_t kTecoSaveOffset = 23
 
const uint64_t kTecoReset = 0b01001010000000000000010000000000000
 
+

Detailed Description

+

Support for Teco protocols.

+

Variable Documentation

+ +

◆ kTecoAuto

+ +
+
+ + + + +
const uint8_t kTecoAuto = 0
+
+ +
+
+ +

◆ kTecoCool

+ +
+
+ + + + +
const uint8_t kTecoCool = 1
+
+ +
+
+ +

◆ kTecoDry

+ +
+
+ + + + +
const uint8_t kTecoDry = 2
+
+ +
+
+ +

◆ kTecoFan

+ +
+
+ + + + +
const uint8_t kTecoFan = 3
+
+ +
+
+ +

◆ kTecoFanAuto

+ +
+
+ + + + +
const uint8_t kTecoFanAuto = 0
+
+ +
+
+ +

◆ kTecoFanHigh

+ +
+
+ + + + +
const uint8_t kTecoFanHigh = 3
+
+ +
+
+ +

◆ kTecoFanLow

+ +
+
+ + + + +
const uint8_t kTecoFanLow = 1
+
+ +
+
+ +

◆ kTecoFanMed

+ +
+
+ + + + +
const uint8_t kTecoFanMed = 2
+
+ +
+
+ +

◆ kTecoFanOffset

+ +
+
+ + + + +
const uint8_t kTecoFanOffset = 4
+
+ +
+
+ +

◆ kTecoFanSize

+ +
+
+ + + + +
const uint8_t kTecoFanSize = 2
+
+ +
+
+ +

◆ kTecoHeat

+ +
+
+ + + + +
const uint8_t kTecoHeat = 4
+
+ +
+
+ +

◆ kTecoHumidOffset

+ +
+
+ + + + +
const uint8_t kTecoHumidOffset = 20
+
+ +
+
+ +

◆ kTecoLightOffset

+ +
+
+ + + + +
const uint8_t kTecoLightOffset = 21
+
+ +
+
+ +

◆ kTecoMaxTemp

+ +
+
+ + + + +
const uint8_t kTecoMaxTemp = 30
+
+ +
+
+ +

◆ kTecoMinTemp

+ +
+
+ + + + +
const uint8_t kTecoMinTemp = 16
+
+ +
+
+ +

◆ kTecoModeOffset

+ +
+
+ + + + +
const uint8_t kTecoModeOffset = 0
+
+ +
+
+ +

◆ kTecoPowerOffset

+ +
+
+ + + + +
const uint8_t kTecoPowerOffset = 3
+
+ +
+
+ +

◆ kTecoReset

+ +
+
+ + + + +
const uint64_t kTecoReset = 0b01001010000000000000010000000000000
+
+ +
+
+ +

◆ kTecoSaveOffset

+ +
+
+ + + + +
const uint8_t kTecoSaveOffset = 23
+
+ +
+
+ +

◆ kTecoSleepOffset

+ +
+
+ + + + +
const uint8_t kTecoSleepOffset = 7
+
+ +
+
+ +

◆ kTecoSwingOffset

+ +
+
+ + + + +
const uint8_t kTecoSwingOffset = 6
+
+ +
+
+ +

◆ kTecoTempOffset

+ +
+
+ + + + +
const uint8_t kTecoTempOffset = 8
+
+ +
+
+ +

◆ kTecoTempSize

+ +
+
+ + + + +
const uint8_t kTecoTempSize = 4
+
+ +
+
+ +

◆ kTecoTimerHalfHourOffset

+ +
+
+ + + + +
const uint8_t kTecoTimerHalfHourOffset = 12
+
+ +
+
+ +

◆ kTecoTimerOnOffset

+ +
+
+ + + + +
const uint8_t kTecoTimerOnOffset = 15
+
+ +
+
+ +

◆ kTecoTimerTensHoursOffset

+ +
+
+ + + + +
const uint8_t kTecoTimerTensHoursOffset = 13
+
+ +
+
+ +

◆ kTecoTimerTensHoursSize

+ +
+
+ + + + +
const uint8_t kTecoTimerTensHoursSize = 2
+
+ +
+
+ +

◆ kTecoTimerUnitHoursOffset

+ +
+
+ + + + +
const uint8_t kTecoTimerUnitHoursOffset = 16
+
+ +
+
+ +

◆ kTecoTimerUnitHoursSize

+ +
+
+ + + + +
const uint8_t kTecoTimerUnitHoursSize = 4
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h_source.html new file mode 100644 index 000000000..ea0e37a5f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Teco_8h_source.html @@ -0,0 +1,324 @@ + + + + + + + +IRremoteESP8266: src/ir_Teco.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Teco.h
+
+
+Go to the documentation of this file.
1 // Copyright 2019 Fabien Valthier
+
2 
+
5 
+
6 // Supports:
+
7 // Brand: Alaska, Model: SAC9010QC A/C
+
8 // Brand: Alaska, Model: SAC9010QC remote
+
9 
+
10 #ifndef IR_TECO_H_
+
11 #define IR_TECO_H_
+
12 
+
13 #ifndef UNIT_TEST
+
14 #include <Arduino.h>
+
15 #endif
+
16 #include "IRremoteESP8266.h"
+
17 #include "IRsend.h"
+
18 #ifdef UNIT_TEST
+
19 #include "IRsend_test.h"
+
20 #endif
+
21 
+
22 // Constants.
+
23 const uint8_t kTecoAuto = 0;
+
24 const uint8_t kTecoCool = 1;
+
25 const uint8_t kTecoDry = 2;
+
26 const uint8_t kTecoFan = 3;
+
27 const uint8_t kTecoHeat = 4;
+
28 const uint8_t kTecoFanAuto = 0; // 0b00
+
29 const uint8_t kTecoFanLow = 1; // 0b01
+
30 const uint8_t kTecoFanMed = 2; // 0b10
+
31 const uint8_t kTecoFanHigh = 3; // 0b11
+
32 const uint8_t kTecoMinTemp = 16; // 16C
+
33 const uint8_t kTecoMaxTemp = 30; // 30C
+
34 
+
35 const uint8_t kTecoModeOffset = 0;
+
36 const uint8_t kTecoPowerOffset = 3;
+
37 const uint8_t kTecoFanOffset = 4;
+
38 const uint8_t kTecoFanSize = 2; // Nr. of bits
+
39 const uint8_t kTecoSwingOffset = 6;
+
40 const uint8_t kTecoSleepOffset = 7;
+
41 const uint8_t kTecoTempOffset = 8;
+
42 const uint8_t kTecoTempSize = 4; // Nr. of bits
+
43 const uint8_t kTecoTimerHalfHourOffset = 12;
+
44 const uint8_t kTecoTimerTensHoursOffset = 13;
+
45 const uint8_t kTecoTimerTensHoursSize = 2; // Nr. of bits
+
46 const uint8_t kTecoTimerOnOffset = 15;
+
47 const uint8_t kTecoTimerUnitHoursOffset = 16;
+
48 const uint8_t kTecoTimerUnitHoursSize = 4; // Nr. of bits
+
49 const uint8_t kTecoHumidOffset = 20;
+
50 const uint8_t kTecoLightOffset = 21;
+
51 const uint8_t kTecoSaveOffset = 23;
+
52 const uint64_t kTecoReset = 0b01001010000000000000010000000000000;
+
53 /*
+
54  (header mark and space)
+
55  Teco AC map read and to be sent in LSB with number of bits
+
56 
+
57  byte 0 = Cst 0x02
+
58  byte 1 = Cst 0x50
+
59  b6-7 = "AIR" 0, 1, 2 (Not Implemented)
+
60  byte 2:
+
61  b0 = Save
+
62  b1 = "Tree with bubbles" / Filter?? (Not Implemented)
+
63  b2 = Light/LED.
+
64  b3 = Humid
+
65  b4-7 = Timer hours (unit, not thenth)
+
66  hours:
+
67  0000 (0) = +0 hour
+
68  0001 (1) = +1 hour
+
69  ...
+
70  1001 (9) = +9 hours
+
71  byte 3: = timer and Temperature
+
72  b0 = Timer (1 = On, 0 = Off)
+
73  b1-2 = Timer - number of 10hours
+
74  10Hours:
+
75  00 = 0 * 10hours of timer
+
76  01 = 1 * 10 hours of timer
+
77  10 = 2 * 10hours of timer
+
78  b3 = Timer - half hour (1=half hour on, 0 = round hour)
+
79  b4-7: Degrees C.
+
80  0000 (0) = 16C
+
81  0001 (1) = 17C
+
82  0010 (2) = 18C
+
83  ...
+
84  1101 (13) = 29C
+
85  1110 (14) = 30C
+
86  byte 4: Basics
+
87  b0 = Sleep Mode (1 = On, 0 = Off)
+
88  b1 = Vent swing (1 = On, 0 = Off)
+
89  b2-3 = Fan
+
90  Fan:
+
91  00 = Auto
+
92  01 = Fan 1
+
93  10 = Fan 2
+
94  11 = Fan 3 or higher
+
95  b4 = Power Status (1 = On, 0 = Off)
+
96  b5-7 = Modes LSB first
+
97  Modes:
+
98  000 = Auto (temp = 25C)
+
99  001 = Cool
+
100  010 = Dry (temp = 25C, but not shown)
+
101  011 = Fan
+
102  100 = Heat
+
103 */
+
104 
+
105 // Classes
+
107 class IRTecoAc {
+
108  public:
+
109  explicit IRTecoAc(const uint16_t pin, const bool inverted = false,
+
110  const bool use_modulation = true);
+
111  void stateReset(void);
+
112 #if SEND_TECO
+
113  void send(const uint16_t repeat = kTecoDefaultRepeat);
+
118  int8_t calibrate(void) { return _irsend.calibrate(); }
+
119 #endif // SEND_TECO
+
120  void begin(void);
+
121  void on(void);
+
122  void off(void);
+
123 
+
124  void setPower(const bool on);
+
125  bool getPower(void);
+
126 
+
127  void setTemp(const uint8_t temp);
+
128  uint8_t getTemp(void);
+
129 
+
130  void setFan(const uint8_t fan);
+
131  uint8_t getFan(void);
+
132 
+
133  void setMode(const uint8_t mode);
+
134  uint8_t getMode(void);
+
135 
+
136  void setSwing(const bool on);
+
137  bool getSwing(void);
+
138 
+
139  void setSleep(const bool on);
+
140  bool getSleep(void);
+
141 
+
142  void setLight(const bool on);
+
143  bool getLight(void);
+
144 
+
145  void setHumid(const bool on);
+
146  bool getHumid(void);
+
147 
+
148  void setSave(const bool on);
+
149  bool getSave(void);
+
150 
+
151  uint16_t getTimer(void);
+
152  void setTimer(const uint16_t mins);
+
153 
+
154  uint64_t getRaw(void);
+
155  void setRaw(const uint64_t new_code);
+
156 
+
157  uint8_t convertMode(const stdAc::opmode_t mode);
+
158  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
159  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
160  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
161  stdAc::state_t toCommon(void);
+
162  String toString(void);
+
163 #ifndef UNIT_TEST
+
164 
+
165  private:
+ +
167 #else // UNIT_TEST
+
168  IRsendTest _irsend;
+
170 #endif // UNIT_TEST
+
172  uint64_t remote_state;
+
173  bool getTimerEnabled(void);
+
174 };
+
175 
+
176 #endif // IR_TECO_H_
+
+
bool getSwing(void)
Get the (vertical) swing setting of the A/C.
Definition: ir_Teco.cpp:163
+
const uint8_t kTecoFanMed
Definition: ir_Teco.h:30
+
bool getHumid(void)
Get the Humid setting of the A/C.
Definition: ir_Teco.cpp:199
+
const uint8_t kTecoTempOffset
Definition: ir_Teco.h:41
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Teco.cpp:94
+
const uint8_t kTecoPowerOffset
Definition: ir_Teco.h:36
+
const uint64_t kTecoReset
Definition: ir_Teco.h:52
+
bool getTimerEnabled(void)
Is the timer function enabled?
Definition: ir_Teco.cpp:217
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Teco.cpp:283
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Teco.cpp:84
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Teco.cpp:175
+
const uint8_t kTecoModeOffset
Definition: ir_Teco.h:35
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Teco.cpp:256
+
uint16_t getTimer(void)
Get the timer time for when the A/C unit will switch power state.
Definition: ir_Teco.cpp:223
+
const uint8_t kTecoTempSize
Definition: ir_Teco.h:42
+
const uint8_t kTecoSleepOffset
Definition: ir_Teco.h:40
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Teco.h:118
+ +
const uint8_t kTecoMinTemp
Definition: ir_Teco.h:32
+
void setRaw(const uint64_t new_code)
Set the internal state from a valid code for this protocol.
Definition: ir_Teco.cpp:78
+
IRTecoAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Teco.cpp:51
+
const uint8_t kTecoMaxTemp
Definition: ir_Teco.h:33
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Teco.cpp:81
+
const uint8_t kTecoDry
Definition: ir_Teco.h:25
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kTecoHeat
Definition: ir_Teco.h:27
+
const uint8_t kTecoTimerTensHoursOffset
Definition: ir_Teco.h:44
+
const uint8_t kTecoFanOffset
Definition: ir_Teco.h:37
+
std::string String
Definition: IRremoteESP8266.h:1093
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Teco.cpp:88
+
void setSwing(const bool on)
Set the (vertical) swing setting of the A/C.
Definition: ir_Teco.cpp:157
+
const uint8_t kTecoSaveOffset
Definition: ir_Teco.h:51
+
const uint8_t kTecoTimerUnitHoursOffset
Definition: ir_Teco.h:47
+ +
void setHumid(const bool on)
Set the Humid setting of the A/C.
Definition: ir_Teco.cpp:193
+
void setTimer(const uint16_t mins)
Set the timer for when the A/C unit will switch power state.
Definition: ir_Teco.cpp:239
+
const uint8_t kTecoFanLow
Definition: ir_Teco.h:29
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Teco.cpp:169
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Teco.cpp:56
+
const uint16_t kTecoDefaultRepeat
Definition: IRremoteESP8266.h:998
+
const uint8_t kTecoFanSize
Definition: ir_Teco.h:38
+
const uint8_t kTecoFanAuto
Definition: ir_Teco.h:28
+
bool getLight(void)
Get the Light (LED/Display) setting of the A/C.
Definition: ir_Teco.cpp:187
+
const uint8_t kTecoCool
Definition: ir_Teco.h:24
+
const uint8_t kTecoTimerTensHoursSize
Definition: ir_Teco.h:45
+
bool getSave(void)
Get the Save setting of the A/C.
Definition: ir_Teco.cpp:211
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Teco.cpp:334
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Teco.cpp:110
+
const uint8_t kTecoTimerUnitHoursSize
Definition: ir_Teco.h:48
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Teco.cpp:100
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Teco.cpp:136
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Teco.cpp:296
+
void setSave(const bool on)
Set the Save setting of the A/C.
Definition: ir_Teco.cpp:205
+
const uint8_t kTecoHumidOffset
Definition: ir_Teco.h:49
+
const uint8_t kTecoSwingOffset
Definition: ir_Teco.h:39
+
void stateReset(void)
Reset the internal state of the emulation.
Definition: ir_Teco.cpp:68
+
uint64_t getRaw(void)
Get a copy of the internal state/code for this protocol.
Definition: ir_Teco.cpp:74
+
const uint8_t kTecoLightOffset
Definition: ir_Teco.h:50
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Teco.cpp:130
+
const uint8_t kTecoFan
Definition: ir_Teco.h:26
+
const uint8_t kTecoTimerOnOffset
Definition: ir_Teco.h:46
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Teco.cpp:151
+
Class for handling detailed Teco A/C messages.
Definition: ir_Teco.h:107
+
uint64_t remote_state
The state of the IR remote in IR code form.
Definition: ir_Teco.h:172
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Teco.cpp:269
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Teco.cpp:307
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Teco.h:166
+
void setLight(const bool on)
Set the Light (LED/Display) setting of the A/C.
Definition: ir_Teco.cpp:181
+
void send(const uint16_t repeat=kTecoDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Teco.cpp:61
+
const uint8_t kTecoFanHigh
Definition: ir_Teco.h:31
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kTecoAuto
Definition: ir_Teco.h:23
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Teco.cpp:116
+
const uint8_t kTecoTimerHalfHourOffset
Definition: ir_Teco.h:43
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8cpp.html new file mode 100644 index 000000000..29efab1fc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8cpp.html @@ -0,0 +1,191 @@ + + + + + + + +IRremoteESP8266: src/ir_Toshiba.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Toshiba.cpp File Reference
+
+
+ +

Support for Toshiba protocols. +More...

+ + + + + + + + + + + + + + +

+Variables

const uint16_t kToshibaAcHdrMark = 4400
 
const uint16_t kToshibaAcHdrSpace = 4300
 
const uint16_t kToshibaAcBitMark = 543
 
const uint16_t kToshibaAcOneSpace = 1623
 
const uint16_t kToshibaAcZeroSpace = 472
 
const uint16_t kToshibaAcMinGap = 7048
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kToshibaAcBitMark

+ +
+
+ + + + +
const uint16_t kToshibaAcBitMark = 543
+
+ +
+
+ +

◆ kToshibaAcHdrMark

+ +
+
+ + + + +
const uint16_t kToshibaAcHdrMark = 4400
+
+ +
+
+ +

◆ kToshibaAcHdrSpace

+ +
+
+ + + + +
const uint16_t kToshibaAcHdrSpace = 4300
+
+ +
+
+ +

◆ kToshibaAcMinGap

+ +
+
+ + + + +
const uint16_t kToshibaAcMinGap = 7048
+
+ +
+
+ +

◆ kToshibaAcOneSpace

+ +
+
+ + + + +
const uint16_t kToshibaAcOneSpace = 1623
+
+ +
+
+ +

◆ kToshibaAcZeroSpace

+ +
+
+ + + + +
const uint16_t kToshibaAcZeroSpace = 472
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h.html new file mode 100644 index 000000000..a48d5a462 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h.html @@ -0,0 +1,376 @@ + + + + + + + +IRremoteESP8266: src/ir_Toshiba.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Toshiba.h File Reference
+
+
+ +

Support for Toshiba protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRToshibaAC
 Class for handling detailed Toshiba A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kToshibaAcModeOffset = 0
 
const uint8_t kToshibaAcModeSize = 2
 
const uint8_t kToshibaAcAuto = 0
 
const uint8_t kToshibaAcCool = 1
 
const uint8_t kToshibaAcDry = 2
 
const uint8_t kToshibaAcHeat = 3
 
const uint8_t kToshibaAcPowerOffset = 2
 
const uint8_t kToshibaAcFanOffset = 5
 
const uint8_t kToshibaAcFanSize = 3
 
const uint8_t kToshibaAcFanAuto = 0b000
 
const uint8_t kToshibaAcFanMin = 0b001
 
const uint8_t kToshibaAcFanMed = 0b011
 
const uint8_t kToshibaAcFanMax = 0b101
 
const uint8_t kToshibaAcTempOffset = 4
 
const uint8_t kToshibaAcTempSize = 4
 
const uint8_t kToshibaAcMinTemp = 17
 
const uint8_t kToshibaAcMaxTemp = 30
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kToshibaAcAuto

+ +
+
+ + + + +
const uint8_t kToshibaAcAuto = 0
+
+ +
+
+ +

◆ kToshibaAcCool

+ +
+
+ + + + +
const uint8_t kToshibaAcCool = 1
+
+ +
+
+ +

◆ kToshibaAcDry

+ +
+
+ + + + +
const uint8_t kToshibaAcDry = 2
+
+ +
+
+ +

◆ kToshibaAcFanAuto

+ +
+
+ + + + +
const uint8_t kToshibaAcFanAuto = 0b000
+
+ +
+
+ +

◆ kToshibaAcFanMax

+ +
+
+ + + + +
const uint8_t kToshibaAcFanMax = 0b101
+
+ +
+
+ +

◆ kToshibaAcFanMed

+ +
+
+ + + + +
const uint8_t kToshibaAcFanMed = 0b011
+
+ +
+
+ +

◆ kToshibaAcFanMin

+ +
+
+ + + + +
const uint8_t kToshibaAcFanMin = 0b001
+
+ +
+
+ +

◆ kToshibaAcFanOffset

+ +
+
+ + + + +
const uint8_t kToshibaAcFanOffset = 5
+
+ +
+
+ +

◆ kToshibaAcFanSize

+ +
+
+ + + + +
const uint8_t kToshibaAcFanSize = 3
+
+ +
+
+ +

◆ kToshibaAcHeat

+ +
+
+ + + + +
const uint8_t kToshibaAcHeat = 3
+
+ +
+
+ +

◆ kToshibaAcMaxTemp

+ +
+
+ + + + +
const uint8_t kToshibaAcMaxTemp = 30
+
+ +
+
+ +

◆ kToshibaAcMinTemp

+ +
+
+ + + + +
const uint8_t kToshibaAcMinTemp = 17
+
+ +
+
+ +

◆ kToshibaAcModeOffset

+ +
+
+ + + + +
const uint8_t kToshibaAcModeOffset = 0
+
+ +
+
+ +

◆ kToshibaAcModeSize

+ +
+
+ + + + +
const uint8_t kToshibaAcModeSize = 2
+
+ +
+
+ +

◆ kToshibaAcPowerOffset

+ +
+
+ + + + +
const uint8_t kToshibaAcPowerOffset = 2
+
+ +
+
+ +

◆ kToshibaAcTempOffset

+ +
+
+ + + + +
const uint8_t kToshibaAcTempOffset = 4
+
+ +
+
+ +

◆ kToshibaAcTempSize

+ +
+
+ + + + +
const uint8_t kToshibaAcTempSize = 4
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h_source.html new file mode 100644 index 000000000..5eac89ce6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Toshiba_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +IRremoteESP8266: src/ir_Toshiba.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Toshiba.h
+
+
+Go to the documentation of this file.
1 // Copyright 2017 David Conran
+
2 
+
7 
+
8 // Supports:
+
9 // Brand: Toshiba, Model: RAS-B13N3KV2
+
10 // Brand: Toshiba, Model: Akita EVO II
+
11 // Brand: Toshiba, Model: RAS-B13N3KVP-E
+
12 // Brand: Toshiba, Model: RAS 18SKP-ES
+
13 // Brand: Toshiba, Model: WH-TA04NE
+
14 // Brand: Toshiba, Model: WC-L03SE
+
15 
+
16 #ifndef IR_TOSHIBA_H_
+
17 #define IR_TOSHIBA_H_
+
18 
+
19 #define __STDC_LIMIT_MACROS
+
20 #include <stdint.h>
+
21 #ifdef ARDUINO
+
22 #include <Arduino.h>
+
23 #endif
+
24 #include "IRremoteESP8266.h"
+
25 #include "IRsend.h"
+
26 #ifdef UNIT_TEST
+
27 #include "IRsend_test.h"
+
28 #endif
+
29 
+
30 // Constants
+
31 const uint8_t kToshibaAcModeOffset = 0;
+
32 const uint8_t kToshibaAcModeSize = 2; // Nr. of bits
+
33 const uint8_t kToshibaAcAuto = 0;
+
34 const uint8_t kToshibaAcCool = 1;
+
35 const uint8_t kToshibaAcDry = 2;
+
36 const uint8_t kToshibaAcHeat = 3;
+
37 const uint8_t kToshibaAcPowerOffset = 2;
+
38 const uint8_t kToshibaAcFanOffset = 5;
+
39 const uint8_t kToshibaAcFanSize = 3; // Nr. of bits
+
40 const uint8_t kToshibaAcFanAuto = 0b000;
+
41 const uint8_t kToshibaAcFanMin = 0b001;
+
42 const uint8_t kToshibaAcFanMed = 0b011;
+
43 const uint8_t kToshibaAcFanMax = 0b101;
+
44 const uint8_t kToshibaAcTempOffset = 4;
+
45 const uint8_t kToshibaAcTempSize = 4; // Nr. of bits
+
46 const uint8_t kToshibaAcMinTemp = 17; // 17C
+
47 const uint8_t kToshibaAcMaxTemp = 30; // 30C
+
48 
+
49 // Legacy defines. (Deperecated)
+
50 #define TOSHIBA_AC_AUTO kToshibaAcAuto
+
51 #define TOSHIBA_AC_COOL kToshibaAcCool
+
52 #define TOSHIBA_AC_DRY kToshibaAcDry
+
53 #define TOSHIBA_AC_HEAT kToshibaAcHeat
+
54 #define TOSHIBA_AC_POWER kToshibaAcPower
+
55 #define TOSHIBA_AC_FAN_AUTO kToshibaAcFanAuto
+
56 #define TOSHIBA_AC_FAN_MAX kToshibaAcFanMax
+
57 #define TOSHIBA_AC_MIN_TEMP kToshibaAcMinTemp
+
58 #define TOSHIBA_AC_MAX_TEMP kToshibaAcMaxTemp
+
59 
+
60 // Classes
+
62 class IRToshibaAC {
+
63  public:
+
64  explicit IRToshibaAC(const uint16_t pin, const bool inverted = false,
+
65  const bool use_modulation = true);
+
66  void stateReset(void);
+
67 #if SEND_TOSHIBA_AC
+
68  void send(const uint16_t repeat = kToshibaACMinRepeat);
+
73  int8_t calibrate(void) { return _irsend.calibrate(); }
+
74 #endif // SEND_TOSHIBA_AC
+
75  void begin(void);
+
76  void on(void);
+
77  void off(void);
+
78  void setPower(const bool on);
+
79  bool getPower(void);
+
80  void setTemp(const uint8_t degrees);
+
81  uint8_t getTemp(void);
+
82  void setFan(const uint8_t speed);
+
83  uint8_t getFan(void);
+
84  void setMode(const uint8_t mode);
+
85  uint8_t getMode(const bool useRaw = false);
+
86  void setRaw(const uint8_t newState[]);
+
87  uint8_t* getRaw(void);
+
88  static bool validChecksum(const uint8_t state[],
+
89  const uint16_t length = kToshibaACStateLength);
+
90  uint8_t convertMode(const stdAc::opmode_t mode);
+
91  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
92  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
93  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+ +
95  String toString(void);
+
96 #ifndef UNIT_TEST
+
97 
+
98  private:
+ +
100 #else // UNIT_TEST
+
101  IRsendTest _irsend;
+
103 #endif // UNIT_TEST
+ +
106  void checksum(const uint16_t length = kToshibaACStateLength);
+
107  static uint8_t calcChecksum(const uint8_t state[],
+
108  const uint16_t length = kToshibaACStateLength);
+
109  uint8_t mode_state;
+
110 };
+
111 
+
112 #endif // IR_TOSHIBA_H_
+
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Toshiba.cpp:134
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Toshiba.cpp:249
+
Class for handling detailed Toshiba A/C messages.
Definition: ir_Toshiba.h:62
+
const uint8_t kToshibaAcCool
Definition: ir_Toshiba.h:34
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)
Calculate the checksum for a given state.
Definition: ir_Toshiba.cpp:101
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Toshiba.cpp:131
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Toshiba.cpp:222
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kToshibaAcFanAuto
Definition: ir_Toshiba.h:40
+
void send(const uint16_t repeat=kToshibaACMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Toshiba.cpp:78
+
const uint8_t kToshibaAcModeOffset
Definition: ir_Toshiba.h:31
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Toshiba.cpp:172
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Toshiba.cpp:274
+
const uint8_t kToshibaAcMinTemp
Definition: ir_Toshiba.h:46
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Toshiba.h:99
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Toshiba.h:73
+ +
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Toshiba.cpp:85
+
void checksum(const uint16_t length=kToshibaACStateLength)
Calculate & set the checksum for the current internal state of the remote.
Definition: ir_Toshiba.cpp:124
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Toshiba.cpp:150
+
const uint8_t kToshibaAcPowerOffset
Definition: ir_Toshiba.h:37
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Toshiba.cpp:300
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Toshiba.cpp:138
+
std::string String
Definition: IRremoteESP8266.h:1093
+
IRToshibaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Toshiba.cpp:59
+
const uint8_t kToshibaAcFanMed
Definition: ir_Toshiba.h:42
+ +
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Toshiba.cpp:73
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Toshiba.cpp:65
+
const uint8_t kToshibaAcTempSize
Definition: ir_Toshiba.h:45
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Toshiba.cpp:165
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Toshiba.cpp:261
+
const uint8_t kToshibaAcHeat
Definition: ir_Toshiba.h:36
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Toshiba.cpp:203
+
const uint8_t kToshibaAcModeSize
Definition: ir_Toshiba.h:32
+
void setRaw(const uint8_t newState[])
Set the internal state from a valid code for this protocol.
Definition: ir_Toshiba.cpp:92
+
const uint16_t kToshibaACMinRepeat
Definition: IRremoteESP8266.h:1001
+
uint8_t getMode(const bool useRaw=false)
Get the operating mode setting of the A/C.
Definition: ir_Toshiba.cpp:193
+
const uint16_t kToshibaACStateLength
Definition: IRremoteESP8266.h:999
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Toshiba.cpp:116
+
const uint8_t kToshibaAcFanSize
Definition: ir_Toshiba.h:39
+
const uint8_t kToshibaAcFanOffset
Definition: ir_Toshiba.h:38
+
uint8_t remote_state[kToshibaACStateLength]
The state in IR code form.
Definition: ir_Toshiba.h:105
+
const uint8_t kToshibaAcDry
Definition: ir_Toshiba.h:35
+
uint8_t mode_state
Definition: ir_Toshiba.h:109
+
const uint8_t kToshibaAcAuto
Definition: ir_Toshiba.h:33
+
const uint8_t kToshibaAcMaxTemp
Definition: ir_Toshiba.h:47
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Toshiba.cpp:235
+
void setTemp(const uint8_t degrees)
Set the temperature.
Definition: ir_Toshiba.cpp:156
+
const uint8_t kToshibaAcTempOffset
Definition: ir_Toshiba.h:44
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Toshiba.cpp:183
+
const uint8_t kToshibaAcFanMax
Definition: ir_Toshiba.h:43
+
const uint8_t kToshibaAcFanMin
Definition: ir_Toshiba.h:41
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8cpp.html new file mode 100644 index 000000000..3d4b6e325 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8cpp.html @@ -0,0 +1,207 @@ + + + + + + + +IRremoteESP8266: src/ir_Trotec.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Trotec.cpp File Reference
+
+
+ +

Support for Trotec protocols. +More...

+ + + + + + + + + + + + + + + + +

+Variables

const uint16_t kTrotecHdrMark = 5952
 
const uint16_t kTrotecHdrSpace = 7364
 
const uint16_t kTrotecBitMark = 592
 
const uint16_t kTrotecOneSpace = 1560
 
const uint16_t kTrotecZeroSpace = 592
 
const uint16_t kTrotecGap = 6184
 
const uint16_t kTrotecGapEnd = 1500
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kTrotecBitMark

+ +
+
+ + + + +
const uint16_t kTrotecBitMark = 592
+
+ +
+
+ +

◆ kTrotecGap

+ +
+
+ + + + +
const uint16_t kTrotecGap = 6184
+
+ +
+
+ +

◆ kTrotecGapEnd

+ +
+
+ + + + +
const uint16_t kTrotecGapEnd = 1500
+
+ +
+
+ +

◆ kTrotecHdrMark

+ +
+
+ + + + +
const uint16_t kTrotecHdrMark = 5952
+
+ +
+
+ +

◆ kTrotecHdrSpace

+ +
+
+ + + + +
const uint16_t kTrotecHdrSpace = 7364
+
+ +
+
+ +

◆ kTrotecOneSpace

+ +
+
+ + + + +
const uint16_t kTrotecOneSpace = 1560
+
+ +
+
+ +

◆ kTrotecZeroSpace

+ +
+
+ + + + +
const uint16_t kTrotecZeroSpace = 592
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h.html new file mode 100644 index 000000000..943ec1243 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h.html @@ -0,0 +1,456 @@ + + + + + + + +IRremoteESP8266: src/ir_Trotec.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Trotec.h File Reference
+
+
+ +

Support for Trotec protocols. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRTrotecESP
 Class for handling detailed Trotec A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kTrotecIntro1 = 0x12
 
const uint8_t kTrotecIntro2 = 0x34
 
const uint8_t kTrotecModeOffset = 0
 
const uint8_t kTrotecModeSize = 2
 
const uint8_t kTrotecAuto = 0
 
const uint8_t kTrotecCool = 1
 
const uint8_t kTrotecDry = 2
 
const uint8_t kTrotecFan = 3
 
const uint8_t kTrotecPowerBitOffset = 3
 
const uint8_t kTrotecFanOffset = 4
 
const uint8_t kTrotecFanSize = 2
 
const uint8_t kTrotecFanLow = 1
 
const uint8_t kTrotecFanMed = 2
 
const uint8_t kTrotecFanHigh = 3
 
const uint8_t kTrotecTempOffset = 0
 
const uint8_t kTrotecTempSize = 4
 
const uint8_t kTrotecMinTemp = 18
 
const uint8_t kTrotecDefTemp = 25
 
const uint8_t kTrotecMaxTemp = 32
 
const uint8_t kTrotecSleepBitOffset = 7
 
const uint8_t kTrotecTimerBitOffset = 6
 
const uint8_t kTrotecMaxTimer = 23
 
+

Detailed Description

+

Variable Documentation

+ +

◆ kTrotecAuto

+ +
+
+ + + + +
const uint8_t kTrotecAuto = 0
+
+ +
+
+ +

◆ kTrotecCool

+ +
+
+ + + + +
const uint8_t kTrotecCool = 1
+
+ +
+
+ +

◆ kTrotecDefTemp

+ +
+
+ + + + +
const uint8_t kTrotecDefTemp = 25
+
+ +
+
+ +

◆ kTrotecDry

+ +
+
+ + + + +
const uint8_t kTrotecDry = 2
+
+ +
+
+ +

◆ kTrotecFan

+ +
+
+ + + + +
const uint8_t kTrotecFan = 3
+
+ +
+
+ +

◆ kTrotecFanHigh

+ +
+
+ + + + +
const uint8_t kTrotecFanHigh = 3
+
+ +
+
+ +

◆ kTrotecFanLow

+ +
+
+ + + + +
const uint8_t kTrotecFanLow = 1
+
+ +
+
+ +

◆ kTrotecFanMed

+ +
+
+ + + + +
const uint8_t kTrotecFanMed = 2
+
+ +
+
+ +

◆ kTrotecFanOffset

+ +
+
+ + + + +
const uint8_t kTrotecFanOffset = 4
+
+ +
+
+ +

◆ kTrotecFanSize

+ +
+
+ + + + +
const uint8_t kTrotecFanSize = 2
+
+ +
+
+ +

◆ kTrotecIntro1

+ +
+
+ + + + +
const uint8_t kTrotecIntro1 = 0x12
+
+ +
+
+ +

◆ kTrotecIntro2

+ +
+
+ + + + +
const uint8_t kTrotecIntro2 = 0x34
+
+ +
+
+ +

◆ kTrotecMaxTemp

+ +
+
+ + + + +
const uint8_t kTrotecMaxTemp = 32
+
+ +
+
+ +

◆ kTrotecMaxTimer

+ +
+
+ + + + +
const uint8_t kTrotecMaxTimer = 23
+
+ +
+
+ +

◆ kTrotecMinTemp

+ +
+
+ + + + +
const uint8_t kTrotecMinTemp = 18
+
+ +
+
+ +

◆ kTrotecModeOffset

+ +
+
+ + + + +
const uint8_t kTrotecModeOffset = 0
+
+ +
+
+ +

◆ kTrotecModeSize

+ +
+
+ + + + +
const uint8_t kTrotecModeSize = 2
+
+ +
+
+ +

◆ kTrotecPowerBitOffset

+ +
+
+ + + + +
const uint8_t kTrotecPowerBitOffset = 3
+
+ +
+
+ +

◆ kTrotecSleepBitOffset

+ +
+
+ + + + +
const uint8_t kTrotecSleepBitOffset = 7
+
+ +
+
+ +

◆ kTrotecTempOffset

+ +
+
+ + + + +
const uint8_t kTrotecTempOffset = 0
+
+ +
+
+ +

◆ kTrotecTempSize

+ +
+
+ + + + +
const uint8_t kTrotecTempSize = 4
+
+ +
+
+ +

◆ kTrotecTimerBitOffset

+ +
+
+ + + + +
const uint8_t kTrotecTimerBitOffset = 6
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h_source.html new file mode 100644 index 000000000..950f39edc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Trotec_8h_source.html @@ -0,0 +1,270 @@ + + + + + + + +IRremoteESP8266: src/ir_Trotec.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Trotec.h
+
+
+Go to the documentation of this file.
1 // Copyright 2017 stufisher
+
2 // Copyright 2019 crankyoldgit
+
3 
+
8 
+
9 // Supports:
+
10 // Brand: Trotec, Model: PAC 3200 A/C
+
11 // Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C
+
12 
+
13 #ifndef IR_TROTEC_H_
+
14 #define IR_TROTEC_H_
+
15 
+
16 #ifndef UNIT_TEST
+
17 #include <Arduino.h>
+
18 #endif
+
19 #include "IRremoteESP8266.h"
+
20 #include "IRsend.h"
+
21 #ifdef UNIT_TEST
+
22 #include "IRsend_test.h"
+
23 #endif
+
24 
+
25 // Constants
+
26 // Byte 0
+
27 const uint8_t kTrotecIntro1 = 0x12;
+
28 
+
29 // Byte 1
+
30 const uint8_t kTrotecIntro2 = 0x34;
+
31 
+
32 // Byte 2
+
33 const uint8_t kTrotecModeOffset = 0;
+
34 const uint8_t kTrotecModeSize = 2; // Nr. of bits
+
35 const uint8_t kTrotecAuto = 0;
+
36 const uint8_t kTrotecCool = 1;
+
37 const uint8_t kTrotecDry = 2;
+
38 const uint8_t kTrotecFan = 3;
+
39 
+
40 const uint8_t kTrotecPowerBitOffset = 3;
+
41 
+
42 const uint8_t kTrotecFanOffset = 4;
+
43 const uint8_t kTrotecFanSize = 2; // Nr. of bits
+
44 const uint8_t kTrotecFanLow = 1;
+
45 const uint8_t kTrotecFanMed = 2;
+
46 const uint8_t kTrotecFanHigh = 3;
+
47 
+
48 // Byte 3
+
49 const uint8_t kTrotecTempOffset = 0;
+
50 const uint8_t kTrotecTempSize = 4; // Nr. of bits
+
51 const uint8_t kTrotecMinTemp = 18;
+
52 const uint8_t kTrotecDefTemp = 25;
+
53 const uint8_t kTrotecMaxTemp = 32;
+
54 const uint8_t kTrotecSleepBitOffset = 7;
+
55 
+
56 // Byte 5
+
57 const uint8_t kTrotecTimerBitOffset = 6;
+
58 
+
59 // Byte 6
+
60 const uint8_t kTrotecMaxTimer = 23;
+
61 
+
62 // Legacy defines. (Deperecated)
+
63 #define TROTEC_AUTO kTrotecAuto
+
64 #define TROTEC_COOL kTrotecCool
+
65 #define TROTEC_DRY kTrotecDry
+
66 #define TROTEC_FAN kTrotecFan
+
67 #define TROTEC_FAN_LOW kTrotecFanLow
+
68 #define TROTEC_FAN_MED kTrotecFanMed
+
69 #define TROTEC_FAN_HIGH kTrotecFanHigh
+
70 #define TROTEC_MIN_TEMP kTrotecMinTemp
+
71 #define TROTEC_MAX_TEMP kTrotecMaxTemp
+
72 #define TROTEC_MAX_TIMER kTrotecMaxTimer
+
73 
+
74 // Class
+
76 class IRTrotecESP {
+
77  public:
+
78  explicit IRTrotecESP(const uint16_t pin, const bool inverted = false,
+
79  const bool use_modulation = true);
+
80 #if SEND_TROTEC
+
81  void send(const uint16_t repeat = kTrotecDefaultRepeat);
+
86  int8_t calibrate(void) { return _irsend.calibrate(); }
+
87 #endif // SEND_TROTEC
+
88  void begin(void);
+
89  void stateReset(void);
+
90 
+
91  void on(void);
+
92  void off(void);
+
93  void setPower(const bool state);
+
94  bool getPower(void);
+
95 
+
96  void setTemp(const uint8_t celsius);
+
97  uint8_t getTemp(void);
+
98 
+
99  void setSpeed(const uint8_t fan);
+
100  uint8_t getSpeed(void);
+
101 
+
102  uint8_t getMode(void);
+
103  void setMode(const uint8_t mode);
+
104 
+
105  bool getSleep(void);
+
106  void setSleep(const bool on);
+
107 
+
108  uint8_t getTimer(void);
+
109  void setTimer(const uint8_t timer);
+
110 
+
111  uint8_t* getRaw(void);
+
112  void setRaw(const uint8_t state[]);
+
113  static bool validChecksum(const uint8_t state[],
+
114  const uint16_t length = kTrotecStateLength);
+
115  uint8_t convertMode(const stdAc::opmode_t mode);
+
116  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
117  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
118  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
119  stdAc::state_t toCommon(void);
+
120  String toString(void);
+
121 #ifndef UNIT_TEST
+
122 
+
123  private:
+ +
125 #else // UNIT_TEST
+
126  IRsendTest _irsend;
+
128 #endif // UNIT_TEST
+ +
131  static uint8_t calcChecksum(const uint8_t state[],
+
132  const uint16_t length = kTrotecStateLength);
+
133  void checksum(void);
+
134 };
+
135 
+
136 #endif // IR_TROTEC_H_
+
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Trotec.cpp:184
+
const uint8_t kTrotecFanOffset
Definition: ir_Trotec.h:42
+
void checksum(void)
Calculate & set the checksum for the current internal state of the remote.
Definition: ir_Trotec.cpp:98
+
const uint8_t kTrotecTimerBitOffset
Definition: ir_Trotec.h:57
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Trotec.cpp:197
+
const uint16_t kTrotecDefaultRepeat
Definition: IRremoteESP8266.h:1004
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Trotec.cpp:169
+
const uint8_t kTrotecSleepBitOffset
Definition: ir_Trotec.h:54
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Trotec.cpp:291
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Trotec.cpp:70
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Trotec.cpp:143
+
const uint8_t kTrotecFanMed
Definition: ir_Trotec.h:45
+ +
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Trotec.cpp:118
+
const uint8_t kTrotecIntro2
Definition: ir_Trotec.h:30
+
const uint8_t kTrotecFanHigh
Definition: ir_Trotec.h:46
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
std::string String
Definition: IRremoteESP8266.h:1093
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Trotec.cpp:93
+
const uint8_t kTrotecMinTemp
Definition: ir_Trotec.h:51
+
const uint8_t kTrotecDefTemp
Definition: ir_Trotec.h:52
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Trotec.cpp:130
+
const uint8_t kTrotecMaxTimer
Definition: ir_Trotec.h:60
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Trotec.cpp:265
+ +
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Trotec.cpp:215
+
const uint8_t kTrotecDry
Definition: ir_Trotec.h:37
+
const uint8_t kTrotecTempOffset
Definition: ir_Trotec.h:49
+
uint8_t getTimer(void)
Get the timer time in nr. of Hours.
Definition: ir_Trotec.cpp:210
+
void setTemp(const uint8_t celsius)
Set the temperature.
Definition: ir_Trotec.cpp:175
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Trotec.cpp:162
+
const uint16_t kTrotecStateLength
Definition: IRremoteESP8266.h:1002
+
const uint8_t kTrotecMaxTemp
Definition: ir_Trotec.h:53
+
const uint8_t kTrotecFanLow
Definition: ir_Trotec.h:44
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Trotec.cpp:104
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Trotec.h:86
+
void setTimer(const uint8_t timer)
Set the timer time in nr. of Hours.
Definition: ir_Trotec.cpp:203
+
void setPower(const bool state)
Change the power setting.
Definition: ir_Trotec.cpp:137
+
const uint8_t kTrotecFan
Definition: ir_Trotec.h:38
+
const uint8_t kTrotecModeSize
Definition: ir_Trotec.h:34
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Trotec.cpp:242
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Trotec.h:124
+
const uint8_t kTrotecCool
Definition: ir_Trotec.h:36
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Trotec.cpp:191
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Trotec.cpp:133
+
static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)
Calculate the checksum for a given state.
Definition: ir_Trotec.cpp:84
+
void send(const uint16_t repeat=kTrotecDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Trotec.cpp:75
+
uint8_t remote_state[kTrotecStateLength]
Remote state in IR code form.
Definition: ir_Trotec.h:130
+
const uint8_t kTrotecModeOffset
Definition: ir_Trotec.h:33
+
const uint8_t kTrotecAuto
Definition: ir_Trotec.h:35
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Trotec.cpp:254
+
Class for handling detailed Trotec A/C messages.
Definition: ir_Trotec.h:76
+
const uint8_t kTrotecFanSize
Definition: ir_Trotec.h:43
+
uint8_t getSpeed(void)
Get the current fan speed setting.
Definition: ir_Trotec.cpp:156
+
IRTrotecESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Trotec.cpp:65
+
const uint8_t kTrotecTempSize
Definition: ir_Trotec.h:50
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Trotec.cpp:228
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kTrotecIntro1
Definition: ir_Trotec.h:27
+
void setRaw(const uint8_t state[])
Set the internal state from a valid code for this protocol.
Definition: ir_Trotec.cpp:125
+
void setSpeed(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Trotec.cpp:149
+
const uint8_t kTrotecPowerBitOffset
Definition: ir_Trotec.h:40
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8cpp.html new file mode 100644 index 000000000..36b147b25 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8cpp.html @@ -0,0 +1,85 @@ + + + + + + + +IRremoteESP8266: src/ir_Vestel.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Vestel.cpp File Reference
+
+
+ +

Support for Vestel protocols. Vestel added by Erdem U. Altinyurt. +More...

+

Detailed Description

+

Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.

+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h.html new file mode 100644 index 000000000..ff591a74e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h.html @@ -0,0 +1,905 @@ + + + + + + + +IRremoteESP8266: src/ir_Vestel.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Vestel.h File Reference
+
+
+ +

Support for Vestel protocols. Vestel added by Erdem U. Altinyurt. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRVestelAc
 Class for handling detailed Vestel A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kVestelAcHdrMark = 3110
 
const uint16_t kVestelAcHdrSpace = 9066
 
const uint16_t kVestelAcBitMark = 520
 
const uint16_t kVestelAcOneSpace = 1535
 
const uint16_t kVestelAcZeroSpace = 480
 
const uint16_t kVestelAcTolerance = 30
 
const uint8_t kVestelAcMinTempH = 16
 
const uint8_t kVestelAcMinTempC = 18
 
const uint8_t kVestelAcMaxTemp = 30
 
const uint8_t kVestelAcAuto = 0
 
const uint8_t kVestelAcCool = 1
 
const uint8_t kVestelAcDry = 2
 
const uint8_t kVestelAcFan = 3
 
const uint8_t kVestelAcHeat = 4
 
const uint8_t kVestelAcFanAuto = 1
 
const uint8_t kVestelAcFanLow = 5
 
const uint8_t kVestelAcFanMed = 9
 
const uint8_t kVestelAcFanHigh = 0xB
 
const uint8_t kVestelAcFanAutoCool = 0xC
 
const uint8_t kVestelAcFanAutoHot = 0xD
 
const uint8_t kVestelAcNormal = 1
 
const uint8_t kVestelAcSleep = 3
 
const uint8_t kVestelAcTurbo = 7
 
const uint8_t kVestelAcIon = 4
 
const uint8_t kVestelAcSwing = 0xA
 
const uint8_t kVestelAcChecksumOffset = 12
 
const uint8_t kVestelAcChecksumSize = 8
 
const uint8_t kVestelAcSwingOffset = 20
 
const uint8_t kVestelAcTurboSleepOffset = 24
 
const uint8_t kVestelAcTempOffset = 36
 
const uint8_t kVestelAcFanOffset = 40
 
const uint8_t kVestelAcFanSize = 4
 
const uint8_t kVestelAcModeOffset = 44
 
const uint8_t kVestelAcIonOffset = 50
 
const uint8_t kVestelAcPowerOffset = 52
 
const uint8_t kVestelAcPowerSize = 2
 
const uint8_t kVestelAcOffTimeOffset = 20
 
const uint8_t kVestelAcOnTimeOffset = 28
 
const uint8_t kVestelAcTimerHourSize = 5
 
const uint8_t kVestelAcTimerMinsSize = 3
 
const uint8_t kVestelAcTimerSize
 
const uint8_t kVestelAcHourOffset = 36
 
const uint8_t kVestelAcHourSize = 5
 
const uint8_t kVestelAcOnTimerFlagOffset = kVestelAcHourOffset + 5
 
const uint8_t kVestelAcOffTimerFlagOffset = kVestelAcHourOffset + 6
 
const uint8_t kVestelAcTimerFlagOffset = kVestelAcHourOffset + 7
 
const uint8_t kVestelAcMinuteOffset = 44
 
const uint8_t kVestelAcMinuteSize = 8
 
const uint64_t kVestelAcStateDefault = 0x0F00D9001FEF201ULL
 
const uint64_t kVestelAcTimeStateDefault = 0x201ULL
 
+

Detailed Description

+

Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.

+

Variable Documentation

+ +

◆ kVestelAcAuto

+ +
+
+ + + + +
const uint8_t kVestelAcAuto = 0
+
+ +
+
+ +

◆ kVestelAcBitMark

+ +
+
+ + + + +
const uint16_t kVestelAcBitMark = 520
+
+ +
+
+ +

◆ kVestelAcChecksumOffset

+ +
+
+ + + + +
const uint8_t kVestelAcChecksumOffset = 12
+
+ +
+
+ +

◆ kVestelAcChecksumSize

+ +
+
+ + + + +
const uint8_t kVestelAcChecksumSize = 8
+
+ +
+
+ +

◆ kVestelAcCool

+ +
+
+ + + + +
const uint8_t kVestelAcCool = 1
+
+ +
+
+ +

◆ kVestelAcDry

+ +
+
+ + + + +
const uint8_t kVestelAcDry = 2
+
+ +
+
+ +

◆ kVestelAcFan

+ +
+
+ + + + +
const uint8_t kVestelAcFan = 3
+
+ +
+
+ +

◆ kVestelAcFanAuto

+ +
+
+ + + + +
const uint8_t kVestelAcFanAuto = 1
+
+ +
+
+ +

◆ kVestelAcFanAutoCool

+ +
+
+ + + + +
const uint8_t kVestelAcFanAutoCool = 0xC
+
+ +
+
+ +

◆ kVestelAcFanAutoHot

+ +
+
+ + + + +
const uint8_t kVestelAcFanAutoHot = 0xD
+
+ +
+
+ +

◆ kVestelAcFanHigh

+ +
+
+ + + + +
const uint8_t kVestelAcFanHigh = 0xB
+
+ +
+
+ +

◆ kVestelAcFanLow

+ +
+
+ + + + +
const uint8_t kVestelAcFanLow = 5
+
+ +
+
+ +

◆ kVestelAcFanMed

+ +
+
+ + + + +
const uint8_t kVestelAcFanMed = 9
+
+ +
+
+ +

◆ kVestelAcFanOffset

+ +
+
+ + + + +
const uint8_t kVestelAcFanOffset = 40
+
+ +
+
+ +

◆ kVestelAcFanSize

+ +
+
+ + + + +
const uint8_t kVestelAcFanSize = 4
+
+ +
+
+ +

◆ kVestelAcHdrMark

+ +
+
+ + + + +
const uint16_t kVestelAcHdrMark = 3110
+
+ +
+
+ +

◆ kVestelAcHdrSpace

+ +
+
+ + + + +
const uint16_t kVestelAcHdrSpace = 9066
+
+ +
+
+ +

◆ kVestelAcHeat

+ +
+
+ + + + +
const uint8_t kVestelAcHeat = 4
+
+ +
+
+ +

◆ kVestelAcHourOffset

+ +
+
+ + + + +
const uint8_t kVestelAcHourOffset = 36
+
+ +
+
+ +

◆ kVestelAcHourSize

+ +
+
+ + + + +
const uint8_t kVestelAcHourSize = 5
+
+ +
+
+ +

◆ kVestelAcIon

+ +
+
+ + + + +
const uint8_t kVestelAcIon = 4
+
+ +
+
+ +

◆ kVestelAcIonOffset

+ +
+
+ + + + +
const uint8_t kVestelAcIonOffset = 50
+
+ +
+
+ +

◆ kVestelAcMaxTemp

+ +
+
+ + + + +
const uint8_t kVestelAcMaxTemp = 30
+
+ +
+
+ +

◆ kVestelAcMinTempC

+ +
+
+ + + + +
const uint8_t kVestelAcMinTempC = 18
+
+ +
+
+ +

◆ kVestelAcMinTempH

+ +
+
+ + + + +
const uint8_t kVestelAcMinTempH = 16
+
+ +
+
+ +

◆ kVestelAcMinuteOffset

+ +
+
+ + + + +
const uint8_t kVestelAcMinuteOffset = 44
+
+ +
+
+ +

◆ kVestelAcMinuteSize

+ +
+
+ + + + +
const uint8_t kVestelAcMinuteSize = 8
+
+ +
+
+ +

◆ kVestelAcModeOffset

+ +
+
+ + + + +
const uint8_t kVestelAcModeOffset = 44
+
+ +
+
+ +

◆ kVestelAcNormal

+ +
+
+ + + + +
const uint8_t kVestelAcNormal = 1
+
+ +
+
+ +

◆ kVestelAcOffTimeOffset

+ +
+
+ + + + +
const uint8_t kVestelAcOffTimeOffset = 20
+
+ +
+
+ +

◆ kVestelAcOffTimerFlagOffset

+ +
+
+ + + + +
const uint8_t kVestelAcOffTimerFlagOffset = kVestelAcHourOffset + 6
+
+ +
+
+ +

◆ kVestelAcOneSpace

+ +
+
+ + + + +
const uint16_t kVestelAcOneSpace = 1535
+
+ +
+
+ +

◆ kVestelAcOnTimeOffset

+ +
+
+ + + + +
const uint8_t kVestelAcOnTimeOffset = 28
+
+ +
+
+ +

◆ kVestelAcOnTimerFlagOffset

+ +
+
+ + + + +
const uint8_t kVestelAcOnTimerFlagOffset = kVestelAcHourOffset + 5
+
+ +
+
+ +

◆ kVestelAcPowerOffset

+ +
+
+ + + + +
const uint8_t kVestelAcPowerOffset = 52
+
+ +
+
+ +

◆ kVestelAcPowerSize

+ +
+
+ + + + +
const uint8_t kVestelAcPowerSize = 2
+
+ +
+
+ +

◆ kVestelAcSleep

+ +
+
+ + + + +
const uint8_t kVestelAcSleep = 3
+
+ +
+
+ +

◆ kVestelAcStateDefault

+ +
+
+ + + + +
const uint64_t kVestelAcStateDefault = 0x0F00D9001FEF201ULL
+
+ +
+
+ +

◆ kVestelAcSwing

+ +
+
+ + + + +
const uint8_t kVestelAcSwing = 0xA
+
+ +
+
+ +

◆ kVestelAcSwingOffset

+ +
+
+ + + + +
const uint8_t kVestelAcSwingOffset = 20
+
+ +
+
+ +

◆ kVestelAcTempOffset

+ +
+
+ + + + +
const uint8_t kVestelAcTempOffset = 36
+
+ +
+
+ +

◆ kVestelAcTimerFlagOffset

+ +
+
+ + + + +
const uint8_t kVestelAcTimerFlagOffset = kVestelAcHourOffset + 7
+
+ +
+
+ +

◆ kVestelAcTimerHourSize

+ +
+
+ + + + +
const uint8_t kVestelAcTimerHourSize = 5
+
+ +
+
+ +

◆ kVestelAcTimerMinsSize

+ +
+
+ + + + +
const uint8_t kVestelAcTimerMinsSize = 3
+
+ +
+
+ +

◆ kVestelAcTimerSize

+ +
+
+ + + + +
const uint8_t kVestelAcTimerSize
+
+
+ +

◆ kVestelAcTimeStateDefault

+ +
+
+ + + + +
const uint64_t kVestelAcTimeStateDefault = 0x201ULL
+
+ +
+
+ +

◆ kVestelAcTolerance

+ +
+
+ + + + +
const uint16_t kVestelAcTolerance = 30
+
+ +
+
+ +

◆ kVestelAcTurbo

+ +
+
+ + + + +
const uint8_t kVestelAcTurbo = 7
+
+ +
+
+ +

◆ kVestelAcTurboSleepOffset

+ +
+
+ + + + +
const uint8_t kVestelAcTurboSleepOffset = 24
+
+ +
+
+ +

◆ kVestelAcZeroSpace

+ +
+
+ + + + +
const uint16_t kVestelAcZeroSpace = 480
+
+ +
+
+
+
const uint8_t kVestelAcTimerHourSize
Definition: ir_Vestel.h:99
+
const uint8_t kVestelAcTimerMinsSize
Definition: ir_Vestel.h:100
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h_source.html new file mode 100644 index 000000000..e737cba4c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Vestel_8h_source.html @@ -0,0 +1,378 @@ + + + + + + + +IRremoteESP8266: src/ir_Vestel.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Vestel.h
+
+
+Go to the documentation of this file.
1 // Copyright 2018 Erdem U. Altinyurt
+
2 // Copyright 2019 David Conran
+
3 
+
7 
+
8 // Supports:
+
9 // Brand: Vestel, Model: BIOX CXP-9 A/C (9K BTU)
+
10 
+
11 #ifndef IR_VESTEL_H_
+
12 #define IR_VESTEL_H_
+
13 
+
14 #define __STDC_LIMIT_MACROS
+
15 #include <stdint.h>
+
16 #ifdef ARDUINO
+
17 #include <Arduino.h>
+
18 #endif
+
19 #include "IRremoteESP8266.h"
+
20 #include "IRsend.h"
+
21 #ifdef UNIT_TEST
+
22 #include "IRsend_test.h"
+
23 #endif
+
24 
+
25 
+
26 // Structure of a Command message (56 bits)
+
27 // Signature: 12 bits. e.g. 0x201
+
28 // Checksum: 8 bits
+
29 // Swing: 4 bits. (auto 0xA, stop 0xF)
+
30 // turbo_sleep_normal: 4bits. (normal 0x1, sleep 0x3, turbo 0x7)
+
31 // Unused: 8 bits. (0x00)
+
32 // Temperature: 4 bits. (Celsius, but offset by -16 degrees. e.g. 0x0 = 16C)
+
33 // Fan Speed: 4 bits (auto 0x1, low 0x5, mid 0x9, high 0xB, 0xD auto hot,
+
34 // 0xC auto cool)
+
35 // Mode: 3 bits. (auto 0x0, cold 0x1, dry 0x2, fan 0x3, hot 0x4)
+
36 // unknown/unused: 6 bits.
+
37 // Ion flag: 1 bit.
+
38 // unknown/unused: 1 bit.
+
39 // Power/message type: 4 bits. (on 0xF, off 0xC, 0x0 == Timer mesage)
+
40 //
+
41 // Structure of a Time(r) message (56 bits)
+
42 // Signature: 12 bits. e.g. 0x201
+
43 // Checksum: 8 bits
+
44 // Off Minutes: 3 bits. (Stored in 10 min increments. eg. xx:20 is 0x2)
+
45 // Off Hours: 5 bits. (0x17 == 11PM / 23:00)
+
46 // On Minutes: 3 bits. (Stored in 10 min increments. eg. xx:20 is 0x2)
+
47 // On Hours: 5 bits. (0x9 == 9AM / 09:00)
+
48 // Clock Hours: 5 bits.
+
49 // On Timer flag: 1 bit.
+
50 // Off Timer flag: 1 bit.
+
51 // Timer mode flag: 1 bit. (Off after X many hours/mins, not at clock time.)
+
52 // Clock Minutes: 8 bits. (0-59)
+
53 // Power/message type: 4 bits. (0x0 == Timer mesage, else see Comman message)
+
54 
+
55 // Constants
+
56 const uint16_t kVestelAcHdrMark = 3110;
+
57 const uint16_t kVestelAcHdrSpace = 9066;
+
58 const uint16_t kVestelAcBitMark = 520;
+
59 const uint16_t kVestelAcOneSpace = 1535;
+
60 const uint16_t kVestelAcZeroSpace = 480;
+
61 const uint16_t kVestelAcTolerance = 30;
+
62 
+
63 const uint8_t kVestelAcMinTempH = 16;
+
64 const uint8_t kVestelAcMinTempC = 18;
+
65 const uint8_t kVestelAcMaxTemp = 30;
+
66 
+
67 const uint8_t kVestelAcAuto = 0;
+
68 const uint8_t kVestelAcCool = 1;
+
69 const uint8_t kVestelAcDry = 2;
+
70 const uint8_t kVestelAcFan = 3;
+
71 const uint8_t kVestelAcHeat = 4;
+
72 
+
73 const uint8_t kVestelAcFanAuto = 1;
+
74 const uint8_t kVestelAcFanLow = 5;
+
75 const uint8_t kVestelAcFanMed = 9;
+
76 const uint8_t kVestelAcFanHigh = 0xB;
+
77 const uint8_t kVestelAcFanAutoCool = 0xC;
+
78 const uint8_t kVestelAcFanAutoHot = 0xD;
+
79 
+
80 const uint8_t kVestelAcNormal = 1;
+
81 const uint8_t kVestelAcSleep = 3;
+
82 const uint8_t kVestelAcTurbo = 7;
+
83 const uint8_t kVestelAcIon = 4;
+
84 const uint8_t kVestelAcSwing = 0xA;
+
85 
+
86 const uint8_t kVestelAcChecksumOffset = 12;
+
87 const uint8_t kVestelAcChecksumSize = 8; // Nr. of bits
+
88 const uint8_t kVestelAcSwingOffset = 20;
+
89 const uint8_t kVestelAcTurboSleepOffset = 24;
+
90 const uint8_t kVestelAcTempOffset = 36;
+
91 const uint8_t kVestelAcFanOffset = 40;
+
92 const uint8_t kVestelAcFanSize = 4; // Nr. of bits
+
93 const uint8_t kVestelAcModeOffset = 44;
+
94 const uint8_t kVestelAcIonOffset = 50;
+
95 const uint8_t kVestelAcPowerOffset = 52;
+
96 const uint8_t kVestelAcPowerSize = 2; // Nr. of bits
+
97 const uint8_t kVestelAcOffTimeOffset = 20;
+
98 const uint8_t kVestelAcOnTimeOffset = 28;
+
99 const uint8_t kVestelAcTimerHourSize = 5; // Nr. of bits
+
100 const uint8_t kVestelAcTimerMinsSize = 3; // Nr. of bits
+ +
102  kVestelAcTimerMinsSize; // Nr. of bits
+
103 const uint8_t kVestelAcHourOffset = 36; // 5 bits
+
104 const uint8_t kVestelAcHourSize = 5; // Nr. of bits
+ + + +
108 const uint8_t kVestelAcMinuteOffset = 44;
+
109 const uint8_t kVestelAcMinuteSize = 8; // Nr. of bits
+
110 // Default states
+
111 const uint64_t kVestelAcStateDefault = 0x0F00D9001FEF201ULL;
+
112 const uint64_t kVestelAcTimeStateDefault = 0x201ULL;
+
113 
+
114 // Classes
+
116 class IRVestelAc {
+
117  public:
+
118  explicit IRVestelAc(const uint16_t pin, const bool inverted = false,
+
119  const bool use_modulation = true);
+
120  void stateReset(void);
+
121 #if SEND_VESTEL_AC
+
122  void send(const uint16_t repeat = kNoRepeat);
+
127  int8_t calibrate(void) { return _irsend.calibrate(); }
+
128 #endif // SEND_VESTEL_AC
+
129  void begin(void);
+
130  void on(void);
+
131  void off(void);
+
132  void setPower(const bool on);
+
133  bool getPower(void);
+
134  void setAuto(const int8_t autoLevel);
+
135  void setTimer(const uint16_t minutes);
+
136  uint16_t getTimer(void);
+
137  void setTime(const uint16_t minutes);
+
138  uint16_t getTime(void);
+
139  void setOnTimer(const uint16_t minutes);
+
140  uint16_t getOnTimer(void);
+
141  void setOffTimer(const uint16_t minutes);
+
142  uint16_t getOffTimer(void);
+
143  void setTemp(const uint8_t temp);
+
144  uint8_t getTemp(void);
+
145  void setFan(const uint8_t fan);
+
146  uint8_t getFan(void);
+
147  void setMode(const uint8_t mode);
+
148  uint8_t getMode(void);
+
149  void setRaw(const uint8_t* newState);
+
150  void setRaw(const uint64_t newState);
+
151  uint64_t getRaw(void);
+
152  static bool validChecksum(const uint64_t state);
+
153  void setSwing(const bool on);
+
154  bool getSwing(void);
+
155  void setSleep(const bool on);
+
156  bool getSleep(void);
+
157  void setTurbo(const bool on);
+
158  bool getTurbo(void);
+
159  void setIon(const bool on);
+
160  bool getIon(void);
+
161  bool isTimeCommand(void);
+
162  bool isOnTimerActive(void);
+
163  void setOnTimerActive(const bool on);
+
164  bool isOffTimerActive(void);
+
165  void setOffTimerActive(const bool on);
+
166  bool isTimerActive(void);
+
167  void setTimerActive(const bool on);
+
168  static uint8_t calcChecksum(const uint64_t state);
+
169  static uint8_t convertMode(const stdAc::opmode_t mode);
+
170  static uint8_t convertFan(const stdAc::fanspeed_t speed);
+
171  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
172  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
173  stdAc::state_t toCommon(void);
+
174  String toString(void);
+
175 #ifndef UNIT_TEST
+
176 
+
177  private:
+ +
179 #else // UNIT_TEST
+
180  IRsendTest _irsend;
+
182 #endif // UNIT_TEST
+
184  uint64_t remote_state;
+
185  uint64_t remote_time_state;
+ +
187  void checksum(void);
+
188  void _setTimer(const uint16_t minutes, const uint8_t offset);
+
189  uint16_t _getTimer(const uint8_t offset);
+
190 };
+
191 
+
192 #endif // IR_VESTEL_H_
+
+
const uint16_t kVestelAcHdrSpace
Definition: ir_Vestel.h:57
+
const uint8_t kVestelAcOffTimeOffset
Definition: ir_Vestel.h:97
+
const uint8_t kVestelAcFanAutoHot
Definition: ir_Vestel.h:78
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Vestel.cpp:60
+
uint16_t getOffTimer(void)
Get the A/C's Off Timer time.
Definition: ir_Vestel.cpp:330
+
const uint8_t kVestelAcTimerHourSize
Definition: ir_Vestel.h:99
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Vestel.cpp:478
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Vestel.cpp:67
+
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Vestel.cpp:147
+
const uint8_t kVestelAcHourSize
Definition: ir_Vestel.h:104
+
const uint8_t kVestelAcFanOffset
Definition: ir_Vestel.h:91
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Vestel.cpp:130
+
void setOffTimerActive(const bool on)
Set the Off timer to be active on the A/C.
Definition: ir_Vestel.cpp:310
+
void setTime(const uint16_t minutes)
Set the A/C's internal clock.
Definition: ir_Vestel.cpp:247
+
const uint8_t kVestelAcMaxTemp
Definition: ir_Vestel.h:65
+
void setPower(const bool on)
Change the power setting.
Definition: ir_Vestel.cpp:116
+
bool isTimeCommand(void)
Is the current state a time command?
Definition: ir_Vestel.cpp:419
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
const uint8_t kVestelAcSleep
Definition: ir_Vestel.h:81
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Vestel.h:127
+
const uint8_t kVestelAcDry
Definition: ir_Vestel.h:69
+
const uint16_t kVestelAcBitMark
Definition: ir_Vestel.h:58
+
const uint8_t kVestelAcAuto
Definition: ir_Vestel.h:67
+
const uint8_t kVestelAcFanMed
Definition: ir_Vestel.h:75
+
void setTurbo(const bool on)
Set the Turbo setting of the A/C.
Definition: ir_Vestel.cpp:351
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Vestel.h:178
+
void setTimer(const uint16_t minutes)
Set Timer option of A/C.
Definition: ir_Vestel.cpp:228
+
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Vestel.cpp:109
+
uint16_t _getTimer(const uint8_t offset)
Get the number of minutes a timer is set for.
Definition: ir_Vestel.cpp:289
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Vestel.cpp:178
+ +
bool isOffTimerActive(void)
Get if the Off Timer is active on the A/C.
Definition: ir_Vestel.cpp:317
+
const uint8_t kVestelAcMinuteSize
Definition: ir_Vestel.h:109
+
const uint8_t kVestelAcMinTempC
Definition: ir_Vestel.h:64
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kVestelAcChecksumSize
Definition: ir_Vestel.h:87
+
uint16_t getTimer(void)
Get the Timer time of A/C.
Definition: ir_Vestel.cpp:243
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kVestelAcFanSize
Definition: ir_Vestel.h:92
+
const uint8_t kVestelAcSwingOffset
Definition: ir_Vestel.h:88
+
bool isOnTimerActive(void)
Get if the On Timer is active on the A/C.
Definition: ir_Vestel.cpp:272
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kVestelAcTimerFlagOffset
Definition: ir_Vestel.h:107
+
bool isTimerActive(void)
Get if the Timer is active on the A/C.
Definition: ir_Vestel.cpp:220
+
void setRaw(const uint8_t *newState)
Set the internal state from a valid code for this protocol.
Definition: ir_Vestel.cpp:87
+
const uint8_t kVestelAcFan
Definition: ir_Vestel.h:70
+ +
const uint8_t kVestelAcMinTempH
Definition: ir_Vestel.h:63
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Vestel.cpp:140
+
const uint16_t kVestelAcHdrMark
Definition: ir_Vestel.h:56
+
const uint16_t kNoRepeat
Definition: IRremoteESP8266.h:810
+
uint64_t remote_time_state
The time state of the remote in code form.
Definition: ir_Vestel.h:185
+
const uint8_t kVestelAcOnTimerFlagOffset
Definition: ir_Vestel.h:105
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Vestel.cpp:454
+
uint64_t remote_state
The state of the IR remote in IR code form.
Definition: ir_Vestel.h:184
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Vestel.cpp:344
+
const uint16_t kVestelAcOneSpace
Definition: ir_Vestel.h:59
+
void checksum(void)
Calculate & set the checksum for the current internal state of the remote.
Definition: ir_Vestel.cpp:409
+
void setSwing(const bool on)
Set the Swing Roaming setting of the A/C.
Definition: ir_Vestel.cpp:379
+
bool getTurbo(void)
Get the Turbo setting of the A/C.
Definition: ir_Vestel.cpp:359
+
const uint8_t kVestelAcTempOffset
Definition: ir_Vestel.h:90
+
void setOffTimer(const uint16_t minutes)
Set the Off timer time on the A/C.
Definition: ir_Vestel.cpp:323
+
const uint8_t kVestelAcTimerMinsSize
Definition: ir_Vestel.h:100
+
void setOnTimerActive(const bool on)
Set the On timer to be active on the A/C.
Definition: ir_Vestel.cpp:265
+
const uint8_t kVestelAcHourOffset
Definition: ir_Vestel.h:103
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Vestel.cpp:467
+
void send(const uint16_t repeat=kNoRepeat)
Send the current internal state as an IR message.
Definition: ir_Vestel.cpp:72
+
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Vestel.cpp:112
+
const uint8_t kVestelAcFanAutoCool
Definition: ir_Vestel.h:77
+
const uint64_t kVestelAcStateDefault
Definition: ir_Vestel.h:111
+
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Vestel.cpp:427
+
void setIon(const bool on)
Set the Ion (Filter) setting of the A/C.
Definition: ir_Vestel.cpp:366
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Vestel.cpp:505
+
const uint16_t kVestelAcTolerance
Definition: ir_Vestel.h:61
+
const uint8_t kVestelAcFanLow
Definition: ir_Vestel.h:74
+
const uint8_t kVestelAcChecksumOffset
Definition: ir_Vestel.h:86
+
const uint8_t kVestelAcPowerSize
Definition: ir_Vestel.h:96
+
const uint8_t kVestelAcSwing
Definition: ir_Vestel.h:84
+
const uint8_t kVestelAcIonOffset
Definition: ir_Vestel.h:94
+
const uint8_t kVestelAcOnTimeOffset
Definition: ir_Vestel.h:98
+
const uint16_t kVestelAcZeroSpace
Definition: ir_Vestel.h:60
+
const uint8_t kVestelAcMinuteOffset
Definition: ir_Vestel.h:108
+
const uint64_t kVestelAcTimeStateDefault
Definition: ir_Vestel.h:112
+
uint16_t getTime(void)
Get the A/C's internal clock's time.
Definition: ir_Vestel.cpp:257
+
const uint8_t kVestelAcTurboSleepOffset
Definition: ir_Vestel.h:89
+
const uint8_t kVestelAcTurbo
Definition: ir_Vestel.h:82
+
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Vestel.cpp:124
+
static uint8_t calcChecksum(const uint64_t state)
Calculate the checksum for a given state.
Definition: ir_Vestel.cpp:395
+
uint64_t getRaw(void)
Get a copy of the internal state/code for this protocol.
Definition: ir_Vestel.cpp:79
+
const uint8_t kVestelAcHeat
Definition: ir_Vestel.h:71
+
const uint8_t kVestelAcNormal
Definition: ir_Vestel.h:80
+
const uint8_t kVestelAcFanHigh
Definition: ir_Vestel.h:76
+
const uint8_t kVestelAcTimerSize
Definition: ir_Vestel.h:101
+
IRVestelAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Vestel.cpp:54
+
Class for handling detailed Vestel A/C messages.
Definition: ir_Vestel.h:116
+
bool getIon(void)
Get the Ion (Filter) setting of the A/C.
Definition: ir_Vestel.cpp:373
+
const uint8_t kVestelAcCool
Definition: ir_Vestel.h:68
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Vestel.cpp:171
+
uint16_t getOnTimer(void)
Get the A/C's On Timer time.
Definition: ir_Vestel.cpp:304
+
void setTimerActive(const bool on)
Set the timer to be active on the A/C.
Definition: ir_Vestel.cpp:213
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Vestel.cpp:336
+
void _setTimer(const uint16_t minutes, const uint8_t offset)
Set a given timer time at a given bit offset.
Definition: ir_Vestel.cpp:279
+
bool use_time_state
Definition: ir_Vestel.h:186
+
const uint8_t kVestelAcOffTimerFlagOffset
Definition: ir_Vestel.h:106
+
const uint8_t kVestelAcModeOffset
Definition: ir_Vestel.h:93
+
const uint8_t kVestelAcIon
Definition: ir_Vestel.h:83
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Vestel.cpp:165
+
bool getSwing(void)
Get the Swing Roaming setting of the A/C.
Definition: ir_Vestel.cpp:387
+
const uint8_t kVestelAcPowerOffset
Definition: ir_Vestel.h:95
+
static bool validChecksum(const uint64_t state)
Verify the checksum is valid for a given state.
Definition: ir_Vestel.cpp:403
+
void setAuto(const int8_t autoLevel)
Set Auto mode/level of the A/C.
Definition: ir_Vestel.cpp:195
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
const uint8_t kVestelAcFanAuto
Definition: ir_Vestel.h:73
+
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Vestel.cpp:440
+
void setOnTimer(const uint16_t minutes)
Set the On timer time on the A/C.
Definition: ir_Vestel.cpp:297
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8cpp.html new file mode 100644 index 000000000..95fcdadbf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8cpp.html @@ -0,0 +1,224 @@ + + + + + + + +IRremoteESP8266: src/ir_Whirlpool.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Whirlpool.cpp File Reference
+
+
+ +

Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea. +More...

+ + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kWhirlpoolAcHdrMark = 8950
 
const uint16_t kWhirlpoolAcHdrSpace = 4484
 
const uint16_t kWhirlpoolAcBitMark = 597
 
const uint16_t kWhirlpoolAcOneSpace = 1649
 
const uint16_t kWhirlpoolAcZeroSpace = 533
 
const uint16_t kWhirlpoolAcGap = 7920
 
const uint32_t kWhirlpoolAcMinGap = kDefaultMessageGap
 
const uint8_t kWhirlpoolAcSections = 3
 
+

Detailed Description

+

Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/509
+
Note
Smart, iFeel, AroundU, PowerSave, & Silent modes are unsupported. Advanced 6thSense, Dehumidify, & Sleep modes are not supported.
+
+Dim == !Light, Jet == Super == Turbo
+

Variable Documentation

+ +

◆ kWhirlpoolAcBitMark

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcBitMark = 597
+
+ +
+
+ +

◆ kWhirlpoolAcGap

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcGap = 7920
+
+ +
+
+ +

◆ kWhirlpoolAcHdrMark

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcHdrMark = 8950
+
+ +
+
+ +

◆ kWhirlpoolAcHdrSpace

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcHdrSpace = 4484
+
+ +
+
+ +

◆ kWhirlpoolAcMinGap

+ +
+
+ + + + +
const uint32_t kWhirlpoolAcMinGap = kDefaultMessageGap
+
+ +
+
+ +

◆ kWhirlpoolAcOneSpace

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcOneSpace = 1649
+
+ +
+
+ +

◆ kWhirlpoolAcSections

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcSections = 3
+
+ +
+
+ +

◆ kWhirlpoolAcZeroSpace

+ +
+
+ + + + +
const uint16_t kWhirlpoolAcZeroSpace = 533
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h.html new file mode 100644 index 000000000..555b83ade --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h.html @@ -0,0 +1,937 @@ + + + + + + + +IRremoteESP8266: src/ir_Whirlpool.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Whirlpool.h File Reference
+
+
+ +

Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IRWhirlpoolAc
 Class for handling detailed Whirlpool A/C messages. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint8_t kWhirlpoolAcChecksumByte1 = 13
 
const uint8_t kWhirlpoolAcChecksumByte2 = kWhirlpoolAcStateLength - 1
 
const uint8_t kWhirlpoolAcHeat = 0
 
const uint8_t kWhirlpoolAcAuto = 1
 
const uint8_t kWhirlpoolAcCool = 2
 
const uint8_t kWhirlpoolAcDry = 3
 
const uint8_t kWhirlpoolAcFan = 4
 
const uint8_t kWhirlpoolAcModeOffset = 0
 
const uint8_t kWhirlpoolAcModePos = 3
 
const uint8_t kWhirlpoolAcFanOffset = 0
 
const uint8_t kWhirlpoolAcFanSize = 2
 
const uint8_t kWhirlpoolAcFanAuto = 0
 
const uint8_t kWhirlpoolAcFanHigh = 1
 
const uint8_t kWhirlpoolAcFanMedium = 2
 
const uint8_t kWhirlpoolAcFanLow = 3
 
const uint8_t kWhirlpoolAcFanPos = 2
 
const uint8_t kWhirlpoolAcMinTemp = 18
 
const uint8_t kWhirlpoolAcMaxTemp = 32
 
const uint8_t kWhirlpoolAcAutoTemp = 23
 
const uint8_t kWhirlpoolAcTempPos = 3
 
const uint8_t kWhirlpoolAcSwing1Offset = 7
 
const uint8_t kWhirlpoolAcSwing2Offset = 6
 
const uint8_t kWhirlpoolAcLightOffset = 5
 
const uint8_t kWhirlpoolAcPowerToggleOffset = 2
 
const uint8_t kWhirlpoolAcPowerTogglePos = 2
 
const uint8_t kWhirlpoolAcSleepOffset = 3
 
const uint8_t kWhirlpoolAcSleepPos = 2
 
const uint8_t kWhirlpoolAcSuperMask = 0b10010000
 
const uint8_t kWhirlpoolAcSuperPos = 5
 
const uint8_t kWhirlpoolAcHourOffset = 0
 
const uint8_t kWhirlpoolAcHourSize = 5
 
const uint8_t kWhirlpoolAcMinuteOffset = 0
 
const uint8_t kWhirlpoolAcMinuteSize = 6
 
const uint8_t kWhirlpoolAcTimerEnableOffset = 7
 
const uint8_t kWhirlpoolAcClockPos = 6
 
const uint8_t kWhirlpoolAcOffTimerPos = 8
 
const uint8_t kWhirlpoolAcOnTimerPos = 10
 
const uint8_t kWhirlpoolAcCommandPos = 15
 
const uint8_t kWhirlpoolAcCommandLight = 0x00
 
const uint8_t kWhirlpoolAcCommandPower = 0x01
 
const uint8_t kWhirlpoolAcCommandTemp = 0x02
 
const uint8_t kWhirlpoolAcCommandSleep = 0x03
 
const uint8_t kWhirlpoolAcCommandSuper = 0x04
 
const uint8_t kWhirlpoolAcCommandOnTimer = 0x05
 
const uint8_t kWhirlpoolAcCommandMode = 0x06
 
const uint8_t kWhirlpoolAcCommandSwing = 0x07
 
const uint8_t kWhirlpoolAcCommandIFeel = 0x0D
 
const uint8_t kWhirlpoolAcCommandFanSpeed = 0x11
 
const uint8_t kWhirlpoolAcCommand6thSense = 0x17
 
const uint8_t kWhirlpoolAcCommandOffTimer = 0x1D
 
const uint8_t kWhirlpoolAcAltTempOffset = 3
 
const uint8_t kWhirlpoolAcAltTempPos = 18
 
+

Detailed Description

+

Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.

+
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/509
+
Note
Smart, iFeel, AroundU, PowerSave, & Silent modes are unsupported. Advanced 6thSense, Dehumidify, & Sleep modes are not supported.
+
+Dim == !Light, Jet == Super == Turbo
+

Variable Documentation

+ +

◆ kWhirlpoolAcAltTempOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcAltTempOffset = 3
+
+ +
+
+ +

◆ kWhirlpoolAcAltTempPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcAltTempPos = 18
+
+ +
+
+ +

◆ kWhirlpoolAcAuto

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcAuto = 1
+
+ +
+
+ +

◆ kWhirlpoolAcAutoTemp

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcAutoTemp = 23
+
+ +
+
+ +

◆ kWhirlpoolAcChecksumByte1

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcChecksumByte1 = 13
+
+ +
+
+ +

◆ kWhirlpoolAcChecksumByte2

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcChecksumByte2 = kWhirlpoolAcStateLength - 1
+
+ +
+
+ +

◆ kWhirlpoolAcClockPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcClockPos = 6
+
+ +
+
+ +

◆ kWhirlpoolAcCommand6thSense

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommand6thSense = 0x17
+
+ +
+
+ +

◆ kWhirlpoolAcCommandFanSpeed

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandFanSpeed = 0x11
+
+ +
+
+ +

◆ kWhirlpoolAcCommandIFeel

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandIFeel = 0x0D
+
+ +
+
+ +

◆ kWhirlpoolAcCommandLight

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandLight = 0x00
+
+ +
+
+ +

◆ kWhirlpoolAcCommandMode

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandMode = 0x06
+
+ +
+
+ +

◆ kWhirlpoolAcCommandOffTimer

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandOffTimer = 0x1D
+
+ +
+
+ +

◆ kWhirlpoolAcCommandOnTimer

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandOnTimer = 0x05
+
+ +
+
+ +

◆ kWhirlpoolAcCommandPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandPos = 15
+
+ +
+
+ +

◆ kWhirlpoolAcCommandPower

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandPower = 0x01
+
+ +
+
+ +

◆ kWhirlpoolAcCommandSleep

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandSleep = 0x03
+
+ +
+
+ +

◆ kWhirlpoolAcCommandSuper

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandSuper = 0x04
+
+ +
+
+ +

◆ kWhirlpoolAcCommandSwing

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandSwing = 0x07
+
+ +
+
+ +

◆ kWhirlpoolAcCommandTemp

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCommandTemp = 0x02
+
+ +
+
+ +

◆ kWhirlpoolAcCool

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcCool = 2
+
+ +
+
+ +

◆ kWhirlpoolAcDry

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcDry = 3
+
+ +
+
+ +

◆ kWhirlpoolAcFan

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFan = 4
+
+ +
+
+ +

◆ kWhirlpoolAcFanAuto

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFanAuto = 0
+
+ +
+
+ +

◆ kWhirlpoolAcFanHigh

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFanHigh = 1
+
+ +
+
+ +

◆ kWhirlpoolAcFanLow

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFanLow = 3
+
+ +
+
+ +

◆ kWhirlpoolAcFanMedium

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFanMedium = 2
+
+ +
+
+ +

◆ kWhirlpoolAcFanOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFanOffset = 0
+
+ +
+
+ +

◆ kWhirlpoolAcFanPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFanPos = 2
+
+ +
+
+ +

◆ kWhirlpoolAcFanSize

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcFanSize = 2
+
+ +
+
+ +

◆ kWhirlpoolAcHeat

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcHeat = 0
+
+ +
+
+ +

◆ kWhirlpoolAcHourOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcHourOffset = 0
+
+ +
+
+ +

◆ kWhirlpoolAcHourSize

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcHourSize = 5
+
+ +
+
+ +

◆ kWhirlpoolAcLightOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcLightOffset = 5
+
+ +
+
+ +

◆ kWhirlpoolAcMaxTemp

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcMaxTemp = 32
+
+ +
+
+ +

◆ kWhirlpoolAcMinTemp

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcMinTemp = 18
+
+ +
+
+ +

◆ kWhirlpoolAcMinuteOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcMinuteOffset = 0
+
+ +
+
+ +

◆ kWhirlpoolAcMinuteSize

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcMinuteSize = 6
+
+ +
+
+ +

◆ kWhirlpoolAcModeOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcModeOffset = 0
+
+ +
+
+ +

◆ kWhirlpoolAcModePos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcModePos = 3
+
+ +
+
+ +

◆ kWhirlpoolAcOffTimerPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcOffTimerPos = 8
+
+ +
+
+ +

◆ kWhirlpoolAcOnTimerPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcOnTimerPos = 10
+
+ +
+
+ +

◆ kWhirlpoolAcPowerToggleOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcPowerToggleOffset = 2
+
+ +
+
+ +

◆ kWhirlpoolAcPowerTogglePos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcPowerTogglePos = 2
+
+ +
+
+ +

◆ kWhirlpoolAcSleepOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcSleepOffset = 3
+
+ +
+
+ +

◆ kWhirlpoolAcSleepPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcSleepPos = 2
+
+ +
+
+ +

◆ kWhirlpoolAcSuperMask

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcSuperMask = 0b10010000
+
+ +
+
+ +

◆ kWhirlpoolAcSuperPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcSuperPos = 5
+
+ +
+
+ +

◆ kWhirlpoolAcSwing1Offset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcSwing1Offset = 7
+
+ +
+
+ +

◆ kWhirlpoolAcSwing2Offset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcSwing2Offset = 6
+
+ +
+
+ +

◆ kWhirlpoolAcTempPos

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcTempPos = 3
+
+ +
+
+ +

◆ kWhirlpoolAcTimerEnableOffset

+ +
+
+ + + + +
const uint8_t kWhirlpoolAcTimerEnableOffset = 7
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h_source.html new file mode 100644 index 000000000..380cd8281 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whirlpool_8h_source.html @@ -0,0 +1,353 @@ + + + + + + + +IRremoteESP8266: src/ir_Whirlpool.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ir_Whirlpool.h
+
+
+Go to the documentation of this file.
1 // Copyright 2018 David Conran
+
2 
+
10 
+
11 // Supports:
+
12 // Brand: Whirlpool, Model: DG11J1-3A remote
+
13 // Brand: Whirlpool, Model: DG11J1-04 remote
+
14 // Brand: Whirlpool, Model: DG11J1-91 remote
+
15 // Brand: Whirlpool, Model: SPIS409L A/C
+
16 // Brand: Whirlpool, Model: SPIS412L A/C
+
17 // Brand: Whirlpool, Model: SPIW409L A/C
+
18 // Brand: Whirlpool, Model: SPIW412L A/C
+
19 // Brand: Whirlpool, Model: SPIW418L A/C
+
20 
+
21 #ifndef IR_WHIRLPOOL_H_
+
22 #define IR_WHIRLPOOL_H_
+
23 
+
24 #define __STDC_LIMIT_MACROS
+
25 #include <stdint.h>
+
26 #ifndef UNIT_TEST
+
27 #include <Arduino.h>
+
28 #endif
+
29 #include "IRremoteESP8266.h"
+
30 #include "IRsend.h"
+
31 #ifdef UNIT_TEST
+
32 #include "IRsend_test.h"
+
33 #endif
+
34 
+
35 // Constants
+
36 const uint8_t kWhirlpoolAcChecksumByte1 = 13;
+ +
38 const uint8_t kWhirlpoolAcHeat = 0;
+
39 const uint8_t kWhirlpoolAcAuto = 1;
+
40 const uint8_t kWhirlpoolAcCool = 2;
+
41 const uint8_t kWhirlpoolAcDry = 3;
+
42 const uint8_t kWhirlpoolAcFan = 4;
+
43 const uint8_t kWhirlpoolAcModeOffset = 0;
+
44 const uint8_t kWhirlpoolAcModePos = 3;
+
45 const uint8_t kWhirlpoolAcFanOffset = 0; // Mask 0b00000011
+
46 const uint8_t kWhirlpoolAcFanSize = 2; // Nr. of bits
+
47 const uint8_t kWhirlpoolAcFanAuto = 0;
+
48 const uint8_t kWhirlpoolAcFanHigh = 1;
+
49 const uint8_t kWhirlpoolAcFanMedium = 2;
+
50 const uint8_t kWhirlpoolAcFanLow = 3;
+
51 const uint8_t kWhirlpoolAcFanPos = 2;
+
52 const uint8_t kWhirlpoolAcMinTemp = 18; // 18C (DG11J1-3A), 16C (DG11J1-91)
+
53 const uint8_t kWhirlpoolAcMaxTemp = 32; // 32C (DG11J1-3A), 30C (DG11J1-91)
+
54 const uint8_t kWhirlpoolAcAutoTemp = 23; // 23C
+
55 const uint8_t kWhirlpoolAcTempPos = 3;
+
56 const uint8_t kWhirlpoolAcSwing1Offset = 7;
+
57 const uint8_t kWhirlpoolAcSwing2Offset = 6;
+
58 const uint8_t kWhirlpoolAcLightOffset = 5;
+
59 const uint8_t kWhirlpoolAcPowerToggleOffset = 2; // 0b00000100
+
60 const uint8_t kWhirlpoolAcPowerTogglePos = 2;
+
61 const uint8_t kWhirlpoolAcSleepOffset = 3;
+
62 const uint8_t kWhirlpoolAcSleepPos = 2;
+
63 const uint8_t kWhirlpoolAcSuperMask = 0b10010000;
+
64 const uint8_t kWhirlpoolAcSuperPos = 5;
+
65 const uint8_t kWhirlpoolAcHourOffset = 0; // Mask 0b00011111
+
66 const uint8_t kWhirlpoolAcHourSize = 5; // Nr. of bits
+
67 const uint8_t kWhirlpoolAcMinuteOffset = 0; // Mask 0b00111111
+
68 const uint8_t kWhirlpoolAcMinuteSize = 6; // Nr. of bits
+
69 const uint8_t kWhirlpoolAcTimerEnableOffset = 7; // 0b10000000
+
70 const uint8_t kWhirlpoolAcClockPos = 6;
+
71 const uint8_t kWhirlpoolAcOffTimerPos = 8;
+
72 const uint8_t kWhirlpoolAcOnTimerPos = 10;
+
73 const uint8_t kWhirlpoolAcCommandPos = 15;
+
74 const uint8_t kWhirlpoolAcCommandLight = 0x00;
+
75 const uint8_t kWhirlpoolAcCommandPower = 0x01;
+
76 const uint8_t kWhirlpoolAcCommandTemp = 0x02;
+
77 const uint8_t kWhirlpoolAcCommandSleep = 0x03;
+
78 const uint8_t kWhirlpoolAcCommandSuper = 0x04;
+
79 const uint8_t kWhirlpoolAcCommandOnTimer = 0x05;
+
80 const uint8_t kWhirlpoolAcCommandMode = 0x06;
+
81 const uint8_t kWhirlpoolAcCommandSwing = 0x07;
+
82 const uint8_t kWhirlpoolAcCommandIFeel = 0x0D;
+
83 const uint8_t kWhirlpoolAcCommandFanSpeed = 0x11;
+
84 const uint8_t kWhirlpoolAcCommand6thSense = 0x17;
+
85 const uint8_t kWhirlpoolAcCommandOffTimer = 0x1D;
+
86 const uint8_t kWhirlpoolAcAltTempOffset = 3;
+
87 const uint8_t kWhirlpoolAcAltTempPos = 18;
+
88 
+
89 // Classes
+ +
92  public:
+
93  explicit IRWhirlpoolAc(const uint16_t pin, const bool inverted = false,
+
94  const bool use_modulation = true);
+
95  void stateReset(void);
+
96 #if SEND_WHIRLPOOL_AC
+
97  void send(const uint16_t repeat = kWhirlpoolAcDefaultRepeat,
+
98  const bool calcchecksum = true);
+
103  int8_t calibrate(void) { return _irsend.calibrate(); }
+
104 #endif // SEND_WHIRLPOOL_AC
+
105  void begin(void);
+
106  void setPowerToggle(const bool on);
+
107  bool getPowerToggle(void);
+
108  void setSleep(const bool on);
+
109  bool getSleep(void);
+
110  void setSuper(const bool on);
+
111  bool getSuper(void);
+
112  void setTemp(const uint8_t temp);
+
113  uint8_t getTemp(void);
+
114  void setFan(const uint8_t speed);
+
115  uint8_t getFan(void);
+
116  void setMode(const uint8_t mode);
+
117  uint8_t getMode(void);
+
118  void setSwing(const bool on);
+
119  bool getSwing(void);
+
120  void setLight(const bool on);
+
121  bool getLight(void);
+
122  uint16_t getClock(void);
+
123  void setClock(const uint16_t minspastmidnight);
+
124  uint16_t getOnTimer(void);
+
125  void setOnTimer(const uint16_t minspastmidnight);
+
126  void enableOnTimer(const bool on);
+
127  bool isOnTimerEnabled(void);
+
128  uint16_t getOffTimer(void);
+
129  void setOffTimer(const uint16_t minspastmidnight);
+
130  void enableOffTimer(const bool on);
+
131  bool isOffTimerEnabled(void);
+
132  void setCommand(const uint8_t code);
+
133  uint8_t getCommand(void);
+ +
135  void setModel(const whirlpool_ac_remote_model_t model);
+
136  uint8_t* getRaw(const bool calcchecksum = true);
+
137  void setRaw(const uint8_t new_code[],
+
138  const uint16_t length = kWhirlpoolAcStateLength);
+
139  static bool validChecksum(const uint8_t state[],
+
140  const uint16_t length = kWhirlpoolAcStateLength);
+
141  uint8_t convertMode(const stdAc::opmode_t mode);
+
142  uint8_t convertFan(const stdAc::fanspeed_t speed);
+
143  static stdAc::opmode_t toCommonMode(const uint8_t mode);
+
144  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
+
145  stdAc::state_t toCommon(void);
+
146  String toString(void);
+
147 #ifndef UNIT_TEST
+
148 
+
149  private:
+ +
151 #else // UNIT_TEST
+
152  IRsendTest _irsend;
+
154 #endif // UNIT_TEST
+ +
157  uint8_t _desiredtemp;
+
158  void checksum(const uint16_t length = kWhirlpoolAcStateLength);
+
159  uint16_t getTime(const uint16_t pos);
+
160  void setTime(const uint16_t pos, const uint16_t minspastmidnight);
+
161  bool isTimerEnabled(const uint16_t pos);
+
162  void enableTimer(const uint16_t pos, const bool state);
+
163  void _setTemp(const uint8_t temp, const bool remember = true);
+
164  void _setMode(const uint8_t mode);
+
165  int8_t getTempOffset(void);
+
166 };
+
167 
+
168 #endif // IR_WHIRLPOOL_H_
+
+
const uint8_t kWhirlpoolAcLightOffset
Definition: ir_Whirlpool.h:58
+
void send(const uint16_t repeat=kWhirlpoolAcDefaultRepeat, const bool calcchecksum=true)
Send the current internal state as an IR message.
Definition: ir_Whirlpool.cpp:139
+
const uint8_t kWhirlpoolAcOnTimerPos
Definition: ir_Whirlpool.h:72
+
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Whirlpool.cpp:89
+
uint16_t getClock(void)
Get the clock time in nr. of minutes past midnight.
Definition: ir_Whirlpool.cpp:357
+
const uint8_t kWhirlpoolAcCommandSuper
Definition: ir_Whirlpool.h:78
+
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Whirlpool.h:103
+
const uint8_t kWhirlpoolAcFanSize
Definition: ir_Whirlpool.h:46
+
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Whirlpool.cpp:485
+
const uint8_t kWhirlpoolAcSuperPos
Definition: ir_Whirlpool.h:64
+
void _setTemp(const uint8_t temp, const bool remember=true)
Set the temperature.
Definition: ir_Whirlpool.cpp:198
+
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
+
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:152
+
const uint8_t kWhirlpoolAcAutoTemp
Definition: ir_Whirlpool.h:54
+
const uint8_t kWhirlpoolAcModePos
Definition: ir_Whirlpool.h:44
+
const uint8_t kWhirlpoolAcFanHigh
Definition: ir_Whirlpool.h:48
+
const uint8_t kWhirlpoolAcPowerTogglePos
Definition: ir_Whirlpool.h:60
+
const uint8_t kWhirlpoolAcMaxTemp
Definition: ir_Whirlpool.h:53
+
const uint8_t kWhirlpoolAcAltTempPos
Definition: ir_Whirlpool.h:87
+
const uint8_t kWhirlpoolAcAuto
Definition: ir_Whirlpool.h:39
+
const uint8_t kWhirlpoolAcFanPos
Definition: ir_Whirlpool.h:51
+
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Whirlpool.cpp:498
+
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Whirlpool.cpp:525
+
bool isOnTimerEnabled(void)
Is the On timer enabled?
Definition: ir_Whirlpool.cpp:400
+
IRWhirlpoolAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Whirlpool.cpp:84
+
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Whirlpool.cpp:255
+
const uint8_t kWhirlpoolAcCommandOnTimer
Definition: ir_Whirlpool.h:79
+ +
const uint8_t kWhirlpoolAcTempPos
Definition: ir_Whirlpool.h:55
+
bool getLight(void)
Get the Light (Display/LED) setting of the A/C.
Definition: ir_Whirlpool.cpp:308
+
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Whirlpool.cpp:209
+
const uint8_t kWhirlpoolAcTimerEnableOffset
Definition: ir_Whirlpool.h:69
+
const uint8_t kWhirlpoolAcCommandIFeel
Definition: ir_Whirlpool.h:82
+
bool getSwing(void)
Get the (vertical) swing setting of the A/C.
Definition: ir_Whirlpool.cpp:293
+
const uint8_t kWhirlpoolAcModeOffset
Definition: ir_Whirlpool.h:43
+
void setClock(const uint16_t minspastmidnight)
Set the clock time in nr. of minutes past midnight.
Definition: ir_Whirlpool.cpp:351
+
Class for sending all basic IR protocols.
Definition: IRsend.h:170
+
const uint8_t kWhirlpoolAcSuperMask
Definition: ir_Whirlpool.h:63
+
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
+
const uint8_t kWhirlpoolAcChecksumByte1
Definition: ir_Whirlpool.h:36
+
bool getSleep(void)
Get the Sleep setting of the A/C.
Definition: ir_Whirlpool.cpp:444
+
const uint8_t kWhirlpoolAcMinuteSize
Definition: ir_Whirlpool.h:68
+
uint16_t getTime(const uint16_t pos)
Get the time in nr. of minutes past midnight.
Definition: ir_Whirlpool.cpp:328
+
void enableTimer(const uint16_t pos, const bool state)
Enable the timer enabled at the given byte offset.
Definition: ir_Whirlpool.cpp:345
+
Class for handling detailed Whirlpool A/C messages.
Definition: ir_Whirlpool.h:91
+
std::string String
Definition: IRremoteESP8266.h:1093
+
const uint8_t kWhirlpoolAcCommandPos
Definition: ir_Whirlpool.h:73
+
const uint8_t kWhirlpoolAcCommandMode
Definition: ir_Whirlpool.h:80
+
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Whirlpool.cpp:217
+
int8_t getTempOffset(void)
Calculate the temp. offset in deg C for the current model.
Definition: ir_Whirlpool.cpp:187
+
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_Whirlpool.cpp:278
+
const uint8_t kWhirlpoolAcCool
Definition: ir_Whirlpool.h:40
+
const uint8_t kWhirlpoolAcSleepPos
Definition: ir_Whirlpool.h:62
+
whirlpool_ac_remote_model_t getModel(void)
Get/Detect the model of the A/C.
Definition: ir_Whirlpool.cpp:162
+
const uint8_t kWhirlpoolAcCommandOffTimer
Definition: ir_Whirlpool.h:85
+
const uint8_t kWhirlpoolAcSwing1Offset
Definition: ir_Whirlpool.h:56
+ +
const uint8_t kWhirlpoolAcCommandSwing
Definition: ir_Whirlpool.h:81
+
bool isOffTimerEnabled(void)
Is the Off timer enabled?
Definition: ir_Whirlpool.cpp:375
+
const uint8_t kWhirlpoolAcMinuteOffset
Definition: ir_Whirlpool.h:67
+
static bool validChecksum(const uint8_t state[], const uint16_t length=kWhirlpoolAcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Whirlpool.cpp:104
+
const uint8_t kWhirlpoolAcFanMedium
Definition: ir_Whirlpool.h:49
+
const uint8_t kWhirlpoolAcDry
Definition: ir_Whirlpool.h:41
+
const uint8_t kWhirlpoolAcAltTempOffset
Definition: ir_Whirlpool.h:86
+
void setPowerToggle(const bool on)
Change the power toggle setting.
Definition: ir_Whirlpool.cpp:413
+
void setOffTimer(const uint16_t minspastmidnight)
Set the Off Timer time.
Definition: ir_Whirlpool.cpp:363
+
const uint8_t kWhirlpoolAcSwing2Offset
Definition: ir_Whirlpool.h:57
+
const uint8_t kWhirlpoolAcCommandLight
Definition: ir_Whirlpool.h:74
+
uint8_t getCommand(void)
Get the Command (Button) setting of the A/C.
Definition: ir_Whirlpool.cpp:429
+
void _setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Whirlpool.cpp:225
+
const uint8_t kWhirlpoolAcFanLow
Definition: ir_Whirlpool.h:50
+
const uint16_t kWhirlpoolAcDefaultRepeat
Definition: IRremoteESP8266.h:1007
+
const uint8_t kWhirlpoolAcOffTimerPos
Definition: ir_Whirlpool.h:71
+
uint16_t getOffTimer(void)
Get the Off Timer time..
Definition: ir_Whirlpool.cpp:369
+
void setModel(const whirlpool_ac_remote_model_t model)
Set the model of the A/C to emulate.
Definition: ir_Whirlpool.cpp:171
+
void setSuper(const bool on)
Set the Super (Turbo/Jet) setting of the A/C.
Definition: ir_Whirlpool.cpp:450
+
const uint8_t kWhirlpoolAcChecksumByte2
Definition: ir_Whirlpool.h:37
+
const uint8_t kWhirlpoolAcFan
Definition: ir_Whirlpool.h:42
+
uint16_t getOnTimer(void)
Get the On Timer time..
Definition: ir_Whirlpool.cpp:394
+
const uint8_t kWhirlpoolAcCommandFanSpeed
Definition: ir_Whirlpool.h:83
+
void setCommand(const uint8_t code)
Set the Command (Button) setting of the A/C.
Definition: ir_Whirlpool.cpp:478
+
const uint16_t kWhirlpoolAcStateLength
Definition: IRremoteESP8266.h:1005
+
const uint8_t kWhirlpoolAcHourOffset
Definition: ir_Whirlpool.h:65
+
void setRaw(const uint8_t new_code[], const uint16_t length=kWhirlpoolAcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Whirlpool.cpp:156
+
const uint8_t kWhirlpoolAcMinTemp
Definition: ir_Whirlpool.h:52
+
bool getSuper(void)
Get the Super (Turbo/Jet) setting of the A/C.
Definition: ir_Whirlpool.cpp:472
+
void setSleep(const bool on)
Set the Sleep setting of the A/C.
Definition: ir_Whirlpool.cpp:435
+
uint8_t remote_state[kWhirlpoolAcStateLength]
The state in IR code form.
Definition: ir_Whirlpool.h:156
+
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Whirlpool.cpp:248
+
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Whirlpool.cpp:563
+
const uint8_t kWhirlpoolAcHeat
Definition: ir_Whirlpool.h:38
+
void checksum(const uint16_t length=kWhirlpoolAcStateLength)
Calculate & set the checksum for the current internal state of the remote.
Definition: ir_Whirlpool.cpp:125
+
void enableOffTimer(const bool on)
Enable the Off Timer.
Definition: ir_Whirlpool.cpp:381
+
const uint8_t kWhirlpoolAcCommandPower
Definition: ir_Whirlpool.h:75
+
void enableOnTimer(const bool on)
Enable the On Timer.
Definition: ir_Whirlpool.cpp:406
+
IRsend _irsend
Instance of the IR send class.
Definition: ir_Whirlpool.h:150
+
void setOnTimer(const uint16_t minspastmidnight)
Set the On Timer time.
Definition: ir_Whirlpool.cpp:388
+
uint8_t _desiredtemp
The last user explicitly set temperature.
Definition: ir_Whirlpool.h:157
+
bool getPowerToggle(void)
Get the value of the current power toggle setting.
Definition: ir_Whirlpool.cpp:422
+
const uint8_t kWhirlpoolAcCommandTemp
Definition: ir_Whirlpool.h:76
+
const uint8_t kWhirlpoolAcFanOffset
Definition: ir_Whirlpool.h:45
+
const uint8_t kWhirlpoolAcCommand6thSense
Definition: ir_Whirlpool.h:84
+
const uint8_t kWhirlpoolAcCommandSleep
Definition: ir_Whirlpool.h:77
+
const uint8_t kWhirlpoolAcClockPos
Definition: ir_Whirlpool.h:70
+
const uint8_t kWhirlpoolAcPowerToggleOffset
Definition: ir_Whirlpool.h:59
+
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Whirlpool.cpp:98
+
const uint8_t kWhirlpoolAcSleepOffset
Definition: ir_Whirlpool.h:61
+
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Whirlpool.cpp:536
+
Structure to hold a common A/C state.
Definition: IRsend.h:97
+
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Whirlpool.cpp:262
+
void setLight(const bool on)
Set the Light (Display/LED) setting of the A/C.
Definition: ir_Whirlpool.cpp:301
+
void setTime(const uint16_t pos, const uint16_t minspastmidnight)
Set the time in nr. of minutes past midnight.
Definition: ir_Whirlpool.cpp:315
+
void setSwing(const bool on)
Set the (vertical) swing setting of the A/C.
Definition: ir_Whirlpool.cpp:285
+
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Whirlpool.cpp:512
+
const uint8_t kWhirlpoolAcHourSize
Definition: ir_Whirlpool.h:66
+
const uint8_t kWhirlpoolAcFanAuto
Definition: ir_Whirlpool.h:47
+
uint8_t * getRaw(const bool calcchecksum=true)
Get a copy of the internal state/code for this protocol.
Definition: ir_Whirlpool.cpp:148
+
bool isTimerEnabled(const uint16_t pos)
Is the timer enabled at the given byte offset?
Definition: ir_Whirlpool.cpp:338
+
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whynter_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whynter_8cpp.html new file mode 100644 index 000000000..11e6a0701 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Whynter_8cpp.html @@ -0,0 +1,344 @@ + + + + + + + +IRremoteESP8266: src/ir_Whynter.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Whynter.cpp File Reference
+
+
+ +

Support for Whynter protocols. Whynter A/C ARC-110WD added by Francesco Meschia Whynter originally added from https://github.com/shirriff/Arduino-IRremote/. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kWhynterTick = 50
 
const uint16_t kWhynterHdrMarkTicks = 57
 
const uint16_t kWhynterHdrMark = kWhynterHdrMarkTicks * kWhynterTick
 
const uint16_t kWhynterHdrSpaceTicks = 57
 
const uint16_t kWhynterHdrSpace = kWhynterHdrSpaceTicks * kWhynterTick
 
const uint16_t kWhynterBitMarkTicks = 15
 
const uint16_t kWhynterBitMark = kWhynterBitMarkTicks * kWhynterTick
 
const uint16_t kWhynterOneSpaceTicks = 43
 
const uint16_t kWhynterOneSpace = kWhynterOneSpaceTicks * kWhynterTick
 
const uint16_t kWhynterZeroSpaceTicks = 15
 
const uint16_t kWhynterZeroSpace = kWhynterZeroSpaceTicks * kWhynterTick
 
const uint16_t kWhynterMinCommandLengthTicks = 2160
 
const uint32_t kWhynterMinCommandLength
 
const uint16_t kWhynterMinGapTicks
 
const uint16_t kWhynterMinGap = kWhynterMinGapTicks * kWhynterTick
 
+

Detailed Description

+

Support for Whynter protocols. Whynter A/C ARC-110WD added by Francesco Meschia Whynter originally added from https://github.com/shirriff/Arduino-IRremote/.

+

Variable Documentation

+ +

◆ kWhynterBitMark

+ +
+
+ + + + +
const uint16_t kWhynterBitMark = kWhynterBitMarkTicks * kWhynterTick
+
+ +
+
+ +

◆ kWhynterBitMarkTicks

+ +
+
+ + + + +
const uint16_t kWhynterBitMarkTicks = 15
+
+ +
+
+ +

◆ kWhynterHdrMark

+ +
+
+ + + + +
const uint16_t kWhynterHdrMark = kWhynterHdrMarkTicks * kWhynterTick
+
+ +
+
+ +

◆ kWhynterHdrMarkTicks

+ +
+
+ + + + +
const uint16_t kWhynterHdrMarkTicks = 57
+
+ +
+
+ +

◆ kWhynterHdrSpace

+ +
+
+ + + + +
const uint16_t kWhynterHdrSpace = kWhynterHdrSpaceTicks * kWhynterTick
+
+ +
+
+ +

◆ kWhynterHdrSpaceTicks

+ +
+
+ + + + +
const uint16_t kWhynterHdrSpaceTicks = 57
+
+ +
+
+ +

◆ kWhynterMinCommandLength

+ +
+
+ + + + +
const uint32_t kWhynterMinCommandLength
+
+
+ +

◆ kWhynterMinCommandLengthTicks

+ +
+
+ + + + +
const uint16_t kWhynterMinCommandLengthTicks = 2160
+
+ +
+
+ +

◆ kWhynterMinGap

+ +
+
+ + + + +
const uint16_t kWhynterMinGap = kWhynterMinGapTicks * kWhynterTick
+
+ +
+
+ +

◆ kWhynterMinGapTicks

+ +
+
+ + + + +
const uint16_t kWhynterMinGapTicks
+
+
+ +

◆ kWhynterOneSpace

+ +
+
+ + + + +
const uint16_t kWhynterOneSpace = kWhynterOneSpaceTicks * kWhynterTick
+
+ +
+
+ +

◆ kWhynterOneSpaceTicks

+ +
+
+ + + + +
const uint16_t kWhynterOneSpaceTicks = 43
+
+ +
+
+ +

◆ kWhynterTick

+ +
+
+ + + + +
const uint16_t kWhynterTick = 50
+
+ +
+
+ +

◆ kWhynterZeroSpace

+ +
+
+ + + + +
const uint16_t kWhynterZeroSpace = kWhynterZeroSpaceTicks * kWhynterTick
+
+ +
+
+ +

◆ kWhynterZeroSpaceTicks

+ +
+
+ + + + +
const uint16_t kWhynterZeroSpaceTicks = 15
+
+ +
+
+
+
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1008
+
const uint16_t kWhynterZeroSpaceTicks
Definition: ir_Whynter.cpp:27
+
const uint16_t kWhynterMinCommandLengthTicks
Definition: ir_Whynter.cpp:29
+
const uint16_t kWhynterBitMarkTicks
Definition: ir_Whynter.cpp:23
+
const uint16_t kWhynterTick
Definition: ir_Whynter.cpp:18
+
const uint16_t kWhynterOneSpaceTicks
Definition: ir_Whynter.cpp:25
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Zepeal_8cpp.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Zepeal_8cpp.html new file mode 100644 index 000000000..a28b6cdcd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/ir__Zepeal_8cpp.html @@ -0,0 +1,333 @@ + + + + + + + +IRremoteESP8266: src/ir_Zepeal.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ir_Zepeal.cpp File Reference
+
+
+ +

Support for Zepeal protocol. This protocol uses fixed length bit encoding. Most official information about Zepeal seems to be from Denkyosha. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const uint16_t kZepealHdrMark = 2330
 
const uint16_t kZepealHdrSpace = 3380
 
const uint16_t kZepealOneMark = 1300
 
const uint16_t kZepealZeroMark = 420
 
const uint16_t kZepealOneSpace = kZepealZeroMark
 
const uint16_t kZepealZeroSpace = kZepealOneMark
 
const uint16_t kZepealFooterMark = 420
 
const uint16_t kZepealGap = 6750
 
const uint8_t kZepealTolerance = 40
 
const uint8_t kZepealSignature = 0x6C
 
const uint16_t kZepealCommandSpeed = 0x6C82
 
const uint16_t kZepealCommandOffOn = 0x6C81
 
const uint16_t kZepealCommandRhythm = 0x6C84
 
const uint16_t kZepealCommandOffTimer = 0x6C88
 
const uint16_t kZepealCommandOnTimer = 0x6CC3
 
+

Detailed Description

+

Support for Zepeal protocol. This protocol uses fixed length bit encoding. Most official information about Zepeal seems to be from Denkyosha.

+
See also
https://www.denkyosha.co.jp/
+

Variable Documentation

+ +

◆ kZepealCommandOffOn

+ +
+
+ + + + +
const uint16_t kZepealCommandOffOn = 0x6C81
+
+ +
+
+ +

◆ kZepealCommandOffTimer

+ +
+
+ + + + +
const uint16_t kZepealCommandOffTimer = 0x6C88
+
+ +
+
+ +

◆ kZepealCommandOnTimer

+ +
+
+ + + + +
const uint16_t kZepealCommandOnTimer = 0x6CC3
+
+ +
+
+ +

◆ kZepealCommandRhythm

+ +
+
+ + + + +
const uint16_t kZepealCommandRhythm = 0x6C84
+
+ +
+
+ +

◆ kZepealCommandSpeed

+ +
+
+ + + + +
const uint16_t kZepealCommandSpeed = 0x6C82
+
+ +
+
+ +

◆ kZepealFooterMark

+ +
+
+ + + + +
const uint16_t kZepealFooterMark = 420
+
+ +
+
+ +

◆ kZepealGap

+ +
+
+ + + + +
const uint16_t kZepealGap = 6750
+
+ +
+
+ +

◆ kZepealHdrMark

+ +
+
+ + + + +
const uint16_t kZepealHdrMark = 2330
+
+ +
+
+ +

◆ kZepealHdrSpace

+ +
+
+ + + + +
const uint16_t kZepealHdrSpace = 3380
+
+ +
+
+ +

◆ kZepealOneMark

+ +
+
+ + + + +
const uint16_t kZepealOneMark = 1300
+
+ +
+
+ +

◆ kZepealOneSpace

+ +
+
+ + + + +
const uint16_t kZepealOneSpace = kZepealZeroMark
+
+ +
+
+ +

◆ kZepealSignature

+ +
+
+ + + + +
const uint8_t kZepealSignature = 0x6C
+
+ +
+
+ +

◆ kZepealTolerance

+ +
+
+ + + + +
const uint8_t kZepealTolerance = 40
+
+ +
+
+ +

◆ kZepealZeroMark

+ +
+
+ + + + +
const uint16_t kZepealZeroMark = 420
+
+ +
+
+ +

◆ kZepealZeroSpace

+ +
+
+ + + + +
const uint16_t kZepealZeroSpace = kZepealOneMark
+
+ +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h.html new file mode 100644 index 000000000..8bd3af9fa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/it-IT.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
it-IT.h File Reference
+
+ + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h_source.html new file mode 100644 index 000000000..4b554dec9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/it-IT_8h_source.html @@ -0,0 +1,239 @@ + + + + + + + +IRremoteESP8266: src/locale/it-IT.h Source File + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
it-IT.h
+
+
+Go to the documentation of this file.
1 // Copyright 2020 - Enrico Gueli (@egueli)
+
2 // Locale/language file for Italian.
+
3 // This file will override the default values located in `defaults.h`.
+
4 
+
5 #ifndef LOCALE_IT_IT_H_
+
6 #define LOCALE_IT_IT_H_
+
7 
+
8 #define D_STR_UNKNOWN "SCONOSCIUTO"
+
9 #define D_STR_PROTOCOL "Protocollo"
+
10 #define D_STR_POWER "Accensione"
+
11 #define D_STR_PREVIOUS "Precedente"
+
12 #define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
+
13 #define D_STR_ON "Acceso"
+
14 #define D_STR_OFF "Spento"
+
15 #define D_STR_MODE "Modalità"
+
16 #define D_STR_TOGGLE "Alterna"
+
17 #define D_STR_SLEEP "Sonno"
+
18 #define D_STR_LIGHT "Leggero"
+
19 #define D_STR_POWERFUL "Forte"
+
20 #define D_STR_QUIET "Silenzioso"
+
21 #define D_STR_ECONO "Eco"
+
22 #define D_STR_SWING "Swing"
+
23 #define D_STR_SWINGH D_STR_SWING"(O)" // Set `D_STR_SWING` first!
+
24 #define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
+
25 #define D_STR_MOULD "Muffa"
+
26 #define D_STR_CLEAN "Pulizia"
+
27 #define D_STR_PURIFY "Purifica"
+
28 #define D_STR_TIMER "Timer"
+
29 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
+
30 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
+
31 #define D_STR_CLOCK "Orologio"
+
32 #define D_STR_COMMAND "Comando"
+
33 #define D_STR_MODEL "Modello"
+
34 #define D_STR_TEMP "Temp"
+
35 #define D_STR_HUMID "Umido"
+
36 #define D_STR_SAVE "Salva"
+
37 #define D_STR_EYE "Occhio"
+
38 #define D_STR_FOLLOW "Segui"
+
39 #define D_STR_ION "Ioni"
+
40 #define D_STR_FRESH "Fresco"
+
41 #define D_STR_HOLD "Mantieni"
+
42 #define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
+
43 #define D_STR_BUTTON "Pulsante"
+
44 #define D_STR_NIGHT "Notte"
+
45 #define D_STR_SILENT "Silenzioso"
+
46 #define D_STR_FILTER "Filtro"
+
47 #define D_STR_UP "Su"
+
48 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
+
49 #define D_STR_DOWN "Giù"
+
50 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
+
51 #define D_STR_CHANGE "Cambia"
+
52 #define D_STR_START "Avvia"
+
53 #define D_STR_STOP "Ferma"
+
54 #define D_STR_MOVE "Muovi"
+
55 #define D_STR_SET "Imposta"
+
56 #define D_STR_CANCEL "Annulla"
+
57 #define D_STR_SENSOR "Sensore"
+
58 #define D_STR_WEEKLY "Settimanale"
+
59 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
+
60 #define D_STR_LAST "Ultimo"
+
61 #define D_STR_FAST "Veloce"
+
62 #define D_STR_SLOW "Lento"
+
63 #define D_STR_AIRFLOW "Flusso d'aria"
+
64 #define D_STR_STEP "Passo"
+
65 #define D_STR_NA "N/D"
+
66 #define D_STR_OUTSIDE "Esterno"
+
67 #define D_STR_LOUD "Rumoroso"
+
68 #define D_STR_UPPER "Superiore"
+
69 #define D_STR_LOWER "Inferiore"
+
70 #define D_STR_CIRCULATE "Circolare"
+
71 #define D_STR_CEILING "Soffitto"
+
72 #define D_STR_WALL "Muro"
+
73 #define D_STR_ROOM "Camera"
+
74 #define D_STR_FIXED "Fisso"
+
75 
+
76 #define D_STR_AUTO "Auto"
+
77 #define D_STR_AUTOMATIC "Automatico"
+
78 #define D_STR_MANUAL "Manuale"
+
79 #define D_STR_COOL "Fresco"
+
80 #define D_STR_HEAT "Caldo"
+
81 #define D_STR_FAN "Ventola"
+
82 #define D_STR_FANONLY "solo_ventola"
+
83 #define D_STR_DRY "Secco"
+
84 
+
85 #define D_STR_MAX "Max"
+
86 #define D_STR_MAXIMUM "Massimo"
+
87 #define D_STR_MINIMUM "Minimo"
+
88 #define D_STR_MEDIUM "Medio"
+
89 
+
90 #define D_STR_HIGHEST "Molto alto"
+
91 #define D_STR_HIGH "Alto"
+
92 #define D_STR_MID "Med"
+
93 #define D_STR_MIDDLE "Medio"
+
94 #define D_STR_LOW "Basso"
+
95 #define D_STR_LOWEST "Bassissimo"
+
96 #define D_STR_RIGHT "Destra"
+
97 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
+
98 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
+
99 #define D_STR_LEFT "Sinistra"
+
100 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
+
101 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
+
102 #define D_STR_WIDE "Largo"
+
103 #define D_STR_CENTRE "Centro"
+
104 #define D_STR_TOP "Superiore"
+
105 #define D_STR_BOTTOM "Inferiore"
+
106 // Compound words/phrases/descriptions from pre-defined words.
+
107 // Note: Obviously these need to be defined *after* their component words.
+
108 
+
109 #define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
+
110 #define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
+
111 #define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
+
112 #define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
+
113 #define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
+
114 #define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
+
115 #define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
+
116 #define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
+
117 // Separators
+
118 #ifndef D_CHR_TIME_SEP
+
119 #define D_CHR_TIME_SEP '.'
+
120 #endif // D_CHR_TIME_SEP
+
121 
+
122 #define D_STR_SPACELBRACE " ("
+
123 #define D_STR_COMMASPACE ", "
+
124 #define D_STR_COLONSPACE ": "
+
125 
+
126 #define D_STR_DAY "Giorno"
+
127 #define D_STR_DAYS D_STR_DAY "s"
+
128 #define D_STR_HOUR "Ore"
+
129 #define D_STR_HOURS D_STR_HOUR "s"
+
130 #define D_STR_MINUTE "Minuti"
+
131 #define D_STR_MINUTES D_STR_MINUTE "s"
+
132 #define D_STR_SECOND "Secondi"
+
133 #define D_STR_SECONDS D_STR_SECOND "s"
+
134 #define D_STR_NOW "Adesso"
+
135 #define D_STR_THREELETTERDAYS "DomLunMarMerGioVenSab"
+
136 
+
137 #define D_STR_YES "Sì"
+
138 #define D_STR_TRUE "Vero"
+
139 #define D_STR_FALSE "Falso"
+
140 
+
141 #define D_STR_REPEAT "Ripeti"
+
142 #define D_STR_CODE "Codice"
+
143 #define D_STR_BITS "Bit"
+
144 
+
145 // IRrecvDumpV2+
+
146 #define D_STR_LIBRARY "Libreria"
+
147 #define D_STR_MESGDESC "Desc. Mess."
+
148 #define D_STR_IRRECVDUMP_STARTUP \
+
149  "IRrecvDump è ora attivo e in attesa di segnali IR dal pin %d"
+
150 
+
151 #ifndef D_WARN_BUFFERFULL
+
152 #define D_WARN_BUFFERFULL \
+
153  "ATTENZIONE: il codice IR è troppo grande per il buffer (>= %d). " \
+
154  "Non fare affidamento a questi risultati finché questo problema " \
+
155  "non è risolto." \
+
156  "Modifica e aumenta `kCaptureBufferSize`."
+
157 #endif // D_WARN_BUFFERFULL
+
158 
+
159 #endif // LOCALE_IT_IT_H_
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/jquery.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/jquery.js new file mode 100644 index 000000000..103c32d79 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/md_src_locale_README.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/md_src_locale_README.html new file mode 100644 index 000000000..2289f61b3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/md_src_locale_README.html @@ -0,0 +1,135 @@ + + + + + + + +IRremoteESP8266: Internationalisation (I18N) & Locale Files + + + + + + + + + +
+
+ + + + + + +
+
IRremoteESP8266 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Internationalisation (I18N) & Locale Files
+
+
+

This directory contains the files used by the library to store the text it uses. If you want to add support for a language, this is the correct place. If you are adding text strings to a routine, you should use the ones here.

+

+Changing the language/locale used by the library.

+

There are several ways to change which locale file is used by the library. Use which ever one suits your needs best. To keep the space used by the library to a minimum, all methods require the change to happen at compile time. There is no runtime option to change locales.

+

+Change <tt>_IR_LOCALE_</tt> in the <tt>src/IRremoteESP8266.h</tt> file.

+

In the IRremoteESP8266.h file, find and locate the lines that look like:

{c++}
+
#ifndef _IR_LOCALE_
+
#define _IR_LOCALE_ en-AU
+
#endif // _IR_LOCALE_
+

Change en-AU to the language & country that best suits your needs. e.g. de-DE for Germany/German.

+

+Use a compile-time build flag.

+

Use the compiler flag: -D_IR_LOCALE_=en-AU when compiling the library. Especially when compiling the IRtext.cpp file. Change en-AU to a value which matches one of the file names in this directory. e.g. de-DE for Germany/German, which will use the de_DE.h file.

+

+Use the appropriate pre-prepared build environment. _(PlatformIO only)_

+

If you examine the platformio.ini file located in the same directory as the example code you may find pre-setup compile environments for the different supported locales. Choose the appropriate one for you language by asking PlatformIO to build or upload using that environment. e.g. See IRrecvDumpV2's platformio.ini

+

+Use a custom <tt>build_flags</tt>. _(PlatformIO only)_

+

Edit the platformio.ini file in the directory containing your example/source code. Either in the default PlatformIO environment ([env]), or in which ever PlatformIO environment you using, change or add the following line:

build_flags = -D_IR_LOCALE_=en-AU ; Or use which ever locale variable you want.
+

Every time you change that line, you should do a pio clean or choose the clean option from the build menu, to ensure a fresh copy of IRtext.o is created.

+

+Adding support for a new locale/language.

+

Only ASCII/UTF-8 8-bit characters are supported. Unicode is not supported. Unicode may work. It may not. It's just not supported. i.e. If Arduino's Serial.print() can handle it, it will probably work.

+

+Copy/create a new locale file in this directory.

+

Copy en-AU.h or which every is a closer fit for your language to xx-YY.h where xx is the ISO code for the language. e.g. en is English. de is German etc. and YY is the ISO country code. e.g. AU is Australia. Modify the comments and all LOCALE_EN_AU_H_s in the file to LOCALE_XX_YY_H_ for your locale.

+

+Override any <tt>#‍define</tt> values that reside in <tt>defaults.h</tt>

+

Go through the defaults.h file, and find any #‍define lines that define a macro starting with D_ that has text that needs to change for your locale. Copy or create a corresponding #‍define D_STR_HELLOWORLD "Hello World" in your xx-YY.h file, and translate the text appropriately e.g. #‍define D_STR_HELLOWORLD "Bonjour le monde" (French)

+

Any values you #‍define in xx-YY.h will override the corresponding value in the defaults.h file.

+

+Supporting a dialect/regional variant of another <em>existing</em> language/locale.

+

Similar to the previous step, if you only need to modify a small subset of the strings used in another locale file, then include the other locale file and then make sure to #‍undef any strings that need to be (re-)changed. See the Swiss-German for an example of how to do this. i.e. It #‍include "locale/de-DE.h"s the German locale, and redefines any strings that are not standard German.

+

+Adding new text strings to the library.

+

If you need to add an entirely new string to the library to support some feature etc. e.g. _"Widget"_. You should first understand how the library tries to do this such that it is easy to support different languages for it.

+
    +
  1. Use a constant named kWidgetStr in the appropriate statement in the .cpp file.
  2. +
  3. Edit IRtext.cpp, and add the appropriate line for your new constant. e.g.
    {c++}
    +
    String kWidgetStr = D_STR_WIDGET;
    +
  4. +
+

The kWidgetStr variable will house the sole copy of the string for the entire library. This limits any duplication. The D_STR_WIDGET macro will be what is targeted by the different language / locales files.

+
    +
  1. Edit locale/defaults.h, and add the appropriate stanza for your new string. e.g.
    {c++}
    +
    #ifndef D_STR_WIDGET
    +
    #define D_STR_WIDGET "Turbo"
    +
    #endif // D_STR_WIDGET
    +
  2. +
  3. _(Manual)_ Update IRtext.h, and add the appropriate line for your new constant. e.g.
    {c++}
    +
    extern const String kWidgetStr;
    +
  4. +
+

For any file that #‍include <IRtext.h>s this file, it will tell it that the string is stored elsewhere, and to look for it elsewhere at the object linking stage of the build. This is what makes the string be referenced from a central location.

+
    +
  1. _(Automatic)_ Run tools/generate_irtext_h.sh to update IRtext.h. In the src/locale directory. Run the ../../tools/generate_irtext_h.sh command. It will update the file for you automatically.
  2. +
+
+
+ + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menu.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menu.js new file mode 100644 index 000000000..433c15b8f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menudata.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menudata.js new file mode 100644 index 000000000..f6289d4dd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/menudata.js @@ -0,0 +1,189 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"b",url:"namespacemembers.html#index_b"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"u",url:"namespacemembers.html#index_u"}]}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"a",url:"functions_a.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"z",url:"functions_z.html#index_z"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"_",url:"functions_func.html#index__5F"}, +{text:"a",url:"functions_func_a.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"k",url:"functions_func_k.html#index_k"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"_",url:"functions_vars.html#index__5F"}, +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"q",url:"functions_vars.html#index_q"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"w",url:"functions_vars.html#index_w"}, +{text:"z",url:"functions_vars.html#index_z"}]}, +{text:"Related Functions",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"_",url:"globals.html#index__5F"}, +{text:"a",url:"globals_a.html#index_a"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"e",url:"globals_e.html#index_e"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"h",url:"globals_h.html#index_h"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"j",url:"globals_j.html#index_j"}, +{text:"k",url:"globals_k.html#index_k"}, +{text:"l",url:"globals_l.html#index_l"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"n",url:"globals_n.html#index_n"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"r",url:"globals_r.html#index_r"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"u",url:"globals_u.html#index_u"}, +{text:"v",url:"globals_v.html#index_v"}, +{text:"w",url:"globals_w.html#index_w"}, +{text:"x",url:"globals_x.html#index_x"}, +{text:"y",url:"globals_y.html#index_y"}, +{text:"z",url:"globals_z.html#index_z"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"c",url:"globals_func.html#index_c"}, +{text:"f",url:"globals_func.html#index_f"}, +{text:"g",url:"globals_func.html#index_g"}, +{text:"h",url:"globals_func.html#index_h"}, +{text:"i",url:"globals_func.html#index_i"}, +{text:"r",url:"globals_func.html#index_r"}, +{text:"s",url:"globals_func.html#index_s"}, +{text:"t",url:"globals_func.html#index_t"}, +{text:"u",url:"globals_func.html#index_u"}, +{text:"x",url:"globals_func.html#index_x"}]}, +{text:"Variables",url:"globals_vars.html",children:[ +{text:"_",url:"globals_vars.html#index__5F"}, +{text:"i",url:"globals_vars_i.html#index_i"}, +{text:"k",url:"globals_vars_k.html#index_k"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html",children:[ +{text:"a",url:"globals_eval.html#index_a"}, +{text:"c",url:"globals_eval.html#index_c"}, +{text:"d",url:"globals_eval.html#index_d"}, +{text:"e",url:"globals_eval.html#index_e"}, +{text:"f",url:"globals_eval.html#index_f"}, +{text:"g",url:"globals_eval.html#index_g"}, +{text:"h",url:"globals_eval.html#index_h"}, +{text:"i",url:"globals_eval.html#index_i"}, +{text:"j",url:"globals_eval.html#index_j"}, +{text:"k",url:"globals_eval.html#index_k"}, +{text:"l",url:"globals_eval.html#index_l"}, +{text:"m",url:"globals_eval.html#index_m"}, +{text:"n",url:"globals_eval.html#index_n"}, +{text:"p",url:"globals_eval.html#index_p"}, +{text:"r",url:"globals_eval.html#index_r"}, +{text:"s",url:"globals_eval.html#index_s"}, +{text:"t",url:"globals_eval.html#index_t"}, +{text:"u",url:"globals_eval.html#index_u"}, +{text:"v",url:"globals_eval.html#index_v"}, +{text:"w",url:"globals_eval.html#index_w"}, +{text:"y",url:"globals_eval.html#index_y"}, +{text:"z",url:"globals_eval.html#index_z"}]}]}]}]} diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceIRAcUtils.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceIRAcUtils.html new file mode 100644 index 000000000..3813acb54 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceIRAcUtils.html @@ -0,0 +1,161 @@ + + + + + + + +IRremoteESP8266: IRAcUtils Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    IRAcUtils Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    String resultAcToString (const decode_results *const result)
     Display the human readable state of an A/C message if we can. More...
     
    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. More...
     
    +

    Function Documentation

    + +

    ◆ decodeToState()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool IRAcUtils::decodeToState (const decode_resultsdecode,
    stdAc::state_tresult,
    const stdAc::state_tprev 
    )
    +
    + +

    Convert a valid IR A/C remote message that we understand enough into a Common A/C state.

    +
    Parameters
    + + + + +
    [in]decodeA PTR to a successful raw IR decode object.
    [in]resultA PTR to a state structure to store the result in.
    [in]prevA PTR to a state structure which has the prev. state.
    +
    +
    +
    Returns
    A boolean indicating success or failure.
    + +
    +
    + +

    ◆ resultAcToString()

    + +
    +
    + + + + + + + + +
    String IRAcUtils::resultAcToString (const decode_results *const result)
    +
    + +

    Display the human readable state of an A/C message if we can.

    +
    Parameters
    + + +
    [in]resultA Ptr to the captured decode_results that contains an A/C mesg.
    +
    +
    +
    Returns
    A string with the human description of the A/C message. An empty string if we can't.
    + +
    +
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceirutils.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceirutils.html new file mode 100644 index 000000000..296bae1d2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaceirutils.html @@ -0,0 +1,1303 @@ + + + + + + + +IRremoteESP8266: irutils Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    irutils Namespace Reference
    +
    +
    + +

    Namespace for covering common functions & procedures for advancd protocol handlers. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    String addLabeledString (const String value, const String label, const bool precomma)
     Create a String with a colon separated "label: value" pair suitable for Humans. More...
     
    String addBoolToString (const bool value, const String label, const bool precomma)
     Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". More...
     
    String addIntToString (const uint16_t value, const String label, const bool precomma)
     Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
     
    String modelToStr (const decode_type_t protocol, const int16_t model)
     Generate the model string for a given Protocol/Model pair. More...
     
    String addModelToString (const decode_type_t protocol, const int16_t model, const bool precomma)
     Create a String of human output for a given protocol model number. e.g. "Model: JKE". More...
     
    String addTempToString (const uint16_t degrees, const bool celsius, const bool precomma)
     Create a String of human output for a given temperature. e.g. "Temp: 25C". More...
     
    String addModeToString (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
     Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". More...
     
    String addDayToString (const uint8_t day_of_week, const int8_t offset, const bool precomma)
     Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". More...
     
    String addFanToString (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)
     Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". More...
     
    String htmlEscape (const String unescaped)
     Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. More...
     
    String msToString (uint32_t const msecs)
     Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". More...
     
    String minsToString (const uint16_t mins)
     Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". More...
     
    uint8_t sumNibbles (const uint8_t *const start, const uint16_t length, const uint8_t init)
     Sum all the nibbles together in a series of bytes. More...
     
    uint8_t sumNibbles (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)
     Sum all the nibbles together in an integer. More...
     
    uint8_t bcdToUint8 (const uint8_t bcd)
     Convert a byte of Binary Coded Decimal(BCD) into an Integer. More...
     
    uint8_t uint8ToBcd (const uint8_t integer)
     Convert an Integer into a byte of Binary Coded Decimal(BCD). More...
     
    bool getBit (const uint64_t data, const uint8_t position, const uint8_t size)
     Return the value of positionth bit of an Integer. More...
     
    bool getBit (const uint8_t data, const uint8_t position)
     Return the value of positionth bit of an Integer. More...
     
    uint64_t setBit (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
     Return the value of an Integer with the positionth bit changed. More...
     
    uint8_t setBit (const uint8_t data, const uint8_t position, const bool on)
     Return the value of an Integer with the positionth bit changed. More...
     
    void setBit (uint8_t *const data, const uint8_t position, const bool on)
     Alter the value of an Integer with the positionth bit changed. More...
     
    void setBit (uint32_t *const data, const uint8_t position, const bool on)
     Alter the value of an Integer with the positionth bit changed. More...
     
    void setBit (uint64_t *const data, const uint8_t position, const bool on)
     Alter the value of an Integer with the positionth bit changed. More...
     
    void setBits (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
     Alter an uint8_t value by overwriting an arbitary given number of bits. More...
     
    void setBits (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)
     Alter an uint32_t value by overwriting an arbitary given number of bits. More...
     
    void setBits (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)
     Alter an uint64_t value by overwriting an arbitary given number of bits. More...
     
    +

    Detailed Description

    +

    Namespace for covering common functions & procedures for advancd protocol handlers.

    +

    Function Documentation

    + +

    ◆ addBoolToString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addBoolToString (const bool value,
    const String label,
    const bool precomma 
    )
    +
    + +

    Create a String with a colon separated flag suitable for Humans. e.g. "Power: On".

    +
    Parameters
    + + + + +
    [in]valueThe value to come after the label.
    [in]labelThe label to precede the value.
    [in]precommaShould the output string start with ", " or not?
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ addDayToString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addDayToString (const uint8_t day_of_week,
    const int8_t offset,
    const bool precomma 
    )
    +
    + +

    Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)".

    +
    Parameters
    + + + + +
    [in]day_of_weekA numerical version of the sequential day of the week. e.g. Saturday = 7 etc.
    [in]offsetDays to offset by. e.g. For different day starting the week.
    [in]precommaShould the output string start with ", " or not?
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ addFanToString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addFanToString (const uint8_t speed,
    const uint8_t high,
    const uint8_t low,
    const uint8_t automatic,
    const uint8_t quiet,
    const uint8_t medium 
    )
    +
    + +

    Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)".

    +
    Parameters
    + + + + + + + +
    [in]speedThe numeric speed of the fan to display.
    [in]highThe numeric value for High speed.
    [in]lowThe numeric value for Low speed.
    [in]automaticThe numeric value for Auto speed.
    [in]quietThe numeric value for Quiet speed.
    [in]mediumThe numeric value for Medium speed.
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ addIntToString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addIntToString (const uint16_t value,
    const String label,
    const bool precomma 
    )
    +
    + +

    Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".

    +
    Parameters
    + + + + +
    [in]valueThe value to come after the label.
    [in]labelThe label to precede the value.
    [in]precommaShould the output string start with ", " or not?
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ addLabeledString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addLabeledString (const String value,
    const String label,
    const bool precomma 
    )
    +
    + +

    Create a String with a colon separated "label: value" pair suitable for Humans.

    +
    Parameters
    + + + + +
    [in]valueThe value to come after the label.
    [in]labelThe label to precede the value.
    [in]precommaShould the output string start with ", " or not?
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ addModelToString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addModelToString (const decode_type_t protocol,
    const int16_t model,
    const bool precomma 
    )
    +
    + +

    Create a String of human output for a given protocol model number. e.g. "Model: JKE".

    +
    Parameters
    + + + + +
    [in]protocolThe IR protocol.
    [in]modelThe model number for that protocol.
    [in]precommaShould the output string start with ", " or not?
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ addModeToString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addModeToString (const uint8_t mode,
    const uint8_t automatic,
    const uint8_t cool,
    const uint8_t heat,
    const uint8_t dry,
    const uint8_t fan 
    )
    +
    + +

    Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)".

    +
    Parameters
    + + + + + + + +
    [in]modeThe operating mode to display.
    [in]automaticThe numeric value for Auto mode.
    [in]coolThe numeric value for Cool mode.
    [in]heatThe numeric value for Heat mode.
    [in]dryThe numeric value for Dry mode.
    [in]fanThe numeric value for Fan mode.
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ addTempToString()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    String irutils::addTempToString (const uint16_t degrees,
    const bool celsius,
    const bool precomma 
    )
    +
    + +

    Create a String of human output for a given temperature. e.g. "Temp: 25C".

    +
    Parameters
    + + + + +
    [in]degreesThe temperature in degrees.
    [in]celsiusIs the temp Celsius or Fahrenheit. true is C, false is F
    [in]precommaShould the output string start with ", " or not?
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ bcdToUint8()

    + +
    +
    + + + + + + + + +
    uint8_t irutils::bcdToUint8 (const uint8_t bcd)
    +
    + +

    Convert a byte of Binary Coded Decimal(BCD) into an Integer.

    +
    Parameters
    + + +
    [in]bcdThe BCD value.
    +
    +
    +
    Returns
    A normal Integer value.
    + +
    +
    + +

    ◆ getBit() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool irutils::getBit (const uint64_t data,
    const uint8_t position,
    const uint8_t size 
    )
    +
    + +

    Return the value of positionth bit of an Integer.

    +
    Parameters
    + + + + +
    [in]dataValue to be examined.
    [in]positionNr. of the Nth bit to be examined. 0 is the LSB.
    [in]sizeNr. of bits in data.
    +
    +
    +
    Returns
    The bit's value.
    + +
    +
    + +

    ◆ getBit() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool irutils::getBit (const uint8_t data,
    const uint8_t position 
    )
    +
    + +

    Return the value of positionth bit of an Integer.

    +
    Parameters
    + + + +
    [in]dataValue to be examined.
    [in]positionNr. of the Nth bit to be examined. 0 is the LSB.
    +
    +
    +
    Returns
    The bit's value.
    + +
    +
    + +

    ◆ htmlEscape()

    + +
    +
    + + + + + + + + +
    String irutils::htmlEscape (const String unescaped)
    +
    + +

    Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.

    +
    Parameters
    + + +
    [in]unescapedA String containing text to make HTML safe.
    +
    +
    +
    Returns
    A string that is HTML safe.
    + +
    +
    + +

    ◆ minsToString()

    + +
    +
    + + + + + + + + +
    String irutils::minsToString (const uint16_t mins)
    +
    + +

    Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59".

    +
    Parameters
    + + +
    [in]minsNr. of Minutes.
    +
    +
    +
    Returns
    A human readable string.
    + +
    +
    + +

    ◆ modelToStr()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    String irutils::modelToStr (const decode_type_t protocol,
    const int16_t model 
    )
    +
    + +

    Generate the model string for a given Protocol/Model pair.

    +
    Parameters
    + + + +
    [in]protocolThe IR protocol.
    [in]modelThe model number for that protocol.
    +
    +
    +
    Returns
    The resulting String.
    + +
    +
    + +

    ◆ msToString()

    + +
    +
    + + + + + + + + +
    String irutils::msToString (uint32_t const msecs)
    +
    + +

    Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds".

    +
    Parameters
    + + +
    [in]msecsNr. of milliSeconds (ms).
    +
    +
    +
    Returns
    A human readable string.
    + +
    +
    + +

    ◆ setBit() [1/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    uint64_t irutils::setBit (const uint64_t data,
    const uint8_t position,
    const bool on,
    const uint8_t size 
    )
    +
    + +

    Return the value of an Integer with the positionth bit changed.

    +
    Parameters
    + + + + + +
    [in]dataValue to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    [in]sizeNr. of bits in data.
    +
    +
    +
    Returns
    A suitably modified integer.
    + +
    +
    + +

    ◆ setBit() [2/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    uint8_t irutils::setBit (const uint8_t data,
    const uint8_t position,
    const bool on 
    )
    +
    + +

    Return the value of an Integer with the positionth bit changed.

    +
    Parameters
    + + + + +
    [in]dataValue to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    +
    +
    +
    Returns
    A suitably modified integer.
    + +
    +
    + +

    ◆ setBit() [3/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void irutils::setBit (uint32_t *const data,
    const uint8_t position,
    const bool on 
    )
    +
    + +

    Alter the value of an Integer with the positionth bit changed.

    +
    Parameters
    + + + + +
    [in,out]dataA pointer to the 32-bit integer to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    +
    +
    + +
    +
    + +

    ◆ setBit() [4/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void irutils::setBit (uint64_t *const data,
    const uint8_t position,
    const bool on 
    )
    +
    + +

    Alter the value of an Integer with the positionth bit changed.

    +
    Parameters
    + + + + +
    [in,out]dataA pointer to the 64-bit integer to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    +
    +
    + +
    +
    + +

    ◆ setBit() [5/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void irutils::setBit (uint8_t *const data,
    const uint8_t position,
    const bool on 
    )
    +
    + +

    Alter the value of an Integer with the positionth bit changed.

    +
    Parameters
    + + + + +
    [in,out]dataA pointer to the 8-bit integer to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    +
    +
    + +
    +
    + +

    ◆ setBits() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void irutils::setBits (uint32_t *const dst,
    const uint8_t offset,
    const uint8_t nbits,
    const uint32_t data 
    )
    +
    + +

    Alter an uint32_t value by overwriting an arbitary given number of bits.

    +
    Parameters
    + + + + + +
    [in,out]dstA pointer to the value to be changed.
    [in]offsetNr. of bits from the Least Significant Bit to be ignored
    [in]nbitsNr of bits of data to be placed into the destination.
    [in]dataThe value to be placed.
    +
    +
    + +
    +
    + +

    ◆ setBits() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void irutils::setBits (uint64_t *const dst,
    const uint8_t offset,
    const uint8_t nbits,
    const uint64_t data 
    )
    +
    + +

    Alter an uint64_t value by overwriting an arbitary given number of bits.

    +
    Parameters
    + + + + + +
    [in,out]dstA pointer to the value to be changed.
    [in]offsetNr. of bits from the Least Significant Bit to be ignored
    [in]nbitsNr of bits of data to be placed into the destination.
    [in]dataThe value to be placed.
    +
    +
    + +
    +
    + +

    ◆ setBits() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void irutils::setBits (uint8_t *const dst,
    const uint8_t offset,
    const uint8_t nbits,
    const uint8_t data 
    )
    +
    + +

    Alter an uint8_t value by overwriting an arbitary given number of bits.

    +
    Parameters
    + + + + + +
    [in,out]dstA pointer to the value to be changed.
    [in]offsetNr. of bits from the Least Significant Bit to be ignored
    [in]nbitsNr of bits of data to be placed into the destination.
    [in]dataThe value to be placed.
    +
    +
    + +
    +
    + +

    ◆ sumNibbles() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    uint8_t irutils::sumNibbles (const uint64_t data,
    const uint8_t count,
    const uint8_t init,
    const bool nibbleonly 
    )
    +
    + +

    Sum all the nibbles together in an integer.

    +
    Parameters
    + + + + + +
    [in]dataThe integer to be summed.
    [in]countThe number of nibbles to sum. Starts from LSB. Max of 16.
    [in]initStarting value of the calculation to use. (Default is 0)
    [in]nibbleonlytrue, the result is 4 bits. false, it's 8 bits.
    +
    +
    +
    Returns
    The 4/8-bit calculated result of all the nibbles and init value.
    + +
    +
    + +

    ◆ sumNibbles() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    uint8_t irutils::sumNibbles (const uint8_t *const start,
    const uint16_t length,
    const uint8_t init 
    )
    +
    + +

    Sum all the nibbles together in a series of bytes.

    +
    Parameters
    + + + + +
    [in]startA ptr to the start of the byte array to calculate over.
    [in]lengthHow many bytes to use in the calculation.
    [in]initStarting value of the calculation to use. (Default is 0)
    +
    +
    +
    Returns
    The 8-bit calculated result of all the bytes and init value.
    + +
    +
    + +

    ◆ uint8ToBcd()

    + +
    +
    + + + + + + + + +
    uint8_t irutils::uint8ToBcd (const uint8_t integer)
    +
    + +

    Convert an Integer into a byte of Binary Coded Decimal(BCD).

    +
    Parameters
    + + +
    [in]integerThe number to convert.
    +
    +
    +
    Returns
    An 8-bit BCD value.
    + +
    +
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers.html new file mode 100644 index 000000000..894fdde87 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers.html @@ -0,0 +1,188 @@ + + + + + + + +IRremoteESP8266: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    + + +

    - b -

    + + +

    - d -

    + + +

    - f -

      +
    • fanspeed_t +: stdAc +
    • +
    + + +

    - g -

    + + +

    - h -

    + + +

    - m -

    + + +

    - o -

    + + +

    - r -

    + + +

    - s -

    + + +

    - u -

    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_enum.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_enum.html new file mode 100644 index 000000000..20b291697 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_enum.html @@ -0,0 +1,86 @@ + + + + + + + +IRremoteESP8266: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_func.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_func.html new file mode 100644 index 000000000..2e79392e0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacemembers_func.html @@ -0,0 +1,134 @@ + + + + + + + +IRremoteESP8266: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaces.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaces.html new file mode 100644 index 000000000..5112518f1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespaces.html @@ -0,0 +1,83 @@ + + + + + + + +IRremoteESP8266: Namespace List + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    + + + + +
     NIRAcUtils
     NirutilsNamespace for covering common functions & procedures for advancd protocol handlers
     NstdAcEnumerators and Structures for the Common A/C API
    +
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacestdAc.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacestdAc.html new file mode 100644 index 000000000..59ba02326 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/namespacestdAc.html @@ -0,0 +1,286 @@ + + + + + + + +IRremoteESP8266: stdAc Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    stdAc Namespace Reference
    +
    +
    + +

    Enumerators and Structures for the Common A/C API. +More...

    + + + + + +

    +Classes

    struct  state_t
     Structure to hold a common A/C state. More...
     
    + + + + + + + + + + + + + +

    +Enumerations

    enum  opmode_t {
    +  opmode_t::kOff = -1, +opmode_t::kAuto = 0, +opmode_t::kCool = 1, +opmode_t::kHeat = 2, +
    +  opmode_t::kDry = 3, +opmode_t::kFan = 4, +opmode_t::kLastOpmodeEnum = kFan +
    + }
     Common A/C settings for A/C operating modes. More...
     
    enum  fanspeed_t {
    +  fanspeed_t::kAuto = 0, +fanspeed_t::kMin = 1, +fanspeed_t::kLow = 2, +fanspeed_t::kMedium = 3, +
    +  fanspeed_t::kHigh = 4, +fanspeed_t::kMax = 5, +fanspeed_t::kLastFanspeedEnum = kMax +
    + }
     Common A/C settings for Fan Speeds. More...
     
    enum  swingv_t {
    +  swingv_t::kOff = -1, +swingv_t::kAuto = 0, +swingv_t::kHighest = 1, +swingv_t::kHigh = 2, +
    +  swingv_t::kMiddle = 3, +swingv_t::kLow = 4, +swingv_t::kLowest = 5, +swingv_t::kLastSwingvEnum = kLowest +
    + }
     Common A/C settings for Vertical Swing. More...
     
    enum  swingh_t {
    +  swingh_t::kOff = -1, +swingh_t::kAuto = 0, +swingh_t::kLeftMax = 1, +swingh_t::kLeft = 2, +
    +  swingh_t::kMiddle = 3, +swingh_t::kRight = 4, +swingh_t::kRightMax = 5, +swingh_t::kWide = 6, +
    +  swingh_t::kLastSwinghEnum = kWide +
    + }
     Common A/C settings for Horizontal Swing. More...
     
    +

    Detailed Description

    +

    Enumerators and Structures for the Common A/C API.

    +

    Enumeration Type Documentation

    + +

    ◆ fanspeed_t

    + +
    +
    + + + + + +
    + + + + +
    enum stdAc::fanspeed_t
    +
    +strong
    +
    + +

    Common A/C settings for Fan Speeds.

    + + + + + + + + +
    Enumerator
    kAuto 
    kMin 
    kLow 
    kMedium 
    kHigh 
    kMax 
    kLastFanspeedEnum 
    + +
    +
    + +

    ◆ opmode_t

    + +
    +
    + + + + + +
    + + + + +
    enum stdAc::opmode_t
    +
    +strong
    +
    + +

    Common A/C settings for A/C operating modes.

    + + + + + + + + +
    Enumerator
    kOff 
    kAuto 
    kCool 
    kHeat 
    kDry 
    kFan 
    kLastOpmodeEnum 
    + +
    +
    + +

    ◆ swingh_t

    + +
    +
    + + + + + +
    + + + + +
    enum stdAc::swingh_t
    +
    +strong
    +
    + +

    Common A/C settings for Horizontal Swing.

    + + + + + + + + + + +
    Enumerator
    kOff 
    kAuto 
    kLeftMax 
    kLeft 
    kMiddle 
    kRight 
    kRightMax 
    kWide 
    kLastSwinghEnum 
    + +
    +
    + +

    ◆ swingv_t

    + +
    +
    + + + + + +
    + + + + +
    enum stdAc::swingv_t
    +
    +strong
    +
    + +

    Common A/C settings for Vertical Swing.

    + + + + + + + + + +
    Enumerator
    kOff 
    kAuto 
    kHighest 
    kHigh 
    kMiddle 
    kLow 
    kLowest 
    kLastSwingvEnum 
    + +
    +
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/nav_f.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/nav_g.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +IRremoteESP8266: Related Pages + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.html new file mode 100644 index 000000000..26dd244fd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.js new file mode 100644 index 000000000..0be3721bd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_0.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['_5fcancelofftimer_0',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]], + ['_5fcancelontimer_1',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]], + ['_5fclean_2',['_clean',['../classIRFujitsuAC.html#acf7808cfeb6e15cea1d5ee8196075e04',1,'IRFujitsuAC']]], + ['_5fcmd_3',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], + ['_5fdelaymicroseconds_4',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]], + ['_5fdesiredtemp_5',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], + ['_5fdutycycle_6',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], + ['_5ffan_7',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], + ['_5ffanspeed_8',['_fanSpeed',['../classIRFujitsuAC.html#a537f02328039c044f7152bf0a61a05c9',1,'IRFujitsuAC']]], + ['_5ffilter_9',['_filter',['../classIRFujitsuAC.html#a4a2f96f4f1cd6650d48ebc3b13fd561c',1,'IRFujitsuAC']]], + ['_5fforcepower_10',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], + ['_5ffreq_5funittest_11',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], + ['_5fgettime_12',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]], + ['_5fgettimer_13',['_getTimer',['../classIRCoronaAc.html#a419053fbf9ef27e937db0ff7519927bd',1,'IRCoronaAc::_getTimer()'],['../classIRVestelAc.html#ad3f095d248ad3c84a777ed9f2d3b001e',1,'IRVestelAc::_getTimer()']]], + ['_5finverted_14',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], + ['_5firsend_15',['_irsend',['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], + ['_5firtimer_5funittest_5fnow_16',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], + ['_5flastsentpowerstate_17',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], + ['_5fmatchgeneric_18',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]], + ['_5fmode_19',['_mode',['../classIRFujitsuAC.html#a1b22f3bb3dc43e370aabad5b6efd7ca5',1,'IRFujitsuAC::_mode()'],['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc::_mode()']]], + ['_5fmodel_20',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()']]], + ['_5fmodulation_21',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], + ['_5foutsidequiet_22',['_outsideQuiet',['../classIRFujitsuAC.html#a20a794245e0bc44607faf7927a285672',1,'IRFujitsuAC']]], + ['_5fpin_23',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], + ['_5fprev_24',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], + ['_5fprevioustemp_25',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()']]], + ['_5fprotocol_26',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], + ['_5fsaved_5ftemp_27',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()']]], + ['_5fsaved_5ftemp_5funits_28',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc']]], + ['_5fsendsony_29',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]], + ['_5fsetmode_30',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]], + ['_5fsetpower_31',['_setPower',['../classIRCoronaAc.html#a4b05b7e34e0f2e66f59ff279c6970478',1,'IRCoronaAc']]], + ['_5fsettemp_32',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]], + ['_5fsettime_33',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]], + ['_5fsettimer_34',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc::_setTimer()'],['../classIRVestelAc.html#a726178a16458c84d031aec07355d0dd2',1,'IRVestelAc::_setTimer()']]], + ['_5fstate_5flength_35',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], + ['_5fstate_5flength_5fshort_36',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], + ['_5fswingh_37',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], + ['_5fswingmode_38',['_swingMode',['../classIRFujitsuAC.html#a74a00fbba55b457b68f61481ce9ffbaa',1,'IRFujitsuAC']]], + ['_5fswingvtoggle_39',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], + ['_5ftemp_40',['_temp',['../classIRFujitsuAC.html#afcff35df74885c63651134ba85359694',1,'IRFujitsuAC::_temp()'],['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], + ['_5ftimer_5fnum_41',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], + ['_5ftimerms_5funittest_5fnow_42',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], + ['_5ftolerance_43',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], + ['_5ftostring_44',['_toString',['../classIRHitachiAc424.html#af7ab654c4eecf770a70399f6b9959db3',1,'IRHitachiAc424']]], + ['_5funknown_5fthreshold_45',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]], + ['_5fvalidtolerance_46',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.html new file mode 100644 index 000000000..8eb215b90 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.js new file mode 100644 index 000000000..02e9d8e2f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['add_47',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], + ['addbooltostring_48',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], + ['adddaytostring_49',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], + ['addfantostring_50',['addFanToString',['../namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4',1,'irutils']]], + ['addinttostring_51',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], + ['addlabeledstring_52',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], + ['addmodeltostring_53',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], + ['addmodetostring_54',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], + ['address_55',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]], + ['addtemptostring_56',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], + ['airwell_57',['AIRWELL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0cd75c2edaa4c674d679dbb39635990a',1,'IRremoteESP8266.h']]], + ['aiwa_5frc_5ft501_58',['AIWA_RC_T501',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7dc14b2c4769ef9de663c2e2165d8f75',1,'IRremoteESP8266.h']]], + ['akb75215403_59',['AKB75215403',['../IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a',1,'IRsend.h']]], + ['amcor_60',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac::amcor()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1325ba25674d7a99562f15a1b392086b',1,'AMCOR(): IRremoteESP8266.h']]], + ['ardb1_61',['ARDB1',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b',1,'IRsend.h']]], + ['argo_62',['argo',['../classIRArgoAC.html#ab607bde051712a57fe9c0a0cf9da20ac',1,'IRArgoAC::argo()'],['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac::argo()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac9ff1fa84905b54238b16d31197efb72',1,'ARGO(): IRremoteESP8266.h']]], + ['arjw2_63',['ARJW2',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4',1,'IRsend.h']]], + ['arrah2e_64',['ARRAH2E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b',1,'IRsend.h']]], + ['arreb1e_65',['ARREB1E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a',1,'IRsend.h']]], + ['arry4_66',['ARRY4',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.html new file mode 100644 index 000000000..6fd3a4aa2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.js new file mode 100644 index 000000000..46c722884 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['padding_3198',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], + ['panasonic_3199',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac::panasonic()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'PANASONIC(): IRremoteESP8266.h']]], + ['panasonic_5fac_3200',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]], + ['panasonic_5fac_5fremote_5fmodel_5ft_3201',['panasonic_ac_remote_model_t',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f',1,'IRsend.h']]], + ['periodoffset_3202',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], + ['pioneer_3203',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]], + ['power_3204',['power',['../structstdAc_1_1state__t.html#ab85d37cc99bbbc4915331369c4ea622e',1,'stdAc::state_t']]], + ['powerflag_3205',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC']]], + ['pronto_3206',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]], + ['protocol_3207',['protocol',['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.html new file mode 100644 index 000000000..f78343b9b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.js new file mode 100644 index 000000000..7b22d20b7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quiet_3208',['quiet',['../structstdAc_1_1state__t.html#a251ad14e187a9905137e9e4e010c3e34',1,'stdAc::state_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.html new file mode 100644 index 000000000..dd9ff1d59 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.js new file mode 100644 index 000000000..138cb936c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_12.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['r_5flt0541_5fhta_5fa_3209',['R_LT0541_HTA_A',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8',1,'IRsend.h']]], + ['r_5flt0541_5fhta_5fb_3210',['R_LT0541_HTA_B',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f',1,'IRsend.h']]], + ['raw_3211',['RAW',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadabdeded99fe7d3f2773014a9a2cfb73d7',1,'IRremoteESP8266.h']]], + ['rawbuf_3212',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], + ['rawlen_3213',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], + ['rc5_3214',['RC5',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3c0a3883a1488209bcd91730ece33b2',1,'IRremoteESP8266.h']]], + ['rc5x_3215',['RC5X',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a3ac4419806a34ba566bfcbbb0e4f1d',1,'IRremoteESP8266.h']]], + ['rc6_3216',['RC6',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7f7247f15587eb3812846f424b941abe',1,'IRremoteESP8266.h']]], + ['rcmm_3217',['RCMM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada79204b7ae26be334cebf3ea8268c34ab',1,'IRremoteESP8266.h']]], + ['rcvstate_3218',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], + ['readme_2emd_3219',['README.md',['../README_8md.html',1,'']]], + ['recoversavedstate_3220',['recoverSavedState',['../classIRCoolixAC.html#a134cb36681c3fab53074b402bba0a45c',1,'IRCoolixAC']]], + ['recvpin_3221',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], + ['remote_3222',['remote',['../classIRDaikinESP.html#ac24751c23f6b27cb26dcd51e91c63c9b',1,'IRDaikinESP::remote()'],['../classIRGoodweatherAc.html#af511a0703a4cbc77f5b8a520abf11f2f',1,'IRGoodweatherAc::remote()'],['../classIRSharpAc.html#a411a4db0579ed84b54533dcde153d5da',1,'IRSharpAc::remote()']]], + ['remote_5fstate_3223',['remote_state',['../classIRAmcorAc.html#acef1c3896f03afd5d10d5cbb7ed105ce',1,'IRAmcorAc::remote_state()'],['../classIRCarrierAc64.html#a257272c7cb54f5854e79053c8223a43e',1,'IRCarrierAc64::remote_state()'],['../classIRCoolixAC.html#a03bf575961d4d924275cb16a45edaa46',1,'IRCoolixAC::remote_state()'],['../classIRCoronaAc.html#afcf0b21ac5c438dc560612a785a29864',1,'IRCoronaAc::remote_state()'],['../classIRDaikin2.html#a0b28396956687a4009cab7c860b9ce4b',1,'IRDaikin2::remote_state()'],['../classIRDaikin216.html#abf9bab0a52f9227d54f583488b024a85',1,'IRDaikin216::remote_state()'],['../classIRDaikin160.html#a17fb5726060e8872735559654a72cb22',1,'IRDaikin160::remote_state()'],['../classIRDaikin176.html#adb6863da11f0569524f0beb31681d0b5',1,'IRDaikin176::remote_state()'],['../classIRDaikin128.html#af1b36cc2f51cd145da3bfe7ec3d9134a',1,'IRDaikin128::remote_state()'],['../classIRDaikin152.html#aa16c89c0cb6d83aef83d293466dab197',1,'IRDaikin152::remote_state()'],['../classIRDaikin64.html#aa279d6df0d130e727c3a1500b283eda0',1,'IRDaikin64::remote_state()'],['../classIRDelonghiAc.html#a3b3364143c52dc2a29d9db43612c07b1',1,'IRDelonghiAc::remote_state()'],['../classIRElectraAc.html#a3f423f5d896e4bfc2f3a0ce04b596289',1,'IRElectraAc::remote_state()'],['../classIRFujitsuAC.html#a851b9192e1f18f6a4b2f1726d49ef33b',1,'IRFujitsuAC::remote_state()'],['../classIRGreeAC.html#a9e0cb21278ac3c9a72738ab8e6e09096',1,'IRGreeAC::remote_state()'],['../classIRHaierAC.html#a609abaeab9df642fdaccd77235a84eed',1,'IRHaierAC::remote_state()'],['../classIRHaierACYRW02.html#a08069ef89f5c5e2c1ba8563cdad24578',1,'IRHaierACYRW02::remote_state()'],['../classIRHitachiAc.html#a44b3d360b2a8044782b73f7f4a533a99',1,'IRHitachiAc::remote_state()'],['../classIRHitachiAc1.html#a13340cba808d457d6093f1c9efffc419',1,'IRHitachiAc1::remote_state()'],['../classIRHitachiAc424.html#a58bac4ef7f46ef1e9f38c1a144e2ca41',1,'IRHitachiAc424::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../classIRKelvinatorAC.html#a70f75821274e53cc5ed64ac53a6e32b4',1,'IRKelvinatorAC::remote_state()'],['../classIRLgAc.html#a481133671657b13ecce1bd08f710089d',1,'IRLgAc::remote_state()'],['../classIRMideaAC.html#a8f122367cc407e7bb658fe7f3132effb',1,'IRMideaAC::remote_state()'],['../classIRMitsubishiAC.html#ac0a149b9705371e59c45ece162bc1aab',1,'IRMitsubishiAC::remote_state()'],['../classIRMitsubishi136.html#ad1e80d693d3558f0bed4c0f7995bddd5',1,'IRMitsubishi136::remote_state()'],['../classIRMitsubishi112.html#a64a40e57208d08b5cd6ef87a7c8d6671',1,'IRMitsubishi112::remote_state()'],['../classIRMitsubishiHeavy152Ac.html#a6d333f238bf1b42e39919d4897080aa8',1,'IRMitsubishiHeavy152Ac::remote_state()'],['../classIRMitsubishiHeavy88Ac.html#a46be0e755530f59fad7d3f9050ecc107',1,'IRMitsubishiHeavy88Ac::remote_state()'],['../classIRNeoclimaAc.html#a336507e0635ede3b9ebf53881ece50bb',1,'IRNeoclimaAc::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()'],['../classIRSamsungAc.html#a5966a3b665ce034de807de1955396e10',1,'IRSamsungAc::remote_state()'],['../classIRTcl112Ac.html#a6eda1148a977a3ccf0c6c30239fca4c8',1,'IRTcl112Ac::remote_state()'],['../classIRTecoAc.html#a3c2ad7587ed4f5589deb20d8dc16b1e4',1,'IRTecoAc::remote_state()'],['../classIRToshibaAC.html#aab228aa6db2255dddf98a46a25cbb0f0',1,'IRToshibaAC::remote_state()'],['../classIRTrotecESP.html#afccba55e2c3d42c716591c10bc9afa18',1,'IRTrotecESP::remote_state()'],['../classIRVestelAc.html#a74d889a0db2fa63a2e38aaa15819568c',1,'IRVestelAc::remote_state()'],['../classIRWhirlpoolAc.html#a65333985c39773896071081ebcca4821',1,'IRWhirlpoolAc::remote_state()']]], + ['remote_5ftime_5fstate_3224',['remote_time_state',['../classIRVestelAc.html#a9b10e4a0c1f71aecbeb385666d1a53bd',1,'IRVestelAc']]], + ['repeat_3225',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]], + ['reset_3226',['reset',['../classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a',1,'IRtimer::reset()'],['../classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b',1,'TimerMs::reset()']]], + ['resultactostring_3227',['resultAcToString',['../namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3',1,'IRAcUtils']]], + ['resulttohexidecimal_3228',['resultToHexidecimal',['../IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp'],['../IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp']]], + ['resulttohumanreadablebasic_3229',['resultToHumanReadableBasic',['../IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp']]], + ['resulttorawarray_3230',['resultToRawArray',['../IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp'],['../IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp']]], + ['resulttosourcecode_3231',['resultToSourceCode',['../IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp']]], + ['resulttotiminginfo_3232',['resultToTimingInfo',['../IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp']]], + ['resume_3233',['resume',['../classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e',1,'IRrecv']]], + ['reversebits_3234',['reverseBits',['../IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.html new file mode 100644 index 000000000..2611a100d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.js new file mode 100644 index 000000000..745394494 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_13.js @@ -0,0 +1,244 @@ +var searchData= +[ + ['samsung_3235',['samsung',['../classIRac.html#a619c659a11c258ea9623eaa37689ba4c',1,'IRac::samsung()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2b451b6e7bebbf070d0913ec77d5d438',1,'SAMSUNG(): IRremoteESP8266.h']]], + ['samsung36_3236',['SAMSUNG36',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa0d1be0c368e3594bc546c241d031fd4',1,'IRremoteESP8266.h']]], + ['samsung_5fac_3237',['SAMSUNG_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada39f991023009d760432489e7ad7ad4df',1,'IRremoteESP8266.h']]], + ['sanyo_3238',['SANYO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac1cf5078ebfd7ff83c70e8ec8522b288',1,'IRremoteESP8266.h']]], + ['sanyo_5flc7461_3239',['SANYO_LC7461',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada558721044a11b1d4b491343f02267e1d',1,'IRremoteESP8266.h']]], + ['saved_5fstate_3240',['saved_state',['../classIRCoolixAC.html#aec0bce8019d7d49a30915394bee56b9a',1,'IRCoolixAC']]], + ['scrap_3241',['scrap',['../unionmagiquest.html#afd0bcf9a87f0fa2db87b68b211952a73',1,'magiquest']]], + ['send_3242',['send',['../classIRAmcorAc.html#a4fa894c01a8baabfeadb39634a850fd9',1,'IRAmcorAc::send()'],['../classIRArgoAC.html#a0e4793a4f6fc537ec1450f5a42206dae',1,'IRArgoAC::send()'],['../classIRCarrierAc64.html#aace8aa2d125c6e80bcdd6d96eac722c2',1,'IRCarrierAc64::send()'],['../classIRCoolixAC.html#aaaa681d6cfcf04d110b913e8bb27a53c',1,'IRCoolixAC::send()'],['../classIRCoronaAc.html#aa0c8a1ef4473a3c7d02e1a04c7678fa6',1,'IRCoronaAc::send()'],['../classIRDaikinESP.html#a9f0d2641b54e97da943fceb0ba3f67eb',1,'IRDaikinESP::send()'],['../classIRDaikin2.html#aae2db88038d8d02617f16588e6a82b64',1,'IRDaikin2::send()'],['../classIRDaikin216.html#ab1061620f838cf7774c16c593b4ada8c',1,'IRDaikin216::send()'],['../classIRDaikin160.html#a0e1c74070c03be02e40fdd05ed56465c',1,'IRDaikin160::send()'],['../classIRDaikin176.html#affd71592fa8ed05816d94edbf94d2c0a',1,'IRDaikin176::send()'],['../classIRDaikin128.html#aae7fec91ad2265e8b0378c6b99379e89',1,'IRDaikin128::send()'],['../classIRDaikin152.html#a205de6821effc077f51d941d369791e4',1,'IRDaikin152::send()'],['../classIRDaikin64.html#a904eec38045d9ddc8a97ab33c8a2ac4d',1,'IRDaikin64::send()'],['../classIRDelonghiAc.html#afba831b6884771b84bab684732e0f4f5',1,'IRDelonghiAc::send()'],['../classIRElectraAc.html#a30170a65de1161e26daeddf694f8afdb',1,'IRElectraAc::send()'],['../classIRFujitsuAC.html#a1f1aa593cc4503d14c0fbea5cd9823a1',1,'IRFujitsuAC::send()'],['../classIRGoodweatherAc.html#abcc3c9d9b0912b09d3c0b0c1affb8cc8',1,'IRGoodweatherAc::send()'],['../classIRGreeAC.html#a9823578040c2d15e2b3e8e3a17a9e220',1,'IRGreeAC::send()'],['../classIRHaierAC.html#a9fe53d04965efca6daf234f20d20eb5a',1,'IRHaierAC::send()'],['../classIRHaierACYRW02.html#a65a5d5840dddac505b009e899a0dada7',1,'IRHaierACYRW02::send()'],['../classIRHitachiAc.html#afc53e562370bbaba8b5dda26a62de427',1,'IRHitachiAc::send()'],['../classIRHitachiAc1.html#aafad51c226066b8697cf00661ef38d99',1,'IRHitachiAc1::send()'],['../classIRHitachiAc424.html#adf15121bb329e1bb061f9e5efb848764',1,'IRHitachiAc424::send()'],['../classIRHitachiAc3.html#ab95fd527a4841c44d6e91c8b4afee8b4',1,'IRHitachiAc3::send()'],['../classIRHitachiAc344.html#ae9b33c0adfc1506b1d9ede1e3285c3e3',1,'IRHitachiAc344::send()'],['../classIRKelvinatorAC.html#aa55fbfefbaca1acf5bc9ba796bea8464',1,'IRKelvinatorAC::send()'],['../classIRLgAc.html#aea85c840161b48f2e8d31e7e6e7da532',1,'IRLgAc::send()'],['../classIRMideaAC.html#af66b9f76ad794450a0a7eace4bb59300',1,'IRMideaAC::send()'],['../classIRMitsubishiAC.html#a2467ad33d88af8f6244e7cd0620e012e',1,'IRMitsubishiAC::send()'],['../classIRMitsubishi136.html#a41295e551acf428e76b9b404af2381ad',1,'IRMitsubishi136::send()'],['../classIRMitsubishi112.html#a8f813da813b1a281654147ada2e63eba',1,'IRMitsubishi112::send()'],['../classIRMitsubishiHeavy152Ac.html#acc53c5c136c6987c420d48bddcf9b2da',1,'IRMitsubishiHeavy152Ac::send()'],['../classIRMitsubishiHeavy88Ac.html#a707cb3ec3e3c18bedeb12205580d5048',1,'IRMitsubishiHeavy88Ac::send()'],['../classIRNeoclimaAc.html#a2220bbb1d928b8f6490cd43b702ef430',1,'IRNeoclimaAc::send()'],['../classIRPanasonicAc.html#a778420ebe52aa6422ba5633ce91676df',1,'IRPanasonicAc::send()'],['../classIRSamsungAc.html#a8128429fcb1828a049784d832cafc9fe',1,'IRSamsungAc::send()'],['../classIRSharpAc.html#a829872744bf9fef51dccd89584ddffe6',1,'IRSharpAc::send()'],['../classIRTcl112Ac.html#a9aa8c67e167a3d241157306d0668ff15',1,'IRTcl112Ac::send()'],['../classIRTecoAc.html#ad5785e93e8c0c95a8618b0e371adaa79',1,'IRTecoAc::send()'],['../classIRToshibaAC.html#a14b155d3a20fb9c127eb7f3fe1fd16cd',1,'IRToshibaAC::send()'],['../classIRTrotecESP.html#add228d50195d7b9b43346a90bf959512',1,'IRTrotecESP::send()'],['../classIRVestelAc.html#a606497754b381e70d13ddef5643c9d0b',1,'IRVestelAc::send()'],['../classIRWhirlpoolAc.html#a0c043b3d7cc993940941351e6c63b5cc',1,'IRWhirlpoolAc::send()'],['../classIRsend.html#a204eedc3ad182fb2f40c42ef58f78cfc',1,'IRsend::send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)'],['../classIRsend.html#ac684c209ea8722f0a377070752df0040',1,'IRsend::send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes)']]], + ['sendac_3243',['sendAc',['../classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130',1,'IRac::sendAc(void)'],['../classIRac.html#aa33c42968acafc5cf479574483f94ea9',1,'IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)'],['../classIRac.html#ad60fbe1488efe2d02307d81b090b3b72',1,'IRac::sendAc(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=-1, const int16_t clock=-1)']]], + ['sendairwell_3244',['sendAirwell',['../classIRsend.html#a5b180d3845b45af38a19b72e6fa8e0c0',1,'IRsend']]], + ['sendaiwarct501_3245',['sendAiwaRCT501',['../classIRsend.html#ad39a4b13ad2e8500c95db49265e7c771',1,'IRsend']]], + ['sendamcor_3246',['sendAmcor',['../classIRsend.html#acd64b100eb155f90451d467188a83e92',1,'IRsend']]], + ['sendargo_3247',['sendArgo',['../classIRsend.html#a59668b767e4ad4966fe0bc259c3bd34f',1,'IRsend']]], + ['sendcarrierac_3248',['sendCarrierAC',['../classIRsend.html#a9e859a8b5eaea2e64978c8f93b78d159',1,'IRsend']]], + ['sendcarrierac40_3249',['sendCarrierAC40',['../classIRsend.html#a4342b775777d2ff9371f48aa39ad9b69',1,'IRsend']]], + ['sendcarrierac64_3250',['sendCarrierAC64',['../classIRsend.html#abf755688d87fcef5aee86c6a2c89e7c4',1,'IRsend']]], + ['sendcoolix_3251',['sendCOOLIX',['../classIRsend.html#a088af5f0d76965c61fe5716f7b8f2b61',1,'IRsend']]], + ['sendcoronaac_3252',['sendCoronaAc',['../classIRsend.html#a81f82b8248b324799a48a7685d62aaa5',1,'IRsend']]], + ['senddaikin_3253',['sendDaikin',['../classIRsend.html#a3010546144b5ca3b3c94f5881050dbd0',1,'IRsend']]], + ['senddaikin128_3254',['sendDaikin128',['../classIRsend.html#a72a41a704d48750c144c6467ae9a1430',1,'IRsend']]], + ['senddaikin152_3255',['sendDaikin152',['../classIRsend.html#a4ad420eb86e0ae38b12e983f7eaa912c',1,'IRsend']]], + ['senddaikin160_3256',['sendDaikin160',['../classIRsend.html#ab144a86def38f9f5c98701742683c004',1,'IRsend']]], + ['senddaikin176_3257',['sendDaikin176',['../classIRsend.html#ac4b5bcb95d3aff70b2f84074177e9e92',1,'IRsend']]], + ['senddaikin2_3258',['sendDaikin2',['../classIRsend.html#a34262e579cbb6634459bc09c5b15dfa0',1,'IRsend']]], + ['senddaikin216_3259',['sendDaikin216',['../classIRsend.html#aa99bfdaa71ff5bf088faaa17d304f45d',1,'IRsend']]], + ['senddaikin64_3260',['sendDaikin64',['../classIRsend.html#aa403d2192a6eb57910e6f84695475b27',1,'IRsend']]], + ['senddata_3261',['sendData',['../classIRsend.html#a4f8cd77dab7ce6c406029fe87674858f',1,'IRsend']]], + ['senddelonghiac_3262',['sendDelonghiAc',['../classIRsend.html#a35dc18f9abbffa8da40816a8a9df1093',1,'IRsend']]], + ['senddenon_3263',['sendDenon',['../classIRsend.html#a2618e000bf91cf1585329308a078653a',1,'IRsend']]], + ['senddish_3264',['sendDISH',['../classIRsend.html#ac7a72d61af219d983409911bdc1769b8',1,'IRsend']]], + ['senddoshisha_3265',['sendDoshisha',['../classIRsend.html#a3a9a8247e470975137b37f474bb97639',1,'IRsend']]], + ['sendelectraac_3266',['sendElectraAC',['../classIRsend.html#a52526c4e7bc4402e57ecf81e0047d49c',1,'IRsend']]], + ['sendepson_3267',['sendEpson',['../classIRsend.html#a063168fd82f6a88cca7253b42b9c0b28',1,'IRsend']]], + ['sendextended_3268',['sendExtended',['../classIRSamsungAc.html#a16a8dbd8f3fd34a6e681125b276acfd9',1,'IRSamsungAc']]], + ['sendfujitsuac_3269',['sendFujitsuAC',['../classIRsend.html#a1a3d3f83d0b7a59ff5510b038f658eb6',1,'IRsend']]], + ['sendgc_3270',['sendGC',['../classIRsend.html#acf987a501326d9c945cd8dbeb0806e17',1,'IRsend']]], + ['sendgeneric_3271',['sendGeneric',['../classIRsend.html#a5215fd797dfd490816f31bb99b38c273',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#aaace48306af9c020c18848db1a05e641',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#a4f5ad649827692b4b42d15b45c7f684b',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)']]], + ['sendgicable_3272',['sendGICable',['../classIRsend.html#a61dd16bc150473bbfd998dada72b205f',1,'IRsend']]], + ['sendgoodweather_3273',['sendGoodweather',['../classIRsend.html#a8e2d98ae5c39ee07a61f08facecbaa1e',1,'IRsend']]], + ['sendgree_3274',['sendGree',['../classIRsend.html#aca81ea348ceb6b0c9e62073b57bc0b17',1,'IRsend::sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)'],['../classIRsend.html#af788e7d9a2ad2483313434f9b5196753',1,'IRsend::sendGree(const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)']]], + ['sendhaierac_3275',['sendHaierAC',['../classIRsend.html#a6b4b9144d56dda302f5b321f1c5017ff',1,'IRsend']]], + ['sendhaieracyrw02_3276',['sendHaierACYRW02',['../classIRsend.html#a6aa1c1a6880872c87a46e4e0ead5d9b0',1,'IRsend']]], + ['sendhitachiac_3277',['sendHitachiAC',['../classIRsend.html#a8e6079b8b1b69ad7d7f8d05c492becbe',1,'IRsend']]], + ['sendhitachiac1_3278',['sendHitachiAC1',['../classIRsend.html#a5be9a87ce052e4f056766919247e0b22',1,'IRsend']]], + ['sendhitachiac2_3279',['sendHitachiAC2',['../classIRsend.html#a451b1913608a4ba8c26d9af8c85d16f1',1,'IRsend']]], + ['sendhitachiac3_3280',['sendHitachiAc3',['../classIRsend.html#aec7e67f4292622521b5a0a8cfdd21d84',1,'IRsend']]], + ['sendhitachiac344_3281',['sendHitachiAc344',['../classIRsend.html#a5fb28d54f2832651d992450673d05c01',1,'IRsend']]], + ['sendhitachiac424_3282',['sendHitachiAc424',['../classIRsend.html#a2a9676de30bb868b313cc9c30025f790',1,'IRsend']]], + ['sendinax_3283',['sendInax',['../classIRsend.html#a5fa5ff62276d9d680fb1255cc8b99eec',1,'IRsend']]], + ['sendjvc_3284',['sendJVC',['../classIRsend.html#aaa10c899768a5b4cdb1a7913d06141ca',1,'IRsend']]], + ['sendkelvinator_3285',['sendKelvinator',['../classIRsend.html#a8cba9df982fc91f895196d61d2e65b0e',1,'IRsend']]], + ['sendlasertag_3286',['sendLasertag',['../classIRsend.html#a55a79f9727590044751f291a4df83892',1,'IRsend']]], + ['sendlegopf_3287',['sendLegoPf',['../classIRsend.html#a4e38273aeacf01873a013c02d41a44e4',1,'IRsend']]], + ['sendlg_3288',['sendLG',['../classIRsend.html#a079a84c82f360d6d55fde5c27634f51c',1,'IRsend']]], + ['sendlg2_3289',['sendLG2',['../classIRsend.html#a5b6be1ceac8a4bc4ef55dc12eb060531',1,'IRsend']]], + ['sendlutron_3290',['sendLutron',['../classIRsend.html#a85f2a98255d3af7b7407c082ea7b7c16',1,'IRsend']]], + ['sendmagiquest_3291',['sendMagiQuest',['../classIRsend.html#af1d0e9ec0f735fc5fb9011d4f4cb8327',1,'IRsend']]], + ['sendmanchester_3292',['sendManchester',['../classIRsend.html#a7862231cbb1d50f42996c25e2f05b93e',1,'IRsend']]], + ['sendmanchesterdata_3293',['sendManchesterData',['../classIRsend.html#aa76aa33785827c1278eb57d1c15236f8',1,'IRsend']]], + ['sendmidea_3294',['sendMidea',['../classIRsend.html#a37d91b3a77b36509abdc53e2fec20a67',1,'IRsend']]], + ['sendmidea24_3295',['sendMidea24',['../classIRsend.html#a103d79e8df7954e9ab6284fa9f3daf02',1,'IRsend']]], + ['sendmitsubishi_3296',['sendMitsubishi',['../classIRsend.html#a59e8941a25c5c0bbc839fba5b1a22813',1,'IRsend']]], + ['sendmitsubishi112_3297',['sendMitsubishi112',['../classIRsend.html#a0a55e688c6aad015494168f25eb337b5',1,'IRsend']]], + ['sendmitsubishi136_3298',['sendMitsubishi136',['../classIRsend.html#a988a8b7dda3563977d537d6ac448ebc8',1,'IRsend']]], + ['sendmitsubishi2_3299',['sendMitsubishi2',['../classIRsend.html#ac54e50a6819f5c39e060891f1f6ea0f2',1,'IRsend']]], + ['sendmitsubishiac_3300',['sendMitsubishiAC',['../classIRsend.html#a3600527a82f9f22387c9f16ae51fb06f',1,'IRsend']]], + ['sendmitsubishiheavy152_3301',['sendMitsubishiHeavy152',['../classIRsend.html#ae1cffc4882c63f192c231397d19a4032',1,'IRsend']]], + ['sendmitsubishiheavy88_3302',['sendMitsubishiHeavy88',['../classIRsend.html#afaf4fd0c3dabd1bd6f8fe421294c5063',1,'IRsend']]], + ['sendmultibrackets_3303',['sendMultibrackets',['../classIRsend.html#a9026d42480b85270e560e122b8be3b6c',1,'IRsend']]], + ['sendmwm_3304',['sendMWM',['../classIRsend.html#a98301801daf929ec8ce022987ae394f2',1,'IRsend']]], + ['sendnec_3305',['sendNEC',['../classIRsend.html#a324c9e455c0bae51ebe9bc07e915c043',1,'IRsend']]], + ['sendneoclima_3306',['sendNeoclima',['../classIRsend.html#a71e1b5e780851210465bbf061b9c095b',1,'IRsend']]], + ['sendnikai_3307',['sendNikai',['../classIRsend.html#a693e6616b81509cf27d1345c140acc96',1,'IRsend']]], + ['sendoff_3308',['sendOff',['../classIRSamsungAc.html#a96e2ae87f3ffcf1ad812f256f31e4898',1,'IRSamsungAc']]], + ['sendon_3309',['sendOn',['../classIRSamsungAc.html#a7e6980c829dfd143d4d19abaf5d65678',1,'IRSamsungAc']]], + ['sendpanasonic_3310',['sendPanasonic',['../classIRsend.html#a92192475f89b19cfdf7fd0416a263145',1,'IRsend']]], + ['sendpanasonic64_3311',['sendPanasonic64',['../classIRsend.html#adc4fd287f3546f7ff0b67e177a42b560',1,'IRsend']]], + ['sendpanasonicac_3312',['sendPanasonicAC',['../classIRsend.html#a10a3c387a328dbb11733a251f4db7614',1,'IRsend']]], + ['sendpioneer_3313',['sendPioneer',['../classIRsend.html#a11f099f3768a659d1f996589cea8a313',1,'IRsend']]], + ['sendpronto_3314',['sendPronto',['../classIRsend.html#a0b349351e2ba19f87e6b01cde7e67c49',1,'IRsend']]], + ['sendraw_3315',['sendRaw',['../classIRsend.html#a2b9b84f828918f933bd1764d113b53f8',1,'IRsend']]], + ['sendrc5_3316',['sendRC5',['../classIRsend.html#a2bd2ccb27ecd57e14b36f76d82af308a',1,'IRsend']]], + ['sendrc6_3317',['sendRC6',['../classIRsend.html#a2192a95e0d162f9b1775fc2a47f65c37',1,'IRsend']]], + ['sendrcmm_3318',['sendRCMM',['../classIRsend.html#a3cafe475a58234a0d3aa655a2464be75',1,'IRsend']]], + ['sendsamsung_3319',['sendSAMSUNG',['../classIRsend.html#a5252dd159aad713c099de6728ac56d81',1,'IRsend']]], + ['sendsamsung36_3320',['sendSamsung36',['../classIRsend.html#ab5dcd4ec5ddb0b0351870ddf54e5ba66',1,'IRsend']]], + ['sendsamsungac_3321',['sendSamsungAC',['../classIRsend.html#a2773d251da1d35b964810c8cc4cb438b',1,'IRsend']]], + ['sendsanyolc7461_3322',['sendSanyoLC7461',['../classIRsend.html#aa23e51a97a0ec1907d22623fed6dd223',1,'IRsend']]], + ['sendsharp_3323',['sendSharp',['../classIRsend.html#a801ae78ac5a72116c566c4ac5f99c6bd',1,'IRsend']]], + ['sendsharpac_3324',['sendSharpAc',['../classIRsend.html#a438e4c9d50e62da7d772d8d638728213',1,'IRsend']]], + ['sendsharpraw_3325',['sendSharpRaw',['../classIRsend.html#aa1f12fd537ca8c21c183ee41d17a3afc',1,'IRsend']]], + ['sendsherwood_3326',['sendSherwood',['../classIRsend.html#afb3a89acfb868c92a997a3000e70c6e8',1,'IRsend']]], + ['sendsony_3327',['sendSony',['../classIRsend.html#a02bb64503474a0841c51664cf4668d85',1,'IRsend']]], + ['sendsony38_3328',['sendSony38',['../classIRsend.html#a558442f49b32453f0fb987c29e1ec6d3',1,'IRsend']]], + ['sendsymphony_3329',['sendSymphony',['../classIRsend.html#a1f1d5a30660ab0061f64d559d4916d4e',1,'IRsend']]], + ['sendtcl112ac_3330',['sendTcl112Ac',['../classIRsend.html#a2dedce2841e4a6445a98f03393fce823',1,'IRsend']]], + ['sendteco_3331',['sendTeco',['../classIRsend.html#ac6300f977fe94119813481ba682ce33f',1,'IRsend']]], + ['sendtoshibaac_3332',['sendToshibaAC',['../classIRsend.html#a4ef8e028135536dc1f5a63be85ef7d49',1,'IRsend']]], + ['sendtrotec_3333',['sendTrotec',['../classIRsend.html#a135796327b5db127473f4d198e663c00',1,'IRsend']]], + ['sendvestelac_3334',['sendVestelAc',['../classIRsend.html#a129a40f9d344cb0fadfd4cca53ca6b44',1,'IRsend']]], + ['sendwhirlpoolac_3335',['sendWhirlpoolAC',['../classIRsend.html#aa440a50000a259072f93ad6c0e42ec22',1,'IRsend']]], + ['sendwhynter_3336',['sendWhynter',['../classIRsend.html#a07188366deed3dd902cba80a711cf220',1,'IRsend']]], + ['sendzepeal_3337',['sendZepeal',['../classIRsend.html#a9bcba8bbac41d679b5b930e67d3e1b7f',1,'IRsend']]], + ['serialprintuint64_3338',['serialPrintUint64',['../IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433',1,'serialPrintUint64(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243',1,'serialPrintUint64(uint64_t input, uint8_t base=10): IRutils.cpp']]], + ['set3d_3339',['set3D',['../classIRMitsubishiHeavy152Ac.html#ab22654d492a4b0e82efcd0c96fc9bbe3',1,'IRMitsubishiHeavy152Ac::set3D()'],['../classIRMitsubishiHeavy88Ac.html#ae0b7eac743a8de6852722f067e010ba7',1,'IRMitsubishiHeavy88Ac::set3D()']]], + ['set8cheat_3340',['set8CHeat',['../classIRNeoclimaAc.html#a3176c5fe3251bd6a31a3a0ddc2c294be',1,'IRNeoclimaAc']]], + ['setauto_3341',['setAuto',['../classIRVestelAc.html#a2509eed2e0d7b23595bbe6dd7df17d74',1,'IRVestelAc']]], + ['setbeep_3342',['setBeep',['../classIRDaikin2.html#a4c0588887a45403a0a9f2cf95f847889',1,'IRDaikin2::setBeep()'],['../classIRSamsungAc.html#a092ccbea031dd4be747076530117649d',1,'IRSamsungAc::setBeep()']]], + ['setbit_3343',['setBit',['../namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b',1,'irutils::setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size)'],['../namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c',1,'irutils::setBit(const uint8_t data, const uint8_t position, const bool on)'],['../namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220',1,'irutils::setBit(uint8_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b',1,'irutils::setBit(uint32_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487',1,'irutils::setBit(uint64_t *const data, const uint8_t position, const bool on)']]], + ['setbits_3344',['setBits',['../namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78',1,'irutils::setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)'],['../namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e',1,'irutils::setBits(uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)'],['../namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c',1,'irutils::setBits(uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)']]], + ['setboost_3345',['setBoost',['../classIRDelonghiAc.html#a827d1e43e9252657147226aa3f8e4eb8',1,'IRDelonghiAc']]], + ['setbreeze_3346',['setBreeze',['../classIRSamsungAc.html#a310a73f15a0274fbaf15b981abaae592',1,'IRSamsungAc']]], + ['setbutton_3347',['setButton',['../classIRHaierACYRW02.html#aa0f1561e2446f6231f722581f5bae34d',1,'IRHaierACYRW02::setButton()'],['../classIRHitachiAc424.html#af4ded7ea8aa94271d5135eebd3bb80a8',1,'IRHitachiAc424::setButton()'],['../classIRNeoclimaAc.html#a7e2e6e646411b4f5ea3c1ce1e944581c',1,'IRNeoclimaAc::setButton()']]], + ['setclean_3348',['setClean',['../classIRCoolixAC.html#a0087ac58749ef946632fbb5a8b41fe0d',1,'IRCoolixAC::setClean()'],['../classIRDaikin2.html#a21e09b867710a225d5cf53006f723326',1,'IRDaikin2::setClean()'],['../classIRElectraAc.html#a4aa44fc40196067469dfa8a722e33115',1,'IRElectraAc::setClean()'],['../classIRFujitsuAC.html#a7f6f18ea39bf28717cb65ff348b1b2f5',1,'IRFujitsuAC::setClean()'],['../classIRMitsubishiHeavy152Ac.html#a11678e7eb906414770938f6efce266f1',1,'IRMitsubishiHeavy152Ac::setClean()'],['../classIRMitsubishiHeavy88Ac.html#a65968304e4aaf025dfefc49d5d777cbd',1,'IRMitsubishiHeavy88Ac::setClean()'],['../classIRSamsungAc.html#a911ca57dfb0e6787cba330e8d49b2496',1,'IRSamsungAc::setClean()'],['../classIRSharpAc.html#ace6e7b98496a594031809fe8a535c429',1,'IRSharpAc::setClean()']]], + ['setclock_3349',['setClock',['../classIRDaikin128.html#aa9928ac010ec79ddab4f551eedf2f5d9',1,'IRDaikin128::setClock()'],['../classIRDaikin64.html#a655f1cec5e28f79e5718573678c535ec',1,'IRDaikin64::setClock()'],['../classIRMitsubishiAC.html#a7abe34adf36bdd1a65a17f56ee8af1f6',1,'IRMitsubishiAC::setClock()'],['../classIRPanasonicAc.html#a3f76c6aca94f52c227c2e259512fd101',1,'IRPanasonicAc::setClock()'],['../classIRWhirlpoolAc.html#aab09aae7de733414bf480c3df22b83f8',1,'IRWhirlpoolAc::setClock()']]], + ['setcmd_3350',['setCmd',['../classIRFujitsuAC.html#a7579944c11b3d31bb069303926307617',1,'IRFujitsuAC']]], + ['setcomfort_3351',['setComfort',['../classIRDaikinESP.html#aaa15c0be7ffb8e845a03d193583a58d1',1,'IRDaikinESP::setComfort()'],['../classIRDaikin152.html#a95de2dc0a90fe4212cb60973b9430486',1,'IRDaikin152::setComfort()']]], + ['setcommand_3352',['setCommand',['../classIRGoodweatherAc.html#a4e266f42b7a82c49208e2acc7813e07b',1,'IRGoodweatherAc::setCommand()'],['../classIRHaierAC.html#ade34c951e72a794c2ff7fa0d1595d68f',1,'IRHaierAC::setCommand()'],['../classIRWhirlpoolAc.html#aaea26b1388489dff70a98fde1e6185be',1,'IRWhirlpoolAc::setCommand()']]], + ['setcurrentday_3353',['setCurrentDay',['../classIRDaikinESP.html#a5465b9857fd73b82362f766368717d16',1,'IRDaikinESP']]], + ['setcurrenttime_3354',['setCurrentTime',['../classIRDaikinESP.html#ae6559268982ae0968358a885c7dbba6e',1,'IRDaikinESP::setCurrentTime()'],['../classIRDaikin2.html#a8b32b1b9a87c9b671af6aeedb709d520',1,'IRDaikin2::setCurrentTime()']]], + ['setcurrtime_3355',['setCurrTime',['../classIRHaierAC.html#a53500ebdec058d27396e5906a572fe15',1,'IRHaierAC']]], + ['setdisplay_3356',['setDisplay',['../classIRSamsungAc.html#ad20199bed3a01208ec694b9d4eb7ef98',1,'IRSamsungAc']]], + ['setdisplaytempsource_3357',['setDisplayTempSource',['../classIRGreeAC.html#a1d073c31ea169d0e5cf33c8592982035',1,'IRGreeAC']]], + ['setecono_3358',['setEcono',['../classIRCoronaAc.html#abb5624317fff60674bed410be3a3fa52',1,'IRCoronaAc::setEcono()'],['../classIRDaikinESP.html#a12129aedd6320522a9b6e811e347089c',1,'IRDaikinESP::setEcono()'],['../classIRDaikin2.html#a42a44a6cefa6bf6f45148d39c216ebc0',1,'IRDaikin2::setEcono()'],['../classIRDaikin128.html#a07fb5289ee476e0335fec4845254b7ce',1,'IRDaikin128::setEcono()'],['../classIRDaikin152.html#a8062d16f7aefb7586e3d3bdfea8755b4',1,'IRDaikin152::setEcono()'],['../classIRMitsubishiHeavy152Ac.html#ab3964219ee3c0c5112bb38c892a01784',1,'IRMitsubishiHeavy152Ac::setEcono()'],['../classIRMitsubishiHeavy88Ac.html#a7612448f1cceaa6aeee1697f51adaf43',1,'IRMitsubishiHeavy88Ac::setEcono()'],['../classIRTcl112Ac.html#a48ac7acfa8fed8e9da39907282f4f377',1,'IRTcl112Ac::setEcono()']]], + ['seteconotoggle_3359',['setEconoToggle',['../classIRSharpAc.html#ae3495676b8bffecba5c56fbf1ab9ee4d',1,'IRSharpAc']]], + ['seteye_3360',['setEye',['../classIRDaikin2.html#a5ba8e5d5dd4aba45a90de1d450a7a88b',1,'IRDaikin2::setEye()'],['../classIRNeoclimaAc.html#aaf433cab785db382c55a420e68e7d7ec',1,'IRNeoclimaAc::setEye()']]], + ['seteyeauto_3361',['setEyeAuto',['../classIRDaikin2.html#a975c2fdb261d6d2b6c8e196fbd074899',1,'IRDaikin2']]], + ['setfan_3362',['setFan',['../classIRAmcorAc.html#acf26fc65363e2734e4dc6eb562812553',1,'IRAmcorAc::setFan()'],['../classIRArgoAC.html#a8144f003628e128ec6630aef49ed5cb5',1,'IRArgoAC::setFan()'],['../classIRCarrierAc64.html#a312027468b508e9d38dd9e23ee99f9e4',1,'IRCarrierAc64::setFan()'],['../classIRCoolixAC.html#aff4189cb1000c6db7d88624fbadbe0cb',1,'IRCoolixAC::setFan()'],['../classIRCoronaAc.html#aa4da12502bf85438846bdde56391ee5c',1,'IRCoronaAc::setFan()'],['../classIRDaikinESP.html#a1f191f45e473482a86aad9a1c879e083',1,'IRDaikinESP::setFan()'],['../classIRDaikin2.html#af9f3ddbdd1f1d5d99c84846b73c5daa1',1,'IRDaikin2::setFan()'],['../classIRDaikin216.html#a8fadfb1e61deca74a2d1b9c1d5ae62e1',1,'IRDaikin216::setFan()'],['../classIRDaikin160.html#a7f507c64dc7a9fa1e9391e9e8473af1b',1,'IRDaikin160::setFan()'],['../classIRDaikin176.html#a050a9943dc7d8289472e6b9dbdcb06c1',1,'IRDaikin176::setFan()'],['../classIRDaikin128.html#a0495834250e97e7831e9906ab548fe44',1,'IRDaikin128::setFan()'],['../classIRDaikin152.html#a385a4f65dfccd0a9e94be06ae60c5343',1,'IRDaikin152::setFan()'],['../classIRDaikin64.html#af39206f90b99fd5ee340923b196368b8',1,'IRDaikin64::setFan()'],['../classIRDelonghiAc.html#a440f1e0efa18c6b1a8e18e0a97fbfb79',1,'IRDelonghiAc::setFan()'],['../classIRElectraAc.html#aa338ce18cafaf9c7b9aa3385e681bbe7',1,'IRElectraAc::setFan()'],['../classIRGoodweatherAc.html#af8cf9ba59af548677e586cd59e8a6cc2',1,'IRGoodweatherAc::setFan()'],['../classIRGreeAC.html#a9bb570e71df5002298505d49473e6bac',1,'IRGreeAC::setFan()'],['../classIRHaierAC.html#a42ee1c5889f07bf7615c8f853bca2261',1,'IRHaierAC::setFan()'],['../classIRHaierACYRW02.html#ae9c3a7bffc08d9d5204616823f709889',1,'IRHaierACYRW02::setFan()'],['../classIRHitachiAc.html#a0760b07502b976880ee8499dc6fa61ff',1,'IRHitachiAc::setFan()'],['../classIRHitachiAc1.html#a7294dc1324877d4a64f7b4373d97d745',1,'IRHitachiAc1::setFan()'],['../classIRHitachiAc424.html#afd69bcff56224f39af92fc2d334b67bb',1,'IRHitachiAc424::setFan()'],['../classIRKelvinatorAC.html#af08e94be9699983c0087c9b059aad319',1,'IRKelvinatorAC::setFan()'],['../classIRLgAc.html#a0f1901a21ffb93641d3481417d74bb4e',1,'IRLgAc::setFan()'],['../classIRMideaAC.html#a546eeca4eea015899a5ad9f5d1c6fafb',1,'IRMideaAC::setFan()'],['../classIRMitsubishiAC.html#a4e88e50b2eddd0233aade5c1bf7819f1',1,'IRMitsubishiAC::setFan()'],['../classIRMitsubishi136.html#a2aa62126614f734ec3d1b7b3cb653e9e',1,'IRMitsubishi136::setFan()'],['../classIRMitsubishi112.html#ab681e78572c869a8c57079a660fe1505',1,'IRMitsubishi112::setFan()'],['../classIRMitsubishiHeavy152Ac.html#ac8d8eceba935aa626cb229d1c41081bb',1,'IRMitsubishiHeavy152Ac::setFan()'],['../classIRMitsubishiHeavy88Ac.html#a4f8c934a82091547c36da512329e76d7',1,'IRMitsubishiHeavy88Ac::setFan()'],['../classIRNeoclimaAc.html#a8db9d2d446e8614b2fc4583a454d7cee',1,'IRNeoclimaAc::setFan()'],['../classIRPanasonicAc.html#a8d77292226f55601c30ee53252ba83cd',1,'IRPanasonicAc::setFan()'],['../classIRSamsungAc.html#a6c7571e14fe6629348273a2b49a0a824',1,'IRSamsungAc::setFan()'],['../classIRSharpAc.html#a5138068f8ba4c51939ff3bb14f0aae45',1,'IRSharpAc::setFan()'],['../classIRTcl112Ac.html#a0dab8ad6675c4ec122d0d7e28a557cba',1,'IRTcl112Ac::setFan()'],['../classIRTecoAc.html#afda9a33ca450568f968217bedc9ad7f2',1,'IRTecoAc::setFan()'],['../classIRToshibaAC.html#a020ba3e95c607f52ce091193fc5825fc',1,'IRToshibaAC::setFan()'],['../classIRVestelAc.html#af53dfd0a0372c878b6ba2ca1cfc21ccd',1,'IRVestelAc::setFan()'],['../classIRWhirlpoolAc.html#a8da28ee25fdc91d55a9f6ab5dab3af81',1,'IRWhirlpoolAc::setFan()']]], + ['setfanspeed_3363',['setFanSpeed',['../classIRFujitsuAC.html#af0fc10ec0a606434477cb41c60eb49e5',1,'IRFujitsuAC']]], + ['setfilter_3364',['setFilter',['../classIRFujitsuAC.html#aec0048efe87f60406c76ad6bc3ffbc61',1,'IRFujitsuAC::setFilter()'],['../classIRMitsubishiHeavy152Ac.html#aaf76ac48228d3a7b8490e684407e65b1',1,'IRMitsubishiHeavy152Ac::setFilter()']]], + ['setflap_3365',['setFlap',['../classIRArgoAC.html#a55a6402ffc3fe7fb59775050901416ca',1,'IRArgoAC']]], + ['setfresh_3366',['setFresh',['../classIRNeoclimaAc.html#a6354d8b902ffc1e7c044a61185504404',1,'IRNeoclimaAc']]], + ['setfreshair_3367',['setFreshAir',['../classIRDaikin2.html#a6e0596c7b9f9b43b8d241340ae08e886',1,'IRDaikin2']]], + ['setfreshairhigh_3368',['setFreshAirHigh',['../classIRDaikin2.html#a044471f2298a1942bcc2f859f9459924',1,'IRDaikin2']]], + ['sethealth_3369',['setHealth',['../classIRHaierAC.html#a48c9ae91809d63156eeb3889f2e908f4',1,'IRHaierAC::setHealth()'],['../classIRHaierACYRW02.html#a79673650a2285f029a35ab69edeb0e74',1,'IRHaierACYRW02::setHealth()'],['../classIRTcl112Ac.html#a28ed509977d8642174bc6c9aa97ae1c3',1,'IRTcl112Ac::setHealth()']]], + ['sethold_3370',['setHold',['../classIRNeoclimaAc.html#a2eb4e0a2ff39ceb1b6b571998d91b31e',1,'IRNeoclimaAc']]], + ['sethumid_3371',['setHumid',['../classIRTecoAc.html#a4ab07a7c95f34d3b292926c719aeb303',1,'IRTecoAc']]], + ['setifeel_3372',['setIFeel',['../classIRGreeAC.html#a68a670156a5e0a91a8a3cf9225263e0b',1,'IRGreeAC::setIFeel()'],['../classIRArgoAC.html#ae59f903855961441b676b7f662602554',1,'IRArgoAC::setiFeel()']]], + ['setinvertedstates_3373',['setInvertedStates',['../classIRHitachiAc424.html#ad18528cf83e863b98cb1609eec970ac5',1,'IRHitachiAc424::setInvertedStates()'],['../classIRHitachiAc3.html#af37c710449cd32df4753509749e31cad',1,'IRHitachiAc3::setInvertedStates()']]], + ['setion_3374',['setIon',['../classIRNeoclimaAc.html#a504fc5e371746fda8e7eb7cc0abf137a',1,'IRNeoclimaAc::setIon()'],['../classIRPanasonicAc.html#a5a1c4f5b9eb7a3a1a81a6acd0491c3cd',1,'IRPanasonicAc::setIon()'],['../classIRSamsungAc.html#aeee65ca6d2100635a517077f01053bed',1,'IRSamsungAc::setIon()'],['../classIRSharpAc.html#af6a390362bc5b40eecc6564b16b3379b',1,'IRSharpAc::setIon()'],['../classIRVestelAc.html#acf860da68a15d463dab437a808c9c8c6',1,'IRVestelAc::setIon()']]], + ['setionfilter_3375',['setIonFilter',['../classIRKelvinatorAC.html#a6a219c481ddc21d93028f5c799c25883',1,'IRKelvinatorAC']]], + ['setled_3376',['setLed',['../classIRCoolixAC.html#a3132f99cffa108129dff64a0b68bd614',1,'IRCoolixAC']]], + ['setlight_3377',['setLight',['../classIRDaikin2.html#a7ecadb3335e9b22729a89b4c41456242',1,'IRDaikin2::setLight()'],['../classIRGoodweatherAc.html#a3f149ff426b236ba9f90659a6daf4a9c',1,'IRGoodweatherAc::setLight()'],['../classIRGreeAC.html#a702bbba38e11bb8f3428ee707fc82311',1,'IRGreeAC::setLight()'],['../classIRKelvinatorAC.html#a870890c2bc8510f8f7351ca21db8d855',1,'IRKelvinatorAC::setLight()'],['../classIRNeoclimaAc.html#a1d7a6ec6d319544bee907a23a1d14084',1,'IRNeoclimaAc::setLight()'],['../classIRTcl112Ac.html#a7dec5b0559f996df8a4fc259ab6012e9',1,'IRTcl112Ac::setLight()'],['../classIRTecoAc.html#a25d97c1e7be31d80a4ffad0026e633d7',1,'IRTecoAc::setLight()'],['../classIRWhirlpoolAc.html#a70b4c0467a7747f9cf9e106af1025771',1,'IRWhirlpoolAc::setLight()']]], + ['setlighttoggle_3378',['setLightToggle',['../classIRDaikin128.html#a6361c789141ccecb729c104e71ddcc41',1,'IRDaikin128::setLightToggle()'],['../classIRElectraAc.html#a15373982641e36f4b68258368700be7d',1,'IRElectraAc::setLightToggle()']]], + ['setmax_3379',['setMax',['../classIRAmcorAc.html#a1250c6b106378286d9db013296c9b16f',1,'IRAmcorAc::setMax()'],['../classIRArgoAC.html#a909c1f74e9452d0e19fc3ffd28b1b81b',1,'IRArgoAC::setMax()']]], + ['setmode_3380',['setMode',['../classIRAmcorAc.html#afa9c2d080ed5c4c7bc64eb13a07eab68',1,'IRAmcorAc::setMode()'],['../classIRArgoAC.html#a8575f0ef967b09308ed6a453857e65c7',1,'IRArgoAC::setMode()'],['../classIRCarrierAc64.html#ae462eeec49ff91358f1b9921750ee36d',1,'IRCarrierAc64::setMode()'],['../classIRCoolixAC.html#a5c0094d32aca6a5323f4dc72a03f02e9',1,'IRCoolixAC::setMode()'],['../classIRCoronaAc.html#aedeeedd176c89e5b7b650a4311e712be',1,'IRCoronaAc::setMode()'],['../classIRDaikinESP.html#af0f463201c877d33fa8680053dda7551',1,'IRDaikinESP::setMode()'],['../classIRDaikin2.html#a24ef3b53f22fe3557ed2dbc98a5bc6d2',1,'IRDaikin2::setMode()'],['../classIRDaikin216.html#a1d0dfce75ac95df9125b2cfe7c955080',1,'IRDaikin216::setMode()'],['../classIRDaikin160.html#a48e6fff63fd8b894c649fb495a467faa',1,'IRDaikin160::setMode()'],['../classIRDaikin176.html#a7ce82479f5ae2721baae8119b711c112',1,'IRDaikin176::setMode()'],['../classIRDaikin128.html#a9693e9931449f39253ca9102ac5cbfe9',1,'IRDaikin128::setMode()'],['../classIRDaikin152.html#aad0a46c751b73792282d6614103f57d8',1,'IRDaikin152::setMode()'],['../classIRDaikin64.html#a04dff0d273457a7bc3f3e0e1af4f7cd9',1,'IRDaikin64::setMode()'],['../classIRDelonghiAc.html#a62392c26321f038a84d99d54039bcfae',1,'IRDelonghiAc::setMode()'],['../classIRElectraAc.html#a911b7410fd2f29464c1505e183c04c5d',1,'IRElectraAc::setMode()'],['../classIRFujitsuAC.html#ac125c320f9794aae931bc59ba332a4a8',1,'IRFujitsuAC::setMode()'],['../classIRGoodweatherAc.html#a8eed6b70b7b1c2e8a9620db7462e1fb5',1,'IRGoodweatherAc::setMode()'],['../classIRGreeAC.html#a9d9dbd416e3dc270fcfda620b3bb4fe2',1,'IRGreeAC::setMode()'],['../classIRHaierAC.html#a3ad0317f2fd4f57d8ce61353ab3e48c7',1,'IRHaierAC::setMode()'],['../classIRHaierACYRW02.html#ae762c5f5422b4af612fa00f7c26452ed',1,'IRHaierACYRW02::setMode()'],['../classIRHitachiAc.html#a208f73a42484a1555145b41849e8c51f',1,'IRHitachiAc::setMode()'],['../classIRHitachiAc1.html#a1f3ced601e1131b70f840820ecb3feaa',1,'IRHitachiAc1::setMode()'],['../classIRHitachiAc424.html#a373a51d207674e35e00762b057f73cd5',1,'IRHitachiAc424::setMode()'],['../classIRKelvinatorAC.html#af55cc77892bc960587037c337b90d1bc',1,'IRKelvinatorAC::setMode()'],['../classIRLgAc.html#a5e1b21d9121c6bf6507f615f470b5890',1,'IRLgAc::setMode()'],['../classIRMideaAC.html#a3b92f25a82741ae404e8f9af8dbca3a8',1,'IRMideaAC::setMode()'],['../classIRMitsubishiAC.html#a2b4e2f00ee5a385172b13e8d9858ac0b',1,'IRMitsubishiAC::setMode()'],['../classIRMitsubishi136.html#aaef2ed81bdeb183995e2342c2ca17a8b',1,'IRMitsubishi136::setMode()'],['../classIRMitsubishi112.html#a0c1434e1d8dd513007400042324e868e',1,'IRMitsubishi112::setMode()'],['../classIRMitsubishiHeavy152Ac.html#a5a68388f337d7ba80289359903a1d01d',1,'IRMitsubishiHeavy152Ac::setMode()'],['../classIRMitsubishiHeavy88Ac.html#a1802cc8a382d6161b83f8947137d941d',1,'IRMitsubishiHeavy88Ac::setMode()'],['../classIRNeoclimaAc.html#adabd715c4a2ec34dd88330b97a1f0ecd',1,'IRNeoclimaAc::setMode()'],['../classIRPanasonicAc.html#add025b64e736d5120abeb2564a2849a4',1,'IRPanasonicAc::setMode()'],['../classIRSamsungAc.html#a708d9c6c91d774d6eeadbc0bd7f350af',1,'IRSamsungAc::setMode()'],['../classIRSharpAc.html#ab51c207de90391cb7190e3ec95adc16e',1,'IRSharpAc::setMode()'],['../classIRTcl112Ac.html#a1a050c9b238691ba6d4764beeb788778',1,'IRTcl112Ac::setMode()'],['../classIRTecoAc.html#aba404540b723fa4687a4fda954221130',1,'IRTecoAc::setMode()'],['../classIRToshibaAC.html#aa001cddc464d6cbcc342e5e4c7af13ff',1,'IRToshibaAC::setMode()'],['../classIRTrotecESP.html#a5d34e8d1e1be765e51cbfb6874482997',1,'IRTrotecESP::setMode()'],['../classIRVestelAc.html#a470e14ab5623386c0fa2b02fd15ea1d8',1,'IRVestelAc::setMode()'],['../classIRWhirlpoolAc.html#ab09869929f5cc1fd0cc5dede93bba1c5',1,'IRWhirlpoolAc::setMode()']]], + ['setmodel_3381',['setModel',['../classIRFujitsuAC.html#a5393698000d8becf33ff332b32b97c73',1,'IRFujitsuAC::setModel()'],['../classIRGreeAC.html#a1075a08c30a2de97892e0842cb30e451',1,'IRGreeAC::setModel()'],['../classIRHitachiAc1.html#abb8c2c87e87f9d538f171e842c9d309a',1,'IRHitachiAc1::setModel()'],['../classIRLgAc.html#ae4b8758ecf10bd7e25ed401593692821',1,'IRLgAc::setModel()'],['../classIRPanasonicAc.html#a342531bfea3b05484de84e537bde390c',1,'IRPanasonicAc::setModel()'],['../classIRWhirlpoolAc.html#accfa1660ed792acc3cf48ff60d9570f0',1,'IRWhirlpoolAc::setModel()']]], + ['setmold_3382',['setMold',['../classIRDaikinESP.html#a1616d08c8fd3c628fc45a76c32743ac9',1,'IRDaikinESP::setMold()'],['../classIRDaikin2.html#ad53e046e545f3b6c5418dfbaf58653ca',1,'IRDaikin2::setMold()']]], + ['setnight_3383',['setNight',['../classIRArgoAC.html#a769dd3b538653940e41883848bc1e19c',1,'IRArgoAC::setNight()'],['../classIRMitsubishiHeavy152Ac.html#a6920a1aad327e2f347b09da12f11cf8c',1,'IRMitsubishiHeavy152Ac::setNight()']]], + ['setofftime_3384',['setOffTime',['../classIRDaikin64.html#a46a0b1e2438087ba557494b0b4fce4a5',1,'IRDaikin64']]], + ['setofftimeenabled_3385',['setOffTimeEnabled',['../classIRDaikin64.html#aea59ae39ddd0fc33a6941d0affceae9a',1,'IRDaikin64']]], + ['setofftimer_3386',['setOffTimer',['../classIRCarrierAc64.html#a92b1066e783db1bdffabfdc57699deef',1,'IRCarrierAc64::setOffTimer()'],['../classIRCoronaAc.html#a00f269b6389bf65d1816e80b835aa9b0',1,'IRCoronaAc::setOffTimer()'],['../classIRDaikin128.html#a30ca067676dfde963986e25c84616368',1,'IRDaikin128::setOffTimer()'],['../classIRDelonghiAc.html#a9602c652b10b06c6eeae0e6158c42c68',1,'IRDelonghiAc::setOffTimer()'],['../classIRHaierAC.html#aa16b36aa7ef07628343dbd2dfe5157a2',1,'IRHaierAC::setOffTimer()'],['../classIRHitachiAc1.html#a62e9c7b68e63d1791d79805f2bce99df',1,'IRHitachiAc1::setOffTimer()'],['../classIRPanasonicAc.html#a08e097f40cee6c614ec1a8de716222cf',1,'IRPanasonicAc::setOffTimer()'],['../classIRVestelAc.html#acc61cd785d2f668a86ecefb243d63549',1,'IRVestelAc::setOffTimer()'],['../classIRWhirlpoolAc.html#a69f3555c9b27f3cfd9167ed3239804b8',1,'IRWhirlpoolAc::setOffTimer()']]], + ['setofftimeractive_3387',['setOffTimerActive',['../classIRVestelAc.html#a8a023f5594b446f0c20f66c4ee584d8e',1,'IRVestelAc']]], + ['setofftimerenabled_3388',['setOffTimerEnabled',['../classIRDaikin128.html#aac8a178bdaf7de7a183991e710a9a9d8',1,'IRDaikin128::setOffTimerEnabled()'],['../classIRDelonghiAc.html#a5cf81c9864f3c3728d4dd65e4d9c49c8',1,'IRDelonghiAc::setOffTimerEnabled()']]], + ['setontime_3389',['setOnTime',['../classIRDaikin64.html#aaada482820a90492a933f368fafaebb7',1,'IRDaikin64']]], + ['setontimeenabled_3390',['setOnTimeEnabled',['../classIRDaikin64.html#a8e7a7c1f775f8ddf9d48a96915751c7a',1,'IRDaikin64']]], + ['setontimer_3391',['setOnTimer',['../classIRCarrierAc64.html#a9049a8d91200b878cc2a1b9b80a280ea',1,'IRCarrierAc64::setOnTimer()'],['../classIRCoronaAc.html#aae4142f45cc9c2b3e392b72cb404a2d8',1,'IRCoronaAc::setOnTimer()'],['../classIRDaikin128.html#a21773493eafae741b5716ac569eaf0a8',1,'IRDaikin128::setOnTimer()'],['../classIRDelonghiAc.html#a9a478f463a632893be7c4f5223c188ad',1,'IRDelonghiAc::setOnTimer()'],['../classIRHaierAC.html#aa5e95aa05749f6d35dd31b021fea2f5b',1,'IRHaierAC::setOnTimer()'],['../classIRHitachiAc1.html#a51ed6155f228628942ba08ea2ff5c547',1,'IRHitachiAc1::setOnTimer()'],['../classIRPanasonicAc.html#a51fdaa11e4e3f77189a94007a5acbec2',1,'IRPanasonicAc::setOnTimer()'],['../classIRVestelAc.html#af19bb7704326eb5688f2a2fa08e10ee2',1,'IRVestelAc::setOnTimer()'],['../classIRWhirlpoolAc.html#a1cb0e346e6f40b65b98a768df7fdace8',1,'IRWhirlpoolAc::setOnTimer()']]], + ['setontimeractive_3392',['setOnTimerActive',['../classIRVestelAc.html#a16ef4ecb7c76bef89b6e0ca36746d606',1,'IRVestelAc']]], + ['setontimerenabled_3393',['setOnTimerEnabled',['../classIRDaikin128.html#a07f693fac3de101c91c190e5e70edb57',1,'IRDaikin128::setOnTimerEnabled()'],['../classIRDelonghiAc.html#af6b956c273284e287093260039003362',1,'IRDelonghiAc::setOnTimerEnabled()']]], + ['setoutsidequiet_3394',['setOutsideQuiet',['../classIRFujitsuAC.html#a9a0533cba18739e52014307bf4b1ad07',1,'IRFujitsuAC']]], + ['setpower_3395',['setPower',['../classIRAmcorAc.html#a2ccfb2c2f0feb8a8cea9e10e30035988',1,'IRAmcorAc::setPower()'],['../classIRArgoAC.html#a991f73d84952c1d8ac86c579d1b01785',1,'IRArgoAC::setPower()'],['../classIRCarrierAc64.html#a8acf59cbf3b02381b5188324030b7727',1,'IRCarrierAc64::setPower()'],['../classIRCoolixAC.html#a41dc75b29e7a05eff5f16161cb9b3eeb',1,'IRCoolixAC::setPower()'],['../classIRCoronaAc.html#adc636402b51e0c78c4797aea5f80915d',1,'IRCoronaAc::setPower()'],['../classIRDaikinESP.html#aa0fb65d01bb203d17d923504ddd60984',1,'IRDaikinESP::setPower()'],['../classIRDaikin2.html#a3adfe1a80a702b7098ccd0e18225396e',1,'IRDaikin2::setPower()'],['../classIRDaikin216.html#a130a98bb2422a228977dea8a4e068ace',1,'IRDaikin216::setPower()'],['../classIRDaikin160.html#af1a800ef7494c49a868d01039f5c37e4',1,'IRDaikin160::setPower()'],['../classIRDaikin176.html#a58c755ba53d1f14a51b0c64ff4ef0669',1,'IRDaikin176::setPower()'],['../classIRDaikin152.html#a887f7340b9c3e7933f5d06bc5f59ee91',1,'IRDaikin152::setPower()'],['../classIRDelonghiAc.html#aa1ebbf63aa2331b87b95df9c5bdb41dc',1,'IRDelonghiAc::setPower()'],['../classIRElectraAc.html#abd04ffe9a77a97d4fafbcecd3a7949a4',1,'IRElectraAc::setPower()'],['../classIRFujitsuAC.html#a8d8211f20c8ec299e1fcb588a0846ac2',1,'IRFujitsuAC::setPower()'],['../classIRGoodweatherAc.html#ac49e30082777b10fe9edf6ec7bd76ea5',1,'IRGoodweatherAc::setPower()'],['../classIRGreeAC.html#a16b8c6af038752cd2b416cdcf9e2fb51',1,'IRGreeAC::setPower()'],['../classIRHaierACYRW02.html#a32e4a52cf31b43ad96ff3d8f0f390620',1,'IRHaierACYRW02::setPower()'],['../classIRHitachiAc.html#ad78a7176ded93735a296eefbf75cbc06',1,'IRHitachiAc::setPower()'],['../classIRHitachiAc1.html#a4dd034793018ea58d0cc32e7a47e8f35',1,'IRHitachiAc1::setPower()'],['../classIRHitachiAc424.html#a7b0b2e2c631d1bce2dd4677bb71e79b4',1,'IRHitachiAc424::setPower()'],['../classIRKelvinatorAC.html#a517a0193a9236a28a20d1760d7401efd',1,'IRKelvinatorAC::setPower()'],['../classIRLgAc.html#a175e6482fd1565d43906c527f911b59e',1,'IRLgAc::setPower()'],['../classIRMideaAC.html#ab8341f8d3d553d8b0ed9270cc15fc8ec',1,'IRMideaAC::setPower()'],['../classIRMitsubishiAC.html#a13f26de3c35b01470176b6fd9efda566',1,'IRMitsubishiAC::setPower()'],['../classIRMitsubishi136.html#a4bf52b3784faaca95ff97a09b8be322a',1,'IRMitsubishi136::setPower()'],['../classIRMitsubishi112.html#a0545da32a5048bc9d857ffb05767d3a6',1,'IRMitsubishi112::setPower()'],['../classIRMitsubishiHeavy152Ac.html#a08202752226ff3295eb8ccd637b0158b',1,'IRMitsubishiHeavy152Ac::setPower()'],['../classIRMitsubishiHeavy88Ac.html#ac2ee9dd82e84a3735e8a0c69e64cb02e',1,'IRMitsubishiHeavy88Ac::setPower()'],['../classIRNeoclimaAc.html#ac19bea3b79cdfc868bd137b0a70c0718',1,'IRNeoclimaAc::setPower()'],['../classIRPanasonicAc.html#ad60bf8a88d041f8e8ab3d728831ee8f3',1,'IRPanasonicAc::setPower()'],['../classIRSamsungAc.html#a4af21fa0dcbf5595386f67db676a443c',1,'IRSamsungAc::setPower()'],['../classIRSharpAc.html#a6b57a66878f125f86d2aed8bd7545000',1,'IRSharpAc::setPower()'],['../classIRTcl112Ac.html#ad2367d2481f94f14b9c4f7b378711b7e',1,'IRTcl112Ac::setPower()'],['../classIRTecoAc.html#a989e48a889b36ec36386a532c81872d9',1,'IRTecoAc::setPower()'],['../classIRToshibaAC.html#a100f01c014582e162f9fd287beb91dff',1,'IRToshibaAC::setPower()'],['../classIRTrotecESP.html#a0f3f5f5db367cb5a9adb936fada94fd5',1,'IRTrotecESP::setPower()'],['../classIRVestelAc.html#a01e06ff3916d4a14f9ca49f22918a47b',1,'IRVestelAc::setPower()']]], + ['setpowerbutton_3396',['setPowerButton',['../classIRCoronaAc.html#a518471d42a62863953c97334cad348be',1,'IRCoronaAc']]], + ['setpowerful_3397',['setPowerful',['../classIRDaikinESP.html#a4c0da54ee1639a3bf813cb3f3afee064',1,'IRDaikinESP::setPowerful()'],['../classIRDaikin2.html#a6538104cdcf1b55e480aaddd51116d9a',1,'IRDaikin2::setPowerful()'],['../classIRDaikin216.html#a5cb6e958f3b9789828738defe4d12c7b',1,'IRDaikin216::setPowerful()'],['../classIRDaikin128.html#aeb3aa5013b1746ed714146ca7f233119',1,'IRDaikin128::setPowerful()'],['../classIRDaikin152.html#a6477111b5662146e937c10cf02423e10',1,'IRDaikin152::setPowerful()'],['../classIRPanasonicAc.html#a6357688bc9cca92ab222343ee045f4f4',1,'IRPanasonicAc::setPowerful()'],['../classIRSamsungAc.html#ab657b79740e0f84c09611ea3b10d06f0',1,'IRSamsungAc::setPowerful()']]], + ['setpowerspecial_3398',['setPowerSpecial',['../classIRSharpAc.html#af7dd64c6d82a8502d2ee176f7b0f5abb',1,'IRSharpAc']]], + ['setpowertoggle_3399',['setPowerToggle',['../classIRDaikin128.html#a5d7edaa44f0c9ca55ef1040dd42e42e3',1,'IRDaikin128::setPowerToggle()'],['../classIRDaikin64.html#ac7f673619842d217d4eda893da2f35fd',1,'IRDaikin64::setPowerToggle()'],['../classIRHitachiAc1.html#ae30430edd92ec4b848c8a105a78e8068',1,'IRHitachiAc1::setPowerToggle()'],['../classIRWhirlpoolAc.html#a61bec25edce5bc244acb41f79df561e7',1,'IRWhirlpoolAc::setPowerToggle()']]], + ['setpurify_3400',['setPurify',['../classIRDaikin2.html#accd4430e998a8c9be80b5a708be9337e',1,'IRDaikin2']]], + ['setquiet_3401',['setQuiet',['../classIRDaikinESP.html#a4927eb8b2db2540efa90b37f4c3cc733',1,'IRDaikinESP::setQuiet()'],['../classIRDaikin2.html#a61ca7e72f850d0f9600fa9d8a336a8ef',1,'IRDaikin2::setQuiet()'],['../classIRDaikin216.html#a062528f54412cd3d2339c7bf82305ebb',1,'IRDaikin216::setQuiet()'],['../classIRDaikin128.html#a89c49332006831debbabbfcb5ec30249',1,'IRDaikin128::setQuiet()'],['../classIRDaikin152.html#a3aadf5f0ae11c5c6c53f351dd6b9c1a4',1,'IRDaikin152::setQuiet()'],['../classIRDaikin64.html#a7e3fb8debcefb76e76dda5612e28f377',1,'IRDaikin64::setQuiet()'],['../classIRKelvinatorAC.html#a2a3ca238649c55cd4f6f92f48eddf9ac',1,'IRKelvinatorAC::setQuiet()'],['../classIRMitsubishi136.html#a70c8a44f93e90ba025a8909c004c3a7b',1,'IRMitsubishi136::setQuiet()'],['../classIRMitsubishi112.html#a9fbbfb7bb1f6cccfcdcfbc4dcc335169',1,'IRMitsubishi112::setQuiet()'],['../classIRPanasonicAc.html#a51b6ae49cb490f697adeaf7f9f466518',1,'IRPanasonicAc::setQuiet()'],['../classIRSamsungAc.html#a6b3dd7d83c613a06f3499f1c8b26a67b',1,'IRSamsungAc::setQuiet()']]], + ['setraw_3402',['setRaw',['../classIRAmcorAc.html#ac0520033d7a59c817ca8ec08462fe39b',1,'IRAmcorAc::setRaw()'],['../classIRArgoAC.html#a98db56256eb71bf2e8da419007145e2b',1,'IRArgoAC::setRaw()'],['../classIRCarrierAc64.html#af49cf0b53bf8ff946a63bae94be0251d',1,'IRCarrierAc64::setRaw()'],['../classIRCoolixAC.html#aed28d08743c529a5715331255a8d5507',1,'IRCoolixAC::setRaw()'],['../classIRCoronaAc.html#a9ccf78675a3c175209c8d0ef08e2e671',1,'IRCoronaAc::setRaw()'],['../classIRDaikinESP.html#a7c69fc77ead837e5b4f1ececd9f43ca9',1,'IRDaikinESP::setRaw()'],['../classIRDaikin2.html#a132001e73eb5744a3a174c5517c9bbda',1,'IRDaikin2::setRaw()'],['../classIRDaikin216.html#a49f6a2ffc2e76ec4ff020e773bd70160',1,'IRDaikin216::setRaw()'],['../classIRDaikin160.html#a22e8a1600f612dd4326b2f9722d3a269',1,'IRDaikin160::setRaw()'],['../classIRDaikin176.html#a51e5f74b532eca958c09998727064e8d',1,'IRDaikin176::setRaw()'],['../classIRDaikin128.html#a25db29e01def45e8850ac9da68aa7ea7',1,'IRDaikin128::setRaw()'],['../classIRDaikin152.html#aab10e030ebe66e44607e9f35af1eb4cb',1,'IRDaikin152::setRaw()'],['../classIRDaikin64.html#a5f081026aca2bccc6fdeef8199e80779',1,'IRDaikin64::setRaw()'],['../classIRDelonghiAc.html#a219bafa7839f10acca33526cf585152a',1,'IRDelonghiAc::setRaw()'],['../classIRElectraAc.html#ae57c51cd3f5d1ebfb2fe7b926d149dd6',1,'IRElectraAc::setRaw()'],['../classIRFujitsuAC.html#a9b89d756948affa7029eeeed51916cbb',1,'IRFujitsuAC::setRaw()'],['../classIRGoodweatherAc.html#a2eae4bbdb14fea9e3004d656f852df59',1,'IRGoodweatherAc::setRaw()'],['../classIRGreeAC.html#a588f526f2f5500c7c2933ca91ccaf865',1,'IRGreeAC::setRaw()'],['../classIRHaierAC.html#a152961e20b5a5bed2ea03cbc65d65ce9',1,'IRHaierAC::setRaw()'],['../classIRHaierACYRW02.html#a389e711e128533c409731d2c87868c85',1,'IRHaierACYRW02::setRaw()'],['../classIRHitachiAc.html#a3b67215c162ef508c68c49b621c5199b',1,'IRHitachiAc::setRaw()'],['../classIRHitachiAc1.html#ae2d40bc477e30ee574f5c5e2ba4e09c2',1,'IRHitachiAc1::setRaw()'],['../classIRHitachiAc424.html#adc24b8b984ff20cebdf81f65843bb283',1,'IRHitachiAc424::setRaw()'],['../classIRHitachiAc3.html#acff4faf79a30df7b7e7c183dec4153a7',1,'IRHitachiAc3::setRaw()'],['../classIRHitachiAc344.html#a31c8984cfea8364734da6f32fe9a2337',1,'IRHitachiAc344::setRaw()'],['../classIRKelvinatorAC.html#a4a32bbf1a7ee8a089ea1e4e7c750433b',1,'IRKelvinatorAC::setRaw()'],['../classIRLgAc.html#a0da8ea4946826736f526386dc4d115cc',1,'IRLgAc::setRaw()'],['../classIRMideaAC.html#ab24da22531f5b2823551501642ec1b94',1,'IRMideaAC::setRaw()'],['../classIRMitsubishiAC.html#ac7bb79f91d5a9296c2b2b74aae1bfb53',1,'IRMitsubishiAC::setRaw()'],['../classIRMitsubishi136.html#abf0487a6fb163bf896e09b2cae6ee939',1,'IRMitsubishi136::setRaw()'],['../classIRMitsubishi112.html#a5c82f92d4a1ba1477ae7738ed5ade368',1,'IRMitsubishi112::setRaw()'],['../classIRMitsubishiHeavy152Ac.html#a8d42a2d87bf889ab4b233ea0c239f4c2',1,'IRMitsubishiHeavy152Ac::setRaw()'],['../classIRMitsubishiHeavy88Ac.html#abf01e448da9ec6e3b4512f58c3020299',1,'IRMitsubishiHeavy88Ac::setRaw()'],['../classIRNeoclimaAc.html#a607ea7df35572578ef86da7f505ab407',1,'IRNeoclimaAc::setRaw()'],['../classIRPanasonicAc.html#a63308883e8447aa5cdf7d29107be220f',1,'IRPanasonicAc::setRaw()'],['../classIRSamsungAc.html#a95377e8c73b51e73e78b51a2b2fa16d4',1,'IRSamsungAc::setRaw()'],['../classIRSharpAc.html#a89b18c4ee29afa56ebed5fa32e578df7',1,'IRSharpAc::setRaw()'],['../classIRTcl112Ac.html#a5b0994f37df6846137b564eeb322f21b',1,'IRTcl112Ac::setRaw()'],['../classIRTecoAc.html#a1ef3423214f55a2e2695cc1180f94bcc',1,'IRTecoAc::setRaw()'],['../classIRToshibaAC.html#ae74ff9241303eb4c7f3593f73e781c73',1,'IRToshibaAC::setRaw()'],['../classIRTrotecESP.html#a4ffe5ee2559828a61af710bb7d892b6c',1,'IRTrotecESP::setRaw()'],['../classIRVestelAc.html#a617bf1f4b5596d5ad005237e8445c12e',1,'IRVestelAc::setRaw(const uint8_t *newState)'],['../classIRVestelAc.html#a5cc86216d33f228c0648d6c66526b0eb',1,'IRVestelAc::setRaw(const uint64_t newState)'],['../classIRWhirlpoolAc.html#afa9c66ea36c970f80c88a0489448ab5b',1,'IRWhirlpoolAc::setRaw()']]], + ['setroomtemp_3403',['setRoomTemp',['../classIRArgoAC.html#aec5a2edc6f414aab201a18defaa78c5b',1,'IRArgoAC']]], + ['setsave_3404',['setSave',['../classIRTecoAc.html#a0f7d203d44d4040be3a4b28fcd5dd34c',1,'IRTecoAc']]], + ['setsensor_3405',['setSensor',['../classIRDaikinESP.html#ae1c95533934fffb29eed3e9a27e8f636',1,'IRDaikinESP::setSensor()'],['../classIRDaikin152.html#af418dbf2bb79dab0193801167dfb5b78',1,'IRDaikin152::setSensor()']]], + ['setsensortemp_3406',['setSensorTemp',['../classIRCoolixAC.html#a05e660b2b61b9a312e29688289f4bf3e',1,'IRCoolixAC']]], + ['setsensortempraw_3407',['setSensorTempRaw',['../classIRCoolixAC.html#a425c3f5fb26330266156c133fb9104eb',1,'IRCoolixAC']]], + ['setsilent_3408',['setSilent',['../classIRMitsubishiHeavy152Ac.html#ab398b9ea2965f059903137ab088791c0',1,'IRMitsubishiHeavy152Ac']]], + ['setsleep_3409',['setSleep',['../classIRCarrierAc64.html#aa729dbef39afeeed8e83f26b927d3b21',1,'IRCarrierAc64::setSleep()'],['../classIRCoolixAC.html#a4ee44167eca3fc88115fef3e845a3768',1,'IRCoolixAC::setSleep()'],['../classIRDaikin128.html#ac43854ae557ec5582f2bfd9150fd57f2',1,'IRDaikin128::setSleep()'],['../classIRDaikin64.html#a7faf8e018179fed2b091a78d0d69a9b8',1,'IRDaikin64::setSleep()'],['../classIRDelonghiAc.html#aa74806e520b2b01a5b0c87ee32ce427e',1,'IRDelonghiAc::setSleep()'],['../classIRGoodweatherAc.html#a30987629a159c5112649f0973895c9c1',1,'IRGoodweatherAc::setSleep()'],['../classIRGreeAC.html#ac9c11817d15bc5c82732a901cd95e07c',1,'IRGreeAC::setSleep()'],['../classIRHaierAC.html#acb72b89fa53b565f9d32db4d8960f988',1,'IRHaierAC::setSleep()'],['../classIRHaierACYRW02.html#ad63834eb1a91ed974af988c385570457',1,'IRHaierACYRW02::setSleep()'],['../classIRHitachiAc1.html#a2ddb6a5d446b379884828e81df0806ee',1,'IRHitachiAc1::setSleep()'],['../classIRMideaAC.html#a1e008ff673450060bf39a65f1cb926e6',1,'IRMideaAC::setSleep()'],['../classIRNeoclimaAc.html#ad01a62fb369c6894333adb2fe0f52b79',1,'IRNeoclimaAc::setSleep()'],['../classIRTecoAc.html#a1e989a4fbd21c507ba13014b1e336ce2',1,'IRTecoAc::setSleep()'],['../classIRTrotecESP.html#a41c558c6937e61e77269139f96135420',1,'IRTrotecESP::setSleep()'],['../classIRVestelAc.html#a4b93d5585b7fb9d509e7fcf84e2b4abc',1,'IRVestelAc::setSleep()'],['../classIRWhirlpoolAc.html#a6eaa24abc9eac64d9cbe79205a239474',1,'IRWhirlpoolAc::setSleep()']]], + ['setspecial_3410',['setSpecial',['../classIRSharpAc.html#ad7d2eca8b863569a1b17fdca4930d84f',1,'IRSharpAc']]], + ['setspeed_3411',['setSpeed',['../classIRTrotecESP.html#a268146141ce0358c2353c0ff59cfbad3',1,'IRTrotecESP']]], + ['setstartclock_3412',['setStartClock',['../classIRMitsubishiAC.html#a22d8c0dfd8098cb274d915476ed4caae',1,'IRMitsubishiAC']]], + ['setstopclock_3413',['setStopClock',['../classIRMitsubishiAC.html#a228dafbf1ea3e9c3487506a5ca2ea274',1,'IRMitsubishiAC']]], + ['setsuper_3414',['setSuper',['../classIRWhirlpoolAc.html#a19a14674b0bae79d3aee81b8d48aacc7',1,'IRWhirlpoolAc']]], + ['setswing_3415',['setSwing',['../classIRCoolixAC.html#a57e3641e20f072df238b305045e74246',1,'IRCoolixAC::setSwing()'],['../classIRFujitsuAC.html#a60ab8f21b5561e94a322b72a606468b9',1,'IRFujitsuAC::setSwing()'],['../classIRGoodweatherAc.html#a4d11a6885a5e7851e7c941b559159c35',1,'IRGoodweatherAc::setSwing()'],['../classIRHaierAC.html#a28c8bf6e0f45e074bf5eb13c25805627',1,'IRHaierAC::setSwing()'],['../classIRHaierACYRW02.html#ab9152dd09dec2db522dd96778f3b1556',1,'IRHaierACYRW02::setSwing()'],['../classIRSamsungAc.html#aaa7aaca1134e1565f527fcaa96a2fa6e',1,'IRSamsungAc::setSwing()'],['../classIRTecoAc.html#aaaeb10176c0b73e72fdb63b53fdcd5d0',1,'IRTecoAc::setSwing()'],['../classIRVestelAc.html#a6c98427df6e5e8081a6dcbfcd436ff0d',1,'IRVestelAc::setSwing()'],['../classIRWhirlpoolAc.html#a6fec80710ba87599840e576f37e0c944',1,'IRWhirlpoolAc::setSwing()']]], + ['setswingh_3416',['setSwingH',['../classIRElectraAc.html#afcd40681003d57b4f1b652175fc276a8',1,'IRElectraAc::setSwingH()'],['../classIRHitachiAc1.html#af6cc42d52dfed89e23d3d180e7b69af9',1,'IRHitachiAc1::setSwingH()'],['../classIRHitachiAc344.html#a5651cb90ba9b87ef841f8987bad267d4',1,'IRHitachiAc344::setSwingH()'],['../classIRMitsubishi112.html#a99f97b04ac22a7942ea371f470faaf49',1,'IRMitsubishi112::setSwingH()'],['../classIRNeoclimaAc.html#a1aeebc60d7bbd0fb801ad88f639cb6a0',1,'IRNeoclimaAc::setSwingH()']]], + ['setswinghorizontal_3417',['setSwingHorizontal',['../classIRDaikinESP.html#a5a7ec7b00811138879c636b03ae58606',1,'IRDaikinESP::setSwingHorizontal()'],['../classIRDaikin2.html#a75b6d6fb5bab0a9c951ad35e3e1d07c5',1,'IRDaikin2::setSwingHorizontal()'],['../classIRDaikin216.html#af8a1525cbe8d813c419d17ee6776a7d9',1,'IRDaikin216::setSwingHorizontal()'],['../classIRDaikin176.html#a9e63cf22410ffad45f6b308674079ee8',1,'IRDaikin176::setSwingHorizontal()'],['../classIRHitachiAc.html#ae70600f4a6f9fd7579221b11cd73062f',1,'IRHitachiAc::setSwingHorizontal()'],['../classIRKelvinatorAC.html#a2f1731f71bc74fb7ad6fec1210ecb1c7',1,'IRKelvinatorAC::setSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#a8713144e057424809292494a663dcd22',1,'IRMitsubishiHeavy152Ac::setSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#aaceffdd4e631fb2d4c404de0c8ff8cdb',1,'IRMitsubishiHeavy88Ac::setSwingHorizontal()'],['../classIRPanasonicAc.html#a32f3f07813165a39359887485dd87254',1,'IRPanasonicAc::setSwingHorizontal()'],['../classIRTcl112Ac.html#aedc63c59a924d64048bc034a752ce7ed',1,'IRTcl112Ac::setSwingHorizontal()']]], + ['setswingtoggle_3418',['setSwingToggle',['../classIRHitachiAc1.html#a24ec128b6bb27cfc4be4dda9ece003d6',1,'IRHitachiAc1::setSwingToggle()'],['../classIRSharpAc.html#a0d397009ecf213111207fcebb12b95fb',1,'IRSharpAc::setSwingToggle()']]], + ['setswingv_3419',['setSwingV',['../classIRCarrierAc64.html#a61a3f9f29cabc0634a9a74fc2227d8c5',1,'IRCarrierAc64::setSwingV()'],['../classIRDaikin152.html#ad151bb85529d46f7e3e3e65dbf446ff0',1,'IRDaikin152::setSwingV()'],['../classIRElectraAc.html#ae5b33942670e0033cbb9b9c7a1524e93',1,'IRElectraAc::setSwingV()'],['../classIRHitachiAc1.html#a1bcc61a9a33a3ddec41d44d52e7df0d3',1,'IRHitachiAc1::setSwingV()'],['../classIRHitachiAc344.html#a3982f110de8ff9881cf4070902294285',1,'IRHitachiAc344::setSwingV()'],['../classIRMitsubishi136.html#a0d54bc6dd55da18b05f723a1b61e575e',1,'IRMitsubishi136::setSwingV()'],['../classIRMitsubishi112.html#ae33b469f1b67616f101f4a3df874fb78',1,'IRMitsubishi112::setSwingV()'],['../classIRNeoclimaAc.html#aa6e5f6f092f52c5c289642c9576c8bc0',1,'IRNeoclimaAc::setSwingV()']]], + ['setswingvertical_3420',['setSwingVertical',['../classIRDaikinESP.html#a9200ef5751df5d488d7e08b138ec6356',1,'IRDaikinESP::setSwingVertical()'],['../classIRDaikin2.html#a35e72dc8e7967ee8ca8e84a6344468f3',1,'IRDaikin2::setSwingVertical()'],['../classIRDaikin216.html#a851484d5a37ceb1b0fc32e2e4bc2bcbb',1,'IRDaikin216::setSwingVertical()'],['../classIRDaikin160.html#a1683a255393f233d3e5b46d186d62881',1,'IRDaikin160::setSwingVertical()'],['../classIRDaikin128.html#a961aceb41145001003a50c5988f04c4d',1,'IRDaikin128::setSwingVertical()'],['../classIRDaikin64.html#afca186067111fa7181916a218c2800ec',1,'IRDaikin64::setSwingVertical()'],['../classIRGreeAC.html#a1b571dea8a5bf553554e45074f3a01c0',1,'IRGreeAC::setSwingVertical()'],['../classIRHitachiAc.html#a7e3ee78e4835fe402095b544c1e52f9f',1,'IRHitachiAc::setSwingVertical()'],['../classIRKelvinatorAC.html#a7334fbf8f2a67b33562ecea6b6e66f0e',1,'IRKelvinatorAC::setSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#aea3ac937feff058feef321bfe7357145',1,'IRMitsubishiHeavy152Ac::setSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#a9406e1890483703afb7b383e1363f8ec',1,'IRMitsubishiHeavy88Ac::setSwingVertical()'],['../classIRPanasonicAc.html#a48f31b1f85c92fac22f85a1aa8074c6e',1,'IRPanasonicAc::setSwingVertical()'],['../classIRTcl112Ac.html#a53f702dcc66de81f6e7e03d538a6946d',1,'IRTcl112Ac::setSwingVertical()']]], + ['setswingvtoggle_3421',['setSwingVToggle',['../classIRCoronaAc.html#a7cb31da86353ec637239cb747890bd7b',1,'IRCoronaAc::setSwingVToggle()'],['../classIRHitachiAc424.html#a220fd85bd213dd13ee9c609d4d7d20c1',1,'IRHitachiAc424::setSwingVToggle()'],['../classIRMideaAC.html#a7fce182bff4f5bc2c6679b20f344837b',1,'IRMideaAC::setSwingVToggle()']]], + ['settemp_3422',['setTemp',['../classIRAmcorAc.html#af4b2c476b76534687f14e9be963e9522',1,'IRAmcorAc::setTemp()'],['../classIRArgoAC.html#abad424a3cf1894715baa03780fa9b53b',1,'IRArgoAC::setTemp()'],['../classIRCarrierAc64.html#a79e193514ac6d07be537a78887426311',1,'IRCarrierAc64::setTemp()'],['../classIRCoolixAC.html#a1d4b4fb810b9f3835ee585b2aa66088f',1,'IRCoolixAC::setTemp()'],['../classIRCoronaAc.html#a9b1d5223cbb6ae6ba07f32871b27d9c6',1,'IRCoronaAc::setTemp()'],['../classIRDaikinESP.html#a631db8830684b745711667aed73a6433',1,'IRDaikinESP::setTemp()'],['../classIRDaikin2.html#a7f752c785fe180d5038e35bb07ff965a',1,'IRDaikin2::setTemp()'],['../classIRDaikin216.html#a8735732d3264eec119127d4353990669',1,'IRDaikin216::setTemp()'],['../classIRDaikin160.html#abedd99ed838478a7ef856537c6fabb82',1,'IRDaikin160::setTemp()'],['../classIRDaikin176.html#acb3b296f4c87a5a37258c666ef886ff3',1,'IRDaikin176::setTemp()'],['../classIRDaikin128.html#aba143a1b80e6de7d1c7b987eeda6b0db',1,'IRDaikin128::setTemp()'],['../classIRDaikin152.html#a97567ade1c0262b3f95f23f171936d8c',1,'IRDaikin152::setTemp()'],['../classIRDaikin64.html#adb1eb657998c05a143365755da0a1e81',1,'IRDaikin64::setTemp()'],['../classIRDelonghiAc.html#a08cc3e32c50277e3f986ed2c3945ce0d',1,'IRDelonghiAc::setTemp()'],['../classIRElectraAc.html#a5f986d9a376b6d5348fcb021d66d235b',1,'IRElectraAc::setTemp()'],['../classIRFujitsuAC.html#ab56c02fc0311ee7f28e780948cbc6a75',1,'IRFujitsuAC::setTemp()'],['../classIRGoodweatherAc.html#a8b1c90f69a3a2e412020d07809d180cc',1,'IRGoodweatherAc::setTemp()'],['../classIRGreeAC.html#a1890c6d134183beb89b791ec565623bb',1,'IRGreeAC::setTemp()'],['../classIRHaierAC.html#a9fb2a375cc1b8692fe4d5dcdd765cc46',1,'IRHaierAC::setTemp()'],['../classIRHaierACYRW02.html#a80170879e7bd391e360d41f18f6fa52b',1,'IRHaierACYRW02::setTemp()'],['../classIRHitachiAc.html#a9f416886ae341cdb6d449572e4d168a9',1,'IRHitachiAc::setTemp()'],['../classIRHitachiAc1.html#a10ba2dcbe447e505cbaa1a9b63f4823c',1,'IRHitachiAc1::setTemp()'],['../classIRHitachiAc424.html#a5cca8f31d07ce87b6e4a0ff0c22b1be8',1,'IRHitachiAc424::setTemp()'],['../classIRKelvinatorAC.html#ab098a376c7393d377abcc6c1f504d372',1,'IRKelvinatorAC::setTemp()'],['../classIRLgAc.html#ad9924a8bc9737ec6007d76ec47b34142',1,'IRLgAc::setTemp()'],['../classIRMideaAC.html#a42f79e73f418d5267eed7ba5b0e266f5',1,'IRMideaAC::setTemp()'],['../classIRMitsubishiAC.html#afd629013630747400e005fab8407d711',1,'IRMitsubishiAC::setTemp()'],['../classIRMitsubishi136.html#ac19c9234a5f65cae50b64d56c4bebb8f',1,'IRMitsubishi136::setTemp()'],['../classIRMitsubishi112.html#a03ba44a6d2f152b7afade423f12c8726',1,'IRMitsubishi112::setTemp()'],['../classIRMitsubishiHeavy152Ac.html#ad4f9ae94b8ab1fff8fc99b8d7818a8fe',1,'IRMitsubishiHeavy152Ac::setTemp()'],['../classIRMitsubishiHeavy88Ac.html#aa4a92e5334aebdca5d2b26b642e9b9e8',1,'IRMitsubishiHeavy88Ac::setTemp()'],['../classIRNeoclimaAc.html#a59e27fa001f9ab674b69eb2c41b6393c',1,'IRNeoclimaAc::setTemp()'],['../classIRPanasonicAc.html#a58376c311177e701333f4915515d49f1',1,'IRPanasonicAc::setTemp()'],['../classIRSamsungAc.html#a94a71e82321343220836aa614b231bd0',1,'IRSamsungAc::setTemp()'],['../classIRSharpAc.html#a151f88799cdab6fda4cfef83b30e5917',1,'IRSharpAc::setTemp()'],['../classIRTcl112Ac.html#a110bae0201b63db0409c352dd8d62786',1,'IRTcl112Ac::setTemp()'],['../classIRTecoAc.html#a405106cb572dac338d79da48fe7a7cb3',1,'IRTecoAc::setTemp()'],['../classIRToshibaAC.html#a923fad1f637e1851a77a063978994604',1,'IRToshibaAC::setTemp()'],['../classIRTrotecESP.html#ad467e7fe9ff61fec4ec10b367c0f9279',1,'IRTrotecESP::setTemp()'],['../classIRVestelAc.html#a8c4eddfba4edfa16e317e12677736756',1,'IRVestelAc::setTemp()'],['../classIRWhirlpoolAc.html#afff1ae75ffa362abb791c97c20023755',1,'IRWhirlpoolAc::setTemp()']]], + ['settempraw_3423',['setTempRaw',['../classIRCoolixAC.html#ae9371280e92daa8e1441523026f1ef0a',1,'IRCoolixAC']]], + ['settempunit_3424',['setTempUnit',['../classIRDelonghiAc.html#a4e3681e49065ba232577ca05157a5ef2',1,'IRDelonghiAc']]], + ['settime_3425',['setTime',['../classIRArgoAC.html#ae285801cde19da82e128098097624852',1,'IRArgoAC::setTime()'],['../classIRHaierAC.html#a81ca00cf5b49308c2609b717d34958ad',1,'IRHaierAC::setTime()'],['../classIRVestelAc.html#afc5dedf83855a8fea8b29494bfb07d64',1,'IRVestelAc::setTime()'],['../classIRWhirlpoolAc.html#a40289737223c14c8a1e723e7a28bad13',1,'IRWhirlpoolAc::setTime()']]], + ['settimer_3426',['setTimer',['../classIRDaikin128.html#a8498de57fc1bdb2f71a678f7877d3125',1,'IRDaikin128::setTimer()'],['../classIRGreeAC.html#a84debd45d2f2ba221f825257e0bc6294',1,'IRGreeAC::setTimer()'],['../classIRMitsubishiAC.html#acb56c91ef0db6ace7782d356af2dcd4d',1,'IRMitsubishiAC::setTimer()'],['../classIRSharpAc.html#a8782543c33e48af0a09e548276eb6413',1,'IRSharpAc::setTimer()'],['../classIRTecoAc.html#a88a84e22d53a204da754c04210fadd04',1,'IRTecoAc::setTimer()'],['../classIRTrotecESP.html#a92bfed0f247b21c77737b720151dbb88',1,'IRTrotecESP::setTimer()'],['../classIRVestelAc.html#a7c66e1ec13c827714eaa2233f50f072b',1,'IRVestelAc::setTimer()']]], + ['settimeractive_3427',['setTimerActive',['../classIRVestelAc.html#a77f78e534b19a8dca776b17aa06739aa',1,'IRVestelAc']]], + ['settimerenabled_3428',['setTimerEnabled',['../classIRGreeAC.html#a1002d6dfe409076fa7ef252589d5043c',1,'IRGreeAC']]], + ['settolerance_3429',['setTolerance',['../classIRrecv.html#aa091c449db70c65fd0221669df7438ea',1,'IRrecv']]], + ['setturbo_3430',['setTurbo',['../classIRCoolixAC.html#a65a04ec9028025155792be5ba0f81927',1,'IRCoolixAC::setTurbo()'],['../classIRDaikin64.html#a734cc23f79a4de4099a4ceb1aff14762',1,'IRDaikin64::setTurbo()'],['../classIRElectraAc.html#adb40e95465788b03e4cb845bd481f7ed',1,'IRElectraAc::setTurbo()'],['../classIRGoodweatherAc.html#a7827fc5a8f85b284c0121727dba34f11',1,'IRGoodweatherAc::setTurbo()'],['../classIRGreeAC.html#ae873023ad81f7dcb12ee5b061e160bea',1,'IRGreeAC::setTurbo()'],['../classIRHaierACYRW02.html#aba5f028ee1ebf7be2d4de5a66237f01b',1,'IRHaierACYRW02::setTurbo()'],['../classIRKelvinatorAC.html#a7d9c44970e85f23c83723f27e96260ee',1,'IRKelvinatorAC::setTurbo()'],['../classIRMitsubishiHeavy152Ac.html#a275e8ae44e2018a848b3e8f0893c8023',1,'IRMitsubishiHeavy152Ac::setTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a39ac892d349180327cce92c6f82bea30',1,'IRMitsubishiHeavy88Ac::setTurbo()'],['../classIRNeoclimaAc.html#aa2a9563d9e3c5c95dfa512c0bb87e16f',1,'IRNeoclimaAc::setTurbo()'],['../classIRSharpAc.html#a8a184ae8eeb07704b9b69849421e3172',1,'IRSharpAc::setTurbo()'],['../classIRTcl112Ac.html#a99e3b3e2f0cc627b6d872d04b35d6230',1,'IRTcl112Ac::setTurbo()'],['../classIRVestelAc.html#afa762d0fa63ecc7444c1c107f8f07cdb',1,'IRVestelAc::setTurbo()']]], + ['setunknownthreshold_3431',['setUnknownThreshold',['../classIRrecv.html#a02693553aad1decd67bdae60402e48bf',1,'IRrecv']]], + ['setusecelsius_3432',['setUseCelsius',['../classIRMideaAC.html#a1eeb72ddd2b9867c2f9c392080b9c1ed',1,'IRMideaAC']]], + ['setusefahrenheit_3433',['setUseFahrenheit',['../classIRGreeAC.html#af559afaa9da5fd27cdb516355da67bd6',1,'IRGreeAC']]], + ['setvane_3434',['setVane',['../classIRMitsubishiAC.html#abb247f1dca5cf23a7b8a16852dcf32f1',1,'IRMitsubishiAC']]], + ['setweeklytimerenable_3435',['setWeeklyTimerEnable',['../classIRDaikinESP.html#a0db67d46b13acfad9b94c7e4691777b8',1,'IRDaikinESP']]], + ['setwidevane_3436',['setWideVane',['../classIRMitsubishiAC.html#a02b2b3d7456e6123c60dca70de346c25',1,'IRMitsubishiAC']]], + ['setwifi_3437',['setWiFi',['../classIRGreeAC.html#afde745ceaa97f9608195b2ba9fce6c5c',1,'IRGreeAC']]], + ['setxfan_3438',['setXFan',['../classIRGreeAC.html#af465c607222fa433f54c2ce56ced2474',1,'IRGreeAC::setXFan()'],['../classIRKelvinatorAC.html#af02da81109109cf1cb44057fd1a40164',1,'IRKelvinatorAC::setXFan()']]], + ['setzonefollow_3439',['setZoneFollow',['../classIRCoolixAC.html#a0c0f39d8e2e79d8259000695263ec3fa',1,'IRCoolixAC']]], + ['sharp_3440',['sharp',['../classIRac.html#a7b6d8b4e554a89f339f896fe4233ed15',1,'IRac::sharp()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaad63db67a2284cd7e3ffe382b6d6ea82',1,'SHARP(): IRremoteESP8266.h']]], + ['sharp_5fac_3441',['SHARP_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada353a9d71906702ae10aa4f803a04ca68',1,'IRremoteESP8266.h']]], + ['sherwood_3442',['SHERWOOD',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1412522651b0c8f1a35e1db3807466bb',1,'IRremoteESP8266.h']]], + ['sleep_3443',['sleep',['../structstdAc_1_1state__t.html#a94fa6098d7422292a1c6943973cd106a',1,'stdAc::state_t']]], + ['sleepflag_3444',['sleepFlag',['../classIRCoolixAC.html#a26560e04d1f77830e40e5570845b9e06',1,'IRCoolixAC']]], + ['sony_3445',['SONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada72d58193d4d25517202d22b7e57a65c3',1,'IRremoteESP8266.h']]], + ['sony_5f38k_3446',['SONY_38K',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0027bcfbb78c0c2b951dfff1102a027b',1,'IRremoteESP8266.h']]], + ['space_3447',['space',['../classIRsend.html#a0417b10d4e16718a87f8b2062a7d04a1',1,'IRsend']]], + ['start_3448',['start',['../classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a',1,'IRtimer::start()'],['../classTimerMs.html#a15ad2e08a5931397391d48f040722f65',1,'TimerMs::start()']]], + ['state_3449',['state',['../classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305',1,'decode_results']]], + ['state_5ft_3450',['state_t',['../structstdAc_1_1state__t.html',1,'stdAc']]], + ['statereset_3451',['stateReset',['../classIRAmcorAc.html#a018ab4ca4d738d848d3388ea1300b83b',1,'IRAmcorAc::stateReset()'],['../classIRArgoAC.html#af34a99bc37c4496c9fd68856aa065a13',1,'IRArgoAC::stateReset()'],['../classIRCarrierAc64.html#abe58c8f97ab4c34fd0cf198b07589694',1,'IRCarrierAc64::stateReset()'],['../classIRCoolixAC.html#a88a44b7ba5ac7d5654de4592bd41c207',1,'IRCoolixAC::stateReset()'],['../classIRCoronaAc.html#a47726d4ff93528bd8a5a6f1b47ba7141',1,'IRCoronaAc::stateReset()'],['../classIRDaikinESP.html#a49f6b90336225f7e94b8aefd066e1993',1,'IRDaikinESP::stateReset()'],['../classIRDaikin2.html#a9b49e90604bf6b1abb93581eecfc6c88',1,'IRDaikin2::stateReset()'],['../classIRDaikin216.html#adbc856e6531b38963db5680d279a4767',1,'IRDaikin216::stateReset()'],['../classIRDaikin160.html#ade56e55c8a0c81f0803dec2cda4625b0',1,'IRDaikin160::stateReset()'],['../classIRDaikin176.html#ab86a1b458a1be5d7fe5fcb7e287ef1d3',1,'IRDaikin176::stateReset()'],['../classIRDaikin128.html#ab604a7594c3b0131c5d977e3fc3b3565',1,'IRDaikin128::stateReset()'],['../classIRDaikin152.html#a278291def7d0e14552e7fbe9a56346bd',1,'IRDaikin152::stateReset()'],['../classIRDaikin64.html#af5a691404b8026cf1da45502f1c019f4',1,'IRDaikin64::stateReset()'],['../classIRDelonghiAc.html#aac444790a16678a1e88f1adef02829ba',1,'IRDelonghiAc::stateReset()'],['../classIRElectraAc.html#ab8035c14158fcf3758f46f6976b814f7',1,'IRElectraAc::stateReset()'],['../classIRFujitsuAC.html#a603a0e1870f406e4e746a7bb4c37fb70',1,'IRFujitsuAC::stateReset()'],['../classIRGoodweatherAc.html#ae7f8873ad58e553dc89307220628bebf',1,'IRGoodweatherAc::stateReset()'],['../classIRGreeAC.html#a61356a0dfb4656ac438c3629c591b165',1,'IRGreeAC::stateReset()'],['../classIRHaierAC.html#a62fbae1d2bac01ac3a2194274aa839d9',1,'IRHaierAC::stateReset()'],['../classIRHaierACYRW02.html#a106e7ffa0d69cdf976087c6e190d03ea',1,'IRHaierACYRW02::stateReset()'],['../classIRHitachiAc.html#a0564c00c60e64e57e20f3c1a4bd3d894',1,'IRHitachiAc::stateReset()'],['../classIRHitachiAc1.html#a9764b329d982d018b15098b3044f9596',1,'IRHitachiAc1::stateReset()'],['../classIRHitachiAc424.html#afd8d5b21086b34cdc07b498157240f8f',1,'IRHitachiAc424::stateReset()'],['../classIRHitachiAc3.html#a7bdcddf9c7f85b7cb43a92198e422549',1,'IRHitachiAc3::stateReset()'],['../classIRHitachiAc344.html#ab0174472d44790a5516b8f4377a89f22',1,'IRHitachiAc344::stateReset()'],['../classIRKelvinatorAC.html#ad6fefe85023c3fc318b0e45924874f9f',1,'IRKelvinatorAC::stateReset()'],['../classIRLgAc.html#a5959000c9f0b2cf64742d6a2f1c4c9b9',1,'IRLgAc::stateReset()'],['../classIRMideaAC.html#acc584e07406e1811acfb26f6cd5383cd',1,'IRMideaAC::stateReset()'],['../classIRMitsubishiAC.html#a8da4be360c8e2fd3a5a40cb4049b5d84',1,'IRMitsubishiAC::stateReset()'],['../classIRMitsubishi136.html#a67556dab7ed42c68a274f4f24ecc35bb',1,'IRMitsubishi136::stateReset()'],['../classIRMitsubishi112.html#a9c601ba34e10d5c63886c2c5b405d9ae',1,'IRMitsubishi112::stateReset()'],['../classIRMitsubishiHeavy152Ac.html#a0b239cacd3a8a96f2e3d7047f26119da',1,'IRMitsubishiHeavy152Ac::stateReset()'],['../classIRMitsubishiHeavy88Ac.html#a1cf118f435c99372c89a140a79c67f1f',1,'IRMitsubishiHeavy88Ac::stateReset()'],['../classIRNeoclimaAc.html#a5ce32a6e6195b246696cb609994f3762',1,'IRNeoclimaAc::stateReset()'],['../classIRPanasonicAc.html#a9a9fbf531f04c486edf913c382351b2b',1,'IRPanasonicAc::stateReset()'],['../classIRSamsungAc.html#a52186401655966b3103d3d73fb77e7f0',1,'IRSamsungAc::stateReset()'],['../classIRSharpAc.html#aa151c704ba4f5690a7cfadaf90c4b60d',1,'IRSharpAc::stateReset()'],['../classIRTcl112Ac.html#a049f475c1af7b62b9f3482dcf9e66d4a',1,'IRTcl112Ac::stateReset()'],['../classIRTecoAc.html#ad53e6f3d3693ee6efb419326a3d4c492',1,'IRTecoAc::stateReset()'],['../classIRToshibaAC.html#a3d3c3df261b4db7a9d831c94cc206e8a',1,'IRToshibaAC::stateReset()'],['../classIRTrotecESP.html#a86c3415d8c1880c325bc22c2c4ca44e0',1,'IRTrotecESP::stateReset()'],['../classIRVestelAc.html#a921100234f5751f8b94d9673a5d217f9',1,'IRVestelAc::stateReset()'],['../classIRWhirlpoolAc.html#a371a6f48a2f4f66e4243dacbbf4471be',1,'IRWhirlpoolAc::stateReset()']]], + ['stdac_3452',['stdAc',['../namespacestdAc.html',1,'']]], + ['stephoriz_3453',['stepHoriz',['../classIRFujitsuAC.html#a53c48bc1f32c849263a3aa86ff06b1d4',1,'IRFujitsuAC']]], + ['stepvert_3454',['stepVert',['../classIRFujitsuAC.html#a942f106c27ce04094b5b615f2e174022',1,'IRFujitsuAC']]], + ['string_3455',['String',['../IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff',1,'IRremoteESP8266.h']]], + ['strtobool_3456',['strToBool',['../classIRac.html#a3dba736fe25bd3a3a47b9ec7dae51728',1,'IRac']]], + ['strtodecodetype_3457',['strToDecodeType',['../IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff',1,'strToDecodeType(const char *const str): IRutils.cpp'],['../IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e',1,'strToDecodeType(const char *str): IRutils.cpp']]], + ['strtofanspeed_3458',['strToFanspeed',['../classIRac.html#a7173b12c155d04dd1db07a055f4ecb03',1,'IRac']]], + ['strtomodel_3459',['strToModel',['../classIRac.html#a7036fbbb918d644a98b5efa16374a256',1,'IRac']]], + ['strtoopmode_3460',['strToOpmode',['../classIRac.html#a251fa76ddacc84d2655bac723b7dea28',1,'IRac']]], + ['strtoswingh_3461',['strToSwingH',['../classIRac.html#a294d6040909519f465945245df56e56d',1,'IRac']]], + ['strtoswingv_3462',['strToSwingV',['../classIRac.html#a538c861d79afabb11fb8becedd3962f8',1,'IRac']]], + ['success_3463',['success',['../structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90',1,'match_result_t']]], + ['sumbytes_3464',['sumBytes',['../IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]], + ['sumnibbles_3465',['sumNibbles',['../namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343',1,'irutils::sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init)'],['../namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2',1,'irutils::sumNibbles(const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)']]], + ['swingflag_3466',['swingFlag',['../classIRCoolixAC.html#a6d61903a90cebef56b931bebbfa5cba3',1,'IRCoolixAC']]], + ['swingh_3467',['swingh',['../structstdAc_1_1state__t.html#a761bb702891ed1fa35906929a4c8a3f8',1,'stdAc::state_t']]], + ['swingh_5ft_3468',['swingh_t',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147',1,'stdAc']]], + ['swinghflag_3469',['swingHFlag',['../classIRCoolixAC.html#a1c5fb27fb58d4d1a1fd8c9931eba58c4',1,'IRCoolixAC']]], + ['swinghtostring_3470',['swinghToString',['../classIRac.html#a21c9d71bbf229fd8369480e50a7c3689',1,'IRac']]], + ['swingv_3471',['swingv',['../structstdAc_1_1state__t.html#a35477d368350d8981ad8b7b09505857e',1,'stdAc::state_t']]], + ['swingv_5ft_3472',['swingv_t',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43',1,'stdAc']]], + ['swingvflag_3473',['swingVFlag',['../classIRCoolixAC.html#adf18ad8494466f6301176ce10aa3a075',1,'IRCoolixAC']]], + ['swingvtostring_3474',['swingvToString',['../classIRac.html#a641b59e48183a8f6d9b739ce7210f142',1,'IRac']]], + ['symphony_3475',['SYMPHONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada44c4a84d776e02328ef3b169e743e5ec',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.html new file mode 100644 index 000000000..72d12e90e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.js new file mode 100644 index 000000000..ee5a479d4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_14.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['tcl112_3476',['tcl112',['../classIRac.html#a3028bd9e83956d57b592bb96638b3f59',1,'IRac']]], + ['tcl112ac_3477',['TCL112AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac4a6ebe702365620ed65ac6f484afda6',1,'IRremoteESP8266.h']]], + ['teco_3478',['teco',['../classIRac.html#a9e612e04e270dd5710e8a63a64b56064',1,'IRac::teco()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3a15ee4466478d484508acc3d4d7a050',1,'TECO(): IRremoteESP8266.h']]], + ['tickshigh_3479',['ticksHigh',['../classIRrecv.html#a573dbb20695f2ffc808623df8c36280c',1,'IRrecv']]], + ['tickslow_3480',['ticksLow',['../classIRrecv.html#ac08e50c5eec10c0095157f4bdd4051c8',1,'IRrecv']]], + ['timeout_3481',['timeout',['../structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4',1,'irparams_t']]], + ['timer_3482',['timer',['../structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d',1,'irparams_t']]], + ['timerms_3483',['TimerMs',['../classTimerMs.html',1,'TimerMs'],['../classTimerMs.html#a7bf7f8d2fcf76b27b34ea4705810eef5',1,'TimerMs::TimerMs()']]], + ['tocommon_3484',['toCommon',['../classIRAmcorAc.html#aac4ae204cf0c393c18e5de96c4ba44ab',1,'IRAmcorAc::toCommon()'],['../classIRArgoAC.html#a4b1fda530b50c30cb863a3c146f4c81b',1,'IRArgoAC::toCommon()'],['../classIRCarrierAc64.html#a7c4a84d0d9f1e78ba611e118ddb90635',1,'IRCarrierAc64::toCommon()'],['../classIRCoolixAC.html#acadeabae7017e49c944eb22528297b3a',1,'IRCoolixAC::toCommon()'],['../classIRCoronaAc.html#a78dee47464e312d57e660b34c10bb13c',1,'IRCoronaAc::toCommon()'],['../classIRDaikinESP.html#a6bc97a753db054ce2ed59809845e23f1',1,'IRDaikinESP::toCommon()'],['../classIRDaikin2.html#a090407aff4ef81714e31ef28ac41d8e2',1,'IRDaikin2::toCommon()'],['../classIRDaikin216.html#ac477511261d7f135ee4f909eb5512f9a',1,'IRDaikin216::toCommon()'],['../classIRDaikin160.html#a0641f2e7f86412a36dcbe98b9049d322',1,'IRDaikin160::toCommon()'],['../classIRDaikin176.html#ac99fcb66d866196b51ad11384154f8ae',1,'IRDaikin176::toCommon()'],['../classIRDaikin128.html#a54de8ff37216f7a3a2cc744d97c2e1c6',1,'IRDaikin128::toCommon()'],['../classIRDaikin152.html#a96fee4c7cee70cc9249c556b277b2f74',1,'IRDaikin152::toCommon()'],['../classIRDaikin64.html#ad57748fa03e79a277508aa42b08c8f83',1,'IRDaikin64::toCommon()'],['../classIRDelonghiAc.html#a2cdcd20dffb763a5f9ff7bd264c1d3e8',1,'IRDelonghiAc::toCommon()'],['../classIRElectraAc.html#ad10aba2fa72f4b839538fc5a99c696ad',1,'IRElectraAc::toCommon()'],['../classIRFujitsuAC.html#adfd6ff9d4449eae7a5268b26058a483f',1,'IRFujitsuAC::toCommon()'],['../classIRGoodweatherAc.html#ae616e9fc03406ec88b5c5ddcde5f2f2c',1,'IRGoodweatherAc::toCommon()'],['../classIRGreeAC.html#ac28c640aa4b5dd0dbbca42b056f877f7',1,'IRGreeAC::toCommon()'],['../classIRHaierAC.html#a1e74862d6ab7e65108a7b1a3b7af7e91',1,'IRHaierAC::toCommon()'],['../classIRHaierACYRW02.html#aff86d2e3e1d357f0eecf6322964e7c16',1,'IRHaierACYRW02::toCommon()'],['../classIRHitachiAc.html#aa1ec8cc4b5025272c72dc69c6d6486a3',1,'IRHitachiAc::toCommon()'],['../classIRHitachiAc1.html#aef93034682210a6c564fbea4461ab47e',1,'IRHitachiAc1::toCommon()'],['../classIRHitachiAc424.html#a36711772ebdf385e0a95564f8a552634',1,'IRHitachiAc424::toCommon()'],['../classIRHitachiAc344.html#a146203ad02a3df4037b97c0416ba828e',1,'IRHitachiAc344::toCommon()'],['../classIRKelvinatorAC.html#a1e900aa29dad75f74de2bb797d475b20',1,'IRKelvinatorAC::toCommon()'],['../classIRLgAc.html#a75c52ef31270f25651521ae2be558faa',1,'IRLgAc::toCommon()'],['../classIRMideaAC.html#a62086b58f71908b75e28a61bd4f6bf15',1,'IRMideaAC::toCommon()'],['../classIRMitsubishiAC.html#a42338266a34940e657e5226c81f2fd06',1,'IRMitsubishiAC::toCommon()'],['../classIRMitsubishi136.html#a938360f488ec923e138744b6f80477bb',1,'IRMitsubishi136::toCommon()'],['../classIRMitsubishi112.html#aadde5055371b418fd733a2e93d12b478',1,'IRMitsubishi112::toCommon()'],['../classIRMitsubishiHeavy152Ac.html#af9cbfb13cd48d5d503756c50df8fc7b7',1,'IRMitsubishiHeavy152Ac::toCommon()'],['../classIRMitsubishiHeavy88Ac.html#a3f80427169359dc72367e6ee4e52c42f',1,'IRMitsubishiHeavy88Ac::toCommon()'],['../classIRNeoclimaAc.html#a455397211c7cb8074f6b7358dc6a5b9e',1,'IRNeoclimaAc::toCommon()'],['../classIRPanasonicAc.html#af2218f117db06424ced00ba6c0cc3234',1,'IRPanasonicAc::toCommon()'],['../classIRSamsungAc.html#a01e9279d541f64ebfa433c35a3651796',1,'IRSamsungAc::toCommon()'],['../classIRSharpAc.html#aaade155b2128ba11c2e91bba676c72d9',1,'IRSharpAc::toCommon()'],['../classIRTcl112Ac.html#af5813975bfe55a76d202f8c7f48df82d',1,'IRTcl112Ac::toCommon()'],['../classIRTecoAc.html#af3953289854dabf105c6612f14ef5da0',1,'IRTecoAc::toCommon()'],['../classIRToshibaAC.html#acda90e0171043c3a673ffac52ef9b4b5',1,'IRToshibaAC::toCommon()'],['../classIRTrotecESP.html#ac224a0a18a64ce9802c3f25fafa20a04',1,'IRTrotecESP::toCommon()'],['../classIRVestelAc.html#adb7ab58e91f13b999b62559fc7add91a',1,'IRVestelAc::toCommon()'],['../classIRWhirlpoolAc.html#a961da338e344fd975934f9f69d97f5b5',1,'IRWhirlpoolAc::toCommon()']]], + ['tocommonfanspeed_3485',['toCommonFanSpeed',['../classIRAmcorAc.html#a951aa81d98c66138f61069431e13f35a',1,'IRAmcorAc::toCommonFanSpeed()'],['../classIRArgoAC.html#a334afe3ce6536089bc2832985067f029',1,'IRArgoAC::toCommonFanSpeed()'],['../classIRCarrierAc64.html#a5a9149acc82fcc22a5be8dcbe791ab77',1,'IRCarrierAc64::toCommonFanSpeed()'],['../classIRCoolixAC.html#a6a0e7219c667eb06897b47a7c36f5fbc',1,'IRCoolixAC::toCommonFanSpeed()'],['../classIRCoronaAc.html#a6d5d0015f01acc97badff7edda964485',1,'IRCoronaAc::toCommonFanSpeed()'],['../classIRDaikinESP.html#a6855a423f10a2230953646d478400574',1,'IRDaikinESP::toCommonFanSpeed()'],['../classIRDaikin176.html#a6f9b7dddcf98c7a42495c900dddf505d',1,'IRDaikin176::toCommonFanSpeed()'],['../classIRDaikin128.html#a1c53a27678731229308e355eb94ec762',1,'IRDaikin128::toCommonFanSpeed()'],['../classIRDaikin64.html#acd24c4932e2bfd6bffbb9a90da2028a6',1,'IRDaikin64::toCommonFanSpeed()'],['../classIRDelonghiAc.html#a231e26843e3616e7455fd020dbb8807b',1,'IRDelonghiAc::toCommonFanSpeed()'],['../classIRElectraAc.html#a5d53fb85582344cfdbfa33da6acbdb7d',1,'IRElectraAc::toCommonFanSpeed()'],['../classIRFujitsuAC.html#a93a35e42d887b5ca6414b295a4a91526',1,'IRFujitsuAC::toCommonFanSpeed()'],['../classIRGoodweatherAc.html#aff899c76d5b808ee35c9f88c116b5dc4',1,'IRGoodweatherAc::toCommonFanSpeed()'],['../classIRGreeAC.html#ade6cb54e99b6dab1df708cbf25fc5967',1,'IRGreeAC::toCommonFanSpeed()'],['../classIRHaierAC.html#ad67ee0b7299d041aad77382dde893229',1,'IRHaierAC::toCommonFanSpeed()'],['../classIRHaierACYRW02.html#a15402e3ba2a9875d5b49f6dab3e85034',1,'IRHaierACYRW02::toCommonFanSpeed()'],['../classIRHitachiAc.html#afba02d48c4a023ed800abf38d5314c7e',1,'IRHitachiAc::toCommonFanSpeed()'],['../classIRHitachiAc1.html#a99f205391deb75d23d08d63e1feff0d4',1,'IRHitachiAc1::toCommonFanSpeed()'],['../classIRHitachiAc424.html#a16abdf55ea3ae4b06e2a23dad3496738',1,'IRHitachiAc424::toCommonFanSpeed()'],['../classIRKelvinatorAC.html#a0ebd262c554c5c843bc3f710570e1401',1,'IRKelvinatorAC::toCommonFanSpeed()'],['../classIRLgAc.html#af47317ba139a4b1e5961b9a45db974df',1,'IRLgAc::toCommonFanSpeed()'],['../classIRMideaAC.html#acd89d4864a46b146ac4f648c4406ded5',1,'IRMideaAC::toCommonFanSpeed()'],['../classIRMitsubishiAC.html#aa7dd30cde520b14575d7fcd992c3bbf1',1,'IRMitsubishiAC::toCommonFanSpeed()'],['../classIRMitsubishi136.html#aaf9f9f17f3ac59ef325b57b9110faa34',1,'IRMitsubishi136::toCommonFanSpeed()'],['../classIRMitsubishi112.html#aaeee082d9adbf7b0d91316c703571f1a',1,'IRMitsubishi112::toCommonFanSpeed()'],['../classIRMitsubishiHeavy152Ac.html#a5e26c3121aceb944fc688e6f641dd5b1',1,'IRMitsubishiHeavy152Ac::toCommonFanSpeed()'],['../classIRMitsubishiHeavy88Ac.html#aa5dae03951ba9a9aeac62184c27f9439',1,'IRMitsubishiHeavy88Ac::toCommonFanSpeed()'],['../classIRNeoclimaAc.html#a5d87285928bd8bfa2abad92fbdf384b5',1,'IRNeoclimaAc::toCommonFanSpeed()'],['../classIRPanasonicAc.html#a1eff8e4d670abc303a02d8baeeb58f8c',1,'IRPanasonicAc::toCommonFanSpeed()'],['../classIRSamsungAc.html#a2905b33c273d2be6cabfc3b16b51a5b4',1,'IRSamsungAc::toCommonFanSpeed()'],['../classIRSharpAc.html#a520666e591965b3b3b2421e06260976a',1,'IRSharpAc::toCommonFanSpeed()'],['../classIRTcl112Ac.html#a66843ee5b53ce9be1aef3774b8df5c84',1,'IRTcl112Ac::toCommonFanSpeed()'],['../classIRTecoAc.html#ac3ad2828770440695969d696ca6ff46d',1,'IRTecoAc::toCommonFanSpeed()'],['../classIRToshibaAC.html#a6c77121c9aba3928e676394f88e88dee',1,'IRToshibaAC::toCommonFanSpeed()'],['../classIRTrotecESP.html#a4aaf17993757533370290fffb728befc',1,'IRTrotecESP::toCommonFanSpeed()'],['../classIRVestelAc.html#a6dfd46f56f2d6b15344722cde0741500',1,'IRVestelAc::toCommonFanSpeed()'],['../classIRWhirlpoolAc.html#a61ef6661a985763540b7c2273b8b1b9c',1,'IRWhirlpoolAc::toCommonFanSpeed()']]], + ['tocommonmode_3486',['toCommonMode',['../classIRAmcorAc.html#a6da2f34f1e044f815e94ede578f4c26f',1,'IRAmcorAc::toCommonMode()'],['../classIRArgoAC.html#a8ccd3f5398f50548fda3a9e0172fb5fa',1,'IRArgoAC::toCommonMode()'],['../classIRCarrierAc64.html#ab17b24d0306b8983886d15175898909e',1,'IRCarrierAc64::toCommonMode()'],['../classIRCoolixAC.html#a789fb5d5eab2e78d392c8e0b9a194b18',1,'IRCoolixAC::toCommonMode()'],['../classIRCoronaAc.html#a04ca6532beb099893eb1dd5d01bb4d31',1,'IRCoronaAc::toCommonMode()'],['../classIRDaikinESP.html#a3a7543204520da36547c163a96e30deb',1,'IRDaikinESP::toCommonMode()'],['../classIRDaikin176.html#aa0b9c96d3bf08400a5110bcfa9f1ec9d',1,'IRDaikin176::toCommonMode()'],['../classIRDaikin128.html#a105a4fc511feba96afc956bb36d2dc50',1,'IRDaikin128::toCommonMode()'],['../classIRDaikin64.html#a80b9dd0fbf935bed5035463af2ad0102',1,'IRDaikin64::toCommonMode()'],['../classIRDelonghiAc.html#a5a3eef369009836a629369cf835741c4',1,'IRDelonghiAc::toCommonMode()'],['../classIRElectraAc.html#a01bd399c3b8908083b95f31d97ddb26f',1,'IRElectraAc::toCommonMode()'],['../classIRFujitsuAC.html#a96140e74d31631581003064f70041d02',1,'IRFujitsuAC::toCommonMode()'],['../classIRGoodweatherAc.html#ab3bcd1354b715179f67499c28fb219fb',1,'IRGoodweatherAc::toCommonMode()'],['../classIRGreeAC.html#a3f393071163fd1577c772a8515e2b5a9',1,'IRGreeAC::toCommonMode()'],['../classIRHaierAC.html#a4d73f75516afff0ef18bdbb7ed9c26ed',1,'IRHaierAC::toCommonMode()'],['../classIRHaierACYRW02.html#a24007a5be360c93ec157b95c8cc06493',1,'IRHaierACYRW02::toCommonMode()'],['../classIRHitachiAc.html#ab7edc0f5571100e1778779081e1c1114',1,'IRHitachiAc::toCommonMode()'],['../classIRHitachiAc1.html#a5cbca62775089593fe2447a77d84b3d5',1,'IRHitachiAc1::toCommonMode()'],['../classIRHitachiAc424.html#a2a725d8dc2178975c977a7496792e667',1,'IRHitachiAc424::toCommonMode()'],['../classIRKelvinatorAC.html#ae2683d38ae72b99e6843e37d36f96db2',1,'IRKelvinatorAC::toCommonMode()'],['../classIRLgAc.html#ac3436968a4445f0210403c353d766b73',1,'IRLgAc::toCommonMode()'],['../classIRMideaAC.html#ac2e0ff374678aadd7fea80194aef8bca',1,'IRMideaAC::toCommonMode()'],['../classIRMitsubishiAC.html#a7eae5da584faf41139be597d6a5e7210',1,'IRMitsubishiAC::toCommonMode()'],['../classIRMitsubishi136.html#a2771fd09b2e953b037c0c65c4e4029ee',1,'IRMitsubishi136::toCommonMode()'],['../classIRMitsubishi112.html#a6da77ebe6e03cfc09aa35e531c292ed1',1,'IRMitsubishi112::toCommonMode()'],['../classIRMitsubishiHeavy152Ac.html#a9faaff371ad3ec33de5646a1afd1992a',1,'IRMitsubishiHeavy152Ac::toCommonMode()'],['../classIRNeoclimaAc.html#a2a220b673c96e54e675d8296aa8b2303',1,'IRNeoclimaAc::toCommonMode()'],['../classIRPanasonicAc.html#a1ace0180b9ac3f4bd17357a03c64792e',1,'IRPanasonicAc::toCommonMode()'],['../classIRSamsungAc.html#a39820a05a9650e9da8a44109234a8d87',1,'IRSamsungAc::toCommonMode()'],['../classIRSharpAc.html#a5e8fca86bcf138bb7c1fd1b4e4384b5f',1,'IRSharpAc::toCommonMode()'],['../classIRTcl112Ac.html#a230a8d768089d869efdea6589b0a9e37',1,'IRTcl112Ac::toCommonMode()'],['../classIRTecoAc.html#ac6c7011b31208887de6d15edbffb211a',1,'IRTecoAc::toCommonMode()'],['../classIRToshibaAC.html#a77871a927ee67460b7bdcb8f204297bc',1,'IRToshibaAC::toCommonMode()'],['../classIRTrotecESP.html#a2b28b06bd25234427d90172b27d57092',1,'IRTrotecESP::toCommonMode()'],['../classIRVestelAc.html#add602c0f052c8ada3b3b5748dda50a58',1,'IRVestelAc::toCommonMode()'],['../classIRWhirlpoolAc.html#a748caa4e22f2f1f47e6334b1a031c4d8',1,'IRWhirlpoolAc::toCommonMode()']]], + ['tocommonswingh_3487',['toCommonSwingH',['../classIRDaikin2.html#a85bb152a4bdcc2798270ee58a3cfe2ae',1,'IRDaikin2::toCommonSwingH()'],['../classIRDaikin176.html#a6a3b66c9777992ed9fcab4e26c1d74dc',1,'IRDaikin176::toCommonSwingH()'],['../classIRHitachiAc344.html#a31562e32ccdf179032e75334b16279f0',1,'IRHitachiAc344::toCommonSwingH()'],['../classIRMitsubishiAC.html#ad7446e0a4ea8d349004c2b4224e69cd9',1,'IRMitsubishiAC::toCommonSwingH()'],['../classIRMitsubishi112.html#a17cfee6dc9ddc38465539ca46f29b263',1,'IRMitsubishi112::toCommonSwingH()'],['../classIRMitsubishiHeavy152Ac.html#afb9e039776c77e898928e9139a21a2b8',1,'IRMitsubishiHeavy152Ac::toCommonSwingH()'],['../classIRMitsubishiHeavy88Ac.html#aead69a01407729240055bd64e583b51b',1,'IRMitsubishiHeavy88Ac::toCommonSwingH()'],['../classIRPanasonicAc.html#aa4241990c350ca936c73b8391c2a11fc',1,'IRPanasonicAc::toCommonSwingH()']]], + ['tocommonswingv_3488',['toCommonSwingV',['../classIRDaikin2.html#a1f3e17757bd4beb0330d75ec3df9788b',1,'IRDaikin2::toCommonSwingV()'],['../classIRDaikin160.html#afae9b50e59c0efa46b96eef9f05a95b7',1,'IRDaikin160::toCommonSwingV()'],['../classIRGreeAC.html#a537d17801a90e22ad2baba7145b038cb',1,'IRGreeAC::toCommonSwingV()'],['../classIRHaierAC.html#aac354e2e4ad72d91667509398078b309',1,'IRHaierAC::toCommonSwingV()'],['../classIRHaierACYRW02.html#a0e426a3479fd80bb3816f016fac22f19',1,'IRHaierACYRW02::toCommonSwingV()'],['../classIRMitsubishiAC.html#a173e3c22f4173f235e7213e41925fdd9',1,'IRMitsubishiAC::toCommonSwingV()'],['../classIRMitsubishi136.html#aca5e6ac2d886083c8c56e2949f9d11e9',1,'IRMitsubishi136::toCommonSwingV()'],['../classIRMitsubishi112.html#a0e577d8554a090d7f2ac2a9ddd3bf15c',1,'IRMitsubishi112::toCommonSwingV()'],['../classIRMitsubishiHeavy152Ac.html#ae4dd9b8f0b5b4becb07618e859a09a51',1,'IRMitsubishiHeavy152Ac::toCommonSwingV()'],['../classIRMitsubishiHeavy88Ac.html#a0597303839e79c97b0fafe6c9ddbcf9a',1,'IRMitsubishiHeavy88Ac::toCommonSwingV()'],['../classIRPanasonicAc.html#adae801e0a2641c196a59d65c26404a13',1,'IRPanasonicAc::toCommonSwingV()']]], + ['todo_20list_3489',['Todo List',['../todo.html',1,'']]], + ['togglerc5_3490',['toggleRC5',['../classIRsend.html#a42a78d4a3ef0f88b54bee488320344da',1,'IRsend']]], + ['togglerc6_3491',['toggleRC6',['../classIRsend.html#a5a0e8778394021ea12a8b8c2daf0add6',1,'IRsend']]], + ['toggleswinghoriz_3492',['toggleSwingHoriz',['../classIRFujitsuAC.html#aeba829bb9a9934ad9246a5ba4f4c03fc',1,'IRFujitsuAC']]], + ['toggleswingvert_3493',['toggleSwingVert',['../classIRFujitsuAC.html#a6dc9cc4bda83215fa97896c41b01e584',1,'IRFujitsuAC']]], + ['toshiba_3494',['toshiba',['../classIRac.html#a384e62cc56ebbdd790ebcd500ce56fc5',1,'IRac']]], + ['toshiba_5fac_3495',['TOSHIBA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66de3fced9e8f97d1919bcf4d5726f3e',1,'IRremoteESP8266.h']]], + ['tostring_3496',['toString',['../classIRAmcorAc.html#a2435fd76c642e4a64c7e2330236dcaa6',1,'IRAmcorAc::toString()'],['../classIRArgoAC.html#ad9f52d54687754c0b8d676cb75a3b1bf',1,'IRArgoAC::toString()'],['../classIRCarrierAc64.html#acede081614a80ae46345d4ae45e39ab2',1,'IRCarrierAc64::toString()'],['../classIRCoolixAC.html#ad1282b4071f003ab35d2a97287ba6d2d',1,'IRCoolixAC::toString()'],['../classIRCoronaAc.html#a13e87d763ffd0d25a9d09010828c2124',1,'IRCoronaAc::toString()'],['../classIRDaikinESP.html#a38e705d3ed5128e400efd971e50518d5',1,'IRDaikinESP::toString()'],['../classIRDaikin2.html#a5804ef19f37ee7b8a525bc8db5146c73',1,'IRDaikin2::toString()'],['../classIRDaikin216.html#a5b9ea30424aa3abd9fdee95c78ba9e40',1,'IRDaikin216::toString()'],['../classIRDaikin160.html#a5d9ff2f09b95023c595e9c4794cb29b8',1,'IRDaikin160::toString()'],['../classIRDaikin176.html#a5ff8d589c7e97bd48b50e0ae01356783',1,'IRDaikin176::toString()'],['../classIRDaikin128.html#a48fc2a4080400f83260d2c861c831a28',1,'IRDaikin128::toString()'],['../classIRDaikin152.html#abb9253e8fe7e9bdf786246ce7ab8c54b',1,'IRDaikin152::toString()'],['../classIRDaikin64.html#aa19ba82f1dd405633f078eaf5cb915b8',1,'IRDaikin64::toString()'],['../classIRDelonghiAc.html#a386fb70137a7c2100d05f3202c224887',1,'IRDelonghiAc::toString()'],['../classIRElectraAc.html#a2b1f49b99ec17e211c6cc63d4f72f6a4',1,'IRElectraAc::toString()'],['../classIRFujitsuAC.html#ad779b8b86849ab4c6fe3cfc4afe2c7b8',1,'IRFujitsuAC::toString()'],['../classIRGoodweatherAc.html#a8c298ad0ab98789aa4eb419ed134ee03',1,'IRGoodweatherAc::toString()'],['../classIRGreeAC.html#a1f18b275e0e3d10fbc952d1da9613074',1,'IRGreeAC::toString()'],['../classIRHaierAC.html#a7effff64e7c9c20b7d9e6c2c10e0ffbc',1,'IRHaierAC::toString()'],['../classIRHaierACYRW02.html#a3858dd619f4ea4071b248bb5fb64fb08',1,'IRHaierACYRW02::toString()'],['../classIRHitachiAc.html#a9d927f191807b52fbd4f5d411e0c6519',1,'IRHitachiAc::toString()'],['../classIRHitachiAc1.html#ac70d5ed48897559d7e2ff0f843c79ddc',1,'IRHitachiAc1::toString()'],['../classIRHitachiAc424.html#abc1c122c68d62b582a7e38cdaf9febe7',1,'IRHitachiAc424::toString()'],['../classIRHitachiAc344.html#a5286ffe0ad72f82f66ad19bd6c3bdacc',1,'IRHitachiAc344::toString()'],['../classIRKelvinatorAC.html#a2cc438f41b6f4ed2f9df42acc1ffccfe',1,'IRKelvinatorAC::toString()'],['../classIRLgAc.html#a4546e2e0f63aac0bb9bd54f4f93c5f6c',1,'IRLgAc::toString()'],['../classIRMideaAC.html#a4980fbb52145e1d12a6fa5601f75018a',1,'IRMideaAC::toString()'],['../classIRMitsubishiAC.html#a28cfd4bb4d3372fb983f737c7e86b530',1,'IRMitsubishiAC::toString()'],['../classIRMitsubishi136.html#a8e49c540665a724c895674edef31d980',1,'IRMitsubishi136::toString()'],['../classIRMitsubishi112.html#ab99894eb185d13c5bd097c287fdbddeb',1,'IRMitsubishi112::toString()'],['../classIRMitsubishiHeavy152Ac.html#a9082e1498220f7b641f5f265d1131c0a',1,'IRMitsubishiHeavy152Ac::toString()'],['../classIRMitsubishiHeavy88Ac.html#a7c77e68371e70eb5fd565d8ac815950e',1,'IRMitsubishiHeavy88Ac::toString()'],['../classIRNeoclimaAc.html#a9e6a036411583bad6daf1ef2e60e013c',1,'IRNeoclimaAc::toString()'],['../classIRPanasonicAc.html#ada0b3e2bf11123d0a2f5df8692ae73ad',1,'IRPanasonicAc::toString()'],['../classIRSamsungAc.html#a82de7f9c7b4984f002ea3849b4e95ff2',1,'IRSamsungAc::toString()'],['../classIRSharpAc.html#afee9b0acec54d1683404b7af66c73046',1,'IRSharpAc::toString()'],['../classIRTcl112Ac.html#a381c019f805973000ac5ddb6c70e2773',1,'IRTcl112Ac::toString()'],['../classIRTecoAc.html#a7f085b545dac637927ae58fca13e5c5f',1,'IRTecoAc::toString()'],['../classIRToshibaAC.html#a5bbf6a725f496ac40ec2fac8f9a0dc1c',1,'IRToshibaAC::toString()'],['../classIRTrotecESP.html#a06783a7571b684be20ee5485f30ceb3c',1,'IRTrotecESP::toString()'],['../classIRVestelAc.html#a5fd0630ad7c1d5da3b1bfc5aefc443ec',1,'IRVestelAc::toString()'],['../classIRWhirlpoolAc.html#ad599025e8413f23d13a9783ff4c1fe93',1,'IRWhirlpoolAc::toString()']]], + ['trotec_3497',['trotec',['../classIRac.html#aed1a012c0546c2b1d53e86871a42ba1a',1,'IRac::trotec()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d0f8056d221b37f68f80bace2b794b9',1,'TROTEC(): IRremoteESP8266.h']]], + ['turbo_3498',['turbo',['../structstdAc_1_1state__t.html#aae084b686685f2b2a07ccdda649e358c',1,'stdAc::state_t']]], + ['turboflag_3499',['turboFlag',['../classIRCoolixAC.html#a60a8a848951555dba34f2a317d6611ea',1,'IRCoolixAC']]], + ['typetostring_3500',['typeToString',['../IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1',1,'typeToString(const decode_type_t protocol, const bool isRepeat): IRutils.cpp'],['../IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c',1,'typeToString(const decode_type_t protocol, const bool isRepeat=false): IRutils.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.html new file mode 100644 index 000000000..767aec361 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.js new file mode 100644 index 000000000..485738113 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_15.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['uint64tostring_3501',['uint64ToString',['../IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420',1,'uint64ToString(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a781650451d38303e80da677539f574ee',1,'uint64ToString(uint64_t input, uint8_t base=10): IRutils.cpp']]], + ['uint8tobcd_3502',['uint8ToBcd',['../namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1',1,'irutils']]], + ['unknown_3503',['UNKNOWN',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada6ce26a62afab55d7606ad4e92428b30c',1,'IRremoteESP8266.h']]], + ['unused_3504',['UNUSED',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa09b651ef326a9d8efcee5cc5b720ab4',1,'IRremoteESP8266.h']]], + ['updatesavedstate_3505',['updateSavedState',['../classIRCoolixAC.html#a1f39630b328939307bb08c18e56e9ad3',1,'IRCoolixAC']]], + ['use_5ftime_5fstate_3506',['use_time_state',['../classIRVestelAc.html#af1b622c50a4952fb3edaf483e1bf9328',1,'IRVestelAc']]], + ['used_3507',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.html new file mode 100644 index 000000000..7bd7afe63 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.js new file mode 100644 index 000000000..a9e6c124f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_16.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['validchecksum_3508',['validChecksum',['../classIRAmcorAc.html#a1ad297a62ac3152c9d957cef38757d28',1,'IRAmcorAc::validChecksum()'],['../classIRArgoAC.html#acfa5a9df8273123e6f4c48684ef60006',1,'IRArgoAC::validChecksum()'],['../classIRCarrierAc64.html#affa23f178e079cd3a6c933240759fe80',1,'IRCarrierAc64::validChecksum()'],['../classIRDaikinESP.html#ad766e60827f80b96a66449bddc621d87',1,'IRDaikinESP::validChecksum()'],['../classIRDaikin2.html#ade5c0dbfe38d9ac0c4bc009c897af04d',1,'IRDaikin2::validChecksum()'],['../classIRDaikin216.html#a663c11977545ba01b34715a61a26ab88',1,'IRDaikin216::validChecksum()'],['../classIRDaikin160.html#a0d9f3af404e3b6c116e8c27e938f8479',1,'IRDaikin160::validChecksum()'],['../classIRDaikin176.html#abc97abc68f535f7ad801b393e0a795d5',1,'IRDaikin176::validChecksum()'],['../classIRDaikin128.html#ad0b16e48bff00c5cdeffa1419c003946',1,'IRDaikin128::validChecksum()'],['../classIRDaikin152.html#ade1c641eecea63857115fc20f1811fe7',1,'IRDaikin152::validChecksum()'],['../classIRDaikin64.html#ab04287881112ff21d1ea541c0f21b507',1,'IRDaikin64::validChecksum()'],['../classIRDelonghiAc.html#ae39b20bcea2b7090ac2e29d8cd28e5f6',1,'IRDelonghiAc::validChecksum()'],['../classIRElectraAc.html#a60034a18e7574844fb59a03e7789f419',1,'IRElectraAc::validChecksum()'],['../classIRFujitsuAC.html#a26153c647d127356e47d35a7456c6235',1,'IRFujitsuAC::validChecksum()'],['../classIRGreeAC.html#a74e7df0634f0a60110db8c033d9d5b1d',1,'IRGreeAC::validChecksum()'],['../classIRHaierAC.html#ad7aae554b8f0a76493efc2a43ac0f780',1,'IRHaierAC::validChecksum()'],['../classIRHaierACYRW02.html#a3f6d071d215b0316cccc2e94c4786954',1,'IRHaierACYRW02::validChecksum()'],['../classIRHitachiAc.html#a2549c1fd2e8a603eb8924fbba8b26e87',1,'IRHitachiAc::validChecksum()'],['../classIRHitachiAc1.html#aa6b7ab76567ee15aa08b1594c67bd29d',1,'IRHitachiAc1::validChecksum()'],['../classIRKelvinatorAC.html#aaa915fa5eb3f7e5c7a3dc143b6fda826',1,'IRKelvinatorAC::validChecksum()'],['../classIRLgAc.html#a51748fa24de24049a2fafb4590e84176',1,'IRLgAc::validChecksum()'],['../classIRMideaAC.html#a971ab4af0267bb732834e7e1f7b8e354',1,'IRMideaAC::validChecksum()'],['../classIRMitsubishiAC.html#ad74885e17434aa9038dc19ad74de4cd0',1,'IRMitsubishiAC::validChecksum()'],['../classIRMitsubishi136.html#a666d1268a93e96b50ac9012c09320de9',1,'IRMitsubishi136::validChecksum()'],['../classIRMitsubishiHeavy152Ac.html#abef94200719da0c14e211315ffc8bede',1,'IRMitsubishiHeavy152Ac::validChecksum()'],['../classIRMitsubishiHeavy88Ac.html#aabd9d8f81108f20f1d7adff3ac6c2fd4',1,'IRMitsubishiHeavy88Ac::validChecksum()'],['../classIRNeoclimaAc.html#a32e4b4444e0a97b6da4447e977f74f94',1,'IRNeoclimaAc::validChecksum()'],['../classIRPanasonicAc.html#a6a084754596f7840dd308041d11a822d',1,'IRPanasonicAc::validChecksum()'],['../classIRSamsungAc.html#a4f7339bce78ce2b656fc597b4c88db22',1,'IRSamsungAc::validChecksum()'],['../classIRSharpAc.html#acb7fb0ac19e09da02d36cb73c808420d',1,'IRSharpAc::validChecksum()'],['../classIRTcl112Ac.html#a204bc37ffadf72ed31b305197c4803f4',1,'IRTcl112Ac::validChecksum()'],['../classIRToshibaAC.html#adc7c1eee14e4de896121ad06e88b61eb',1,'IRToshibaAC::validChecksum()'],['../classIRTrotecESP.html#ae08748e33ed12c536b18f6d0dc4da1c7',1,'IRTrotecESP::validChecksum()'],['../classIRVestelAc.html#ad3bcc08fb4242af7dcc65e534816a219',1,'IRVestelAc::validChecksum()'],['../classIRWhirlpoolAc.html#a2d891069ebdecc62b03e8c92befa15c6',1,'IRWhirlpoolAc::validChecksum()']]], + ['validsection_3509',['validSection',['../classIRCoronaAc.html#af36894d88e7fb45affc883ba0b077862',1,'IRCoronaAc']]], + ['value_3510',['value',['../classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47',1,'decode_results']]], + ['vestel_3511',['vestel',['../classIRac.html#a9b1cd1a4d44bc56e62128b9dbc178bba',1,'IRac']]], + ['vestel_5fac_3512',['VESTEL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada165413c6395bde985757b5b446f76569',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.html new file mode 100644 index 000000000..35702ecdd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.js new file mode 100644 index 000000000..3b357053e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_17.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['wand_5fid_3513',['wand_id',['../unionmagiquest.html#a1b159cd47635d548e1d4198cd6d41e93',1,'magiquest']]], + ['whirlpool_3514',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]], + ['whirlpool_5fac_3515',['WHIRLPOOL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9faf927323d110269541b356f079b85a',1,'IRremoteESP8266.h']]], + ['whirlpool_5fac_5fremote_5fmodel_5ft_3516',['whirlpool_ac_remote_model_t',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2',1,'IRsend.h']]], + ['whynter_3517',['WHYNTER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada458cdd7fa2b29dc8617c694696580c0c',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.html new file mode 100644 index 000000000..540cdb6a5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.js new file mode 100644 index 000000000..072cb0952 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_18.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xorbytes_3518',['xorBytes',['../IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.html new file mode 100644 index 000000000..14e13e7d2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.js new file mode 100644 index 000000000..8079328d1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_19.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['yaw1f_3519',['YAW1F',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a6b29d752ac8bafc8fedabc1282fccfb6',1,'IRsend.h']]], + ['ybofb_3520',['YBOFB',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a5d6dadebb4f337aa20ea06a87ae9b34a',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.html new file mode 100644 index 000000000..233281a12 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.js new file mode 100644 index 000000000..403d933ff --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['zepeal_3521',['ZEPEAL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1622e3d0835b4d47add716811c7bf797',1,'IRremoteESP8266.h']]], + ['zh_2dcn_2eh_3522',['zh-CN.h',['../zh-CN_8h.html',1,'']]], + ['zonefollowflag_3523',['zoneFollowFlag',['../classIRCoolixAC.html#a9cb37ed201fcf842c153f0414d9bfd9f',1,'IRCoolixAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.html new file mode 100644 index 000000000..470a5bffa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.js new file mode 100644 index 000000000..e3b5013ee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_1b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7eirrecv_3524',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.html new file mode 100644 index 000000000..b26d91650 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.js new file mode 100644 index 000000000..88a5182d9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['bcdtouint8_67',['bcdToUint8',['../namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7',1,'irutils']]], + ['beep_68',['beep',['../structstdAc_1_1state__t.html#a468ce4cf8b68467964b1f1840257663d',1,'stdAc::state_t']]], + ['begin_69',['begin',['../classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654',1,'IRAmcorAc::begin()'],['../classIRArgoAC.html#aca61a63c37797699540c180354809bd8',1,'IRArgoAC::begin()'],['../classIRCarrierAc64.html#a7d9800edffad8a529971535ada5c00ad',1,'IRCarrierAc64::begin()'],['../classIRCoolixAC.html#a506a5ab28865d0243d75ebb7fe62e4ea',1,'IRCoolixAC::begin()'],['../classIRCoronaAc.html#a7db1a8eb9c3c7f76091b2707458e54a9',1,'IRCoronaAc::begin()'],['../classIRDaikinESP.html#accd087c48f246a71898cc6fd7afc2cc7',1,'IRDaikinESP::begin()'],['../classIRDaikin2.html#a6a7b5c28feec523ee81e99a9c32da26e',1,'IRDaikin2::begin()'],['../classIRDaikin216.html#a95be01fb6e672ebd12f2ebca0406ba15',1,'IRDaikin216::begin()'],['../classIRDaikin160.html#a62bb5f66cd99711e388eaa1be9faf617',1,'IRDaikin160::begin()'],['../classIRDaikin176.html#aa742f7d9ae3c9e57cae0e471d7fe59d1',1,'IRDaikin176::begin()'],['../classIRDaikin128.html#af86dba9e085b771c8c3caaebb9f8ee84',1,'IRDaikin128::begin()'],['../classIRDaikin152.html#a2746854350ca7d3a71699439f9843381',1,'IRDaikin152::begin()'],['../classIRDaikin64.html#a291d5f702b4ce763507c731db08b48f2',1,'IRDaikin64::begin()'],['../classIRDelonghiAc.html#a8d5e4f95e929c2365b2be47f42c6328c',1,'IRDelonghiAc::begin()'],['../classIRElectraAc.html#afff519ff9e81ec4aa03ff337f8efef13',1,'IRElectraAc::begin()'],['../classIRFujitsuAC.html#af0dc3fffdafae5970bc367f31029464b',1,'IRFujitsuAC::begin()'],['../classIRGoodweatherAc.html#abace3c8b25d4737a83fe33f94fc741d9',1,'IRGoodweatherAc::begin()'],['../classIRGreeAC.html#a44cf8f0e09248741094af4b35321ab1c',1,'IRGreeAC::begin()'],['../classIRHaierAC.html#ab92fd48ccb5707cb6d14e9d46ce42e17',1,'IRHaierAC::begin()'],['../classIRHaierACYRW02.html#addc01e60e8c4045fab6f22c852eb620f',1,'IRHaierACYRW02::begin()'],['../classIRHitachiAc.html#a62817c840f352bb01a394c37fc95f0f0',1,'IRHitachiAc::begin()'],['../classIRHitachiAc1.html#a28d5d351003d3e0bc1506b06cac8b3d6',1,'IRHitachiAc1::begin()'],['../classIRHitachiAc424.html#a11866bba49e9b976eb22b1039787ecae',1,'IRHitachiAc424::begin()'],['../classIRHitachiAc3.html#a6d79ac7b8ce977e8059019349d6991a7',1,'IRHitachiAc3::begin()'],['../classIRKelvinatorAC.html#a4591bf4e8131aa2a228cbc611156e7f4',1,'IRKelvinatorAC::begin()'],['../classIRLgAc.html#ac08ada1c67ace5ee2ebe4d325aa8c25d',1,'IRLgAc::begin()'],['../classIRMideaAC.html#ac36b6aa76b6b98ab186cd1d5ad9246b4',1,'IRMideaAC::begin()'],['../classIRMitsubishiAC.html#aa6e58080fd811f5b6d0f90c4ef5917df',1,'IRMitsubishiAC::begin()'],['../classIRMitsubishi136.html#abbcd8307862beee2899d2b9900537520',1,'IRMitsubishi136::begin()'],['../classIRMitsubishi112.html#a1d00958556872286b1818d0dbf02e112',1,'IRMitsubishi112::begin()'],['../classIRMitsubishiHeavy152Ac.html#afd649a53d9f7d9b31b7a5732d6cd0857',1,'IRMitsubishiHeavy152Ac::begin()'],['../classIRMitsubishiHeavy88Ac.html#a9bcf18c942ad4df4856bd319215a2002',1,'IRMitsubishiHeavy88Ac::begin()'],['../classIRNeoclimaAc.html#a8f82159b94d86cc4e3d4719441bfa96e',1,'IRNeoclimaAc::begin()'],['../classIRPanasonicAc.html#af48075dc4eb84fcc7f718375d4b0e00a',1,'IRPanasonicAc::begin()'],['../classIRSamsungAc.html#a89f1f902042cd6c6ba9d0f0c6d2cc581',1,'IRSamsungAc::begin()'],['../classIRSharpAc.html#ab87e5b599b7e8fc387fff25b5e13e34f',1,'IRSharpAc::begin()'],['../classIRTcl112Ac.html#a5b9983ab4027951679f0dc31b33cbadf',1,'IRTcl112Ac::begin()'],['../classIRTecoAc.html#a3b23a8556686c83b146101fc31b0dff3',1,'IRTecoAc::begin()'],['../classIRToshibaAC.html#a41e847f399e42c91b0f4aa2ef5d36cba',1,'IRToshibaAC::begin()'],['../classIRTrotecESP.html#a093b874287adb8ef2cc60c832765ff58',1,'IRTrotecESP::begin()'],['../classIRVestelAc.html#a794808d49eb6ce1521ff800b2b15a580',1,'IRVestelAc::begin()'],['../classIRWhirlpoolAc.html#a21db8b31504d416efb2511a33bdc2209',1,'IRWhirlpoolAc::begin()'],['../classIRsend.html#a386f026bf739b0718efde4cffa6ce129',1,'IRsend::begin()']]], + ['bits_70',['bits',['../classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7',1,'decode_results']]], + ['booltostring_71',['boolToString',['../classIRac.html#a9bbd9e6b72e82a752df56e8c489668cf',1,'IRac']]], + ['bufsize_72',['bufsize',['../structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec',1,'irparams_t']]], + ['buildfromstate_73',['buildFromState',['../classIRFujitsuAC.html#a6fc8d7d0f649185e0858974394636a8d',1,'IRFujitsuAC']]], + ['buildstate_74',['buildState',['../classIRFujitsuAC.html#ac885c7952253fcee9bf5b4a889b54da9',1,'IRFujitsuAC']]], + ['byte_75',['byte',['../unionmagiquest.html#af1a9c9a147a1610fe5f0e77ca3e09e44',1,'magiquest']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.html new file mode 100644 index 000000000..b61b96f83 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.js new file mode 100644 index 000000000..527d634a1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_3.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['calcblockchecksum_76',['calcBlockChecksum',['../classIRKelvinatorAC.html#a22f561397c526ed6cc3f69a5d527d8d6',1,'IRKelvinatorAC']]], + ['calcchecksum_77',['calcChecksum',['../classIRAmcorAc.html#aec764cf4d88bb3fcbe3f36d24780f6a9',1,'IRAmcorAc::calcChecksum()'],['../classIRArgoAC.html#acab2fe3b9f77f57f0e99da0bec0d7392',1,'IRArgoAC::calcChecksum()'],['../classIRCarrierAc64.html#a20676dcf4b0a6510cc3bce282fbf8504',1,'IRCarrierAc64::calcChecksum()'],['../classIRDaikin64.html#ac29c18fde1b0cd98991e68c0f672d0e9',1,'IRDaikin64::calcChecksum()'],['../classIRDelonghiAc.html#a14d7629bb888deb02e83886191f44c2d',1,'IRDelonghiAc::calcChecksum()'],['../classIRElectraAc.html#aa8063d07e41ca2cc0fd27093a2e67bb2',1,'IRElectraAc::calcChecksum()'],['../classIRHitachiAc.html#a6e5da77c12ad105439eb159b6a58104a',1,'IRHitachiAc::calcChecksum()'],['../classIRHitachiAc1.html#a6995513d5b59cd7b14cfff39c8843e8d',1,'IRHitachiAc1::calcChecksum()'],['../classIRLgAc.html#a96024e736cf87e65b4e2db7c4c269520',1,'IRLgAc::calcChecksum()'],['../classIRMideaAC.html#ac8733348b311ecf8eed87021cdf4ee31',1,'IRMideaAC::calcChecksum()'],['../classIRNeoclimaAc.html#ac75f316cd1813cdb4e8a6d45d10ddd57',1,'IRNeoclimaAc::calcChecksum()'],['../classIRPanasonicAc.html#a0e38b0f3c54e49cdb59f92279e19840f',1,'IRPanasonicAc::calcChecksum()'],['../classIRSamsungAc.html#a00f9b2a1480d2ed45bdea5d236c77d0f',1,'IRSamsungAc::calcChecksum()'],['../classIRSharpAc.html#af3655c9c394b1391572e8ffab70881ff',1,'IRSharpAc::calcChecksum()'],['../classIRTcl112Ac.html#a0973a1c8a53661ee7720ecb5d08e6dcc',1,'IRTcl112Ac::calcChecksum()'],['../classIRToshibaAC.html#a0d91d32d0d9d722f750eb423d88509f4',1,'IRToshibaAC::calcChecksum()'],['../classIRTrotecESP.html#ac1fdbcbbb8dd1ca50ccf2b55c7281c89',1,'IRTrotecESP::calcChecksum()'],['../classIRVestelAc.html#ac0ba3de4de70350c5325b3d5e0b39e58',1,'IRVestelAc::calcChecksum()']]], + ['calcfirstchecksum_78',['calcFirstChecksum',['../classIRDaikin128.html#a25b25f6b73bb5f1fd17a16080179d4bc',1,'IRDaikin128']]], + ['calcsecondchecksum_79',['calcSecondChecksum',['../classIRDaikin128.html#aea8da64300afe0d62ddf3082a72251f2',1,'IRDaikin128']]], + ['calculatechecksum_80',['calculateChecksum',['../classIRMitsubishiAC.html#aaadefc5880dcd48e3fb2f12b59101f71',1,'IRMitsubishiAC']]], + ['calcusecperiod_81',['calcUSecPeriod',['../classIRsend.html#ae9e68c0ed22e27c8f7ff82cec7ca3e33',1,'IRsend']]], + ['calibrate_82',['calibrate',['../classIRAmcorAc.html#a6206e866e859bc4690cb014c49c1ff80',1,'IRAmcorAc::calibrate()'],['../classIRArgoAC.html#a63cd2f350a7f249c020439543ef3c6d5',1,'IRArgoAC::calibrate()'],['../classIRCarrierAc64.html#a0718376156750e66f98ea0549c75b21b',1,'IRCarrierAc64::calibrate()'],['../classIRCoolixAC.html#a9e39ce5050888210d6ba9b79ae3763e3',1,'IRCoolixAC::calibrate()'],['../classIRCoronaAc.html#a5b10141e4a6e3d8511fb7f9f46d00a96',1,'IRCoronaAc::calibrate()'],['../classIRDaikinESP.html#a638a49f49275a2ab0affb09088794e1b',1,'IRDaikinESP::calibrate()'],['../classIRDaikin2.html#a96c62125bddf113c6524960062d05a57',1,'IRDaikin2::calibrate()'],['../classIRDaikin216.html#a49d7501966528c0a690cfb505f163e26',1,'IRDaikin216::calibrate()'],['../classIRDaikin160.html#a608b5556f316c31e3a8aa73684e4e10d',1,'IRDaikin160::calibrate()'],['../classIRDaikin176.html#a1f5989110782c18aa18e3757c50f4a31',1,'IRDaikin176::calibrate()'],['../classIRDaikin128.html#a281396f4c632899648694e3139c3acd0',1,'IRDaikin128::calibrate()'],['../classIRDaikin152.html#a82fa8bfb3384ed09473345b6e194c3ba',1,'IRDaikin152::calibrate()'],['../classIRDaikin64.html#a12a1e21ba1b06f9b3ffac56691ff2206',1,'IRDaikin64::calibrate()'],['../classIRDelonghiAc.html#aab8f78adcd7fcbea0be753a4fc7696e0',1,'IRDelonghiAc::calibrate()'],['../classIRElectraAc.html#af333e90117ab035ff92389d4eefb3649',1,'IRElectraAc::calibrate()'],['../classIRFujitsuAC.html#a8bb6d8456561dfb04ccac95e0e489558',1,'IRFujitsuAC::calibrate()'],['../classIRGoodweatherAc.html#a8a747144587cf38d64bb32a7f86432b3',1,'IRGoodweatherAc::calibrate()'],['../classIRGreeAC.html#a8069d00a16ed04fd6fa10d84b364bca7',1,'IRGreeAC::calibrate()'],['../classIRHaierAC.html#a448b1d5db05f7722db4758e968ea3171',1,'IRHaierAC::calibrate()'],['../classIRHaierACYRW02.html#a2081b29d0526e339a6b94fc41c854197',1,'IRHaierACYRW02::calibrate()'],['../classIRHitachiAc.html#aaabd743da491ef5d73c4b8c46f11241a',1,'IRHitachiAc::calibrate()'],['../classIRHitachiAc1.html#a847a26df2e19668b147cba2eef595a21',1,'IRHitachiAc1::calibrate()'],['../classIRHitachiAc424.html#aae5e5c13767f335331c5fab8d8ba55d6',1,'IRHitachiAc424::calibrate()'],['../classIRHitachiAc3.html#a02e065c08f9ec4a3d9e6f71432087595',1,'IRHitachiAc3::calibrate()'],['../classIRKelvinatorAC.html#aee8863c1678b09432618bb4ca734db95',1,'IRKelvinatorAC::calibrate()'],['../classIRLgAc.html#a4fd11e935c781319b29f606f2f4b2570',1,'IRLgAc::calibrate()'],['../classIRMideaAC.html#a4077604c2af56783f95a0a64eda7148b',1,'IRMideaAC::calibrate()'],['../classIRMitsubishiAC.html#a973c876e34942776ac98f27de96c5228',1,'IRMitsubishiAC::calibrate()'],['../classIRMitsubishi136.html#a76133542efc3763cb7edc9809ad8d93c',1,'IRMitsubishi136::calibrate()'],['../classIRMitsubishi112.html#ad148250070a3f4ac57ed6cb957ffdefb',1,'IRMitsubishi112::calibrate()'],['../classIRMitsubishiHeavy152Ac.html#a5d4c4ce0e69ed33a2f1db2af127c13c5',1,'IRMitsubishiHeavy152Ac::calibrate()'],['../classIRMitsubishiHeavy88Ac.html#a027423ffbee92ef65b02423f7cbaeca8',1,'IRMitsubishiHeavy88Ac::calibrate()'],['../classIRNeoclimaAc.html#a636dd97ca22c847f966eca8112c8eede',1,'IRNeoclimaAc::calibrate()'],['../classIRPanasonicAc.html#a3f850333f2aa7ce40856c99ef85ffd79',1,'IRPanasonicAc::calibrate()'],['../classIRSamsungAc.html#a5cc7486ae41f61cbe0bb053dd7c9e9e3',1,'IRSamsungAc::calibrate()'],['../classIRSharpAc.html#ac37b1a5679ce90e84f6f95c5df1526bb',1,'IRSharpAc::calibrate()'],['../classIRTcl112Ac.html#a435744e4c6ef31b362d15523ce0584f5',1,'IRTcl112Ac::calibrate()'],['../classIRTecoAc.html#ad700578cbae74857483372597a399ff3',1,'IRTecoAc::calibrate()'],['../classIRToshibaAC.html#a74c66bba288cb3cbb43008edb7b376bf',1,'IRToshibaAC::calibrate()'],['../classIRTrotecESP.html#a56de318a27011e0bddb40738c18dbcf2',1,'IRTrotecESP::calibrate()'],['../classIRVestelAc.html#aae91667d96d86de824a20c256c311f15',1,'IRVestelAc::calibrate()'],['../classIRWhirlpoolAc.html#a006c59c1c84c62fccd3730bec30ef5e8',1,'IRWhirlpoolAc::calibrate()'],['../classIRsend.html#ad1776aa6c699f9eeca1eef9bb4fe355b',1,'IRsend::calibrate()']]], + ['cancelofftimer_83',['cancelOffTimer',['../classIRPanasonicAc.html#a6d202284320c59205cb0d02cb613cada',1,'IRPanasonicAc']]], + ['cancelontimer_84',['cancelOnTimer',['../classIRPanasonicAc.html#a102e7c029a923e121e40326859f2e4a3',1,'IRPanasonicAc']]], + ['canceltimers_85',['cancelTimers',['../classIRHaierAC.html#a1cccc733f74232751f95c32e47795638',1,'IRHaierAC']]], + ['carrier64_86',['carrier64',['../classIRac.html#a8090f2d79a31b81a0342b2e9efb9d555',1,'IRac']]], + ['carrier_5fac_87',['CARRIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4d7328071e0a48bc828fccb02f969c20',1,'IRremoteESP8266.h']]], + ['carrier_5fac40_88',['CARRIER_AC40',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1340c578f7986b0ed126744127af3907',1,'IRremoteESP8266.h']]], + ['carrier_5fac64_89',['CARRIER_AC64',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4122973f5d8ce282457d348857ba0af0',1,'IRremoteESP8266.h']]], + ['celsius_90',['celsius',['../structstdAc_1_1state__t.html#a235b17f3979b155b368bfdc2b14123f5',1,'stdAc::state_t']]], + ['celsiustofahrenheit_91',['celsiusToFahrenheit',['../IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp'],['../IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp']]], + ['checksum_92',['checksum',['../classIRAmcorAc.html#a67244a75731be6a3bd96ecc0384d0113',1,'IRAmcorAc::checksum()'],['../classIRArgoAC.html#ab0fe4e42d1c1201a92f5c4738b869763',1,'IRArgoAC::checksum()'],['../classIRCarrierAc64.html#a005fab56acf94fe97db7fa92651b2882',1,'IRCarrierAc64::checksum()'],['../classIRCoronaAc.html#ae0257fdafacf7fd2e7ac6ca3f8ae3168',1,'IRCoronaAc::checksum()'],['../classIRDaikinESP.html#ac8ac2a0674dc5cfaf514d319b51b20ab',1,'IRDaikinESP::checksum()'],['../classIRDaikin2.html#abb8e4ad1f8c3ada4211541e5a6e23e64',1,'IRDaikin2::checksum()'],['../classIRDaikin216.html#af2c951901b3b9db9f285a4e9b563ea5e',1,'IRDaikin216::checksum()'],['../classIRDaikin160.html#a34090a598e2b25ee4688c8fbac933638',1,'IRDaikin160::checksum()'],['../classIRDaikin176.html#a4cfe2c4ca95adbf66e149b322d58a843',1,'IRDaikin176::checksum()'],['../classIRDaikin128.html#a747c906808c269581de6cf9b02e5c0a7',1,'IRDaikin128::checksum()'],['../classIRDaikin152.html#a0e208d3e1938abcb320665fffd6ed0e3',1,'IRDaikin152::checksum()'],['../classIRDaikin64.html#a27e2f82b2f13f1e63e981af8f1d3912a',1,'IRDaikin64::checksum()'],['../classIRDelonghiAc.html#ae4c4e7140a763eee159991f5c8afc54f',1,'IRDelonghiAc::checksum()'],['../classIRElectraAc.html#a73dc5b9a038669cc1f00f5b64ad458d1',1,'IRElectraAc::checksum()'],['../classIRGreeAC.html#aaa6b2702d79a7a3db454b99d71064679',1,'IRGreeAC::checksum()'],['../classIRHaierAC.html#ab7faae274ff7f30bf7df3c58d6e7e210',1,'IRHaierAC::checksum()'],['../classIRHaierACYRW02.html#a18045defdd5641ae13c7c75dda0cf23a',1,'IRHaierACYRW02::checksum()'],['../classIRHitachiAc.html#a3b65ccbd6de6b5dcb5a794b471e363f5',1,'IRHitachiAc::checksum()'],['../classIRHitachiAc1.html#aa6687d6282b134d508d6534e8446b341',1,'IRHitachiAc1::checksum()'],['../classIRKelvinatorAC.html#a09acf66b92d3fde6692ec02ff8e62dab',1,'IRKelvinatorAC::checksum()'],['../classIRLgAc.html#a438cbbb77668205c3f2b59b8f28585cd',1,'IRLgAc::checksum()'],['../classIRMideaAC.html#a418b7cbb4b388dba732176d891bb499d',1,'IRMideaAC::checksum()'],['../classIRMitsubishiAC.html#a7c5b1e5c53d99f1564d8a0424f626adb',1,'IRMitsubishiAC::checksum()'],['../classIRMitsubishi136.html#aa2c6fe9b28462052cf6627960126a783',1,'IRMitsubishi136::checksum()'],['../classIRMitsubishi112.html#a65ee232bfc09d05724b8ec5ada538ccf',1,'IRMitsubishi112::checksum()'],['../classIRMitsubishiHeavy152Ac.html#a14cdcaeefef283f707d0fae5108d65f4',1,'IRMitsubishiHeavy152Ac::checksum()'],['../classIRMitsubishiHeavy88Ac.html#acb03ef0da10d3fec14c71bfa087a02b8',1,'IRMitsubishiHeavy88Ac::checksum()'],['../classIRNeoclimaAc.html#acba18ea35a59f6f1ccbcfd75e7979feb',1,'IRNeoclimaAc::checksum()'],['../classIRSamsungAc.html#a75c5886916dd3ef3aa6f96f04934048d',1,'IRSamsungAc::checksum()'],['../classIRSharpAc.html#ad87f46ad9220213d77022dc34920d802',1,'IRSharpAc::checksum()'],['../classIRTcl112Ac.html#a2486f46c7db6a3dfbe3af9c842ff37fa',1,'IRTcl112Ac::checksum()'],['../classIRToshibaAC.html#a5aa2c6fc3b07830f872f98906df7e9ec',1,'IRToshibaAC::checksum()'],['../classIRTrotecESP.html#a5e416e083653ab365f65b3f645f60e8c',1,'IRTrotecESP::checksum()'],['../classIRVestelAc.html#a7a9046e7b5ff57864862bf5f7ad23c4d',1,'IRVestelAc::checksum()'],['../classIRWhirlpoolAc.html#a7790be3df6c4609e5c08c17c5ee52047',1,'IRWhirlpoolAc::checksum()']]], + ['checkzjssig_93',['checkZjsSig',['../classIRMitsubishiHeavy88Ac.html#a6aaf8ae4c9b52d73229b20414099f309',1,'IRMitsubishiHeavy88Ac']]], + ['checkzmssig_94',['checkZmsSig',['../classIRMitsubishiHeavy152Ac.html#a3d1c9d2c98945d21eb1ce82fac1771d2',1,'IRMitsubishiHeavy152Ac']]], + ['clean_95',['clean',['../structstdAc_1_1state__t.html#a703fa57ade60d68deccbb2a59258b32a',1,'stdAc::state_t']]], + ['cleanflag_96',['cleanFlag',['../classIRCoolixAC.html#a9280bc7517713dae451a64e35674804d',1,'IRCoolixAC']]], + ['cleanstate_97',['cleanState',['../classIRac.html#aad988dc123495012758307213a933f37',1,'IRac']]], + ['clearontimerflag_98',['clearOnTimerFlag',['../classIRDaikin2.html#a3587ce954ba94e347d08d73974b50d72',1,'IRDaikin2::clearOnTimerFlag()'],['../classIRDaikin128.html#a8f0bd823535a5bf8b2642eed698b9a71',1,'IRDaikin128::clearOnTimerFlag()']]], + ['clearpowerspecial_99',['clearPowerSpecial',['../classIRSharpAc.html#a3c98c96a66dff560941e461a70efdb1a',1,'IRSharpAc']]], + ['clearsensortemp_100',['clearSensorTemp',['../classIRCoolixAC.html#a5deca09ced33931f089f5cd3c07eac4a',1,'IRCoolixAC']]], + ['clearsleeptimerflag_101',['clearSleepTimerFlag',['../classIRDaikin2.html#a0c165ff91a712e61910ef25e9728e066',1,'IRDaikin2::clearSleepTimerFlag()'],['../classIRDaikin128.html#a5517a481892dd55f4528103037a0d408',1,'IRDaikin128::clearSleepTimerFlag()']]], + ['clock_102',['clock',['../structstdAc_1_1state__t.html#ab1d76172930ebfe992fd9b700369e787',1,'stdAc::state_t']]], + ['cmd_103',['cmd',['../unionmagiquest.html#a71f7646ffd59f0478ae28fad2d724a44',1,'magiquest']]], + ['cmpstates_104',['cmpStates',['../classIRac.html#a3ba4eee08650dfcdd6d492a67c86f016',1,'IRac']]], + ['command_105',['command',['../classdecode__results.html#a9b750d09f713b0693472f815fd0fd402',1,'decode_results']]], + ['compare_106',['compare',['../classIRrecv.html#ad7347c72b14d9f2f20f65bcf235ab3dc',1,'IRrecv']]], + ['convertfan_107',['convertFan',['../classIRAmcorAc.html#ad0f8b7cdf5942c3680639d410f53d18c',1,'IRAmcorAc::convertFan()'],['../classIRArgoAC.html#acd147993fb998a0e7015173b9514d4a2',1,'IRArgoAC::convertFan()'],['../classIRCarrierAc64.html#a255e6679397434877f1c6c9ac70fff50',1,'IRCarrierAc64::convertFan()'],['../classIRCoolixAC.html#a7ffa1cfcf82bd905b0f607401200c895',1,'IRCoolixAC::convertFan()'],['../classIRCoronaAc.html#a6826036fcabbb45e7369f42912fae02f',1,'IRCoronaAc::convertFan()'],['../classIRDaikinESP.html#ab58be19636d41d60b9c62d658ca18cae',1,'IRDaikinESP::convertFan()'],['../classIRDaikin2.html#ad147ea14695c9498bb091862e172dc81',1,'IRDaikin2::convertFan()'],['../classIRDaikin216.html#a520cc65161290f15022b4108f7049a83',1,'IRDaikin216::convertFan()'],['../classIRDaikin160.html#a32658c0f24d0b0c398d54ef648d717a9',1,'IRDaikin160::convertFan()'],['../classIRDaikin176.html#ae3dda9a55f851b5253d0677835a2c3dd',1,'IRDaikin176::convertFan()'],['../classIRDaikin128.html#a983c13bc608fbfa32d7ea2c36dc84116',1,'IRDaikin128::convertFan()'],['../classIRDaikin152.html#a5e2e79252602ca3493baf00cf3fe7787',1,'IRDaikin152::convertFan()'],['../classIRDaikin64.html#a109ff0c33b0a7dfd763683538915c811',1,'IRDaikin64::convertFan()'],['../classIRDelonghiAc.html#aeff2970b20963ae59b99464ae683113f',1,'IRDelonghiAc::convertFan()'],['../classIRElectraAc.html#afcf3ef62d69e370cb88dd2036e5a1357',1,'IRElectraAc::convertFan()'],['../classIRFujitsuAC.html#a111060b7c93e77fdbd1dc96fc8a6c10f',1,'IRFujitsuAC::convertFan()'],['../classIRGoodweatherAc.html#abb443826453a65e87f6dedddf2dd74d5',1,'IRGoodweatherAc::convertFan()'],['../classIRGreeAC.html#a39aa0e4759330aef39382813d3aa96a4',1,'IRGreeAC::convertFan()'],['../classIRHaierAC.html#a58628dd19a7247fc5358c0dc8c30baba',1,'IRHaierAC::convertFan()'],['../classIRHaierACYRW02.html#a66e42d018f3d86b136624a347d333401',1,'IRHaierACYRW02::convertFan()'],['../classIRHitachiAc.html#a5c632c9efc42d9378fdefe608c9bb771',1,'IRHitachiAc::convertFan()'],['../classIRHitachiAc1.html#a96c22fddcd7dfcc5b8f205cc5c7efdef',1,'IRHitachiAc1::convertFan()'],['../classIRHitachiAc424.html#a4f502b779f9fe4aca3a2f649c4cfbda3',1,'IRHitachiAc424::convertFan()'],['../classIRLgAc.html#a71ce8d1be4222ecae26fcea3b71a1ba6',1,'IRLgAc::convertFan()'],['../classIRMideaAC.html#a08a8e49986ce808fd7edd8aee7399a64',1,'IRMideaAC::convertFan()'],['../classIRMitsubishiAC.html#a58ce95e1ae198a9855ee5e81335570cf',1,'IRMitsubishiAC::convertFan()'],['../classIRMitsubishi136.html#a81e691b386950859d1ad0a3c7faf7e49',1,'IRMitsubishi136::convertFan()'],['../classIRMitsubishi112.html#a4194e5b076687b79153bc8cd50c9bc86',1,'IRMitsubishi112::convertFan()'],['../classIRMitsubishiHeavy152Ac.html#ae11040290301b5fe66dfe79e8ea9512b',1,'IRMitsubishiHeavy152Ac::convertFan()'],['../classIRMitsubishiHeavy88Ac.html#acd69c45dbc3f5a150e17b82b5eae7b3f',1,'IRMitsubishiHeavy88Ac::convertFan()'],['../classIRNeoclimaAc.html#a8c3ac622428f118b28d53a3a82740993',1,'IRNeoclimaAc::convertFan()'],['../classIRPanasonicAc.html#aeada51b2d1ff51ff81dfc5c996b416df',1,'IRPanasonicAc::convertFan()'],['../classIRSamsungAc.html#a6be52cc6980ad0bf80261c2a48eb3c87',1,'IRSamsungAc::convertFan()'],['../classIRSharpAc.html#a9b58f12bc44639694a8422a2b9b78a88',1,'IRSharpAc::convertFan()'],['../classIRTcl112Ac.html#a3f8178f8f646ed9892eefa40bbff4fb1',1,'IRTcl112Ac::convertFan()'],['../classIRTecoAc.html#a262aead12607ff962dd97c73e6dea078',1,'IRTecoAc::convertFan()'],['../classIRToshibaAC.html#aeef5cfb840f3058629b486232b7efb22',1,'IRToshibaAC::convertFan()'],['../classIRTrotecESP.html#a905d4d5bd298db8c2e1a9b004fd541e8',1,'IRTrotecESP::convertFan()'],['../classIRVestelAc.html#aa7702b0e50b6c8073cd7740a630b19dd',1,'IRVestelAc::convertFan()'],['../classIRWhirlpoolAc.html#a3004feef0ec5fe327d6a43d68d029377',1,'IRWhirlpoolAc::convertFan()']]], + ['convertmode_108',['convertMode',['../classIRAmcorAc.html#ab57117e1072b5265ac9ab5be6d58bccc',1,'IRAmcorAc::convertMode()'],['../classIRArgoAC.html#ad242e7b18dea9768b9fad6b1e0e12f65',1,'IRArgoAC::convertMode()'],['../classIRCarrierAc64.html#a8e94b1526b26cec55f1e700c86aaf74e',1,'IRCarrierAc64::convertMode()'],['../classIRCoolixAC.html#acfb0d2c20322cb4d3cd681a3a54b30fe',1,'IRCoolixAC::convertMode()'],['../classIRCoronaAc.html#a9f9cf8e38285cb2f3caf79e14516bda1',1,'IRCoronaAc::convertMode()'],['../classIRDaikinESP.html#aa96f52596148cab1f806faf190a0aa0a',1,'IRDaikinESP::convertMode()'],['../classIRDaikin2.html#a10aae6ec9783eac9d89ff98b947767dd',1,'IRDaikin2::convertMode()'],['../classIRDaikin216.html#a4fa9eca71ee6ad66b3fffd8b779f5fb0',1,'IRDaikin216::convertMode()'],['../classIRDaikin160.html#ac69861fdbde341fc75d90a5e4918aa56',1,'IRDaikin160::convertMode()'],['../classIRDaikin176.html#ab07fd6eab0ac6132625a291dae8cfc78',1,'IRDaikin176::convertMode()'],['../classIRDaikin128.html#a0bad4830267887299b2773075a16b283',1,'IRDaikin128::convertMode()'],['../classIRDaikin152.html#a25592419c95c0271d8a0c4203a2919c3',1,'IRDaikin152::convertMode()'],['../classIRDaikin64.html#a595d91c0294c9482aa453f077eebf882',1,'IRDaikin64::convertMode()'],['../classIRDelonghiAc.html#a51a6eab431f81fa448a48c0ec071e706',1,'IRDelonghiAc::convertMode()'],['../classIRElectraAc.html#a0026a1981e713ce1f6916203717e0a00',1,'IRElectraAc::convertMode()'],['../classIRFujitsuAC.html#a242504a5b97c19ff7e369efcadd3916e',1,'IRFujitsuAC::convertMode()'],['../classIRGoodweatherAc.html#aef14e2b6c220e556300d286922da1f54',1,'IRGoodweatherAc::convertMode()'],['../classIRGreeAC.html#a609e87ad4926f150b44426caf79fd38e',1,'IRGreeAC::convertMode()'],['../classIRHaierAC.html#af6188dbed5cae022b4fd1eef358f594c',1,'IRHaierAC::convertMode()'],['../classIRHaierACYRW02.html#a9a51f3d4b4c60ed7d99f9836a57bb3e5',1,'IRHaierACYRW02::convertMode()'],['../classIRHitachiAc.html#af1bdc5e22e5e24218421bd3bbb436301',1,'IRHitachiAc::convertMode()'],['../classIRHitachiAc1.html#a6211c96f463353791e5d922d9939f23c',1,'IRHitachiAc1::convertMode()'],['../classIRHitachiAc424.html#a974bf3ada7117e463b8c23e2158902be',1,'IRHitachiAc424::convertMode()'],['../classIRKelvinatorAC.html#acc9d70a94dd3813005ca0381b80a35e4',1,'IRKelvinatorAC::convertMode()'],['../classIRLgAc.html#a114eca216b7c9c7be33d4527f848311e',1,'IRLgAc::convertMode()'],['../classIRMideaAC.html#a0ca16c8bc2232be467baba8ea69b40d4',1,'IRMideaAC::convertMode()'],['../classIRMitsubishiAC.html#a86d069e406d247bafbefbdd09b22894f',1,'IRMitsubishiAC::convertMode()'],['../classIRMitsubishi136.html#a43b8ff1083d09563a5d3a25b24e480ea',1,'IRMitsubishi136::convertMode()'],['../classIRMitsubishi112.html#aa41d6ec8bc6dc91891aaddbd996f6040',1,'IRMitsubishi112::convertMode()'],['../classIRMitsubishiHeavy152Ac.html#a067ca776edc19a577e8bcda5013e1d0f',1,'IRMitsubishiHeavy152Ac::convertMode()'],['../classIRMitsubishiHeavy88Ac.html#ad0419d176d70935fc535cdcc47ffba02',1,'IRMitsubishiHeavy88Ac::convertMode()'],['../classIRNeoclimaAc.html#a61335773816ecbbeb949e5da78d07e50',1,'IRNeoclimaAc::convertMode()'],['../classIRPanasonicAc.html#a3f3bc3e4b73338351f33f26c635075bb',1,'IRPanasonicAc::convertMode()'],['../classIRSamsungAc.html#a76f7fed436bdfcd9c9a9da8dd99cb9f7',1,'IRSamsungAc::convertMode()'],['../classIRSharpAc.html#a340d60b4b24c10479b3fed4409e0834b',1,'IRSharpAc::convertMode()'],['../classIRTcl112Ac.html#ac063653636319a9451590b08abbfecdc',1,'IRTcl112Ac::convertMode()'],['../classIRTecoAc.html#a5f95c5aacd8fc312acd0f36fd9dc33f2',1,'IRTecoAc::convertMode()'],['../classIRToshibaAC.html#a1cdcb695e128d57c721623cfdc9a8e8d',1,'IRToshibaAC::convertMode()'],['../classIRTrotecESP.html#a114a7022f0382275a55a2775d3d8e894',1,'IRTrotecESP::convertMode()'],['../classIRVestelAc.html#a5bb967d4972374254dad2c0a6fac7ed2',1,'IRVestelAc::convertMode()'],['../classIRWhirlpoolAc.html#afbf2f473c98f480d68c8bb28e1202d56',1,'IRWhirlpoolAc::convertMode()']]], + ['convertswingh_109',['convertSwingH',['../classIRDaikin2.html#a79a989ad0221157c4dd8d992cc2863dc',1,'IRDaikin2::convertSwingH()'],['../classIRDaikin176.html#a2387b8dff2a9c9cd164034977b03f192',1,'IRDaikin176::convertSwingH()'],['../classIRHitachiAc344.html#a34d0fa5b522b51dac46f33cbb0a0a389',1,'IRHitachiAc344::convertSwingH()'],['../classIRMitsubishiAC.html#a8235a527a178486bb58ce62749aaf2fb',1,'IRMitsubishiAC::convertSwingH()'],['../classIRMitsubishi112.html#ab17598ce693475ef167525b8408e2da4',1,'IRMitsubishi112::convertSwingH()'],['../classIRMitsubishiHeavy152Ac.html#a0183cf4fcefb60ac61060dde698efbd1',1,'IRMitsubishiHeavy152Ac::convertSwingH()'],['../classIRMitsubishiHeavy88Ac.html#a8b995256a6651822731da7a912c01f19',1,'IRMitsubishiHeavy88Ac::convertSwingH()'],['../classIRPanasonicAc.html#abb17db3452ae347101dc6eaa8e84433b',1,'IRPanasonicAc::convertSwingH()']]], + ['convertswingv_110',['convertSwingV',['../classIRArgoAC.html#ac23ff32b45c3fc5402e7e303ad9b5d54',1,'IRArgoAC::convertSwingV()'],['../classIRDaikin2.html#aa3de8468b869989ec52a5f9f57ff4a77',1,'IRDaikin2::convertSwingV()'],['../classIRDaikin160.html#a615f599f3bc3e8dec5e5ef92512a2301',1,'IRDaikin160::convertSwingV()'],['../classIRGoodweatherAc.html#a3b37c04fd9b60b63052d93374fc15d4f',1,'IRGoodweatherAc::convertSwingV()'],['../classIRGreeAC.html#ae3717400d1dc0336bcc5fa17c1397a9b',1,'IRGreeAC::convertSwingV()'],['../classIRHaierAC.html#a34053c32ba50ff3b81b208d068efe2a4',1,'IRHaierAC::convertSwingV()'],['../classIRHaierACYRW02.html#a1f7dffe29fbe67989b2f425d629850db',1,'IRHaierACYRW02::convertSwingV()'],['../classIRMitsubishiAC.html#ab561f6421b2f3e0d92d9fab685da639a',1,'IRMitsubishiAC::convertSwingV()'],['../classIRMitsubishi136.html#a59dee0c57d3ca2bdf4c7839142d23059',1,'IRMitsubishi136::convertSwingV()'],['../classIRMitsubishi112.html#a95c545497e0acc6f78ec229a2ada9de0',1,'IRMitsubishi112::convertSwingV()'],['../classIRMitsubishiHeavy152Ac.html#a93f2678fce3b35cfe3e31221d3355291',1,'IRMitsubishiHeavy152Ac::convertSwingV()'],['../classIRMitsubishiHeavy88Ac.html#abeba5346e1fc2223838fbc5d3ed03f23',1,'IRMitsubishiHeavy88Ac::convertSwingV()'],['../classIRPanasonicAc.html#a024e64fe32848e9b0b72e9c04db0fd98',1,'IRPanasonicAc::convertSwingV()']]], + ['cool_5fmode_111',['cool_mode',['../classIRArgoAC.html#a74e7e489d743f213664d9259f1e7a431',1,'IRArgoAC']]], + ['coolix_112',['coolix',['../classIRac.html#a4750db3b06db51f5a23c22538c41b7b3',1,'IRac::coolix()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae561d1d82d90c1b54a1a502431749873',1,'COOLIX(): IRremoteESP8266.h']]], + ['copyirparams_113',['copyIrParams',['../classIRrecv.html#ab017a0f9256954bb7d943e3c6b7e31bf',1,'IRrecv']]], + ['corona_114',['corona',['../classIRac.html#adcf2bdb1ef6dc057532ae7d188557dac',1,'IRac']]], + ['corona_5fac_115',['CORONA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf61f2c360f487309cfa466a44fcae106',1,'IRremoteESP8266.h']]], + ['countbits_116',['countBits',['../IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8cpp.html#aae8042367bb94df81672603270fa7342',1,'countBits(const uint64_t data, const uint8_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp'],['../IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365',1,'countBits(const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp']]], + ['crudenoisefilter_117',['crudeNoiseFilter',['../classIRrecv.html#ae833bdb8fccc676043fc4ccae432fab1',1,'IRrecv']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.html new file mode 100644 index 000000000..06de1550e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.js new file mode 100644 index 000000000..450e9d625 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_4.js @@ -0,0 +1,111 @@ +var searchData= +[ + ['daikin_118',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac::daikin()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8dc0597fd237d7098246334f3b5f37e',1,'DAIKIN(): IRremoteESP8266.h']]], + ['daikin128_119',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac::daikin128()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4b26fb376f6375dd6d1d4be186438f88',1,'DAIKIN128(): IRremoteESP8266.h']]], + ['daikin152_120',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac::daikin152()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad3f5f7ca39aee5fdab671a1b0d647ae4',1,'DAIKIN152(): IRremoteESP8266.h']]], + ['daikin160_121',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac::daikin160()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4db6a848df3aed4289801e1b2bbbf6aa',1,'DAIKIN160(): IRremoteESP8266.h']]], + ['daikin176_122',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac::daikin176()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada57f78a3b04d904f19d10bac13483deab',1,'DAIKIN176(): IRremoteESP8266.h']]], + ['daikin2_123',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac::daikin2()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab37b344f84d575ec78a92ca55e153586',1,'DAIKIN2(): IRremoteESP8266.h']]], + ['daikin216_124',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac::daikin216()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa833fa3a20c3cbb7e6206dac4da30ffb',1,'DAIKIN216(): IRremoteESP8266.h']]], + ['daikin64_125',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac::daikin64()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada70581853ce4883b747d22fdfd74409c4',1,'DAIKIN64(): IRremoteESP8266.h']]], + ['data_126',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], + ['de_2dch_2eh_127',['de-CH.h',['../de-CH_8h.html',1,'']]], + ['de_2dde_2eh_128',['de-DE.h',['../de-DE_8h.html',1,'']]], + ['decode_129',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], + ['decode_5fresults_130',['decode_results',['../classdecode__results.html',1,'']]], + ['decode_5ftype_131',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], + ['decode_5ftype_5ft_132',['decode_type_t',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad',1,'IRremoteESP8266.h']]], + ['decodeairwell_133',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], + ['decodeaiwarct501_134',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], + ['decodeamcor_135',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], + ['decodeargo_136',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], + ['decodecarrierac_137',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], + ['decodecarrierac40_138',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], + ['decodecarrierac64_139',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], + ['decodecoolix_140',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], + ['decodecoronaac_141',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], + ['decodedaikin_142',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], + ['decodedaikin128_143',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], + ['decodedaikin152_144',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], + ['decodedaikin160_145',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], + ['decodedaikin176_146',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], + ['decodedaikin2_147',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], + ['decodedaikin216_148',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], + ['decodedaikin64_149',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], + ['decodedelonghiac_150',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], + ['decodedenon_151',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], + ['decodedish_152',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], + ['decodedoshisha_153',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], + ['decodeelectraac_154',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], + ['decodeepson_155',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], + ['decodefujitsuac_156',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], + ['decodegicable_157',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], + ['decodegoodweather_158',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], + ['decodegree_159',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], + ['decodehaierac_160',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], + ['decodehaieracyrw02_161',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], + ['decodehash_162',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], + ['decodehitachiac_163',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], + ['decodehitachiac1_164',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], + ['decodehitachiac3_165',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], + ['decodehitachiac424_166',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], + ['decodeinax_167',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], + ['decodejvc_168',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], + ['decodekelvinator_169',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], + ['decodelasertag_170',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], + ['decodelegopf_171',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], + ['decodelg_172',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], + ['decodelutron_173',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], + ['decodemagiquest_174',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], + ['decodemidea_175',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], + ['decodemidea24_176',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], + ['decodemitsubishi_177',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], + ['decodemitsubishi112_178',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], + ['decodemitsubishi136_179',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], + ['decodemitsubishi2_180',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], + ['decodemitsubishiac_181',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], + ['decodemitsubishiheavy_182',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], + ['decodemultibrackets_183',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], + ['decodemwm_184',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], + ['decodenec_185',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], + ['decodeneoclima_186',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], + ['decodenikai_187',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], + ['decodepanasonic_188',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], + ['decodepanasonicac_189',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], + ['decodepioneer_190',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], + ['decoderc5_191',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], + ['decoderc6_192',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], + ['decodercmm_193',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], + ['decodesamsung_194',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], + ['decodesamsung36_195',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], + ['decodesamsungac_196',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], + ['decodesanyolc7461_197',['decodeSanyoLC7461',['../classIRrecv.html#a201a5a78f43c2ac216fae4a2ba4d14ec',1,'IRrecv']]], + ['decodesharp_198',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], + ['decodesharpac_199',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], + ['decodesony_200',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], + ['decodesymphony_201',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], + ['decodeteco_202',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], + ['decodetoshibaac_203',['decodeToshibaAC',['../classIRrecv.html#a01228e51ede905beac689967bb14b538',1,'IRrecv']]], + ['decodetostate_204',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], + ['decodetrotec_205',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], + ['decodevestelac_206',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], + ['decodewhirlpoolac_207',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], + ['decodewhynter_208',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], + ['decodezepeal_209',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], + ['defaultbits_210',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], + ['defaults_2eh_211',['defaults.h',['../defaults_8h.html',1,'']]], + ['degrees_212',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]], + ['delonghi_5fac_213',['DELONGHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada149190c9dec98e9c3f4a2bd530b154a3',1,'IRremoteESP8266.h']]], + ['delonghiac_214',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], + ['denon_215',['DENON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2bda37b76abb290d1675c3e027e3c2e1',1,'IRremoteESP8266.h']]], + ['deprecated_20list_216',['Deprecated List',['../deprecated.html',1,'']]], + ['dg11j13a_217',['DG11J13A',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9',1,'IRsend.h']]], + ['dg11j191_218',['DG11J191',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c',1,'IRsend.h']]], + ['disableirin_219',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], + ['disableofftimer_220',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a6c8ad4c34713d61942c80b6052e6283a',1,'IRDaikin2::disableOffTimer()']]], + ['disableontimer_221',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#ab0e77969a86af9637cb9aa4b4befd4aa',1,'IRDaikin2::disableOnTimer()']]], + ['disablesleeptimer_222',['disableSleepTimer',['../classIRDaikin2.html#a5461cf51967d3fe67489384c82daac47',1,'IRDaikin2']]], + ['dish_223',['DISH',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac27c6ac38ba872593af8e46ac2fdc85a',1,'IRremoteESP8266.h']]], + ['doshisha_224',['DOSHISHA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab4566b260773b60c85450f40fa5b4341',1,'IRremoteESP8266.h']]], + ['doxygen_5findex_2emd_225',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.html new file mode 100644 index 000000000..2544c4e5b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.js new file mode 100644 index 000000000..c57085813 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_5.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['econo_226',['econo',['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t']]], + ['elapsed_227',['elapsed',['../classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1',1,'IRtimer::elapsed()'],['../classTimerMs.html#ad4aa759c58727393f69863b3461dfc09',1,'TimerMs::elapsed()']]], + ['electra_228',['electra',['../classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de',1,'IRac']]], + ['electra_5fac_229',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]], + ['en_2dau_2eh_230',['en-AU.h',['../en-AU_8h.html',1,'']]], + ['en_2die_2eh_231',['en-IE.h',['../en-IE_8h.html',1,'']]], + ['en_2duk_2eh_232',['en-UK.h',['../en-UK_8h.html',1,'']]], + ['en_2dus_2eh_233',['en-US.h',['../en-US_8h.html',1,'']]], + ['enableirin_234',['enableIRIn',['../classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d',1,'IRrecv']]], + ['enableirout_235',['enableIROut',['../classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d',1,'IRsend']]], + ['enableofftimer_236',['enableOffTimer',['../classIRDaikinESP.html#a8a5686066bfc86f1d7cc454e793d3357',1,'IRDaikinESP::enableOffTimer()'],['../classIRDaikin2.html#afc7ba7d7de2976e010a72778091d633a',1,'IRDaikin2::enableOffTimer()'],['../classIRWhirlpoolAc.html#abb1c3685d90d81b44e72050cd0e042f6',1,'IRWhirlpoolAc::enableOffTimer()']]], + ['enableontimer_237',['enableOnTimer',['../classIRDaikinESP.html#aac4d0f5f60c9f4c41d3bb1e0f24bc4bc',1,'IRDaikinESP::enableOnTimer()'],['../classIRDaikin2.html#a91ec5f7c67cb87102a5eb030e0763b50',1,'IRDaikin2::enableOnTimer()'],['../classIRWhirlpoolAc.html#aa3edd58882cf4fc65172e490c9e0bb2e',1,'IRWhirlpoolAc::enableOnTimer()']]], + ['enablesleeptimer_238',['enableSleepTimer',['../classIRDaikin2.html#a9c86782a98a54818ae92419eec5a060b',1,'IRDaikin2']]], + ['enabletimer_239',['enableTimer',['../classIRWhirlpoolAc.html#ad07804318721bc5dd60f7322e02c9696',1,'IRWhirlpoolAc']]], + ['encodedoshisha_240',['encodeDoshisha',['../classIRsend.html#a0522a2256e8358df715065530be6317d',1,'IRsend']]], + ['encodejvc_241',['encodeJVC',['../classIRsend.html#a6303b991c0545443e7ccf63ba89dbf18',1,'IRsend']]], + ['encodelg_242',['encodeLG',['../classIRsend.html#a109b67a68e7a33900cb5c5017ed4578b',1,'IRsend']]], + ['encodemagiquest_243',['encodeMagiQuest',['../classIRsend.html#a4ee40126279dbde8bb02888115577563',1,'IRsend']]], + ['encodenec_244',['encodeNEC',['../classIRsend.html#ab2e1ce918e4e06b955c3d2a089ce189c',1,'IRsend']]], + ['encodepanasonic_245',['encodePanasonic',['../classIRsend.html#a8340497ae75f00c844e53dfc73700d9c',1,'IRsend']]], + ['encodepioneer_246',['encodePioneer',['../classIRsend.html#ae0686829eba31587b71034a1c0495971',1,'IRsend']]], + ['encoderc5_247',['encodeRC5',['../classIRsend.html#a88457fd4cc01d6e8097e04c022ede74a',1,'IRsend']]], + ['encoderc5x_248',['encodeRC5X',['../classIRsend.html#ae760ef1be11f25f7a61237f96a8871d9',1,'IRsend']]], + ['encoderc6_249',['encodeRC6',['../classIRsend.html#ac0e341462426ea146b944502a6d3fde0',1,'IRsend']]], + ['encodesamsung_250',['encodeSAMSUNG',['../classIRsend.html#a4ab0579bd854306b2667de19207e4ffb',1,'IRsend']]], + ['encodesanyolc7461_251',['encodeSanyoLC7461',['../classIRsend.html#a864bef0dc48f6af4b59057362906cf5d',1,'IRsend']]], + ['encodesharp_252',['encodeSharp',['../classIRsend.html#a8f4c7a36380ba31155eba5ff8f5f631e',1,'IRsend']]], + ['encodesony_253',['encodeSony',['../classIRsend.html#aa0aea2cb04f0a7ee9056f15fecfc08c3',1,'IRsend']]], + ['encodetime_254',['encodeTime',['../classIRPanasonicAc.html#a0eee4ad6105d35ee6c34c4666174b04b',1,'IRPanasonicAc']]], + ['epson_255',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]], + ['es_2des_2eh_256',['es-ES.h',['../es-ES_8h.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.html new file mode 100644 index 000000000..43f14eab3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.js new file mode 100644 index 000000000..3952b75de --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_6.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['fahrenheittocelsius_257',['fahrenheitToCelsius',['../IRutils_8cpp.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp'],['../IRutils_8h.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp']]], + ['fanspeed_258',['fanspeed',['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t']]], + ['fanspeed_5ft_259',['fanspeed_t',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383',1,'stdAc']]], + ['fanspeedtostring_260',['fanspeedToString',['../classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6',1,'IRac']]], + ['filter_261',['filter',['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t']]], + ['fixchecksum_262',['fixChecksum',['../classIRPanasonicAc.html#aa40bef35000ddf6d14e286b3f2044897',1,'IRPanasonicAc']]], + ['fixup_263',['fixup',['../classIRGreeAC.html#a5bbdcc83f9d49e32379cd27cad0ba130',1,'IRGreeAC::fixup()'],['../classIRKelvinatorAC.html#a389af589003c39794ae5d4bd572fa485',1,'IRKelvinatorAC::fixup()']]], + ['flap_5fmode_264',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]], + ['fr_2dfr_2eh_265',['fr-FR.h',['../fr-FR_8h.html',1,'']]], + ['fujitsu_266',['fujitsu',['../classIRac.html#a23cf80270562ca28ae1f1da2bbb559e7',1,'IRac']]], + ['fujitsu_5fac_267',['FUJITSU_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8cf99a3a8776d644b78313306a2108c',1,'IRremoteESP8266.h']]], + ['fujitsu_5fac_5fremote_5fmodel_5ft_268',['fujitsu_ac_remote_model_t',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.html new file mode 100644 index 000000000..af52f82a4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.js new file mode 100644 index 000000000..7437f2c8e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_7.js @@ -0,0 +1,118 @@ +var searchData= +[ + ['ge6711ar2853m_269',['GE6711AR2853M',['../IRsend_8h.html#a50c54713e16502d280723334879dc83bada534bddbb58907faa6c7eae385ec790',1,'IRsend.h']]], + ['get3d_270',['get3D',['../classIRMitsubishiHeavy152Ac.html#ab55c9e587d472baf6a6d9cb61c733b08',1,'IRMitsubishiHeavy152Ac::get3D()'],['../classIRMitsubishiHeavy88Ac.html#ad5171595fef2360f50d7991897c40632',1,'IRMitsubishiHeavy88Ac::get3D()']]], + ['get8cheat_271',['get8CHeat',['../classIRNeoclimaAc.html#aee5b855ce2decb455eaaceb6b4913368',1,'IRNeoclimaAc']]], + ['getbeep_272',['getBeep',['../classIRDaikin2.html#ab6cc9737950ac0ab476bb240897902ec',1,'IRDaikin2::getBeep()'],['../classIRSamsungAc.html#ab13b10f80e8e1169f0b01239f357b3ba',1,'IRSamsungAc::getBeep()']]], + ['getbit_273',['getBit',['../namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6',1,'irutils::getBit(const uint64_t data, const uint8_t position, const uint8_t size)'],['../namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee',1,'irutils::getBit(const uint8_t data, const uint8_t position)']]], + ['getboost_274',['getBoost',['../classIRDelonghiAc.html#abf9fd996c60573eca50b5e165cbcbf63',1,'IRDelonghiAc']]], + ['getbreeze_275',['getBreeze',['../classIRSamsungAc.html#ad46fed65fb1375bf3a3940aa2cb311d5',1,'IRSamsungAc']]], + ['getbufsize_276',['getBufSize',['../classIRrecv.html#a69ab02ea6823ccf18d1f6be87ca1b92e',1,'IRrecv']]], + ['getbutton_277',['getButton',['../classIRHaierACYRW02.html#af4df303e5662aa63cba715ff49e09b75',1,'IRHaierACYRW02::getButton()'],['../classIRHitachiAc424.html#a32fa646e61cbaca805f33995344732cc',1,'IRHitachiAc424::getButton()'],['../classIRNeoclimaAc.html#a747fec9ea02220e6cf7465f5f9bb800a',1,'IRNeoclimaAc::getButton()']]], + ['getclean_278',['getClean',['../classIRCoolixAC.html#a272f94ef641041835a650dd4fbdda7bf',1,'IRCoolixAC::getClean()'],['../classIRDaikin2.html#a7930bbca261f07ef1c129cd6a2c848b4',1,'IRDaikin2::getClean()'],['../classIRElectraAc.html#aa06b1246aaa3f25b239b50e395258b7a',1,'IRElectraAc::getClean()'],['../classIRFujitsuAC.html#a4bf872038fc175d1496eae25e9fcdce3',1,'IRFujitsuAC::getClean()'],['../classIRMitsubishiHeavy152Ac.html#a8e7c2759efe24e580d5886600f513648',1,'IRMitsubishiHeavy152Ac::getClean()'],['../classIRMitsubishiHeavy88Ac.html#a54eafb2474559371393c3ec3ba560d3a',1,'IRMitsubishiHeavy88Ac::getClean()'],['../classIRSamsungAc.html#a789edd6c6b0cb291753204d1e9c78fc8',1,'IRSamsungAc::getClean()'],['../classIRSharpAc.html#a599032d1101f15b98ffa9aa3039bc7d6',1,'IRSharpAc::getClean()']]], + ['getclock_279',['getClock',['../classIRDaikin128.html#a6ef4d58f53b35619e8cc44fae6125490',1,'IRDaikin128::getClock()'],['../classIRDaikin64.html#a676ecda2ad53f78ef5cbf470f524918e',1,'IRDaikin64::getClock()'],['../classIRMitsubishiAC.html#a8918c5b8a72d58282b160c8fde9866ad',1,'IRMitsubishiAC::getClock()'],['../classIRPanasonicAc.html#a084479e8f23f7dbb8f155209b36efb3b',1,'IRPanasonicAc::getClock()'],['../classIRWhirlpoolAc.html#a329e06f4c44fa9aef42952f2d123b7a8',1,'IRWhirlpoolAc::getClock()']]], + ['getcmd_280',['getCmd',['../classIRFujitsuAC.html#a758d209fd0e07cb200b2d4a232b6b0a2',1,'IRFujitsuAC']]], + ['getcomfort_281',['getComfort',['../classIRDaikinESP.html#a4377e48a16a6ed1cb4fb2b711e672b16',1,'IRDaikinESP::getComfort()'],['../classIRDaikin152.html#a22cc2073fd7d4a609c335172ff6720cf',1,'IRDaikin152::getComfort()']]], + ['getcommand_282',['getCommand',['../classIRGoodweatherAc.html#aa2a24e8c783cb5b463a95fa05779456e',1,'IRGoodweatherAc::getCommand()'],['../classIRHaierAC.html#a3a291fccea5f4b32f83da2605d2a82e0',1,'IRHaierAC::getCommand()'],['../classIRWhirlpoolAc.html#ab1c34a9498bc2c8da8e4bdcfe4bf011a',1,'IRWhirlpoolAc::getCommand()']]], + ['getcorrectedrawlength_283',['getCorrectedRawLength',['../IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp']]], + ['getcurrentday_284',['getCurrentDay',['../classIRDaikinESP.html#ad0ecc69b2ab3e7678c8e4e8d64949077',1,'IRDaikinESP']]], + ['getcurrenttime_285',['getCurrentTime',['../classIRDaikinESP.html#a724c204890e6810d150ed54794c9a505',1,'IRDaikinESP::getCurrentTime()'],['../classIRDaikin2.html#a94dc89b80dfdee2afa718314ec522b53',1,'IRDaikin2::getCurrentTime()']]], + ['getcurrtime_286',['getCurrTime',['../classIRHaierAC.html#aa0e05983088035f6d85c520843922c25',1,'IRHaierAC']]], + ['getdisplay_287',['getDisplay',['../classIRSamsungAc.html#a890aa3cab0918fda56daf0bf84ecc5c1',1,'IRSamsungAc']]], + ['getdisplaytempsource_288',['getDisplayTempSource',['../classIRGreeAC.html#adea5a2d2b3a9d699c722e7a93784809e',1,'IRGreeAC']]], + ['getecono_289',['getEcono',['../classIRCoronaAc.html#a0b8413e2a7aeecc5c0c55049c1705c38',1,'IRCoronaAc::getEcono()'],['../classIRDaikinESP.html#a84337719e737ea4dc1e1fb10f6f7df92',1,'IRDaikinESP::getEcono()'],['../classIRDaikin2.html#ad8098fa67e8808eebfad7611b6fc7881',1,'IRDaikin2::getEcono()'],['../classIRDaikin128.html#a0c05f4c6f996d56d56075e20a46f2c2c',1,'IRDaikin128::getEcono()'],['../classIRDaikin152.html#a9946c73f0c5906fbb2f39119e00531e5',1,'IRDaikin152::getEcono()'],['../classIRMitsubishiHeavy152Ac.html#aa7814232c84ff918f1d05ec105abf851',1,'IRMitsubishiHeavy152Ac::getEcono()'],['../classIRMitsubishiHeavy88Ac.html#af3accae413215cdd45a180f22bbe443e',1,'IRMitsubishiHeavy88Ac::getEcono()'],['../classIRTcl112Ac.html#afabe458a354d822f3ff929a461b6e046',1,'IRTcl112Ac::getEcono()']]], + ['geteconotoggle_290',['getEconoToggle',['../classIRSharpAc.html#a701542019d3a823ba203f0db3cfce353',1,'IRSharpAc']]], + ['geteye_291',['getEye',['../classIRDaikin2.html#a02fbd472d3c79b2391fc11da692c8998',1,'IRDaikin2::getEye()'],['../classIRNeoclimaAc.html#a15b91e2c854537d94cbabd7cd9bd30e4',1,'IRNeoclimaAc::getEye()']]], + ['geteyeauto_292',['getEyeAuto',['../classIRDaikin2.html#a0cae45648292bdee8092a30338975ed0',1,'IRDaikin2']]], + ['getfan_293',['getFan',['../classIRAmcorAc.html#a8ba84d83fc426ee5b75e0be27fd22d9c',1,'IRAmcorAc::getFan()'],['../classIRArgoAC.html#a413e60e09f1abcf231a173e1374e51e0',1,'IRArgoAC::getFan()'],['../classIRCarrierAc64.html#a93bb27688657af434d57f0dd9a159566',1,'IRCarrierAc64::getFan()'],['../classIRCoolixAC.html#a937c0084f79eaef2a160331993dfb881',1,'IRCoolixAC::getFan()'],['../classIRCoronaAc.html#aa51ccd3684009d5a56bbde73eab7ccfa',1,'IRCoronaAc::getFan()'],['../classIRDaikinESP.html#addad5838bb00885df8af258a61fa4131',1,'IRDaikinESP::getFan()'],['../classIRDaikin2.html#aafe89842b356c288dd38d256f9eb050c',1,'IRDaikin2::getFan()'],['../classIRDaikin216.html#a0905e04fc3d21249b057aa79721c1614',1,'IRDaikin216::getFan()'],['../classIRDaikin160.html#a2eb3987f87d19e1ab01dac111ae2d16b',1,'IRDaikin160::getFan()'],['../classIRDaikin176.html#a59c3d23a5e1b7c69c05690cf7984dab8',1,'IRDaikin176::getFan()'],['../classIRDaikin128.html#a68a7bdb134ea62913f51844f976beab1',1,'IRDaikin128::getFan()'],['../classIRDaikin152.html#a64eacdc63547026477b5f861e7da62ea',1,'IRDaikin152::getFan()'],['../classIRDaikin64.html#abdd4bc3d5464b5297b4f2fd0e7a831e1',1,'IRDaikin64::getFan()'],['../classIRDelonghiAc.html#afd2ed0ec70e3912335a9174bca7e7f5e',1,'IRDelonghiAc::getFan()'],['../classIRElectraAc.html#a6e8b30452671c26777ba2bc556bc8dce',1,'IRElectraAc::getFan()'],['../classIRGoodweatherAc.html#ac1ac922370ad09a80dd4e7158b279b9f',1,'IRGoodweatherAc::getFan()'],['../classIRGreeAC.html#a0bf5a552490c7500f0584affacac13d0',1,'IRGreeAC::getFan()'],['../classIRHaierAC.html#a5b15678e94acc14a0bb86bff61230e93',1,'IRHaierAC::getFan()'],['../classIRHaierACYRW02.html#a6de2fb6111049720913eb28bf6f64a00',1,'IRHaierACYRW02::getFan()'],['../classIRHitachiAc.html#a6a5f5b9544e93e842f76a2f4994c1665',1,'IRHitachiAc::getFan()'],['../classIRHitachiAc1.html#af1c6acc2ff9946af7091695b616c2cac',1,'IRHitachiAc1::getFan()'],['../classIRHitachiAc424.html#ab3ecfb8b6fb503ba3eed023609f2fe7b',1,'IRHitachiAc424::getFan()'],['../classIRKelvinatorAC.html#a64ce2ccf879217410269230218e0c76b',1,'IRKelvinatorAC::getFan()'],['../classIRLgAc.html#a10d666ca13c99696a53dca7f5773d7de',1,'IRLgAc::getFan()'],['../classIRMideaAC.html#ab793e409c666e001242623a2607786e7',1,'IRMideaAC::getFan()'],['../classIRMitsubishiAC.html#a06cb4179b92af1b1d3c167659c30db95',1,'IRMitsubishiAC::getFan()'],['../classIRMitsubishi136.html#a61b0a21a32eb1211cab201587de6f7ce',1,'IRMitsubishi136::getFan()'],['../classIRMitsubishi112.html#a00446fe1fdf27012acd41303b711e575',1,'IRMitsubishi112::getFan()'],['../classIRMitsubishiHeavy152Ac.html#a957abe79b7966da644db091ffe75d73b',1,'IRMitsubishiHeavy152Ac::getFan()'],['../classIRMitsubishiHeavy88Ac.html#ac00255061012eef8d62f44e478839d7e',1,'IRMitsubishiHeavy88Ac::getFan()'],['../classIRNeoclimaAc.html#a8690eda2de7b00029f70304131388890',1,'IRNeoclimaAc::getFan()'],['../classIRPanasonicAc.html#a302ba64400c820a5a0d822315516564a',1,'IRPanasonicAc::getFan()'],['../classIRSamsungAc.html#a6461c72b2598d1bdc14263552b5b0c98',1,'IRSamsungAc::getFan()'],['../classIRSharpAc.html#abae439959603f62b0fe5aea8ec93afb5',1,'IRSharpAc::getFan()'],['../classIRTcl112Ac.html#af59bcc28ac97869595a5ad928300908b',1,'IRTcl112Ac::getFan()'],['../classIRTecoAc.html#a420b209010276b30c9bc322b7393b3be',1,'IRTecoAc::getFan()'],['../classIRToshibaAC.html#afd2000b62b79afde107ebc8a513724ab',1,'IRToshibaAC::getFan()'],['../classIRVestelAc.html#a492abc867ad5b766715eaa301c71f3c8',1,'IRVestelAc::getFan()'],['../classIRWhirlpoolAc.html#a80fedb2ddec4a3dbb2c96b5a76a26e1a',1,'IRWhirlpoolAc::getFan()']]], + ['getfanspeed_294',['getFanSpeed',['../classIRFujitsuAC.html#aacb180bb884b80c1f8bbbed7e2dd23d5',1,'IRFujitsuAC']]], + ['getfilter_295',['getFilter',['../classIRFujitsuAC.html#a430ed6a4b946d1b4527741b42e12a25c',1,'IRFujitsuAC::getFilter()'],['../classIRMitsubishiHeavy152Ac.html#aaf2864f7187acd1b75d9daad2d504c13',1,'IRMitsubishiHeavy152Ac::getFilter()']]], + ['getflap_296',['getFlap',['../classIRArgoAC.html#a2285908626731c2feaa85635f3ce1ff1',1,'IRArgoAC']]], + ['getfollow_297',['getFollow',['../classIRNeoclimaAc.html#af4ed34fe7b151bcc5ff6922a54427da0',1,'IRNeoclimaAc']]], + ['getfresh_298',['getFresh',['../classIRNeoclimaAc.html#a2c411cf55667339ff8e3664a6d0ee843',1,'IRNeoclimaAc']]], + ['getfreshair_299',['getFreshAir',['../classIRDaikin2.html#aad50061042e14f665e5ecbd85ac48741',1,'IRDaikin2']]], + ['getfreshairhigh_300',['getFreshAirHigh',['../classIRDaikin2.html#a72c8d47c2e6664eb0e40efe6933e4ac1',1,'IRDaikin2']]], + ['gethealth_301',['getHealth',['../classIRHaierAC.html#a5c69955fe18f4ddb0286084f3fb39228',1,'IRHaierAC::getHealth()'],['../classIRHaierACYRW02.html#a97fc67cddf50a51b0db6c4e22fcaafa1',1,'IRHaierACYRW02::getHealth()'],['../classIRTcl112Ac.html#adf484b6a4097dd8834c202c81fea0ad4',1,'IRTcl112Ac::getHealth()']]], + ['gethold_302',['getHold',['../classIRNeoclimaAc.html#a63045d768858265ed1bbc4c337de79eb',1,'IRNeoclimaAc']]], + ['gethumid_303',['getHumid',['../classIRTecoAc.html#a30012508c6ba93ad07185a13795c5909',1,'IRTecoAc']]], + ['getifeel_304',['getiFeel',['../classIRArgoAC.html#abc802d8ab9dbd9f918bc2aa36d2ea414',1,'IRArgoAC::getiFeel()'],['../classIRGreeAC.html#ae1f8352fc32fa773bb33243cc32657a2',1,'IRGreeAC::getIFeel()']]], + ['getion_305',['getIon',['../classIRNeoclimaAc.html#a908a65189ba6eb8141d50da000feec0a',1,'IRNeoclimaAc::getIon()'],['../classIRPanasonicAc.html#a6d6909b7b96815c227f0009dcbd3ce8c',1,'IRPanasonicAc::getIon()'],['../classIRSamsungAc.html#aab1ebb523ca45431a0127b82cb4ce36f',1,'IRSamsungAc::getIon()'],['../classIRSharpAc.html#a1de89912129d0a1fffbd51625a1eeab7',1,'IRSharpAc::getIon()'],['../classIRVestelAc.html#a835f194f14479c25a3d651f324e6436c',1,'IRVestelAc::getIon()']]], + ['getionfilter_306',['getIonFilter',['../classIRKelvinatorAC.html#a81127edca40e504c432b2079030f84a5',1,'IRKelvinatorAC']]], + ['getled_307',['getLed',['../classIRCoolixAC.html#aa7712ebbf103c4d61dc645cb42dcf3f0',1,'IRCoolixAC']]], + ['getlight_308',['getLight',['../classIRDaikin2.html#ada92da390d8b4247a014057c3d6fa296',1,'IRDaikin2::getLight()'],['../classIRGoodweatherAc.html#a90454990d7f9cde54ab5a11170d5e97d',1,'IRGoodweatherAc::getLight()'],['../classIRGreeAC.html#ae63281a9caf850429857cc3fa99ccf05',1,'IRGreeAC::getLight()'],['../classIRKelvinatorAC.html#a85e77c7a1b763373b0732d125923f53f',1,'IRKelvinatorAC::getLight()'],['../classIRNeoclimaAc.html#ad87fc87e34c3de56c4bbe35443e92226',1,'IRNeoclimaAc::getLight()'],['../classIRTcl112Ac.html#ae711a585331ffab24f96b0bb0f3960ed',1,'IRTcl112Ac::getLight()'],['../classIRTecoAc.html#a12a2bb7a5d3c90139dba85d54a535b8f',1,'IRTecoAc::getLight()'],['../classIRWhirlpoolAc.html#a87f2274da6101e1c2e78eb4e68aadff0',1,'IRWhirlpoolAc::getLight()']]], + ['getlighttoggle_309',['getLightToggle',['../classIRDaikin128.html#a3e279e67bbafc0dc74dbd847e2e8ad75',1,'IRDaikin128::getLightToggle()'],['../classIRElectraAc.html#a63bc44235b18e11531479dc2f633f94b',1,'IRElectraAc::getLightToggle()']]], + ['getmax_310',['getMax',['../classIRAmcorAc.html#a61659b6b54d652713efdf408a09db087',1,'IRAmcorAc::getMax()'],['../classIRArgoAC.html#aff24da9d975bf1f6df0a83be2ad7a913',1,'IRArgoAC::getMax()']]], + ['getmode_311',['getMode',['../classIRAmcorAc.html#a30fd2a228e63e6b9a1544c3c1ec910f7',1,'IRAmcorAc::getMode()'],['../classIRArgoAC.html#a532a313f22c716b60cee070d9ba0839d',1,'IRArgoAC::getMode()'],['../classIRCarrierAc64.html#a4f8e0435a086ec934b10e9bd66f2ae85',1,'IRCarrierAc64::getMode()'],['../classIRCoolixAC.html#a16772a297404e2c54f951c49bfc608de',1,'IRCoolixAC::getMode()'],['../classIRCoronaAc.html#aa6ccd147a1da55d5e9596159008d40de',1,'IRCoronaAc::getMode()'],['../classIRDaikinESP.html#a164452703a7a6d46766acc85aab63898',1,'IRDaikinESP::getMode()'],['../classIRDaikin2.html#a681279a765159550ac1ec84895fff4d2',1,'IRDaikin2::getMode()'],['../classIRDaikin216.html#a21b3e93f98ac55e743efe38c20617d6a',1,'IRDaikin216::getMode()'],['../classIRDaikin160.html#a2b890fe446db67acd828fefd4afef84f',1,'IRDaikin160::getMode()'],['../classIRDaikin176.html#a1fc59660d77eb9dc3a8361d7d4698cd9',1,'IRDaikin176::getMode()'],['../classIRDaikin128.html#aa3d96e14663c498a6e0938ba04a02f87',1,'IRDaikin128::getMode()'],['../classIRDaikin152.html#af4c6c468f3075ffa83694a0da15a707b',1,'IRDaikin152::getMode()'],['../classIRDaikin64.html#a96624667a4494087074792562090b552',1,'IRDaikin64::getMode()'],['../classIRDelonghiAc.html#a89d9fa5b2c4a59b46cac111418232090',1,'IRDelonghiAc::getMode()'],['../classIRElectraAc.html#a473a794960bc07837e407830a3ea528b',1,'IRElectraAc::getMode()'],['../classIRFujitsuAC.html#a5f9630d81acffc74434ce852b9523d17',1,'IRFujitsuAC::getMode()'],['../classIRGoodweatherAc.html#a622e11c7b236fa127008f990819eca75',1,'IRGoodweatherAc::getMode()'],['../classIRGreeAC.html#abb5c4a29000c8b22b25e150e7ef5a6c3',1,'IRGreeAC::getMode()'],['../classIRHaierAC.html#aa180c60030d9972807238cceba886ff5',1,'IRHaierAC::getMode()'],['../classIRHaierACYRW02.html#aec7359fb8c796fc45577a40370f874c9',1,'IRHaierACYRW02::getMode()'],['../classIRHitachiAc.html#a414a4083e15deb1890a1eab4827d78ac',1,'IRHitachiAc::getMode()'],['../classIRHitachiAc1.html#afc4fdc94989297b73e08e9c82bd00733',1,'IRHitachiAc1::getMode()'],['../classIRHitachiAc424.html#ac1bf6df8277d50dcad8e389b21971e24',1,'IRHitachiAc424::getMode()'],['../classIRHitachiAc3.html#a511c9b731a0367fd05b32b42a69adec2',1,'IRHitachiAc3::getMode()'],['../classIRKelvinatorAC.html#a7a0f8f587fdda24db12db7aace478fd6',1,'IRKelvinatorAC::getMode()'],['../classIRLgAc.html#a19752b31eb74aad0cc9538a2f0af8b8c',1,'IRLgAc::getMode()'],['../classIRMideaAC.html#a1b5d19958e11a85d1af09b15631af124',1,'IRMideaAC::getMode()'],['../classIRMitsubishiAC.html#a069fd1d3bea102968e74b312fdf01548',1,'IRMitsubishiAC::getMode()'],['../classIRMitsubishi136.html#a3176aec8444f500bdea6e650cee2dbcc',1,'IRMitsubishi136::getMode()'],['../classIRMitsubishi112.html#ac2006f1e33f2a0cebcb6c23fcac389bb',1,'IRMitsubishi112::getMode()'],['../classIRMitsubishiHeavy152Ac.html#af0a51f8195492aac62bea483cb9a392c',1,'IRMitsubishiHeavy152Ac::getMode()'],['../classIRMitsubishiHeavy88Ac.html#ae8e1263a77b8fb04c2a4a5d6ce9805f9',1,'IRMitsubishiHeavy88Ac::getMode()'],['../classIRNeoclimaAc.html#ad2a43e0405a44787bb177bf13a324dde',1,'IRNeoclimaAc::getMode()'],['../classIRPanasonicAc.html#a5ffd59dd87b047e172ba74866267a9f3',1,'IRPanasonicAc::getMode()'],['../classIRSamsungAc.html#a740a874ee2c492027623943043a1ebf6',1,'IRSamsungAc::getMode()'],['../classIRSharpAc.html#adbccabd2ec614c8b921a02af8b529b4e',1,'IRSharpAc::getMode()'],['../classIRTcl112Ac.html#ad1b6538977bc464f1e6719b5cea89945',1,'IRTcl112Ac::getMode()'],['../classIRTecoAc.html#a4200081a4d42f2ec06935f71c4870e67',1,'IRTecoAc::getMode()'],['../classIRToshibaAC.html#aba5db1f6c8665443f26875ee9716302f',1,'IRToshibaAC::getMode()'],['../classIRTrotecESP.html#ab1b08911e9b76a06a08f4c7b8a2244c0',1,'IRTrotecESP::getMode()'],['../classIRVestelAc.html#ae5b3d9f1420f4d1951ba148399ccbd41',1,'IRVestelAc::getMode()'],['../classIRWhirlpoolAc.html#a4d2896e42e9c5ee1e8dc8f7e917618dc',1,'IRWhirlpoolAc::getMode()']]], + ['getmodel_312',['getModel',['../classIRFujitsuAC.html#a35c6bfb730014f3a24676f94e8308163',1,'IRFujitsuAC::getModel()'],['../classIRGreeAC.html#a3780fc11488a2b40f3c1a50bb94783c7',1,'IRGreeAC::getModel()'],['../classIRHitachiAc1.html#a9ad677e1a2d7acba032701051538b08a',1,'IRHitachiAc1::getModel()'],['../classIRLgAc.html#aa49cde438a42a5415e127cc95da465ac',1,'IRLgAc::getModel()'],['../classIRPanasonicAc.html#a625be846baf3ec556a59379785e642e8',1,'IRPanasonicAc::getModel()'],['../classIRWhirlpoolAc.html#ac55e17fde1ef2acf6524d936732a0469',1,'IRWhirlpoolAc::getModel()']]], + ['getmold_313',['getMold',['../classIRDaikinESP.html#ad593ac32c01752f56e9476af234cf813',1,'IRDaikinESP::getMold()'],['../classIRDaikin2.html#a330b3a8f25bd2d053dab318126b32569',1,'IRDaikin2::getMold()']]], + ['getnight_314',['getNight',['../classIRArgoAC.html#adca87781240cf9c22e6bbaad9d59537c',1,'IRArgoAC::getNight()'],['../classIRMitsubishiHeavy152Ac.html#a659036b987991f39daa13fbd23b35f35',1,'IRMitsubishiHeavy152Ac::getNight()']]], + ['getnormalstate_315',['getNormalState',['../classIRCoolixAC.html#a458618f926f8b57e4b9bdeae0d13a70d',1,'IRCoolixAC']]], + ['getofftime_316',['getOffTime',['../classIRDaikinESP.html#a5213017d706cd6bce88cbfb65150bdb5',1,'IRDaikinESP::getOffTime()'],['../classIRDaikin2.html#af3a47c7b99cec3b108b5173cf1ae7da4',1,'IRDaikin2::getOffTime()'],['../classIRDaikin64.html#a7f163901c3b5065e393e3ae0e01d599a',1,'IRDaikin64::getOffTime()']]], + ['getofftimeenabled_317',['getOffTimeEnabled',['../classIRDaikin64.html#a9ebf2deb196caece88c286d8c03bb69a',1,'IRDaikin64']]], + ['getofftimer_318',['getOffTimer',['../classIRCarrierAc64.html#a6a28f83442d695385f76f13913c76542',1,'IRCarrierAc64::getOffTimer()'],['../classIRCoronaAc.html#a4602f36769e6b135fec8802a3b087adf',1,'IRCoronaAc::getOffTimer()'],['../classIRDaikin128.html#a6a18b029d75b006de5aeac2efb8e08e2',1,'IRDaikin128::getOffTimer()'],['../classIRDelonghiAc.html#acd32fa9acbc9782df9aa00325efea2a7',1,'IRDelonghiAc::getOffTimer()'],['../classIRHaierAC.html#a8b5c970b3204aa447d86dc2941dbd7b1',1,'IRHaierAC::getOffTimer()'],['../classIRHitachiAc1.html#ab99d73871d3510a830f988628dc5e33d',1,'IRHitachiAc1::getOffTimer()'],['../classIRPanasonicAc.html#a4bce377d32504f666662f1d93645761f',1,'IRPanasonicAc::getOffTimer()'],['../classIRVestelAc.html#a575ba7c6aee1d2377975ef0ef938775a',1,'IRVestelAc::getOffTimer()'],['../classIRWhirlpoolAc.html#a05e1308970e0169d6a081baf120efd9f',1,'IRWhirlpoolAc::getOffTimer()']]], + ['getofftimerenabled_319',['getOffTimerEnabled',['../classIRDaikinESP.html#af6388cd6d2189f9067b708d46917a83a',1,'IRDaikinESP::getOffTimerEnabled()'],['../classIRDaikin2.html#a7a413002b64497a5fce7cdcdd6924e8f',1,'IRDaikin2::getOffTimerEnabled()'],['../classIRDaikin128.html#a4234e0e3ff261afa9d5ec6a8b92d8f53',1,'IRDaikin128::getOffTimerEnabled()'],['../classIRDelonghiAc.html#ac1b91f6d4bb5e41e43fc7e4b9a3187a3',1,'IRDelonghiAc::getOffTimerEnabled()']]], + ['getontime_320',['getOnTime',['../classIRDaikinESP.html#a8a6730accc69647cbc12ebc99b2cfb77',1,'IRDaikinESP::getOnTime()'],['../classIRDaikin2.html#ad62f28698595be7717f0f29a5396853d',1,'IRDaikin2::getOnTime()'],['../classIRDaikin64.html#a9b316390ffc3e81d423d3e4b326be7d4',1,'IRDaikin64::getOnTime()']]], + ['getontimeenabled_321',['getOnTimeEnabled',['../classIRDaikin64.html#a0b9795a5536566fe2f9b713aaff4b9ee',1,'IRDaikin64']]], + ['getontimer_322',['getOnTimer',['../classIRCarrierAc64.html#a071ebd204e56e2cd771281b1c42b9cb5',1,'IRCarrierAc64::getOnTimer()'],['../classIRCoronaAc.html#a7beec38ab35dbebe955c4da188de25d5',1,'IRCoronaAc::getOnTimer()'],['../classIRDaikin128.html#a3b8a36d99a7cbf87bac8480f16c3d583',1,'IRDaikin128::getOnTimer()'],['../classIRDelonghiAc.html#a03f6d037d62d3c641b45ec97a1bff715',1,'IRDelonghiAc::getOnTimer()'],['../classIRHaierAC.html#a99d3339eb5ecdbf1c86e85408507af7b',1,'IRHaierAC::getOnTimer()'],['../classIRHitachiAc1.html#a9d5846c1efcc8fae1eeb6079a61cb18b',1,'IRHitachiAc1::getOnTimer()'],['../classIRPanasonicAc.html#a51d50a59e09f0911022c59ab60bf4889',1,'IRPanasonicAc::getOnTimer()'],['../classIRVestelAc.html#aa39e3047ea694ada9cc7e992e7b03e32',1,'IRVestelAc::getOnTimer()'],['../classIRWhirlpoolAc.html#a26c00db3316585e32d64428d6732fcd0',1,'IRWhirlpoolAc::getOnTimer()']]], + ['getontimerenabled_323',['getOnTimerEnabled',['../classIRDaikinESP.html#a45e473403547c8ec95a50aeb1ed93607',1,'IRDaikinESP::getOnTimerEnabled()'],['../classIRDaikin2.html#a8921edb7885d728ee5294fa03cb13a87',1,'IRDaikin2::getOnTimerEnabled()'],['../classIRDaikin128.html#a450948bdbdc22da751c8f1abc2da642d',1,'IRDaikin128::getOnTimerEnabled()'],['../classIRDelonghiAc.html#a0911f40ee5838bfc6b7deb3193e6a62a',1,'IRDelonghiAc::getOnTimerEnabled()']]], + ['getoutsidequiet_324',['getOutsideQuiet',['../classIRFujitsuAC.html#a404a06b5022899e622e629ec099864f5',1,'IRFujitsuAC']]], + ['getpower_325',['getPower',['../classIRAmcorAc.html#a141e2af9eb4530b175a430dee31bc5ae',1,'IRAmcorAc::getPower()'],['../classIRArgoAC.html#a10812d30095c4adc24cb3eee25e2d246',1,'IRArgoAC::getPower()'],['../classIRCarrierAc64.html#ad50ebb44815e55cc0a99f4762939dc54',1,'IRCarrierAc64::getPower()'],['../classIRCoolixAC.html#a150e3b827d8002e77135955079c78704',1,'IRCoolixAC::getPower()'],['../classIRCoronaAc.html#a313c5489b53bba5747e871ec0a7af417',1,'IRCoronaAc::getPower()'],['../classIRDaikinESP.html#a1d72647db12276493d8e093a4feda44e',1,'IRDaikinESP::getPower()'],['../classIRDaikin2.html#a2f25c4ff097f82a91c062aacd5ebabfc',1,'IRDaikin2::getPower()'],['../classIRDaikin216.html#a2b1e1dd2a059466ab5e5c8ab7eb4f2b4',1,'IRDaikin216::getPower()'],['../classIRDaikin160.html#ad472f0d0680da6ab83a1b636bc00e271',1,'IRDaikin160::getPower()'],['../classIRDaikin176.html#ad564616fc1bf90c00c594c2d3cb5394d',1,'IRDaikin176::getPower()'],['../classIRDaikin152.html#a8581147072fecf6ebd0dd2da50a63f05',1,'IRDaikin152::getPower()'],['../classIRDelonghiAc.html#ae077f0e444fcf24b1e0343e93244b7e8',1,'IRDelonghiAc::getPower()'],['../classIRElectraAc.html#aed11407cd8be470baf5d4667e28e1273',1,'IRElectraAc::getPower()'],['../classIRFujitsuAC.html#a5d03a83db8bc2084ae2acea17c2c7ae2',1,'IRFujitsuAC::getPower()'],['../classIRGoodweatherAc.html#a6f7db9f499c4fea860976bb273ba15df',1,'IRGoodweatherAc::getPower()'],['../classIRGreeAC.html#ac2c97551e02c6cce1b9983cc902f5f1a',1,'IRGreeAC::getPower()'],['../classIRHaierACYRW02.html#a446ee5873e80fa474d322ca5ff598fb5',1,'IRHaierACYRW02::getPower()'],['../classIRHitachiAc.html#a3be8c7ded012c2ad5cab59ee6fe3c88e',1,'IRHitachiAc::getPower()'],['../classIRHitachiAc1.html#ab4756a44153997ff686e8a14369407c0',1,'IRHitachiAc1::getPower()'],['../classIRHitachiAc424.html#ae4d3370d89253ec0861a60b84b2d078c',1,'IRHitachiAc424::getPower()'],['../classIRKelvinatorAC.html#a3dc660afab763c9a4b0cfc5d8e14d220',1,'IRKelvinatorAC::getPower()'],['../classIRLgAc.html#ac09b8af7cc2d46881d3a710068acb5bd',1,'IRLgAc::getPower()'],['../classIRMideaAC.html#a2035653f3ac503a8d30563fded46cab2',1,'IRMideaAC::getPower()'],['../classIRMitsubishiAC.html#aa5fb3f328b6c8a553d25088ec9e858d7',1,'IRMitsubishiAC::getPower()'],['../classIRMitsubishi136.html#a371faf10c80560e1ad59c70d66147723',1,'IRMitsubishi136::getPower()'],['../classIRMitsubishi112.html#afb9ea09a7a9724410470944f6decaeed',1,'IRMitsubishi112::getPower()'],['../classIRMitsubishiHeavy152Ac.html#a1e1d742e255685d1b16935d6031b25fc',1,'IRMitsubishiHeavy152Ac::getPower()'],['../classIRMitsubishiHeavy88Ac.html#a05c50ad07ba7be443414792c7e585354',1,'IRMitsubishiHeavy88Ac::getPower()'],['../classIRNeoclimaAc.html#a635e81f673155eb123dab84a78ff86d5',1,'IRNeoclimaAc::getPower()'],['../classIRPanasonicAc.html#a2d50ed3994f6cc6e205d2c5fb6c0cc55',1,'IRPanasonicAc::getPower()'],['../classIRSamsungAc.html#a26fb214fdf3af4d39a898a1721583cf3',1,'IRSamsungAc::getPower()'],['../classIRSharpAc.html#a49c6c86c901a8d02d7a0d67bfcc397af',1,'IRSharpAc::getPower()'],['../classIRTcl112Ac.html#a36e3b74c79ec42a0922893a3ccd5d045',1,'IRTcl112Ac::getPower()'],['../classIRTecoAc.html#a66c39da54baa6d0c56418ff8027a12a6',1,'IRTecoAc::getPower()'],['../classIRToshibaAC.html#a6d69c147e786aa642906f24c9781bb0f',1,'IRToshibaAC::getPower()'],['../classIRTrotecESP.html#a2e303fe918f79281df98cffb9d2cd539',1,'IRTrotecESP::getPower()'],['../classIRVestelAc.html#a1d6cdc9ad13ebbf1e9a4a83f95244ced',1,'IRVestelAc::getPower()']]], + ['getpowerbutton_326',['getPowerButton',['../classIRCoronaAc.html#ae38a9860cc3fe73909ba20260ad9a51a',1,'IRCoronaAc']]], + ['getpowerful_327',['getPowerful',['../classIRDaikinESP.html#a827c3dc88027b043271a469bc41c4bb1',1,'IRDaikinESP::getPowerful()'],['../classIRDaikin2.html#abad28f7287f4d90d196eb0eb7f93ed43',1,'IRDaikin2::getPowerful()'],['../classIRDaikin216.html#acf94e292df8f45233e115324a95a5e83',1,'IRDaikin216::getPowerful()'],['../classIRDaikin128.html#a50f2de409b3e8966f8406b659aaaedac',1,'IRDaikin128::getPowerful()'],['../classIRDaikin152.html#a20ec24a0ef288cabb93080b4fa0f71fe',1,'IRDaikin152::getPowerful()'],['../classIRPanasonicAc.html#a736b77df0563705095d8f4241a80b1cb',1,'IRPanasonicAc::getPowerful()'],['../classIRSamsungAc.html#ac43367d5aec71e1dcb5b178427268412',1,'IRSamsungAc::getPowerful()']]], + ['getpowerspecial_328',['getPowerSpecial',['../classIRSharpAc.html#aeb5d032c42863b6c3e2665c0719b9341',1,'IRSharpAc']]], + ['getpowertoggle_329',['getPowerToggle',['../classIRDaikin128.html#a0b6b298a0287411f6fe34ec1a0032ff1',1,'IRDaikin128::getPowerToggle()'],['../classIRDaikin64.html#a7921b6a9e776a1802b98e25c0ac4d2dc',1,'IRDaikin64::getPowerToggle()'],['../classIRHitachiAc1.html#a384412f40bfde7a9934fbb7eb2813641',1,'IRHitachiAc1::getPowerToggle()'],['../classIRWhirlpoolAc.html#a08150bcdcf13f0dfb3a7608b2d354a1e',1,'IRWhirlpoolAc::getPowerToggle()']]], + ['getpurify_330',['getPurify',['../classIRDaikin2.html#a3e2785832ae78bafa655aa61853a47bf',1,'IRDaikin2']]], + ['getquiet_331',['getQuiet',['../classIRDaikinESP.html#a25dcfbeacce65f9a89d14a87f759c483',1,'IRDaikinESP::getQuiet()'],['../classIRDaikin2.html#a237eb163e3dd1bf8e45ae2324f0b7dcf',1,'IRDaikin2::getQuiet()'],['../classIRDaikin216.html#aaa0f1aa62f8afd3d489a33af1c1067bc',1,'IRDaikin216::getQuiet()'],['../classIRDaikin128.html#a685bbc2afeecdef69180229b64e1d54b',1,'IRDaikin128::getQuiet()'],['../classIRDaikin152.html#adc8878ec0f6ea2d4fc2fa756a2e9ef4e',1,'IRDaikin152::getQuiet()'],['../classIRDaikin64.html#a431e41baa2881f397b5bf8ee2b79fec9',1,'IRDaikin64::getQuiet()'],['../classIRKelvinatorAC.html#a467c0d63911a87bed8815a5b636d6d75',1,'IRKelvinatorAC::getQuiet()'],['../classIRMitsubishi136.html#afaf690f15d21fea1070b33b2720e98fa',1,'IRMitsubishi136::getQuiet()'],['../classIRMitsubishi112.html#a3b3b78ba5114d783ab7696f3e4687002',1,'IRMitsubishi112::getQuiet()'],['../classIRPanasonicAc.html#a8d7dfc9b5f7c7a4523c0bfa4e0bc415a',1,'IRPanasonicAc::getQuiet()'],['../classIRSamsungAc.html#a0baaf3d40419bb744204bdb30d4aa9b9',1,'IRSamsungAc::getQuiet()']]], + ['getraw_332',['getRaw',['../classIRAmcorAc.html#aa2b99d815e499edf3ae53aebb35cbe9b',1,'IRAmcorAc::getRaw()'],['../classIRArgoAC.html#ac9e8b45dbbef453a54e3593d7e2927fb',1,'IRArgoAC::getRaw()'],['../classIRCarrierAc64.html#ad40279db2c9bd3d1abb5a6e028ec0d80',1,'IRCarrierAc64::getRaw()'],['../classIRCoolixAC.html#aa231938dfcff03325383205edc9c88d2',1,'IRCoolixAC::getRaw()'],['../classIRCoronaAc.html#ac2ba3b4bcefb801da345c9da5daa85fc',1,'IRCoronaAc::getRaw()'],['../classIRDaikinESP.html#ab100221dacc23402f486dee038df046d',1,'IRDaikinESP::getRaw()'],['../classIRDaikin2.html#aaf2ac0fc5924829a1209bd5e0b608b5f',1,'IRDaikin2::getRaw()'],['../classIRDaikin216.html#ac41b3de39ffc6ccd097085c727329531',1,'IRDaikin216::getRaw()'],['../classIRDaikin160.html#aeb68f80476362b0581fcb273b13cdf1e',1,'IRDaikin160::getRaw()'],['../classIRDaikin176.html#a86896be45037015683299004f2eb4d22',1,'IRDaikin176::getRaw()'],['../classIRDaikin128.html#a05669c2b1a6720b95d9a5fb898179a10',1,'IRDaikin128::getRaw()'],['../classIRDaikin152.html#a4af01f8a2459493762977f8ed260c4e6',1,'IRDaikin152::getRaw()'],['../classIRDaikin64.html#a1f8df45c67771ffca620f8c2f17af2e0',1,'IRDaikin64::getRaw()'],['../classIRDelonghiAc.html#a9e6934607f162df3d259d8fb95319d67',1,'IRDelonghiAc::getRaw()'],['../classIRElectraAc.html#a7674d29474ecbbb6366d96056794314c',1,'IRElectraAc::getRaw()'],['../classIRFujitsuAC.html#ae4dce44cab1f26756d63728cb8d55e65',1,'IRFujitsuAC::getRaw()'],['../classIRGoodweatherAc.html#a82d973e562b2425e8823fbc7332c06de',1,'IRGoodweatherAc::getRaw()'],['../classIRGreeAC.html#afa1595d4f69200b0076db1b9f8f2ea73',1,'IRGreeAC::getRaw()'],['../classIRHaierAC.html#abf72eed86c2c86c4f0f5f49f6a788b82',1,'IRHaierAC::getRaw()'],['../classIRHaierACYRW02.html#abca7bbe8c723551723f24f186343b764',1,'IRHaierACYRW02::getRaw()'],['../classIRHitachiAc.html#a8dafb9436f63cfc2d7e4f558fbd6e1ab',1,'IRHitachiAc::getRaw()'],['../classIRHitachiAc1.html#ad850b6364603880ccc444381e85af564',1,'IRHitachiAc1::getRaw()'],['../classIRHitachiAc424.html#acd8388f938feeaf6808ff65779435b5d',1,'IRHitachiAc424::getRaw()'],['../classIRHitachiAc3.html#a915605ca6d0bf3ff6fc9b376ddd394ae',1,'IRHitachiAc3::getRaw()'],['../classIRKelvinatorAC.html#a09149dd7bc45ca50b0c490b9c1f1e6f4',1,'IRKelvinatorAC::getRaw()'],['../classIRLgAc.html#afcb529d2f2c9016388264b80e6a99351',1,'IRLgAc::getRaw()'],['../classIRMideaAC.html#ae0b2c3a5a0a1d84eaeb462bbbe944d97',1,'IRMideaAC::getRaw()'],['../classIRMitsubishiAC.html#a1f2d0ea70bdeb71efab4c20ccd876aa9',1,'IRMitsubishiAC::getRaw()'],['../classIRMitsubishi136.html#a61cceec2bf241a75be1389391e8f3d9a',1,'IRMitsubishi136::getRaw()'],['../classIRMitsubishi112.html#a5e47e892921b8464652b55f41f42fd9a',1,'IRMitsubishi112::getRaw()'],['../classIRMitsubishiHeavy152Ac.html#a34ae73479c76b08512eaa87ed0662c0a',1,'IRMitsubishiHeavy152Ac::getRaw()'],['../classIRMitsubishiHeavy88Ac.html#af96915ac45861327ed7d55803dadd4fd',1,'IRMitsubishiHeavy88Ac::getRaw()'],['../classIRNeoclimaAc.html#a1f67329cad92d4252b0d33effce6380e',1,'IRNeoclimaAc::getRaw()'],['../classIRPanasonicAc.html#ad65c2bcdc3984a986f5ef2f03b5574d4',1,'IRPanasonicAc::getRaw()'],['../classIRSamsungAc.html#a96c6ac410053f0f2804160040d9fcf12',1,'IRSamsungAc::getRaw()'],['../classIRSharpAc.html#a9d680b0145c376060bd2d2e4c2630162',1,'IRSharpAc::getRaw()'],['../classIRTcl112Ac.html#a517375b764d1381aa5a7d4ec962346ec',1,'IRTcl112Ac::getRaw()'],['../classIRTecoAc.html#a7726e9d638cb81c7a4010112887a0ffe',1,'IRTecoAc::getRaw()'],['../classIRToshibaAC.html#a3572a06423851d2c4da5f85133a1a8ff',1,'IRToshibaAC::getRaw()'],['../classIRTrotecESP.html#a412dd2cf9dcb711003bcbb5b579cb2b8',1,'IRTrotecESP::getRaw()'],['../classIRVestelAc.html#afffd1dbcdec22ecca4efe9a996bf27e5',1,'IRVestelAc::getRaw()'],['../classIRWhirlpoolAc.html#a788a6a5373256e10200969cc5c73da63',1,'IRWhirlpoolAc::getRaw()']]], + ['getrclevel_333',['getRClevel',['../classIRrecv.html#a8e32daaa903a8e42dad7faaf405b33dc',1,'IRrecv']]], + ['getroomtemp_334',['getRoomTemp',['../classIRArgoAC.html#a5e4d8447c8851d2fce656abce6c4d368',1,'IRArgoAC']]], + ['getsave_335',['getSave',['../classIRTecoAc.html#a0b4eea3d89f3aef649e32ee1b8bf65a3',1,'IRTecoAc']]], + ['getsectionbyte_336',['getSectionByte',['../classIRCoronaAc.html#aed9181df842370739a5b4977b20769f9',1,'IRCoronaAc']]], + ['getsensor_337',['getSensor',['../classIRDaikinESP.html#ac22369a04bb8f428a127b3625d9989fc',1,'IRDaikinESP::getSensor()'],['../classIRDaikin152.html#a88d4d0d41f33f71d4a846f6c2547f597',1,'IRDaikin152::getSensor()']]], + ['getsensortemp_338',['getSensorTemp',['../classIRCoolixAC.html#aebbed796cab76248138e124aac1d535a',1,'IRCoolixAC']]], + ['getsilent_339',['getSilent',['../classIRMitsubishiHeavy152Ac.html#a93aa735996a31d6f1928aa35d704bd24',1,'IRMitsubishiHeavy152Ac']]], + ['getsleep_340',['getSleep',['../classIRCarrierAc64.html#a24f208b955af86f6927ac97b7f7066d5',1,'IRCarrierAc64::getSleep()'],['../classIRCoolixAC.html#a0b22f5427254c3f784f468d53909882c',1,'IRCoolixAC::getSleep()'],['../classIRDaikin128.html#a0cab507cdea112168757e1ab1a5a1dbe',1,'IRDaikin128::getSleep()'],['../classIRDaikin64.html#a32f4b90d4071cdbc4f37dd401e2d771f',1,'IRDaikin64::getSleep()'],['../classIRDelonghiAc.html#ab9baadd8f41c6dc7f89e71415e0e57b5',1,'IRDelonghiAc::getSleep()'],['../classIRGoodweatherAc.html#acf84e27fedc3c30a03c7d83e4843f8e0',1,'IRGoodweatherAc::getSleep()'],['../classIRGreeAC.html#abd106daa5324a454c5ced13e2fed2a1b',1,'IRGreeAC::getSleep()'],['../classIRHaierAC.html#a0ac7155d5ba294ce50b9436a35aa166b',1,'IRHaierAC::getSleep()'],['../classIRHaierACYRW02.html#acecf20cbe6065a4096ee5a353d2161c9',1,'IRHaierACYRW02::getSleep()'],['../classIRHitachiAc1.html#ab2e82cce1d9dc6e6ce66f2382ffcf4d4',1,'IRHitachiAc1::getSleep()'],['../classIRMideaAC.html#af4b76f42fd9be5eed9b546be7b0c34db',1,'IRMideaAC::getSleep()'],['../classIRNeoclimaAc.html#a8565f8f39127ed51eec7f7883319da61',1,'IRNeoclimaAc::getSleep()'],['../classIRTecoAc.html#a3eebb19e029aa882e161eb2bd6cfe333',1,'IRTecoAc::getSleep()'],['../classIRTrotecESP.html#a28558241d4dd18e191c6fab2c21f973e',1,'IRTrotecESP::getSleep()'],['../classIRVestelAc.html#a54f97dfe120c96b8c041550ed26d46f2',1,'IRVestelAc::getSleep()'],['../classIRWhirlpoolAc.html#a83c1b70e9c3b256b9e77ff6fb7fe0bde',1,'IRWhirlpoolAc::getSleep()']]], + ['getsleeptime_341',['getSleepTime',['../classIRDaikin2.html#a31af96f9a05b3adea2e2ae84d3d242b9',1,'IRDaikin2']]], + ['getsleeptimerenabled_342',['getSleepTimerEnabled',['../classIRDaikin2.html#ae4944acaa5c9d381a1875f4d0b16590a',1,'IRDaikin2']]], + ['getspecial_343',['getSpecial',['../classIRSharpAc.html#a18fb9e6f965682e4faae3d1ecc2561cb',1,'IRSharpAc']]], + ['getspeed_344',['getSpeed',['../classIRTrotecESP.html#ae57c9ab5bc2196f5028ea1af1bdb5428',1,'IRTrotecESP']]], + ['getstartclock_345',['getStartClock',['../classIRMitsubishiAC.html#a0e0d8fa3bec35107929aaa9e9b4b5818',1,'IRMitsubishiAC']]], + ['getstate_346',['getState',['../classIRac.html#af0122722691881b04c312bb30efcc3f2',1,'IRac']]], + ['getstatelength_347',['getStateLength',['../classIRFujitsuAC.html#a02636372996211d464c7394329921ea0',1,'IRFujitsuAC']]], + ['getstateprev_348',['getStatePrev',['../classIRac.html#adf582223eae0127491c7f1db38f101d3',1,'IRac']]], + ['getstopclock_349',['getStopClock',['../classIRMitsubishiAC.html#a9b6266611d7cf75337557533a32796c2',1,'IRMitsubishiAC']]], + ['getsuper_350',['getSuper',['../classIRWhirlpoolAc.html#a8bcf542e3499d05c4028157c803a0965',1,'IRWhirlpoolAc']]], + ['getswing_351',['getSwing',['../classIRCoolixAC.html#a4846bb6a16802158dca3a8b1b7f5b6ff',1,'IRCoolixAC::getSwing()'],['../classIRFujitsuAC.html#af6f05f1375c3c4662d10026028fadbed',1,'IRFujitsuAC::getSwing()'],['../classIRGoodweatherAc.html#a96c844ec310323b62d9127ff250c3629',1,'IRGoodweatherAc::getSwing()'],['../classIRHaierAC.html#aa18839d213e4cd46405c683ec67fa23e',1,'IRHaierAC::getSwing()'],['../classIRHaierACYRW02.html#a88b15d20c007926ab5871b8e6a9fbe3f',1,'IRHaierACYRW02::getSwing()'],['../classIRSamsungAc.html#a5e6a7caccfdcb23cdb7d1341376c2343',1,'IRSamsungAc::getSwing()'],['../classIRTecoAc.html#a152fb025a2ba4410864637e8fdcef27a',1,'IRTecoAc::getSwing()'],['../classIRVestelAc.html#a991f8ca21319cb39b6c4cd358de4dbf4',1,'IRVestelAc::getSwing()'],['../classIRWhirlpoolAc.html#abac55fcea520ea4bbef3fa76223e2efc',1,'IRWhirlpoolAc::getSwing()']]], + ['getswingh_352',['getSwingH',['../classIRElectraAc.html#a40e8f0ae2e57c3adf756b12524b36e6d',1,'IRElectraAc::getSwingH()'],['../classIRHitachiAc1.html#ac5bfde2c87281d3e7f427cb7ea601e85',1,'IRHitachiAc1::getSwingH()'],['../classIRHitachiAc344.html#a33ad0fe4939b2e2456a3d8a09da5a161',1,'IRHitachiAc344::getSwingH()'],['../classIRMitsubishi112.html#a05a343020c64f0ef95c365adcb337140',1,'IRMitsubishi112::getSwingH()'],['../classIRNeoclimaAc.html#a133fb28183fc33702bd8afb7c8886cb2',1,'IRNeoclimaAc::getSwingH()']]], + ['getswinghorizontal_353',['getSwingHorizontal',['../classIRDaikinESP.html#a0a551cc1c22b5378015e8722919534aa',1,'IRDaikinESP::getSwingHorizontal()'],['../classIRDaikin2.html#a338a70b5d7f71da467a0f32b4a057f13',1,'IRDaikin2::getSwingHorizontal()'],['../classIRDaikin216.html#a4b5c648e6568bf1dd24932e108c560d9',1,'IRDaikin216::getSwingHorizontal()'],['../classIRDaikin176.html#aac0a1b9b5e618b31c651b9abc158a552',1,'IRDaikin176::getSwingHorizontal()'],['../classIRHitachiAc.html#a080f87358270eb1482d4a5d4b873f22c',1,'IRHitachiAc::getSwingHorizontal()'],['../classIRKelvinatorAC.html#abe27eb5ec7eb4c4b766a47b551422af3',1,'IRKelvinatorAC::getSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#a587eddf4684bdcb6c399b3f9c6cec684',1,'IRMitsubishiHeavy152Ac::getSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#ae538830313d02aa1ecc671188687dd35',1,'IRMitsubishiHeavy88Ac::getSwingHorizontal()'],['../classIRPanasonicAc.html#a37d9b268b3c8527be0939e0a24b02ef6',1,'IRPanasonicAc::getSwingHorizontal()'],['../classIRTcl112Ac.html#a7080def7f41498fc5af723e852c2e75c',1,'IRTcl112Ac::getSwingHorizontal()']]], + ['getswingtoggle_354',['getSwingToggle',['../classIRHitachiAc1.html#ac4a5d4d5f9b4ae000d0acb232a1e2752',1,'IRHitachiAc1::getSwingToggle()'],['../classIRSharpAc.html#ae0327e90a68638c254706a99ed40f173',1,'IRSharpAc::getSwingToggle()']]], + ['getswingv_355',['getSwingV',['../classIRCarrierAc64.html#a78aac688a4b040b2b6102fac8b028bde',1,'IRCarrierAc64::getSwingV()'],['../classIRDaikin152.html#a74ee60e666520513b33927178f15bc7e',1,'IRDaikin152::getSwingV()'],['../classIRElectraAc.html#a9cd2a7d7716f855dca6be12e3cdc3d24',1,'IRElectraAc::getSwingV()'],['../classIRHitachiAc1.html#a24216e1bc4cf9e9187e9031cee1684dc',1,'IRHitachiAc1::getSwingV()'],['../classIRHitachiAc344.html#a4e011e409f1bf97c8bd4043e2d069020',1,'IRHitachiAc344::getSwingV()'],['../classIRMitsubishi136.html#af2cacca74c4a6ade5f9689674bb707ea',1,'IRMitsubishi136::getSwingV()'],['../classIRMitsubishi112.html#a6d1e939169686978c83a2b26ebc3b8c2',1,'IRMitsubishi112::getSwingV()'],['../classIRNeoclimaAc.html#a3007ed9857bb212de05b7757ee0691e3',1,'IRNeoclimaAc::getSwingV()']]], + ['getswingvertical_356',['getSwingVertical',['../classIRDaikinESP.html#a95f87fd97248e13c6339b71702a79e3a',1,'IRDaikinESP::getSwingVertical()'],['../classIRDaikin2.html#aa1d07be72001f06b6a8dfc279ffc40f5',1,'IRDaikin2::getSwingVertical()'],['../classIRDaikin216.html#ae72a3858a0023dac48fe755fd1bb1677',1,'IRDaikin216::getSwingVertical()'],['../classIRDaikin160.html#a5ed62940052f79587c92eaf92e30cf53',1,'IRDaikin160::getSwingVertical()'],['../classIRDaikin128.html#a60c21eaff6bf860ae25b974a0fd04e11',1,'IRDaikin128::getSwingVertical()'],['../classIRDaikin64.html#a7d538ad1ae23b92c1d82ae85ddd55ef1',1,'IRDaikin64::getSwingVertical()'],['../classIRHitachiAc.html#a9f507cc12bd3a5639777af0329a6dd5c',1,'IRHitachiAc::getSwingVertical()'],['../classIRKelvinatorAC.html#a69aaabc1f34e061272a76e4dc3c98bf1',1,'IRKelvinatorAC::getSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#a73c59d829a82306edf22acbd930650e0',1,'IRMitsubishiHeavy152Ac::getSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#ae836aee7dfb729f6b978b0b4ac8e9d3c',1,'IRMitsubishiHeavy88Ac::getSwingVertical()'],['../classIRPanasonicAc.html#a7a35303cd4fb4b23c0e5a25777d5819c',1,'IRPanasonicAc::getSwingVertical()'],['../classIRTcl112Ac.html#a0b75d06b14c1b7e2d2eb3a8779160ae5',1,'IRTcl112Ac::getSwingVertical()']]], + ['getswingverticalauto_357',['getSwingVerticalAuto',['../classIRGreeAC.html#a4105bcde953896b12df050b12f1a45cc',1,'IRGreeAC']]], + ['getswingverticalposition_358',['getSwingVerticalPosition',['../classIRGreeAC.html#a7b1b840483ef92102dd61fefd52ccd8b',1,'IRGreeAC']]], + ['getswingvtoggle_359',['getSwingVToggle',['../classIRCoronaAc.html#ab10588a662031607ed4d01603a4471d6',1,'IRCoronaAc::getSwingVToggle()'],['../classIRHitachiAc424.html#ab697f595b6323288b6fd86f2a2911333',1,'IRHitachiAc424::getSwingVToggle()'],['../classIRMideaAC.html#a50b260d69bc0df8851bfccb003971dfe',1,'IRMideaAC::getSwingVToggle()']]], + ['gettemp_360',['getTemp',['../classIRAmcorAc.html#a2f3e4765a3ae65ffda197f5a58070bf3',1,'IRAmcorAc::getTemp()'],['../classIRArgoAC.html#af5c4cfd3cac33f223e2807ec831df0a9',1,'IRArgoAC::getTemp()'],['../classIRCarrierAc64.html#a799edf21e766b8ae2638a9b1e1d18ac1',1,'IRCarrierAc64::getTemp()'],['../classIRCoolixAC.html#af90462598f294a75b35e20d986251942',1,'IRCoolixAC::getTemp()'],['../classIRCoronaAc.html#ac951434588fd9fa2de630db9ae844840',1,'IRCoronaAc::getTemp()'],['../classIRDaikinESP.html#a43c6675b688cad1ca714ecd726dbb411',1,'IRDaikinESP::getTemp()'],['../classIRDaikin2.html#aa1d39acc14bff5d55e918cb123c66e83',1,'IRDaikin2::getTemp()'],['../classIRDaikin216.html#a65b37310c01075c34cedd5ca1c8a2c37',1,'IRDaikin216::getTemp()'],['../classIRDaikin160.html#ae9cee15343fce5b0f32a4f2ff13a9dbe',1,'IRDaikin160::getTemp()'],['../classIRDaikin176.html#aa9015826e70e4ef1a319db4b2a3fba5f',1,'IRDaikin176::getTemp()'],['../classIRDaikin128.html#a0b5aa11a597bded38c067a9e9a01fd45',1,'IRDaikin128::getTemp()'],['../classIRDaikin152.html#af0a1f8bf9fe412186b53977d225032b2',1,'IRDaikin152::getTemp()'],['../classIRDaikin64.html#abeff1ec38e2d3c9fa12d59e506e7b699',1,'IRDaikin64::getTemp()'],['../classIRDelonghiAc.html#a5664302ab883fc88c23c8bb2aa020cb9',1,'IRDelonghiAc::getTemp()'],['../classIRElectraAc.html#ae92bd241a14058ece0e6d27332f9a3fa',1,'IRElectraAc::getTemp()'],['../classIRFujitsuAC.html#a9209df913f46821a66a390b8cff37acf',1,'IRFujitsuAC::getTemp()'],['../classIRGoodweatherAc.html#a796089c84e265cd7f1b2b82edc6b2367',1,'IRGoodweatherAc::getTemp()'],['../classIRGreeAC.html#a3e935c044cdccfb988a97d5fb0c4068b',1,'IRGreeAC::getTemp()'],['../classIRHaierAC.html#af137371c6766ee068a0200ff1facd8b0',1,'IRHaierAC::getTemp()'],['../classIRHaierACYRW02.html#a9cb0edcb5f36054e4e024c38ec3f26b9',1,'IRHaierACYRW02::getTemp()'],['../classIRHitachiAc.html#a85e0b2dfa45e894d1a89a2f862c6aa69',1,'IRHitachiAc::getTemp()'],['../classIRHitachiAc1.html#ac5c55a06a32134bb3e30b83cce2feeaa',1,'IRHitachiAc1::getTemp()'],['../classIRHitachiAc424.html#aa405408fd31795b714486af88a86112e',1,'IRHitachiAc424::getTemp()'],['../classIRKelvinatorAC.html#aabda77a2381526f4be86f05b311248db',1,'IRKelvinatorAC::getTemp()'],['../classIRLgAc.html#a029399c5926bd4f1ff0b26175bc4af79',1,'IRLgAc::getTemp()'],['../classIRMideaAC.html#a546ab6d3e317e6219ad371fd0825520d',1,'IRMideaAC::getTemp()'],['../classIRMitsubishiAC.html#a9881be01c53dce83bd1eae8a32f150f4',1,'IRMitsubishiAC::getTemp()'],['../classIRMitsubishi136.html#a34bc0e7666264a7e567e45405a57e3e0',1,'IRMitsubishi136::getTemp()'],['../classIRMitsubishi112.html#a4bfd306fecfcaa4c20589440ecfb35db',1,'IRMitsubishi112::getTemp()'],['../classIRMitsubishiHeavy152Ac.html#a7ec864271cf232cab7b8bd778bc36cb4',1,'IRMitsubishiHeavy152Ac::getTemp()'],['../classIRMitsubishiHeavy88Ac.html#afd629c9951a390b7809bc6ac4d3aeeb1',1,'IRMitsubishiHeavy88Ac::getTemp()'],['../classIRNeoclimaAc.html#aaa1a625af6cf094823b58f1fe43deb3a',1,'IRNeoclimaAc::getTemp()'],['../classIRPanasonicAc.html#af8a5607c317e541752fada6ca79ee80f',1,'IRPanasonicAc::getTemp()'],['../classIRSamsungAc.html#a11a6c86f2e4a918e1587ef564c63dddd',1,'IRSamsungAc::getTemp()'],['../classIRSharpAc.html#a1f75c17cc396162e776f3c6cd1848f50',1,'IRSharpAc::getTemp()'],['../classIRTcl112Ac.html#a61bf139cc737b99e5d68294c353eb353',1,'IRTcl112Ac::getTemp()'],['../classIRTecoAc.html#a40e717564222c5c1e4fdce13eba5efc3',1,'IRTecoAc::getTemp()'],['../classIRToshibaAC.html#ab2a9b47d49c5608c97a7c6968c43037d',1,'IRToshibaAC::getTemp()'],['../classIRTrotecESP.html#adcfae2ee1e58cd6a78805c72d7a8a942',1,'IRTrotecESP::getTemp()'],['../classIRVestelAc.html#a835ab977fa0dbf47776e5d618d59c819',1,'IRVestelAc::getTemp()'],['../classIRWhirlpoolAc.html#a4a73ee67cb2eb4407e78add1009cdd51',1,'IRWhirlpoolAc::getTemp()']]], + ['gettempoffset_361',['getTempOffset',['../classIRWhirlpoolAc.html#a2d6111c9b97745d197f0b5d4d4610b3d',1,'IRWhirlpoolAc']]], + ['gettempraw_362',['getTempRaw',['../classIRCoolixAC.html#a559634f3c6aee54683d4b6ccbbc7a884',1,'IRCoolixAC']]], + ['gettempunit_363',['getTempUnit',['../classIRDelonghiAc.html#a8bbe27e1e87fbfc6b126c7f135886632',1,'IRDelonghiAc']]], + ['gettime_364',['getTime',['../classIRHaierAC.html#a60e891775fbc3a77ee487cde26f650c5',1,'IRHaierAC::getTime()'],['../classIRVestelAc.html#a3542ec93c30ec3bc1bb4e242edcf1def',1,'IRVestelAc::getTime()'],['../classIRWhirlpoolAc.html#a27aba1f22b55aa6f72686e0a722682b0',1,'IRWhirlpoolAc::getTime()']]], + ['gettimer_365',['getTimer',['../classIRDaikin128.html#ab35fa1fdd65db9d9cd7fbaffdd4ecd85',1,'IRDaikin128::getTimer()'],['../classIRGreeAC.html#a7a56024e2840306e071e03d1fae53ce9',1,'IRGreeAC::getTimer()'],['../classIRMitsubishiAC.html#a8bb8e92a00f8d9dfff31589d435c9ae5',1,'IRMitsubishiAC::getTimer()'],['../classIRTecoAc.html#a0bff25b2c686e397b62300ce5cad90f7',1,'IRTecoAc::getTimer()'],['../classIRTrotecESP.html#ae372b3120f0253c5a1607460817d36f6',1,'IRTrotecESP::getTimer()'],['../classIRVestelAc.html#aca4faedc9d82e357c8974fc6143b6e77',1,'IRVestelAc::getTimer()']]], + ['gettimerenabled_366',['getTimerEnabled',['../classIRGreeAC.html#aeec03eb7f506a0ba62c28469b789b0da',1,'IRGreeAC::getTimerEnabled()'],['../classIRSharpAc.html#abd7c061b343b4f096019f42ad6162940',1,'IRSharpAc::getTimerEnabled()'],['../classIRTecoAc.html#a3524f149cd3076e757a1b3228bdf12f2',1,'IRTecoAc::getTimerEnabled()']]], + ['gettimertime_367',['getTimerTime',['../classIRSharpAc.html#a72044d8afb1349a29cd8adcc8644c7ac',1,'IRSharpAc']]], + ['gettimertype_368',['getTimerType',['../classIRSharpAc.html#a9357c50c356b29cc444bf9aafb7df146',1,'IRSharpAc']]], + ['gettolerance_369',['getTolerance',['../classIRrecv.html#a144f64da3b44708394c06b0fbefb6347',1,'IRrecv']]], + ['getturbo_370',['getTurbo',['../classIRCoolixAC.html#ab5f87216fb91bbb437c0899b0742a63f',1,'IRCoolixAC::getTurbo()'],['../classIRDaikin64.html#ade80a5ea137c32bdedd794d64925a2d3',1,'IRDaikin64::getTurbo()'],['../classIRElectraAc.html#a75cae6845498eec84109374a2fefcced',1,'IRElectraAc::getTurbo()'],['../classIRGoodweatherAc.html#a983eca3c2ec1233184939702f43557eb',1,'IRGoodweatherAc::getTurbo()'],['../classIRGreeAC.html#a6e319c8584d0cb82223fd190fa4bde29',1,'IRGreeAC::getTurbo()'],['../classIRHaierACYRW02.html#a4ccd26dad24915b81ae5fb94d18fb85a',1,'IRHaierACYRW02::getTurbo()'],['../classIRKelvinatorAC.html#aff32ab0524f4afeb9b53aa65b8df8e36',1,'IRKelvinatorAC::getTurbo()'],['../classIRMitsubishiHeavy152Ac.html#acf2a73ccddb87bd66c39670bd1d3caba',1,'IRMitsubishiHeavy152Ac::getTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a179ecc619e9eea4adb601309421e5fc0',1,'IRMitsubishiHeavy88Ac::getTurbo()'],['../classIRNeoclimaAc.html#a6cf241f0392744a91b703475ee88bfa1',1,'IRNeoclimaAc::getTurbo()'],['../classIRSharpAc.html#aad2ec46f8da6fd84bc0523f40d6bd57d',1,'IRSharpAc::getTurbo()'],['../classIRTcl112Ac.html#a0de33a2175eada44030d3640d940b697',1,'IRTcl112Ac::getTurbo()'],['../classIRVestelAc.html#a9ce168cc9422e54d631aed571cfe66be',1,'IRVestelAc::getTurbo()']]], + ['getusecelsius_371',['getUseCelsius',['../classIRMideaAC.html#aa88de606a914e33e8beb75a069137b52',1,'IRMideaAC']]], + ['getusefahrenheit_372',['getUseFahrenheit',['../classIRGreeAC.html#aad6acfb8a697aba851bb34b14bc94ac1',1,'IRGreeAC']]], + ['getvane_373',['getVane',['../classIRMitsubishiAC.html#acd98301535e7e161f8fdf42877f3e482',1,'IRMitsubishiAC']]], + ['getweeklytimerenable_374',['getWeeklyTimerEnable',['../classIRDaikinESP.html#a9ee2013c069496884c62b6e9a58d01db',1,'IRDaikinESP']]], + ['getwidevane_375',['getWideVane',['../classIRMitsubishiAC.html#a217dba9f9dcc6f75d466b0b7beca3aea',1,'IRMitsubishiAC']]], + ['getwifi_376',['getWiFi',['../classIRGreeAC.html#a967afbe980bae858ce0e4daea6628c37',1,'IRGreeAC']]], + ['getxfan_377',['getXFan',['../classIRGreeAC.html#acb677dde02be1a3461a7c8bc2406194f',1,'IRGreeAC::getXFan()'],['../classIRKelvinatorAC.html#a2e511ca0a8876928412c2db9214e7fe2',1,'IRKelvinatorAC::getXFan()']]], + ['getzonefollow_378',['getZoneFollow',['../classIRCoolixAC.html#a647a41d63301e3d95460323d1fe0ce4a',1,'IRCoolixAC']]], + ['gicable_379',['GICABLE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac8f9010b746a07a7a6329d1b336b68cf',1,'IRremoteESP8266.h']]], + ['globalcache_380',['GLOBALCACHE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf8c11b983768907fdb625ff9fb3729d2',1,'IRremoteESP8266.h']]], + ['goodweather_381',['goodweather',['../classIRac.html#ac47ff5c6faf41e6fb37df258a8bafc08',1,'IRac::goodweather()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9e8d893590b745f6b1b5ffcb556d9cba',1,'GOODWEATHER(): IRremoteESP8266.h']]], + ['gree_382',['gree',['../classIRac.html#ab66e48b039c9990bf97cd8c2512a6c70',1,'IRac::gree()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae3a5e7c315f6f88b34a4c856f280ed83',1,'GREE(): IRremoteESP8266.h']]], + ['gree_5fac_5fremote_5fmodel_5ft_383',['gree_ac_remote_model_t',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.html new file mode 100644 index 000000000..cf2b5df92 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.js new file mode 100644 index 000000000..e58d7a183 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_8.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['haier_384',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]], + ['haier_5fac_385',['HAIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1f232bcdf330ec2e353196941b9f1628',1,'IRremoteESP8266.h']]], + ['haier_5fac_5fyrw02_386',['HAIER_AC_YRW02',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaacda5821835865551f6df46c76282fa4',1,'IRremoteESP8266.h']]], + ['haieryrwo2_387',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]], + ['handlespecialstate_388',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC']]], + ['handletoggles_389',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]], + ['hasacstate_390',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp']]], + ['hasinvertedstates_391',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]], + ['hasstatechanged_392',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]], + ['heat_5fmode_393',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]], + ['hitachi_394',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]], + ['hitachi1_395',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]], + ['hitachi344_396',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]], + ['hitachi424_397',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]], + ['hitachi_5fac_398',['HITACHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9020fb54ac69d8aec0185f7e80c962ca',1,'IRremoteESP8266.h']]], + ['hitachi_5fac1_399',['HITACHI_AC1',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d9a74161d95e62bece3c0e48900cb35',1,'IRremoteESP8266.h']]], + ['hitachi_5fac1_5fremote_5fmodel_5ft_400',['hitachi_ac1_remote_model_t',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49',1,'IRsend.h']]], + ['hitachi_5fac2_401',['HITACHI_AC2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab5a44068d519506efa8a3113aa44c9c0',1,'IRremoteESP8266.h']]], + ['hitachi_5fac3_402',['HITACHI_AC3',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3487c47b14da6af922f5b27992b30f3',1,'IRremoteESP8266.h']]], + ['hitachi_5fac344_403',['HITACHI_AC344',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1e147eb39adc40e4181940cc2357f070',1,'IRremoteESP8266.h']]], + ['hitachi_5fac424_404',['HITACHI_AC424',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada85af068f8964d4359512265d8cc27a31',1,'IRremoteESP8266.h']]], + ['htmlescape_405',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.html new file mode 100644 index 000000000..690785a5d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.js new file mode 100644 index 000000000..64280c4ef --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_9.js @@ -0,0 +1,175 @@ +var searchData= +[ + ['i18n_2eh_406',['i18n.h',['../i18n_8h.html',1,'']]], + ['inax_407',['INAX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafc566aab3afb8face6d8965ca4d0eab7',1,'IRremoteESP8266.h']]], + ['irremoteesp8266_20library_20api_20documentation_408',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], + ['initstate_409',['initState',['../classIRac.html#af1c4ae70e61298c0be8d350d67e7c342',1,'IRac::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)'],['../classIRac.html#a165b7fdb9b3a02b1fb5ff2c2c3747958',1,'IRac::initState(stdAc::state_t *state)']]], + ['invertbits_410',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp']]], + ['ir_5fairwell_2ecpp_411',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], + ['ir_5faiwa_2ecpp_412',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], + ['ir_5famcor_2ecpp_413',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], + ['ir_5famcor_2eh_414',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], + ['ir_5fargo_2ecpp_415',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], + ['ir_5fargo_2eh_416',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], + ['ir_5fcarrier_2ecpp_417',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], + ['ir_5fcarrier_2eh_418',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], + ['ir_5fcoolix_2ecpp_419',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], + ['ir_5fcoolix_2eh_420',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], + ['ir_5fcorona_2ecpp_421',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], + ['ir_5fcorona_2eh_422',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], + ['ir_5fdaikin_2ecpp_423',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], + ['ir_5fdaikin_2eh_424',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], + ['ir_5fdelonghi_2ecpp_425',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], + ['ir_5fdelonghi_2eh_426',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], + ['ir_5fdenon_2ecpp_427',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], + ['ir_5fdish_2ecpp_428',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], + ['ir_5fdoshisha_2ecpp_429',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], + ['ir_5felectra_2ecpp_430',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], + ['ir_5felectra_2eh_431',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], + ['ir_5fepson_2ecpp_432',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], + ['ir_5ffujitsu_2ecpp_433',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], + ['ir_5ffujitsu_2eh_434',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], + ['ir_5fgicable_2ecpp_435',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], + ['ir_5fglobalcache_2ecpp_436',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], + ['ir_5fgoodweather_2ecpp_437',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], + ['ir_5fgoodweather_2eh_438',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], + ['ir_5fgree_2ecpp_439',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], + ['ir_5fgree_2eh_440',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], + ['ir_5fhaier_2ecpp_441',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], + ['ir_5fhaier_2eh_442',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], + ['ir_5fhitachi_2ecpp_443',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], + ['ir_5fhitachi_2eh_444',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], + ['ir_5finax_2ecpp_445',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], + ['ir_5fjvc_2ecpp_446',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], + ['ir_5fkelvinator_2ecpp_447',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], + ['ir_5fkelvinator_2eh_448',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], + ['ir_5flasertag_2ecpp_449',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], + ['ir_5flego_2ecpp_450',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], + ['ir_5flg_2ecpp_451',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], + ['ir_5flg_2eh_452',['ir_LG.h',['../ir__LG_8h.html',1,'']]], + ['ir_5flutron_2ecpp_453',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], + ['ir_5fmagiquest_2ecpp_454',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], + ['ir_5fmagiquest_2eh_455',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], + ['ir_5fmidea_2ecpp_456',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], + ['ir_5fmidea_2eh_457',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], + ['ir_5fmitsubishi_2ecpp_458',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], + ['ir_5fmitsubishi_2eh_459',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], + ['ir_5fmitsubishiheavy_2ecpp_460',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], + ['ir_5fmitsubishiheavy_2eh_461',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], + ['ir_5fmultibrackets_2ecpp_462',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], + ['ir_5fmwm_2ecpp_463',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], + ['ir_5fnec_2ecpp_464',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], + ['ir_5fnec_2eh_465',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], + ['ir_5fneoclima_2ecpp_466',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], + ['ir_5fneoclima_2eh_467',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], + ['ir_5fnikai_2ecpp_468',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], + ['ir_5fpanasonic_2ecpp_469',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], + ['ir_5fpanasonic_2eh_470',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], + ['ir_5fpioneer_2ecpp_471',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], + ['ir_5fpronto_2ecpp_472',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], + ['ir_5frc5_5frc6_2ecpp_473',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], + ['ir_5frcmm_2ecpp_474',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], + ['ir_5fsamsung_2ecpp_475',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], + ['ir_5fsamsung_2eh_476',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], + ['ir_5fsanyo_2ecpp_477',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], + ['ir_5fsharp_2ecpp_478',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], + ['ir_5fsharp_2eh_479',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], + ['ir_5fsherwood_2ecpp_480',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], + ['ir_5fsony_2ecpp_481',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], + ['ir_5fsymphony_2ecpp_482',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], + ['ir_5ftcl_2ecpp_483',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], + ['ir_5ftcl_2eh_484',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], + ['ir_5fteco_2ecpp_485',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], + ['ir_5fteco_2eh_486',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], + ['ir_5ftoshiba_2ecpp_487',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], + ['ir_5ftoshiba_2eh_488',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], + ['ir_5ftrotec_2ecpp_489',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], + ['ir_5ftrotec_2eh_490',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], + ['ir_5fvestel_2ecpp_491',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], + ['ir_5fvestel_2eh_492',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], + ['ir_5fwhirlpool_2ecpp_493',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], + ['ir_5fwhirlpool_2eh_494',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], + ['ir_5fwhynter_2ecpp_495',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], + ['ir_5fzepeal_2ecpp_496',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], + ['irac_497',['IRac',['../classIRac.html',1,'IRac'],['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac::IRac()']]], + ['irac_2ecpp_498',['IRac.cpp',['../IRac_8cpp.html',1,'']]], + ['irac_2eh_499',['IRac.h',['../IRac_8h.html',1,'']]], + ['iracutils_500',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], + ['iramcorac_501',['IRAmcorAc',['../classIRAmcorAc.html',1,'IRAmcorAc'],['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc::IRAmcorAc()']]], + ['irargoac_502',['IRArgoAC',['../classIRArgoAC.html',1,'IRArgoAC'],['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC::IRArgoAC()']]], + ['ircarrierac64_503',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'IRCarrierAc64'],['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64::IRCarrierAc64()']]], + ['ircoolixac_504',['IRCoolixAC',['../classIRCoolixAC.html',1,'IRCoolixAC'],['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC::IRCoolixAC()']]], + ['ircoronaac_505',['IRCoronaAc',['../classIRCoronaAc.html',1,'IRCoronaAc'],['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc::IRCoronaAc()']]], + ['irdaikin128_506',['IRDaikin128',['../classIRDaikin128.html',1,'IRDaikin128'],['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128::IRDaikin128()']]], + ['irdaikin152_507',['IRDaikin152',['../classIRDaikin152.html',1,'IRDaikin152'],['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152::IRDaikin152()']]], + ['irdaikin160_508',['IRDaikin160',['../classIRDaikin160.html',1,'IRDaikin160'],['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160::IRDaikin160()']]], + ['irdaikin176_509',['IRDaikin176',['../classIRDaikin176.html',1,'IRDaikin176'],['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176::IRDaikin176()']]], + ['irdaikin2_510',['IRDaikin2',['../classIRDaikin2.html',1,'IRDaikin2'],['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2::IRDaikin2()']]], + ['irdaikin216_511',['IRDaikin216',['../classIRDaikin216.html',1,'IRDaikin216'],['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216::IRDaikin216()']]], + ['irdaikin64_512',['IRDaikin64',['../classIRDaikin64.html',1,'IRDaikin64'],['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64::IRDaikin64()']]], + ['irdaikinesp_513',['IRDaikinESP',['../classIRDaikinESP.html',1,'IRDaikinESP'],['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP::IRDaikinESP()']]], + ['irdelonghiac_514',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'IRDelonghiAc'],['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc::IRDelonghiAc()']]], + ['irelectraac_515',['IRElectraAc',['../classIRElectraAc.html',1,'IRElectraAc'],['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc::IRElectraAc()']]], + ['irfujitsuac_516',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'IRFujitsuAC'],['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC::IRFujitsuAC()']]], + ['irgoodweatherac_517',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'IRGoodweatherAc'],['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc::IRGoodweatherAc()']]], + ['irgreeac_518',['IRGreeAC',['../classIRGreeAC.html',1,'IRGreeAC'],['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC::IRGreeAC()']]], + ['irhaierac_519',['IRHaierAC',['../classIRHaierAC.html',1,'IRHaierAC'],['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC::IRHaierAC()']]], + ['irhaieracyrw02_520',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'IRHaierACYRW02'],['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02::IRHaierACYRW02()']]], + ['irhitachiac_521',['IRHitachiAc',['../classIRHitachiAc.html',1,'IRHitachiAc'],['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc::IRHitachiAc()']]], + ['irhitachiac1_522',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'IRHitachiAc1'],['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1::IRHitachiAc1()']]], + ['irhitachiac3_523',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'IRHitachiAc3'],['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3::IRHitachiAc3()']]], + ['irhitachiac344_524',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'IRHitachiAc344'],['../classIRHitachiAc424.html#a3c885313a79bf8c02bc5eb9f7d80088b',1,'IRHitachiAc424::IRHitachiAc344()'],['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344::IRHitachiAc344()']]], + ['irhitachiac424_525',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'IRHitachiAc424'],['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424::IRHitachiAc424()']]], + ['irkelvinatorac_526',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'IRKelvinatorAC'],['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC::IRKelvinatorAC()']]], + ['irlgac_527',['IRLgAc',['../classIRLgAc.html',1,'IRLgAc'],['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc::IRLgAc()']]], + ['irmideaac_528',['IRMideaAC',['../classIRMideaAC.html',1,'IRMideaAC'],['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC::IRMideaAC()']]], + ['irmitsubishi112_529',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'IRMitsubishi112'],['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112::IRMitsubishi112()']]], + ['irmitsubishi136_530',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'IRMitsubishi136'],['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136::IRMitsubishi136()']]], + ['irmitsubishiac_531',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'IRMitsubishiAC'],['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC::IRMitsubishiAC()']]], + ['irmitsubishiheavy152ac_532',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'IRMitsubishiHeavy152Ac'],['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac()']]], + ['irmitsubishiheavy88ac_533',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'IRMitsubishiHeavy88Ac'],['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac()']]], + ['irneoclimaac_534',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'IRNeoclimaAc'],['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc::IRNeoclimaAc()']]], + ['irpanasonicac_535',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'IRPanasonicAc'],['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc::IRPanasonicAc()']]], + ['irparams_536',['irparams',['../IRrecv_8cpp.html#a5620be27a7445f25d43dbe3432ed6fd1',1,'IRrecv.cpp']]], + ['irparams_5fsave_537',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv::irparams_save()'],['../IRrecv_8cpp.html#a96e84ae171529ee954c53e2e938dd998',1,'irparams_save(): IRrecv.cpp']]], + ['irparams_5ft_538',['irparams_t',['../structirparams__t.html',1,'']]], + ['irpin_539',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]], + ['irrecv_540',['IRrecv',['../classIRrecv.html',1,'IRrecv'],['../classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)'],['../classIRrecv.html#a3bb1bcc1c1a3184294dd35c8f6f758b1',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)']]], + ['irrecv_2ecpp_541',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], + ['irrecv_2eh_542',['IRrecv.h',['../IRrecv_8h.html',1,'']]], + ['irremote_5fmux_543',['irremote_mux',['../IRrecv_8cpp.html#ad2612f65707186ef7df0179d3636b4ea',1,'IRrecv.cpp']]], + ['irremoteesp8266_2eh_544',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], + ['irsamsungac_545',['IRSamsungAc',['../classIRSamsungAc.html',1,'IRSamsungAc'],['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc::IRSamsungAc()']]], + ['irsend_546',['IRsend',['../classIRsend.html',1,'IRsend'],['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend::IRsend()']]], + ['irsend_2ecpp_547',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], + ['irsend_2eh_548',['IRsend.h',['../IRsend_8h.html',1,'']]], + ['irsharpac_549',['IRSharpAc',['../classIRSharpAc.html',1,'IRSharpAc'],['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc::IRSharpAc()']]], + ['irtcl112ac_550',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'IRTcl112Ac'],['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac::IRTcl112Ac()']]], + ['irtecoac_551',['IRTecoAc',['../classIRTecoAc.html',1,'IRTecoAc'],['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc::IRTecoAc()']]], + ['irtext_2ecpp_552',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], + ['irtext_2eh_553',['IRtext.h',['../IRtext_8h.html',1,'']]], + ['irtimer_554',['IRtimer',['../classIRtimer.html',1,'IRtimer'],['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer::IRtimer()']]], + ['irtimer_2ecpp_555',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], + ['irtimer_2eh_556',['IRtimer.h',['../IRtimer_8h.html',1,'']]], + ['irtoshibaac_557',['IRToshibaAC',['../classIRToshibaAC.html',1,'IRToshibaAC'],['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC::IRToshibaAC()']]], + ['irtrotecesp_558',['IRTrotecESP',['../classIRTrotecESP.html',1,'IRTrotecESP'],['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP::IRTrotecESP()']]], + ['irutils_559',['irutils',['../namespaceirutils.html',1,'']]], + ['irutils_2ecpp_560',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], + ['irutils_2eh_561',['IRutils.h',['../IRutils_8h.html',1,'']]], + ['irvestelac_562',['IRVestelAc',['../classIRVestelAc.html',1,'IRVestelAc'],['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc::IRVestelAc()']]], + ['irwhirlpoolac_563',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'IRWhirlpoolAc'],['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc::IRWhirlpoolAc()']]], + ['isofftimeractive_564',['isOffTimerActive',['../classIRVestelAc.html#aa756171e82ed1b43593b81aa3a63b812',1,'IRVestelAc']]], + ['isofftimerenabled_565',['isOffTimerEnabled',['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a1bc1366524cf3c7fb426e908a166801f',1,'IRWhirlpoolAc::isOffTimerEnabled()']]], + ['isontimeractive_566',['isOnTimerActive',['../classIRVestelAc.html#a67f0e970af50fcf6e01e4cac85c5862a',1,'IRVestelAc']]], + ['isontimerenabled_567',['isOnTimerEnabled',['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#aff1b8c2d063b376725a5a77745f6be3a',1,'IRWhirlpoolAc::isOnTimerEnabled()']]], + ['ispowerspecial_568',['isPowerSpecial',['../classIRSharpAc.html#a57072f2458897ffb9184769aca10b944',1,'IRSharpAc']]], + ['isprotocolsupported_569',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]], + ['isspecialstate_570',['isSpecialState',['../classIRCoolixAC.html#a51bde954328ca5887a8353ba5562b3db',1,'IRCoolixAC']]], + ['isswingvtoggle_571',['isSwingVToggle',['../classIRMideaAC.html#a848076f02a38a32c691a4617586862cc',1,'IRMideaAC']]], + ['istimecommand_572',['isTimeCommand',['../classIRVestelAc.html#ae811a07c1a8d82e7068c39b9ca73aaf1',1,'IRVestelAc']]], + ['istimeractive_573',['isTimerActive',['../classIRVestelAc.html#a160b73df8e1eda984f9bfbff3df7fa63',1,'IRVestelAc']]], + ['istimerenabled_574',['isTimerEnabled',['../classIRWhirlpoolAc.html#a5a713ffed99ab3450257d83e2d6e15ee',1,'IRWhirlpoolAc']]], + ['isvalidlgac_575',['isValidLgAc',['../classIRLgAc.html#a5984041eb12603ac1a277c28b355322a',1,'IRLgAc']]], + ['it_2dit_2eh_576',['it-IT.h',['../it-IT_8h.html',1,'']]], + ['internationalisation_20_28i18n_29_20_26_20locale_20files_577',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.html new file mode 100644 index 000000000..f2f3d3a38 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.js new file mode 100644 index 000000000..7ee51c41b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jvc_578',['JVC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b6f507fb4bbd70ee70be4e2e0b0371d',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.html new file mode 100644 index 000000000..14f34036c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.js new file mode 100644 index 000000000..600985f6a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_b.js @@ -0,0 +1,2560 @@ +var searchData= +[ + ['k3dstr_579',['k3DStr',['../IRtext_8cpp.html#aedbfd5e861447c2cde9f7bb6aade1370',1,'k3DStr(): IRtext.cpp'],['../IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d',1,'k3DStr(): IRtext.cpp']]], + ['k6thsensestr_580',['k6thSenseStr',['../IRtext_8cpp.html#ad0bfc24932f22a599c7e7bf04fb57b10',1,'k6thSenseStr(): IRtext.cpp'],['../IRtext_8h.html#a7425119d393b134c4659db9d35691e35',1,'k6thSenseStr(): IRtext.cpp']]], + ['k8cheatstr_581',['k8CHeatStr',['../IRtext_8cpp.html#ac6ab822edcfe7768cd1a8b0426a1bd59',1,'k8CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8',1,'k8CHeatStr(): IRtext.cpp']]], + ['kairflowstr_582',['kAirFlowStr',['../IRtext_8cpp.html#a7ecf1c6454bbf9963ca85a2bd7d4a34a',1,'kAirFlowStr(): IRtext.cpp'],['../IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180',1,'kAirFlowStr(): IRtext.cpp']]], + ['kairwellbits_583',['kAirwellBits',['../IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f',1,'IRremoteESP8266.h']]], + ['kairwellfootermark_584',['kAirwellFooterMark',['../ir__Airwell_8cpp.html#a2f41c6fe12eb5b3369ffb67fc6333431',1,'ir_Airwell.cpp']]], + ['kairwellhalfclockperiod_585',['kAirwellHalfClockPeriod',['../ir__Airwell_8cpp.html#a955f70631a1bc9be8453ccc9fbb3ecfc',1,'ir_Airwell.cpp']]], + ['kairwellhdrmark_586',['kAirwellHdrMark',['../ir__Airwell_8cpp.html#ad0c7b6c28df61b706eef2ec05506d8c2',1,'ir_Airwell.cpp']]], + ['kairwellhdrspace_587',['kAirwellHdrSpace',['../ir__Airwell_8cpp.html#ad7e80d679eaa5742f261619cc1115567',1,'ir_Airwell.cpp']]], + ['kairwellminrepeats_588',['kAirwellMinRepeats',['../IRremoteESP8266_8h.html#a669217ae5aa0baa159f7452f53551875',1,'IRremoteESP8266.h']]], + ['kairwelloverhead_589',['kAirwellOverhead',['../ir__Airwell_8cpp.html#a8365fb4b254f5eeb6fed59cdc627fead',1,'ir_Airwell.cpp']]], + ['kaiwarct501bits_590',['kAiwaRcT501Bits',['../IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6',1,'IRremoteESP8266.h']]], + ['kaiwarct501minrepeats_591',['kAiwaRcT501MinRepeats',['../IRremoteESP8266_8h.html#ad796714d955b6cc8e207b03058eae5a3',1,'IRremoteESP8266.h']]], + ['kaiwarct501postbits_592',['kAiwaRcT501PostBits',['../ir__Aiwa_8cpp.html#a1ad2ad119febec79cb20bf2356ae4dd4',1,'ir_Aiwa.cpp']]], + ['kaiwarct501postdata_593',['kAiwaRcT501PostData',['../ir__Aiwa_8cpp.html#a5c8aa67edc9ceed9dc398f878930b1cb',1,'ir_Aiwa.cpp']]], + ['kaiwarct501prebits_594',['kAiwaRcT501PreBits',['../ir__Aiwa_8cpp.html#a614f30df204126f234ce1d256406f075',1,'ir_Aiwa.cpp']]], + ['kaiwarct501predata_595',['kAiwaRcT501PreData',['../ir__Aiwa_8cpp.html#a9aafbd2938553c9b97dac6f4e3edee6e',1,'ir_Aiwa.cpp']]], + ['kallprotocolnamesstr_596',['kAllProtocolNamesStr',['../IRtext_8cpp.html#a3ef36cf85e44181ecc4d11085b7abed6',1,'kAllProtocolNamesStr(): IRtext.cpp'],['../IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775',1,'kAllProtocolNamesStr(): IRtext.cpp']]], + ['kalokabits_597',['kAlokaBits',['../IRremoteESP8266_8h.html#a864918ca63a5fe7345688a72d61ddf23',1,'IRremoteESP8266.h']]], + ['kalokaledblue_598',['kAlokaLedBlue',['../ir__NEC_8h.html#a49908cff59d8e7a4926638c74b796c61',1,'ir_NEC.h']]], + ['kalokaledgreen_599',['kAlokaLedGreen',['../ir__NEC_8h.html#aa6c6afc878f4b2a8d4b9349bf6766fb6',1,'ir_NEC.h']]], + ['kalokaledlightgreen_600',['kAlokaLedLightGreen',['../ir__NEC_8h.html#ab2daa6b17fd2d5e30fc47105e4c3c6b6',1,'ir_NEC.h']]], + ['kalokaledmidblue_601',['kAlokaLedMidBlue',['../ir__NEC_8h.html#a47d88027186cd96216bea935ca93d7bc',1,'ir_NEC.h']]], + ['kalokaledorange_602',['kAlokaLedOrange',['../ir__NEC_8h.html#a40f8ae5d6ec8f6aa887c73f032ce03bb',1,'ir_NEC.h']]], + ['kalokaledpink_603',['kAlokaLedPink',['../ir__NEC_8h.html#a53cf14e43062b82259e8d171a992ceff',1,'ir_NEC.h']]], + ['kalokaledpinkred_604',['kAlokaLedPinkRed',['../ir__NEC_8h.html#a20ef8a4a844577849b4b3bc7a86fe352',1,'ir_NEC.h']]], + ['kalokaledrainbow_605',['kAlokaLedRainbow',['../ir__NEC_8h.html#a724ce8d8c71c07a019ed2ddfba269151',1,'ir_NEC.h']]], + ['kalokaledred_606',['kAlokaLedRed',['../ir__NEC_8h.html#ade8f47e4607be919ca05b6dd6ed23ae9',1,'ir_NEC.h']]], + ['kalokaledtreegrow_607',['kAlokaLedTreeGrow',['../ir__NEC_8h.html#a5ecb76db25229f9f05044e54239144ee',1,'ir_NEC.h']]], + ['kalokaledwhite_608',['kAlokaLedWhite',['../ir__NEC_8h.html#a0c0b35e9d905de0b299e38e5807f363e',1,'ir_NEC.h']]], + ['kalokaledyellow_609',['kAlokaLedYellow',['../ir__NEC_8h.html#a1853a0e8856b8af97f458a180c41d6d5',1,'ir_NEC.h']]], + ['kalokanightfade_610',['kAlokaNightFade',['../ir__NEC_8h.html#adb8489faf42032a38187759b5f1037a1',1,'ir_NEC.h']]], + ['kalokanighttimer_611',['kAlokaNightTimer',['../ir__NEC_8h.html#a1b48b8bbd71fbe3728487f36123f4e4b',1,'ir_NEC.h']]], + ['kalokapower_612',['kAlokaPower',['../ir__NEC_8h.html#a147ecbccf8f11976f65b3f374b6ab2d0',1,'ir_NEC.h']]], + ['kamcorauto_613',['kAmcorAuto',['../ir__Amcor_8h.html#a9c02a27d5ed80963ff3b1ff32fc261c5',1,'ir_Amcor.h']]], + ['kamcorbits_614',['kAmcorBits',['../IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db',1,'IRremoteESP8266.h']]], + ['kamcorchecksumbyte_615',['kAmcorChecksumByte',['../ir__Amcor_8h.html#a6c60b38dd5b08d5787e346a55dfe0111',1,'ir_Amcor.h']]], + ['kamcorcool_616',['kAmcorCool',['../ir__Amcor_8h.html#a221c452a3323bd4d39a6084f84ecefbd',1,'ir_Amcor.h']]], + ['kamcordefaultrepeat_617',['kAmcorDefaultRepeat',['../IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c',1,'IRremoteESP8266.h']]], + ['kamcordry_618',['kAmcorDry',['../ir__Amcor_8h.html#a4d285053d14cf85d0c17e738c53538cd',1,'ir_Amcor.h']]], + ['kamcorfan_619',['kAmcorFan',['../ir__Amcor_8h.html#a5fa0c6e3a73c94fc419ff8d1aa1423c2',1,'ir_Amcor.h']]], + ['kamcorfanauto_620',['kAmcorFanAuto',['../ir__Amcor_8h.html#a3199dbace6444ed6ca7ff2e55a8a3a24',1,'ir_Amcor.h']]], + ['kamcorfanmax_621',['kAmcorFanMax',['../ir__Amcor_8h.html#a08ea054d4121220ba758a0e0cacef8ca',1,'ir_Amcor.h']]], + ['kamcorfanmed_622',['kAmcorFanMed',['../ir__Amcor_8h.html#a9ef019a27cf0724ff1f1ff39e06c0c87',1,'ir_Amcor.h']]], + ['kamcorfanmin_623',['kAmcorFanMin',['../ir__Amcor_8h.html#a0276f72dc5b39557850838c8c70fd157',1,'ir_Amcor.h']]], + ['kamcorfanoffset_624',['kAmcorFanOffset',['../ir__Amcor_8h.html#aaa3beed08599db5e155b3b54a3fc60bd',1,'ir_Amcor.h']]], + ['kamcorfansize_625',['kAmcorFanSize',['../ir__Amcor_8h.html#a4a6d1ad01cd89d8064efdd29311948b7',1,'ir_Amcor.h']]], + ['kamcorfootermark_626',['kAmcorFooterMark',['../ir__Amcor_8cpp.html#a3f877b05b07810ff43712dd4412af4f5',1,'ir_Amcor.cpp']]], + ['kamcorgap_627',['kAmcorGap',['../ir__Amcor_8cpp.html#a090f83ec3d4f3fd10baa16bf512dca23',1,'ir_Amcor.cpp']]], + ['kamcorhdrmark_628',['kAmcorHdrMark',['../ir__Amcor_8cpp.html#ab528f545e9af4ffb0f13d5674cfd1589',1,'ir_Amcor.cpp']]], + ['kamcorhdrspace_629',['kAmcorHdrSpace',['../ir__Amcor_8cpp.html#ae0e00c60c4220d27ef7051b45f2ae8b5',1,'ir_Amcor.cpp']]], + ['kamcorheat_630',['kAmcorHeat',['../ir__Amcor_8h.html#a9467539574a0030d166fac79684216f8',1,'ir_Amcor.h']]], + ['kamcormax_631',['kAmcorMax',['../ir__Amcor_8h.html#afac44479dc50e3885e474d2cf8d1f878',1,'ir_Amcor.h']]], + ['kamcormaxoffset_632',['kAmcorMaxOffset',['../ir__Amcor_8h.html#a2740428d3e431ff7b04e85ec73009660',1,'ir_Amcor.h']]], + ['kamcormaxsize_633',['kAmcorMaxSize',['../ir__Amcor_8h.html#a01d5ae3a2abe48f35971ad5373230ff8',1,'ir_Amcor.h']]], + ['kamcormaxtemp_634',['kAmcorMaxTemp',['../ir__Amcor_8h.html#a6460abc4e2b44e4ef3f680c7e195c019',1,'ir_Amcor.h']]], + ['kamcormintemp_635',['kAmcorMinTemp',['../ir__Amcor_8h.html#a2d952bf3f43cb55253a89db1bcc0b568',1,'ir_Amcor.h']]], + ['kamcormodefanbyte_636',['kAmcorModeFanByte',['../ir__Amcor_8h.html#a077021dbba23d1727caf1fe037e5bd88',1,'ir_Amcor.h']]], + ['kamcormodeoffset_637',['kAmcorModeOffset',['../ir__Amcor_8h.html#a1aebade414c6d493d5fd1ae8d9b4f626',1,'ir_Amcor.h']]], + ['kamcormodesize_638',['kAmcorModeSize',['../ir__Amcor_8h.html#aa306915bcc7fcf7209584d84dc5d1aa4',1,'ir_Amcor.h']]], + ['kamcoronemark_639',['kAmcorOneMark',['../ir__Amcor_8cpp.html#a402a3643dc6b85813eb5f28d742c4e7f',1,'ir_Amcor.cpp']]], + ['kamcoronespace_640',['kAmcorOneSpace',['../ir__Amcor_8cpp.html#a51163573fdc7b8017c7311f0e4011b1b',1,'ir_Amcor.cpp']]], + ['kamcorpowerbyte_641',['kAmcorPowerByte',['../ir__Amcor_8h.html#a47e85c75d262d9091f27c7ddca141ab7',1,'ir_Amcor.h']]], + ['kamcorpoweroff_642',['kAmcorPowerOff',['../ir__Amcor_8h.html#aeccd11f34ca0a93f682ab6c144f07fb7',1,'ir_Amcor.h']]], + ['kamcorpoweroffset_643',['kAmcorPowerOffset',['../ir__Amcor_8h.html#aeebaa4acca33937e47df058885d3167f',1,'ir_Amcor.h']]], + ['kamcorpoweron_644',['kAmcorPowerOn',['../ir__Amcor_8h.html#adf21c2364e64c818ba5379e78cae9d5c',1,'ir_Amcor.h']]], + ['kamcorpowersize_645',['kAmcorPowerSize',['../ir__Amcor_8h.html#a6a4e3568f341a7a60bdf7a4dc56fd482',1,'ir_Amcor.h']]], + ['kamcorspecialbyte_646',['kAmcorSpecialByte',['../ir__Amcor_8h.html#aa73133f5a673eebd7e8ca99155138cb7',1,'ir_Amcor.h']]], + ['kamcorstatelength_647',['kAmcorStateLength',['../IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7',1,'IRremoteESP8266.h']]], + ['kamcortempbyte_648',['kAmcorTempByte',['../ir__Amcor_8h.html#a9d352d1da6a93fc990786662fb3698de',1,'ir_Amcor.h']]], + ['kamcortempoffset_649',['kAmcorTempOffset',['../ir__Amcor_8h.html#ae7113af741d2edfebf0fc4d4cc181b2d',1,'ir_Amcor.h']]], + ['kamcortempsize_650',['kAmcorTempSize',['../ir__Amcor_8h.html#a4c5fb23ff11e99a2b860553b145e33bb',1,'ir_Amcor.h']]], + ['kamcortolerance_651',['kAmcorTolerance',['../ir__Amcor_8cpp.html#ad7a4b72f06c5e71002a44c3e4d483bef',1,'ir_Amcor.cpp']]], + ['kamcorventoffset_652',['kAmcorVentOffset',['../ir__Amcor_8h.html#aa231f74cdba0fe6813c2d6c77268d300',1,'ir_Amcor.h']]], + ['kamcorventon_653',['kAmcorVentOn',['../ir__Amcor_8h.html#a0774a9180ab233da61c77c717be02521',1,'ir_Amcor.h']]], + ['kamcorventsize_654',['kAmcorVentSize',['../ir__Amcor_8h.html#a55cd6972c20ddc0fa24ee8f42b50e46f',1,'ir_Amcor.h']]], + ['kamcorzeromark_655',['kAmcorZeroMark',['../ir__Amcor_8cpp.html#a6f16bcf81087461a4e196a2c670f29ee',1,'ir_Amcor.cpp']]], + ['kamcorzerospace_656',['kAmcorZeroSpace',['../ir__Amcor_8cpp.html#a0cbb87d1a5bb594cf428c79cd96c8733',1,'ir_Amcor.cpp']]], + ['kargoauto_657',['kArgoAuto',['../ir__Argo_8h.html#a527fa5776cb58f88013de5062c620b12',1,'ir_Argo.h']]], + ['kargobitmark_658',['kArgoBitMark',['../ir__Argo_8cpp.html#aa15902c11e3a7d3cbb25504764b163c1',1,'ir_Argo.cpp']]], + ['kargobits_659',['kArgoBits',['../IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2',1,'IRremoteESP8266.h']]], + ['kargocool_660',['kArgoCool',['../ir__Argo_8h.html#ab331356887b5f8f04f5ffdf9031fde71',1,'ir_Argo.h']]], + ['kargodefaultrepeat_661',['kArgoDefaultRepeat',['../IRremoteESP8266_8h.html#a9a2190c526885753c676db666e48b764',1,'IRremoteESP8266.h']]], + ['kargodry_662',['kArgoDry',['../ir__Argo_8h.html#ae119706139f65f730db477d060a7bc5d',1,'ir_Argo.h']]], + ['kargofan1_663',['kArgoFan1',['../ir__Argo_8h.html#abfbde2676afb8b027a26a49d947a1396',1,'ir_Argo.h']]], + ['kargofan2_664',['kArgoFan2',['../ir__Argo_8h.html#a7b544220198b6aa311da78bc02b0e211',1,'ir_Argo.h']]], + ['kargofan3_665',['kArgoFan3',['../ir__Argo_8h.html#aa34af62e7134bbca2028d74ba7dfed4e',1,'ir_Argo.h']]], + ['kargofanauto_666',['kArgoFanAuto',['../ir__Argo_8h.html#a3b17c0ba868b439135e6e016452f1623',1,'ir_Argo.h']]], + ['kargofanoffset_667',['kArgoFanOffset',['../ir__Argo_8h.html#ab652e466dfce6bfabab04f70e23e6bc9',1,'ir_Argo.h']]], + ['kargofansize_668',['kArgoFanSize',['../ir__Argo_8h.html#a032348f63ce0e391120161f2547ab280',1,'ir_Argo.h']]], + ['kargoflap1_669',['kArgoFlap1',['../ir__Argo_8h.html#a477dac25a687b9d875cf9e94623d5e84',1,'ir_Argo.h']]], + ['kargoflap2_670',['kArgoFlap2',['../ir__Argo_8h.html#aa72401adcdd23c12d36f98370c605ef6',1,'ir_Argo.h']]], + ['kargoflap3_671',['kArgoFlap3',['../ir__Argo_8h.html#ab18e2931823d631b533c14f417ed4adb',1,'ir_Argo.h']]], + ['kargoflap4_672',['kArgoFlap4',['../ir__Argo_8h.html#a59204076030de56e1160fc599879b142',1,'ir_Argo.h']]], + ['kargoflap5_673',['kArgoFlap5',['../ir__Argo_8h.html#a5a3f4c1b1303b177a924c61dfdcce3e6',1,'ir_Argo.h']]], + ['kargoflap6_674',['kArgoFlap6',['../ir__Argo_8h.html#ac11d6b575b4abc7ac5aec9006ac41634',1,'ir_Argo.h']]], + ['kargoflapauto_675',['kArgoFlapAuto',['../ir__Argo_8h.html#af7f4a97011f94e4bf453e7cfd01fd780',1,'ir_Argo.h']]], + ['kargoflapfull_676',['kArgoFlapFull',['../ir__Argo_8h.html#a8befe8d8b6826fc79176b66eea8352b7',1,'ir_Argo.h']]], + ['kargogap_677',['kArgoGap',['../ir__Argo_8cpp.html#a1a28fc063dea8beacbaac39cf8e9b81b',1,'ir_Argo.cpp']]], + ['kargohdrmark_678',['kArgoHdrMark',['../ir__Argo_8cpp.html#a5c25d5a07e397fe86378021e7c3f2980',1,'ir_Argo.cpp']]], + ['kargohdrspace_679',['kArgoHdrSpace',['../ir__Argo_8cpp.html#a10e8a2ac55f8b123093cd92757d1603d',1,'ir_Argo.cpp']]], + ['kargoheat_680',['kArgoHeat',['../ir__Argo_8h.html#a431536a03ef985b53a4147df5a043b21',1,'ir_Argo.h']]], + ['kargoheatauto_681',['kArgoHeatAuto',['../ir__Argo_8h.html#a154f8b3e0d600d87b2822027bf0c6619',1,'ir_Argo.h']]], + ['kargoheatbit_682',['kArgoHeatBit',['../ir__Argo_8h.html#ada4b42336f3d423e3ef1060605c7f7f1',1,'ir_Argo.h']]], + ['kargoheatblink_683',['kArgoHeatBlink',['../ir__Argo_8h.html#ad29933c939f9364399dfa0f7eaa8cce6',1,'ir_Argo.h']]], + ['kargoifeelbitoffset_684',['kArgoIFeelBitOffset',['../ir__Argo_8h.html#a0dc059f228415b3cc7a22b50fff71e9c',1,'ir_Argo.h']]], + ['kargomaxbitoffset_685',['kArgoMaxBitOffset',['../ir__Argo_8h.html#af487de7857781edbe368a2ba724fc7c7',1,'ir_Argo.h']]], + ['kargomaxroomtemp_686',['kArgoMaxRoomTemp',['../ir__Argo_8h.html#a27427d4479dc126e8782985008d4dd7d',1,'ir_Argo.h']]], + ['kargomaxtemp_687',['kArgoMaxTemp',['../ir__Argo_8h.html#a2409d2f472fb950c070fa5c0a07f69ce',1,'ir_Argo.h']]], + ['kargomintemp_688',['kArgoMinTemp',['../ir__Argo_8h.html#a4bc4e4cfe12af43730cb128f4043ad11',1,'ir_Argo.h']]], + ['kargomodeoffset_689',['kArgoModeOffset',['../ir__Argo_8h.html#a127045d26371fa051310208b0a3d0316',1,'ir_Argo.h']]], + ['kargomodesize_690',['kArgoModeSize',['../ir__Argo_8h.html#a98e4d25798fb992200ade3dd5e53a401',1,'ir_Argo.h']]], + ['kargonightbitoffset_691',['kArgoNightBitOffset',['../ir__Argo_8h.html#a4d0f78fc9017ed0ff93c77794a411738',1,'ir_Argo.h']]], + ['kargooff_692',['kArgoOff',['../ir__Argo_8h.html#af3c6e4f7b18095179ea9e20e45e1890a',1,'ir_Argo.h']]], + ['kargoonespace_693',['kArgoOneSpace',['../ir__Argo_8cpp.html#a47131b446d160fed9c7af1886d3580e4',1,'ir_Argo.cpp']]], + ['kargopowerbitoffset_694',['kArgoPowerBitOffset',['../ir__Argo_8h.html#a26c8b660b323ac8a8f1bbf30d7f40bf7',1,'ir_Argo.h']]], + ['kargoroomtemphighoffset_695',['kArgoRoomTempHighOffset',['../ir__Argo_8h.html#abe1b434b09b0c42d0d7c90496d180aeb',1,'ir_Argo.h']]], + ['kargoroomtemphighsize_696',['kArgoRoomTempHighSize',['../ir__Argo_8h.html#a6fdcdd90f37c2f4572815b279379484d',1,'ir_Argo.h']]], + ['kargoroomtemplowoffset_697',['kArgoRoomTempLowOffset',['../ir__Argo_8h.html#a1272f85bf89b7f0326352ae7a05b2244',1,'ir_Argo.h']]], + ['kargoroomtemplowsize_698',['kArgoRoomTempLowSize',['../ir__Argo_8h.html#a2cd767383014feb1c6cdea45715e49c7',1,'ir_Argo.h']]], + ['kargostatelength_699',['kArgoStateLength',['../IRremoteESP8266_8h.html#a5f38a56eacd9964a8514cb57de287a45',1,'IRremoteESP8266.h']]], + ['kargotempdelta_700',['kArgoTempDelta',['../ir__Argo_8h.html#a7256560730a73dcaaa60cdfc8140fc0b',1,'ir_Argo.h']]], + ['kargotemphighoffset_701',['kArgoTempHighOffset',['../ir__Argo_8h.html#af06b47b51a4b837ee92a2e2774d214e3',1,'ir_Argo.h']]], + ['kargotemphighsize_702',['kArgoTempHighSize',['../ir__Argo_8h.html#af2b0c18a612c097f6356ff04ce9c78d0',1,'ir_Argo.h']]], + ['kargotemplowoffset_703',['kArgoTempLowOffset',['../ir__Argo_8h.html#a17137f6bec2d629cca04a859bb48dae8',1,'ir_Argo.h']]], + ['kargotemplowsize_704',['kArgoTempLowSize',['../ir__Argo_8h.html#aa50679112dc998ff06588d9a35ff313c',1,'ir_Argo.h']]], + ['kargozerospace_705',['kArgoZeroSpace',['../ir__Argo_8cpp.html#a5e06b6d522b35f503ca1e5db27f32ff6',1,'ir_Argo.cpp']]], + ['kauto_706',['kAuto',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()']]], + ['kautomaticstr_707',['kAutomaticStr',['../IRtext_8cpp.html#a66a32b6387a99572644e91f3299910a6',1,'kAutomaticStr(): IRtext.cpp'],['../IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea',1,'kAutomaticStr(): IRtext.cpp']]], + ['kautostr_708',['kAutoStr',['../IRtext_8cpp.html#ae8ec328761b0218d0b18479a972b1121',1,'kAutoStr(): IRtext.cpp'],['../IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9',1,'kAutoStr(): IRtext.cpp']]], + ['kbeepstr_709',['kBeepStr',['../IRtext_8cpp.html#a429f5c2f5aea162bd1568e8489aecb28',1,'kBeepStr(): IRtext.cpp'],['../IRtext_8h.html#a2e98c29968ade682d94f35e28364c878',1,'kBeepStr(): IRtext.cpp']]], + ['kbitsstr_710',['kBitsStr',['../IRtext_8cpp.html#aaabaca413c37bb6b18dc13daf5b335c1',1,'kBitsStr(): IRtext.cpp'],['../IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94',1,'kBitsStr(): IRtext.cpp']]], + ['kbottomstr_711',['kBottomStr',['../IRtext_8cpp.html#ab0bd355efc13bd278a0e33765a783cd0',1,'kBottomStr(): IRtext.cpp'],['../IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3',1,'kBottomStr(): IRtext.cpp']]], + ['kbreezestr_712',['kBreezeStr',['../IRtext_8cpp.html#ab0317e8cf720936fb02816e7827bea9e',1,'kBreezeStr(): IRtext.cpp'],['../IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d',1,'kBreezeStr(): IRtext.cpp']]], + ['kbuttonstr_713',['kButtonStr',['../IRtext_8cpp.html#a6ee11e0a45632c54e34bed14c3a971ce',1,'kButtonStr(): IRtext.cpp'],['../IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e',1,'kButtonStr(): IRtext.cpp']]], + ['kcancelstr_714',['kCancelStr',['../IRtext_8cpp.html#af79c3879bac5ca97947f16c3a6a03321',1,'kCancelStr(): IRtext.cpp'],['../IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b',1,'kCancelStr(): IRtext.cpp']]], + ['kcarrierac40bitmark_715',['kCarrierAc40BitMark',['../ir__Carrier_8cpp.html#a3f8996aa3a7b9b871bc6556f98efb345',1,'ir_Carrier.cpp']]], + ['kcarrierac40bits_716',['kCarrierAc40Bits',['../IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d',1,'IRremoteESP8266.h']]], + ['kcarrierac40gap_717',['kCarrierAc40Gap',['../ir__Carrier_8cpp.html#aa5f0d39a4e12645a6fb477efb3191384',1,'ir_Carrier.cpp']]], + ['kcarrierac40hdrmark_718',['kCarrierAc40HdrMark',['../ir__Carrier_8cpp.html#a4b77665ded6dab393779d2763bc367f0',1,'ir_Carrier.cpp']]], + ['kcarrierac40hdrspace_719',['kCarrierAc40HdrSpace',['../ir__Carrier_8cpp.html#a5ea98bc575a7ac8d7f5da937feeaeed4',1,'ir_Carrier.cpp']]], + ['kcarrierac40minrepeat_720',['kCarrierAc40MinRepeat',['../IRremoteESP8266_8h.html#a222aa743f398883a4910fbbb6d408bdc',1,'IRremoteESP8266.h']]], + ['kcarrierac40onespace_721',['kCarrierAc40OneSpace',['../ir__Carrier_8cpp.html#a79073c06820817e077c5bd8d9b8acfbd',1,'ir_Carrier.cpp']]], + ['kcarrierac40zerospace_722',['kCarrierAc40ZeroSpace',['../ir__Carrier_8cpp.html#a2ee9b60c12887983a6f4f123db6fd5e9',1,'ir_Carrier.cpp']]], + ['kcarrierac64bitmark_723',['kCarrierAc64BitMark',['../ir__Carrier_8cpp.html#ae32b2dab6a654fa293f54684da45c5c0',1,'ir_Carrier.cpp']]], + ['kcarrierac64bits_724',['kCarrierAc64Bits',['../IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a',1,'IRremoteESP8266.h']]], + ['kcarrierac64checksumoffset_725',['kCarrierAc64ChecksumOffset',['../ir__Carrier_8h.html#a3aa65474b5be8c77d498b7e83d8b8f31',1,'ir_Carrier.h']]], + ['kcarrierac64checksumsize_726',['kCarrierAc64ChecksumSize',['../ir__Carrier_8h.html#a0b446c17c4965508f335e68c786f0596',1,'ir_Carrier.h']]], + ['kcarrierac64cool_727',['kCarrierAc64Cool',['../ir__Carrier_8h.html#aa75d5965da484d09f6f4c645cdb23869',1,'ir_Carrier.h']]], + ['kcarrierac64fan_728',['kCarrierAc64Fan',['../ir__Carrier_8h.html#a57655ceea762b18e0dd96724ddf888bd',1,'ir_Carrier.h']]], + ['kcarrierac64fanauto_729',['kCarrierAc64FanAuto',['../ir__Carrier_8h.html#a12d1fb295a0d9cf407040ab544acc245',1,'ir_Carrier.h']]], + ['kcarrierac64fanhigh_730',['kCarrierAc64FanHigh',['../ir__Carrier_8h.html#a099f2e82998bd78d25cec17a4be5f230',1,'ir_Carrier.h']]], + ['kcarrierac64fanlow_731',['kCarrierAc64FanLow',['../ir__Carrier_8h.html#aaeee61e5924bdc8028c4775f96ba14d2',1,'ir_Carrier.h']]], + ['kcarrierac64fanmedium_732',['kCarrierAc64FanMedium',['../ir__Carrier_8h.html#aeb8943f8d9f2bd95a9df6500eea7cba4',1,'ir_Carrier.h']]], + ['kcarrierac64fanoffset_733',['kCarrierAc64FanOffset',['../ir__Carrier_8h.html#abbd2da4887e1c313df40506c82cba836',1,'ir_Carrier.h']]], + ['kcarrierac64fansize_734',['kCarrierAc64FanSize',['../ir__Carrier_8h.html#aebcfb795028fea2d1b4bfde9a045e672',1,'ir_Carrier.h']]], + ['kcarrierac64gap_735',['kCarrierAc64Gap',['../ir__Carrier_8cpp.html#a6f7ba77f1350126d78a23d7ba967e258',1,'ir_Carrier.cpp']]], + ['kcarrierac64hdrmark_736',['kCarrierAc64HdrMark',['../ir__Carrier_8cpp.html#a19dc2108d4490c82c03c87c625bc5f31',1,'ir_Carrier.cpp']]], + ['kcarrierac64hdrspace_737',['kCarrierAc64HdrSpace',['../ir__Carrier_8cpp.html#ad73dbf55f5ffa03d92ec699b23e8ca8d',1,'ir_Carrier.cpp']]], + ['kcarrierac64heat_738',['kCarrierAc64Heat',['../ir__Carrier_8h.html#ac261ba8bff6f103bb9043c85a6f21d58',1,'ir_Carrier.h']]], + ['kcarrierac64maxtemp_739',['kCarrierAc64MaxTemp',['../ir__Carrier_8h.html#a5653bc180a4c849b5e0b33b957255ae4',1,'ir_Carrier.h']]], + ['kcarrierac64minrepeat_740',['kCarrierAc64MinRepeat',['../IRremoteESP8266_8h.html#a8b2b3670dc74ce9fbf3c8b511422a06c',1,'IRremoteESP8266.h']]], + ['kcarrierac64mintemp_741',['kCarrierAc64MinTemp',['../ir__Carrier_8h.html#a9e7a88bf52839ecb34da1966bb8a956b',1,'ir_Carrier.h']]], + ['kcarrierac64modeoffset_742',['kCarrierAc64ModeOffset',['../ir__Carrier_8h.html#a7f2ef38df606cb00f1c859914fc6f085',1,'ir_Carrier.h']]], + ['kcarrierac64modesize_743',['kCarrierAc64ModeSize',['../ir__Carrier_8h.html#a8d28dd57b7ad6b9f4bb2ba11fa4b63f7',1,'ir_Carrier.h']]], + ['kcarrierac64offtimerenableoffset_744',['kCarrierAc64OffTimerEnableOffset',['../ir__Carrier_8h.html#a1afcf0873e42c5cda5328bfe97d97ade',1,'ir_Carrier.h']]], + ['kcarrierac64offtimeroffset_745',['kCarrierAc64OffTimerOffset',['../ir__Carrier_8h.html#a0c9189a86abe1bc41f9db34e4ab77172',1,'ir_Carrier.h']]], + ['kcarrierac64onespace_746',['kCarrierAc64OneSpace',['../ir__Carrier_8cpp.html#a58ea051d56227a4037682f5d612b4cc7',1,'ir_Carrier.cpp']]], + ['kcarrierac64ontimerenableoffset_747',['kCarrierAc64OnTimerEnableOffset',['../ir__Carrier_8h.html#a8a03bb9d7ead5116dff0b81732300b40',1,'ir_Carrier.h']]], + ['kcarrierac64ontimeroffset_748',['kCarrierAc64OnTimerOffset',['../ir__Carrier_8h.html#ad2fd8df9a5114e0fc34a3657aac61f9c',1,'ir_Carrier.h']]], + ['kcarrierac64poweroffset_749',['kCarrierAc64PowerOffset',['../ir__Carrier_8h.html#a943b94e79e98237678b66f6f4a1b6af4',1,'ir_Carrier.h']]], + ['kcarrierac64sleepoffset_750',['kCarrierAc64SleepOffset',['../ir__Carrier_8h.html#a8ae023f5e44d5c29df41ab0f5cd534a0',1,'ir_Carrier.h']]], + ['kcarrierac64swingvoffset_751',['kCarrierAc64SwingVOffset',['../ir__Carrier_8h.html#a186dcc18acb75f98370d71f4640f02ce',1,'ir_Carrier.h']]], + ['kcarrierac64tempoffset_752',['kCarrierAc64TempOffset',['../ir__Carrier_8h.html#a3d3663b7e55cae59f1b8bba5ffbb5fad',1,'ir_Carrier.h']]], + ['kcarrierac64tempsize_753',['kCarrierAc64TempSize',['../ir__Carrier_8h.html#ae9e16d5ab69b493607ce84dfbded150f',1,'ir_Carrier.h']]], + ['kcarrierac64timermax_754',['kCarrierAc64TimerMax',['../ir__Carrier_8h.html#a78a34b51e51dc3b4129f350673c9fa96',1,'ir_Carrier.h']]], + ['kcarrierac64timermin_755',['kCarrierAc64TimerMin',['../ir__Carrier_8h.html#aeebac3e61246f2e148806d4b4e8ac13e',1,'ir_Carrier.h']]], + ['kcarrierac64timersize_756',['kCarrierAc64TimerSize',['../ir__Carrier_8h.html#adced87f4aed397ea8f2bb5ac2749dce5',1,'ir_Carrier.h']]], + ['kcarrierac64zerospace_757',['kCarrierAc64ZeroSpace',['../ir__Carrier_8cpp.html#af28d4332e0f1ad19aa743b993f44cdc7',1,'ir_Carrier.cpp']]], + ['kcarrieracbitmark_758',['kCarrierAcBitMark',['../ir__Carrier_8cpp.html#af4a608f81c745734499ec1842167940b',1,'ir_Carrier.cpp']]], + ['kcarrieracbits_759',['kCarrierAcBits',['../IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b',1,'IRremoteESP8266.h']]], + ['kcarrieracfreq_760',['kCarrierAcFreq',['../ir__Carrier_8cpp.html#a795dc2d9b122bd3794fddbddef571058',1,'ir_Carrier.cpp']]], + ['kcarrieracgap_761',['kCarrierAcGap',['../ir__Carrier_8cpp.html#a00767c0b503a7fc8f0b2ddfac24a4f85',1,'ir_Carrier.cpp']]], + ['kcarrierachdrmark_762',['kCarrierAcHdrMark',['../ir__Carrier_8cpp.html#ad9a7754e77cfcfd6c6032d497bc4528d',1,'ir_Carrier.cpp']]], + ['kcarrierachdrspace_763',['kCarrierAcHdrSpace',['../ir__Carrier_8cpp.html#a8e09857e2fe15d6983ec0384c57140d4',1,'ir_Carrier.cpp']]], + ['kcarrieracminrepeat_764',['kCarrierAcMinRepeat',['../IRremoteESP8266_8h.html#a78c8a8b11179e8fd20bf09fa35f6b886',1,'IRremoteESP8266.h']]], + ['kcarrieraconespace_765',['kCarrierAcOneSpace',['../ir__Carrier_8cpp.html#ab04a214a7c2e0439384736c46ddc6c61',1,'ir_Carrier.cpp']]], + ['kcarrieraczerospace_766',['kCarrierAcZeroSpace',['../ir__Carrier_8cpp.html#a51c9c4bbd6e2927baac15dc60c1e60fa',1,'ir_Carrier.cpp']]], + ['kceilingstr_767',['kCeilingStr',['../IRtext_8cpp.html#a5258c9d80502d5a8e14bb324a394452b',1,'kCeilingStr(): IRtext.cpp'],['../IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e',1,'kCeilingStr(): IRtext.cpp']]], + ['kcelsiusstr_768',['kCelsiusStr',['../IRtext_8cpp.html#af0ad7ca76c659a17872960bcbcfbdbbf',1,'kCelsiusStr(): IRtext.cpp'],['../IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e',1,'kCelsiusStr(): IRtext.cpp']]], + ['kcentrestr_769',['kCentreStr',['../IRtext_8cpp.html#a87a4151e0361c9f75d0d5c00f9bad1ee',1,'kCentreStr(): IRtext.cpp'],['../IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228',1,'kCentreStr(): IRtext.cpp']]], + ['kchangestr_770',['kChangeStr',['../IRtext_8cpp.html#a1f6396eb9bd4327a7a2307e5724c1dd7',1,'kChangeStr(): IRtext.cpp'],['../IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae',1,'kChangeStr(): IRtext.cpp']]], + ['kcirculatestr_771',['kCirculateStr',['../IRtext_8cpp.html#a869ef1f579373ff4b5b61b1cba215680',1,'kCirculateStr(): IRtext.cpp'],['../IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578',1,'kCirculateStr(): IRtext.cpp']]], + ['kcleanstr_772',['kCleanStr',['../IRtext_8cpp.html#ad2d97c52e8df2704654fdbd0a7a0561e',1,'kCleanStr(): IRtext.cpp'],['../IRtext_8h.html#a45c17b23773e9dcded65a82577b00263',1,'kCleanStr(): IRtext.cpp']]], + ['kclockstr_773',['kClockStr',['../IRtext_8cpp.html#ad39bd469d5474159463543184cfae321',1,'kClockStr(): IRtext.cpp'],['../IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8',1,'kClockStr(): IRtext.cpp']]], + ['kcodestr_774',['kCodeStr',['../IRtext_8cpp.html#a26e4bf74871ce457f42ec839545987f4',1,'kCodeStr(): IRtext.cpp'],['../IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd',1,'kCodeStr(): IRtext.cpp']]], + ['kcolonspacestr_775',['kColonSpaceStr',['../IRtext_8cpp.html#a5d978c9ac25163a9629b7e8e2d37d25e',1,'kColonSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512',1,'kColonSpaceStr(): IRtext.cpp']]], + ['kcomfortstr_776',['kComfortStr',['../IRtext_8cpp.html#aa7f0cfdb126ff7b0f8db6033bb51f36d',1,'kComfortStr(): IRtext.cpp'],['../IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1',1,'kComfortStr(): IRtext.cpp']]], + ['kcommandstr_777',['kCommandStr',['../IRtext_8cpp.html#afd5865ea8c0f8565369dd2c4ee4622d6',1,'kCommandStr(): IRtext.cpp'],['../IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606',1,'kCommandStr(): IRtext.cpp']]], + ['kcommaspacestr_778',['kCommaSpaceStr',['../IRtext_8cpp.html#ac8a9678d4c9eeee17a9dc28624c0ab49',1,'kCommaSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3',1,'kCommaSpaceStr(): IRtext.cpp']]], + ['kcool_779',['kCool',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fab9480fe865ab6bbfb66c8308068a06c2',1,'stdAc']]], + ['kcoolixauto_780',['kCoolixAuto',['../ir__Coolix_8h.html#a73c1ef7c2c80c861256a14a9f256b125',1,'ir_Coolix.h']]], + ['kcoolixbitmark_781',['kCoolixBitMark',['../ir__Coolix_8cpp.html#acd8562a27ec6c0a6c2cf9480082e04cd',1,'ir_Coolix.cpp']]], + ['kcoolixbitmarkticks_782',['kCoolixBitMarkTicks',['../ir__Coolix_8cpp.html#aefaa206b4316a4fd921f7171295d1232',1,'ir_Coolix.cpp']]], + ['kcoolixbits_783',['kCoolixBits',['../IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9',1,'IRremoteESP8266.h']]], + ['kcoolixclean_784',['kCoolixClean',['../ir__Coolix_8h.html#a5cc9fcde4a6da54917b4d69bb352bc86',1,'ir_Coolix.h']]], + ['kcoolixcmdfan_785',['kCoolixCmdFan',['../ir__Coolix_8h.html#a7d5ff02f4a0c379322877b3dcf934c77',1,'ir_Coolix.h']]], + ['kcoolixcool_786',['kCoolixCool',['../ir__Coolix_8h.html#ae285ee4206fe45d25bb1d99b848c7e65',1,'ir_Coolix.h']]], + ['kcoolixdefaultrepeat_787',['kCoolixDefaultRepeat',['../IRremoteESP8266_8h.html#aa89410d369d71738c8cbefae6ac3b00f',1,'IRremoteESP8266.h']]], + ['kcoolixdefaultstate_788',['kCoolixDefaultState',['../ir__Coolix_8h.html#ad54ebf20658c33e5ad54fc54a513511e',1,'ir_Coolix.h']]], + ['kcoolixdry_789',['kCoolixDry',['../ir__Coolix_8h.html#a904c4135f61120e71577f6830adae689',1,'ir_Coolix.h']]], + ['kcoolixfan_790',['kCoolixFan',['../ir__Coolix_8h.html#a2e050321c994844f2ff6668ba6973ac4',1,'ir_Coolix.h']]], + ['kcoolixfanauto_791',['kCoolixFanAuto',['../ir__Coolix_8h.html#ac25d3c45ed7d7d30ff2ebf617d8265f0',1,'ir_Coolix.h']]], + ['kcoolixfanauto0_792',['kCoolixFanAuto0',['../ir__Coolix_8h.html#a38cccd1edee2c88c1b080f1d5600ead7',1,'ir_Coolix.h']]], + ['kcoolixfanfixed_793',['kCoolixFanFixed',['../ir__Coolix_8h.html#a37a3a23d8fe30df024cb844f82f90b2a',1,'ir_Coolix.h']]], + ['kcoolixfanmax_794',['kCoolixFanMax',['../ir__Coolix_8h.html#aabb349ee111467088b9a292950aba753',1,'ir_Coolix.h']]], + ['kcoolixfanmed_795',['kCoolixFanMed',['../ir__Coolix_8h.html#a2750626cda2e389df901b459805e09bd',1,'ir_Coolix.h']]], + ['kcoolixfanmin_796',['kCoolixFanMin',['../ir__Coolix_8h.html#a6c0086075cce1698c48cc30e045ab5bf',1,'ir_Coolix.h']]], + ['kcoolixfanoffset_797',['kCoolixFanOffset',['../ir__Coolix_8h.html#a1656f488974bd12db4049dfa8ff43a4e',1,'ir_Coolix.h']]], + ['kcoolixfansize_798',['kCoolixFanSize',['../ir__Coolix_8h.html#a5f4649b5b73766245bc82191cdc0e596',1,'ir_Coolix.h']]], + ['kcoolixfantempcode_799',['kCoolixFanTempCode',['../ir__Coolix_8h.html#a6d2d6f2fd8f5e9a4491623b9351efcba',1,'ir_Coolix.h']]], + ['kcoolixfanzonefollow_800',['kCoolixFanZoneFollow',['../ir__Coolix_8h.html#a5a71c6acd18b3198c7900e2de34c48a3',1,'ir_Coolix.h']]], + ['kcoolixhdrmark_801',['kCoolixHdrMark',['../ir__Coolix_8cpp.html#a746299797d958ccf116e6d1cdab3ad06',1,'ir_Coolix.cpp']]], + ['kcoolixhdrmarkticks_802',['kCoolixHdrMarkTicks',['../ir__Coolix_8cpp.html#a04d520a0fe3d773f377810174e5463a4',1,'ir_Coolix.cpp']]], + ['kcoolixhdrspace_803',['kCoolixHdrSpace',['../ir__Coolix_8cpp.html#ab7ff2a6bd99e0e6a0db3f14350cca84c',1,'ir_Coolix.cpp']]], + ['kcoolixhdrspaceticks_804',['kCoolixHdrSpaceTicks',['../ir__Coolix_8cpp.html#a58951e9800513b019ccb9f04ae55716f',1,'ir_Coolix.cpp']]], + ['kcoolixheat_805',['kCoolixHeat',['../ir__Coolix_8h.html#a234b39696f0b2fac6b37aa309082505e',1,'ir_Coolix.h']]], + ['kcoolixled_806',['kCoolixLed',['../ir__Coolix_8h.html#a68ae46e117caf0d7a3cc2ef9492495f1',1,'ir_Coolix.h']]], + ['kcoolixmingap_807',['kCoolixMinGap',['../ir__Coolix_8cpp.html#a46da2480f6850af899db74a4f2270cdc',1,'ir_Coolix.cpp']]], + ['kcoolixmingapticks_808',['kCoolixMinGapTicks',['../ir__Coolix_8cpp.html#a94f47fbf027fcb90664b302ff123f535',1,'ir_Coolix.cpp']]], + ['kcoolixmodeoffset_809',['kCoolixModeOffset',['../ir__Coolix_8h.html#acd17067177e1cc6776b7932afd9fbdb2',1,'ir_Coolix.h']]], + ['kcoolixmodesize_810',['kCoolixModeSize',['../ir__Coolix_8h.html#a69e5ee4c5eb95ca3346d9d9186a688a8',1,'ir_Coolix.h']]], + ['kcoolixoff_811',['kCoolixOff',['../ir__Coolix_8h.html#aef6f59b83a14b8505f395b2eb8d8ad39',1,'ir_Coolix.h']]], + ['kcoolixonespace_812',['kCoolixOneSpace',['../ir__Coolix_8cpp.html#a97a8439ace71584e36ab7306c3d53749',1,'ir_Coolix.cpp']]], + ['kcoolixonespaceticks_813',['kCoolixOneSpaceTicks',['../ir__Coolix_8cpp.html#a78770eaf597e4aa2ed539248ef10ec11',1,'ir_Coolix.cpp']]], + ['kcoolixprefix_814',['kCoolixPrefix',['../ir__Coolix_8h.html#a1b88ef6651189ba330d8e2847528964b',1,'ir_Coolix.h']]], + ['kcoolixsensortempignorecode_815',['kCoolixSensorTempIgnoreCode',['../ir__Coolix_8h.html#ae3aba531b0c0053424786ec4bb2be934',1,'ir_Coolix.h']]], + ['kcoolixsensortempmax_816',['kCoolixSensorTempMax',['../ir__Coolix_8h.html#a71641b1240ee439e77128165cedf899f',1,'ir_Coolix.h']]], + ['kcoolixsensortempmin_817',['kCoolixSensorTempMin',['../ir__Coolix_8h.html#a48f3f3ad79a53e0758270647db0b089c',1,'ir_Coolix.h']]], + ['kcoolixsensortempoffset_818',['kCoolixSensorTempOffset',['../ir__Coolix_8h.html#a03edec58ad078d7de7436929c463898a',1,'ir_Coolix.h']]], + ['kcoolixsensortempsize_819',['kCoolixSensorTempSize',['../ir__Coolix_8h.html#a979d1d4f84432afc29ac3fcc78353d6c',1,'ir_Coolix.h']]], + ['kcoolixsleep_820',['kCoolixSleep',['../ir__Coolix_8h.html#aa7f9f96e56bd3f6b814bc84b947b2417',1,'ir_Coolix.h']]], + ['kcoolixswing_821',['kCoolixSwing',['../ir__Coolix_8h.html#a799ad5ab7cf43f0aac3c342305f14b90',1,'ir_Coolix.h']]], + ['kcoolixswingh_822',['kCoolixSwingH',['../ir__Coolix_8h.html#a877bd2731dfc86d864e38a5ceb4ede6e',1,'ir_Coolix.h']]], + ['kcoolixswingv_823',['kCoolixSwingV',['../ir__Coolix_8h.html#ab9fcaf25426f1f9ad293e165f8c0bf38',1,'ir_Coolix.h']]], + ['kcoolixtempmap_824',['kCoolixTempMap',['../ir__Coolix_8h.html#a9c8931df1dbed38c8119f6605266c710',1,'ir_Coolix.h']]], + ['kcoolixtempmax_825',['kCoolixTempMax',['../ir__Coolix_8h.html#afbbb02bfeaaf5cb558ca28cdd5cfc4c3',1,'ir_Coolix.h']]], + ['kcoolixtempmin_826',['kCoolixTempMin',['../ir__Coolix_8h.html#accd37cf257fa5fbeb64e28f0d63888fb',1,'ir_Coolix.h']]], + ['kcoolixtempoffset_827',['kCoolixTempOffset',['../ir__Coolix_8h.html#ac49173b671af51026e378d65c7bc696b',1,'ir_Coolix.h']]], + ['kcoolixtemprange_828',['kCoolixTempRange',['../ir__Coolix_8h.html#a74e3e75466fd27672968d660e3fddc9a',1,'ir_Coolix.h']]], + ['kcoolixtempsize_829',['kCoolixTempSize',['../ir__Coolix_8h.html#a7a22c5c9bdd23ef80ffe9d6760c0650e',1,'ir_Coolix.h']]], + ['kcoolixtick_830',['kCoolixTick',['../ir__Coolix_8cpp.html#a61ddf842920e2b3e33fdb856bd911eae',1,'ir_Coolix.cpp']]], + ['kcoolixturbo_831',['kCoolixTurbo',['../ir__Coolix_8h.html#ade957b6f4a6cdb064c709972a5c31a4b',1,'ir_Coolix.h']]], + ['kcoolixunknown_832',['kCoolixUnknown',['../ir__Coolix_8h.html#a2913e31a9dc5b89cbcae940cd5d59497',1,'ir_Coolix.h']]], + ['kcoolixzerospace_833',['kCoolixZeroSpace',['../ir__Coolix_8cpp.html#a1a9ccf6b91e786f310ffe53d55cfd6d1',1,'ir_Coolix.cpp']]], + ['kcoolixzerospaceticks_834',['kCoolixZeroSpaceTicks',['../ir__Coolix_8cpp.html#af1a750cb3e1f142326cd177118c27136',1,'ir_Coolix.cpp']]], + ['kcoolixzonefollowmaskoffset_835',['kCoolixZoneFollowMaskOffset',['../ir__Coolix_8h.html#ae5da4da07b9d1bb715102cafd4a0105e',1,'ir_Coolix.h']]], + ['kcoolstr_836',['kCoolStr',['../IRtext_8cpp.html#a31258a2210b16dc977bcfd96938a8937',1,'kCoolStr(): IRtext.cpp'],['../IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3',1,'kCoolStr(): IRtext.cpp']]], + ['kcoronaacbitmark_837',['kCoronaAcBitMark',['../ir__Corona_8cpp.html#a1ecb863f625463289d34e210885238db',1,'ir_Corona.cpp']]], + ['kcoronaacbits_838',['kCoronaAcBits',['../IRremoteESP8266_8h.html#aaf59be616d7e3a5e605b8d1e08f20686',1,'IRremoteESP8266.h']]], + ['kcoronaacbitsshort_839',['kCoronaAcBitsShort',['../IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3',1,'IRremoteESP8266.h']]], + ['kcoronaacfanauto_840',['kCoronaAcFanAuto',['../ir__Corona_8h.html#a8c97a0c674c000e4486159d628f1aa0a',1,'ir_Corona.h']]], + ['kcoronaacfanhigh_841',['kCoronaAcFanHigh',['../ir__Corona_8h.html#a4f58be196a744892402e287b12502dcb',1,'ir_Corona.h']]], + ['kcoronaacfanlow_842',['kCoronaAcFanLow',['../ir__Corona_8h.html#af9e5c729be856bf4b1bc10568f96c183',1,'ir_Corona.h']]], + ['kcoronaacfanmedium_843',['kCoronaAcFanMedium',['../ir__Corona_8h.html#a9d6b46c006bd6ea54a14b92a2d7a3dff',1,'ir_Corona.h']]], + ['kcoronaacfanoffset_844',['kCoronaAcFanOffset',['../ir__Corona_8h.html#ab9944dc3abdc09c4d616f43aaffccdec',1,'ir_Corona.h']]], + ['kcoronaacfansize_845',['kCoronaAcFanSize',['../ir__Corona_8h.html#a07463e8e2e7d2bf004142ec6b89c7851',1,'ir_Corona.h']]], + ['kcoronaacfreq_846',['kCoronaAcFreq',['../ir__Corona_8cpp.html#a0cb56860c88e9503743bcf94068bbf56',1,'ir_Corona.cpp']]], + ['kcoronaachdrmark_847',['kCoronaAcHdrMark',['../ir__Corona_8cpp.html#a697d84f13a1228dbae3cfb491124689a',1,'ir_Corona.cpp']]], + ['kcoronaachdrspace_848',['kCoronaAcHdrSpace',['../ir__Corona_8cpp.html#ad2425c406aa36c7752832d19f4a735f7',1,'ir_Corona.cpp']]], + ['kcoronaacmaxtemp_849',['kCoronaAcMaxTemp',['../ir__Corona_8h.html#aa6d199e5bb8382443da4e1f303dd7988',1,'ir_Corona.h']]], + ['kcoronaacmintemp_850',['kCoronaAcMinTemp',['../ir__Corona_8h.html#ae984b624da5e2d5ef1405e1b8d9424ba',1,'ir_Corona.h']]], + ['kcoronaacmodecool_851',['kCoronaAcModeCool',['../ir__Corona_8h.html#a6f8bb2e27990014686828b4b7e2c84c6',1,'ir_Corona.h']]], + ['kcoronaacmodedry_852',['kCoronaAcModeDry',['../ir__Corona_8h.html#afd47996b221103ae142363f04014fb4b',1,'ir_Corona.h']]], + ['kcoronaacmodefan_853',['kCoronaAcModeFan',['../ir__Corona_8h.html#ab8098af3e0f9cd82a7c9c771ffd8ad15',1,'ir_Corona.h']]], + ['kcoronaacmodeheat_854',['kCoronaAcModeHeat',['../ir__Corona_8h.html#a7f3c7c051ae3ee07621c47505a87bec1',1,'ir_Corona.h']]], + ['kcoronaacmodeoffset_855',['kCoronaAcModeOffset',['../ir__Corona_8h.html#aa4caa3638ad09dc3a223320651adbd49',1,'ir_Corona.h']]], + ['kcoronaacmodesize_856',['kCoronaAcModeSize',['../ir__Corona_8h.html#a38baa949868e16e67d7c2eb933b5019d',1,'ir_Corona.h']]], + ['kcoronaacofftimersection_857',['kCoronaAcOffTimerSection',['../ir__Corona_8h.html#ac2cfdbf9b3ed3d85c0e298c3de8f357b',1,'ir_Corona.h']]], + ['kcoronaaconespace_858',['kCoronaAcOneSpace',['../ir__Corona_8cpp.html#a6d9c199bdefbbb30b9561c5498c5a76e',1,'ir_Corona.cpp']]], + ['kcoronaacontimersection_859',['kCoronaAcOnTimerSection',['../ir__Corona_8h.html#a711b7b5bd2081ca9b1e7ab25573ff612',1,'ir_Corona.h']]], + ['kcoronaacoverhead_860',['kCoronaAcOverhead',['../ir__Corona_8cpp.html#aaef71b297a7868863a2ad7219bafabeb',1,'ir_Corona.cpp']]], + ['kcoronaacoverheadshort_861',['kCoronaAcOverheadShort',['../ir__Corona_8cpp.html#a56010f67a047f551db681bb0ec8c35f7',1,'ir_Corona.cpp']]], + ['kcoronaacpowerbuttonoffset_862',['kCoronaAcPowerButtonOffset',['../ir__Corona_8h.html#a71b6c16b1b5cffbd1991fea675e5a65e',1,'ir_Corona.h']]], + ['kcoronaacpoweroffset_863',['kCoronaAcPowerOffset',['../ir__Corona_8h.html#ac2258a233d0f1ef3207fdd5abd8c855d',1,'ir_Corona.h']]], + ['kcoronaacpowersaveoffset_864',['kCoronaAcPowerSaveOffset',['../ir__Corona_8h.html#a3bd4f3e2a1001aede28c886e7bbe42ae',1,'ir_Corona.h']]], + ['kcoronaacsectionbytes_865',['kCoronaAcSectionBytes',['../ir__Corona_8h.html#a094063159064053dd5e5059eb0d90f7c',1,'ir_Corona.h']]], + ['kcoronaacsectiondata0base_866',['kCoronaAcSectionData0Base',['../ir__Corona_8h.html#a2d0b1f5a0839839a17947bde624d4c74',1,'ir_Corona.h']]], + ['kcoronaacsectiondata0invpos_867',['kCoronaAcSectionData0InvPos',['../ir__Corona_8h.html#a1a16967cb9024658763c7e6b6b5f8dd3',1,'ir_Corona.h']]], + ['kcoronaacsectiondata0pos_868',['kCoronaAcSectionData0Pos',['../ir__Corona_8h.html#a285f66040fa3db6c9955a97ef6eee4b7',1,'ir_Corona.h']]], + ['kcoronaacsectiondata1invpos_869',['kCoronaAcSectionData1InvPos',['../ir__Corona_8h.html#ad32635d2264331f4ee128e990411a704',1,'ir_Corona.h']]], + ['kcoronaacsectiondata1pos_870',['kCoronaAcSectionData1Pos',['../ir__Corona_8h.html#a1b10ed7cf1c43a3a8be6de6d3cfc12af',1,'ir_Corona.h']]], + ['kcoronaacsectionheader0_871',['kCoronaAcSectionHeader0',['../ir__Corona_8h.html#a39a2c0d214a10f8f9685e9955c0be0a4',1,'ir_Corona.h']]], + ['kcoronaacsectionheader0pos_872',['kCoronaAcSectionHeader0Pos',['../ir__Corona_8h.html#a8641d0234280b8cc3bb255abebea6540',1,'ir_Corona.h']]], + ['kcoronaacsectionheader1_873',['kCoronaAcSectionHeader1',['../ir__Corona_8h.html#a8a661569fc7b97ba2e9e755b944162f8',1,'ir_Corona.h']]], + ['kcoronaacsectionheader1pos_874',['kCoronaAcSectionHeader1Pos',['../ir__Corona_8h.html#adaadcbe7d57b048250f32b44a96d3853',1,'ir_Corona.h']]], + ['kcoronaacsectionlabelbase_875',['kCoronaAcSectionLabelBase',['../ir__Corona_8h.html#a6ff8a3461b87df048878faf49c12d064',1,'ir_Corona.h']]], + ['kcoronaacsectionlabelpos_876',['kCoronaAcSectionLabelPos',['../ir__Corona_8h.html#a5c68109fb92da47236c4100c2db28e2c',1,'ir_Corona.h']]], + ['kcoronaacsections_877',['kCoronaAcSections',['../ir__Corona_8h.html#a37e6cc5e2e186b2f5c5c938496ece111',1,'ir_Corona.h']]], + ['kcoronaacsettingssection_878',['kCoronaAcSettingsSection',['../ir__Corona_8h.html#a5a83a045fd9878eae073f25e6c5b4753',1,'ir_Corona.h']]], + ['kcoronaacspacegap_879',['kCoronaAcSpaceGap',['../ir__Corona_8cpp.html#a50f46039059d2a427bc9bc93c53df4fd',1,'ir_Corona.cpp']]], + ['kcoronaacstatelength_880',['kCoronaAcStateLength',['../IRremoteESP8266_8h.html#ab18df94a82b365ff30caaabb05a9fcaf',1,'IRremoteESP8266.h']]], + ['kcoronaacstatelengthshort_881',['kCoronaAcStateLengthShort',['../IRremoteESP8266_8h.html#a32b65ada4941a9622fbbc60f01b82425',1,'IRremoteESP8266.h']]], + ['kcoronaacswingvtoggleoffset_882',['kCoronaAcSwingVToggleOffset',['../ir__Corona_8h.html#a1475a44b94a8cfe83fb48b3c3d98e148',1,'ir_Corona.h']]], + ['kcoronaactempoffset_883',['kCoronaAcTempOffset',['../ir__Corona_8h.html#ae31731c985397a9a8b66ab933deccd7c',1,'ir_Corona.h']]], + ['kcoronaactempsize_884',['kCoronaAcTempSize',['../ir__Corona_8h.html#a69dac2ce8e51b8e1890c8b7844eab9dd',1,'ir_Corona.h']]], + ['kcoronaactimermax_885',['kCoronaAcTimerMax',['../ir__Corona_8h.html#af0428879b0fd39def7ea41e2906d9127',1,'ir_Corona.h']]], + ['kcoronaactimeroff_886',['kCoronaAcTimerOff',['../ir__Corona_8h.html#af0feaf445fae561c3fa18ec68a19edef',1,'ir_Corona.h']]], + ['kcoronaactimerunitspermin_887',['kCoronaAcTimerUnitsPerMin',['../ir__Corona_8h.html#a7f76e80480abdbdcdaf39186901950a4',1,'ir_Corona.h']]], + ['kcoronaaczerospace_888',['kCoronaAcZeroSpace',['../ir__Corona_8cpp.html#af64bbcaf63ca9d06089de382354eb2d9',1,'ir_Corona.cpp']]], + ['kcoronatolerance_889',['kCoronaTolerance',['../ir__Corona_8cpp.html#aad3726c95bfd7a9f79ba1e0c7058bb7b',1,'ir_Corona.cpp']]], + ['kdaikin128auto_890',['kDaikin128Auto',['../ir__Daikin_8h.html#a1d2a0f9db8e1be93bff12ec23ba212e0',1,'ir_Daikin.h']]], + ['kdaikin128bitceiling_891',['kDaikin128BitCeiling',['../ir__Daikin_8h.html#a0e1d1c1e7544eb455187290dbe4a1520',1,'ir_Daikin.h']]], + ['kdaikin128bitecono_892',['kDaikin128BitEcono',['../ir__Daikin_8h.html#a34add42c4df4db799ddf52e8e5587dee',1,'ir_Daikin.h']]], + ['kdaikin128biteconooffset_893',['kDaikin128BitEconoOffset',['../ir__Daikin_8h.html#af822203d873d9b847c3a7b08d236f82b',1,'ir_Daikin.h']]], + ['kdaikin128bithalfhour_894',['kDaikin128BitHalfHour',['../ir__Daikin_8h.html#abf955f8f24fd37bbe21222ca160b3299',1,'ir_Daikin.h']]], + ['kdaikin128bitmark_895',['kDaikin128BitMark',['../ir__Daikin_8h.html#a5178ac70eb4e134597e504d373d52fcd',1,'ir_Daikin.h']]], + ['kdaikin128bitpowertoggle_896',['kDaikin128BitPowerToggle',['../ir__Daikin_8h.html#a813506d8d3f8b6933379bcfc097e4b29',1,'ir_Daikin.h']]], + ['kdaikin128bitpowertoggleoffset_897',['kDaikin128BitPowerToggleOffset',['../ir__Daikin_8h.html#a05e33573c5050b1e54721a1716d652b5',1,'ir_Daikin.h']]], + ['kdaikin128bits_898',['kDaikin128Bits',['../IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a',1,'IRremoteESP8266.h']]], + ['kdaikin128bitsleep_899',['kDaikin128BitSleep',['../ir__Daikin_8h.html#a0cb96f1803fab5bfac8ef79a311308de',1,'ir_Daikin.h']]], + ['kdaikin128bitsleepoffset_900',['kDaikin128BitSleepOffset',['../ir__Daikin_8h.html#a7b4aa1ef19f1c23ef74b45eb90734c6f',1,'ir_Daikin.h']]], + ['kdaikin128bitswing_901',['kDaikin128BitSwing',['../ir__Daikin_8h.html#a8f6ab5b7f9871f08364abf3337ae48b4',1,'ir_Daikin.h']]], + ['kdaikin128bitswingoffset_902',['kDaikin128BitSwingOffset',['../ir__Daikin_8h.html#a7f98cf3863ab58b147dc31c497bc07bc',1,'ir_Daikin.h']]], + ['kdaikin128bittimerenabled_903',['kDaikin128BitTimerEnabled',['../ir__Daikin_8h.html#a1197dadb35f318b000ff6ee7ad3ca8b0',1,'ir_Daikin.h']]], + ['kdaikin128bittimerenabledoffset_904',['kDaikin128BitTimerEnabledOffset',['../ir__Daikin_8h.html#af913ee51e5b90ad12f87dbed9ce349d6',1,'ir_Daikin.h']]], + ['kdaikin128bitwall_905',['kDaikin128BitWall',['../ir__Daikin_8h.html#a842b3b696f95c5515ee4180626d78973',1,'ir_Daikin.h']]], + ['kdaikin128byteclockhours_906',['kDaikin128ByteClockHours',['../ir__Daikin_8h.html#a0d705309d30881fd2fe806e5bf8ae27d',1,'ir_Daikin.h']]], + ['kdaikin128byteclockmins_907',['kDaikin128ByteClockMins',['../ir__Daikin_8h.html#ab8c9af42d68548e1e711a0b38976342b',1,'ir_Daikin.h']]], + ['kdaikin128byteeconolight_908',['kDaikin128ByteEconoLight',['../ir__Daikin_8h.html#a75a3c1f1790006f0005666a023218c79',1,'ir_Daikin.h']]], + ['kdaikin128bytemodefan_909',['kDaikin128ByteModeFan',['../ir__Daikin_8h.html#a8433ab362f79a6bb3570d310a05f1141',1,'ir_Daikin.h']]], + ['kdaikin128byteofftimer_910',['kDaikin128ByteOffTimer',['../ir__Daikin_8h.html#a66e243db1131f58d0840980ca64c0282',1,'ir_Daikin.h']]], + ['kdaikin128byteontimer_911',['kDaikin128ByteOnTimer',['../ir__Daikin_8h.html#af27f1f25a52dc4c182111acd2abc554d',1,'ir_Daikin.h']]], + ['kdaikin128bytepowerswingsleep_912',['kDaikin128BytePowerSwingSleep',['../ir__Daikin_8h.html#a0f5a9f1ac68c516744220ad230805c15',1,'ir_Daikin.h']]], + ['kdaikin128bytetemp_913',['kDaikin128ByteTemp',['../ir__Daikin_8h.html#a4d3d5683aaee8e76138750a0f6ff1465',1,'ir_Daikin.h']]], + ['kdaikin128cool_914',['kDaikin128Cool',['../ir__Daikin_8h.html#a24ee5ffe877d7caa964256e5723af7e1',1,'ir_Daikin.h']]], + ['kdaikin128defaultrepeat_915',['kDaikin128DefaultRepeat',['../IRremoteESP8266_8h.html#a5c116cb58be005468de125f6ee651ccb',1,'IRremoteESP8266.h']]], + ['kdaikin128dry_916',['kDaikin128Dry',['../ir__Daikin_8h.html#ac4da761bf3b0ce12e6513a2718b3a907',1,'ir_Daikin.h']]], + ['kdaikin128fan_917',['kDaikin128Fan',['../ir__Daikin_8h.html#ac1c41d54f27d1653181ac69384f1130f',1,'ir_Daikin.h']]], + ['kdaikin128fanauto_918',['kDaikin128FanAuto',['../ir__Daikin_8h.html#aec2fe4618978c17e60a1ea8b1a89c263',1,'ir_Daikin.h']]], + ['kdaikin128fanhigh_919',['kDaikin128FanHigh',['../ir__Daikin_8h.html#a7ffd52eb15f6ffb5a0ffcddf39aa8f0d',1,'ir_Daikin.h']]], + ['kdaikin128fanlow_920',['kDaikin128FanLow',['../ir__Daikin_8h.html#a505c58ff23c5a551c6e2e356f66e9cc1',1,'ir_Daikin.h']]], + ['kdaikin128fanmed_921',['kDaikin128FanMed',['../ir__Daikin_8h.html#a4eb21add9bfb6774047a8a2c8b87ebbf',1,'ir_Daikin.h']]], + ['kdaikin128fanpowerful_922',['kDaikin128FanPowerful',['../ir__Daikin_8h.html#ae0899153669a6e8848556cd65c26c8b5',1,'ir_Daikin.h']]], + ['kdaikin128fanquiet_923',['kDaikin128FanQuiet',['../ir__Daikin_8h.html#a54777f468236bf4b342240e8c523308d',1,'ir_Daikin.h']]], + ['kdaikin128footermark_924',['kDaikin128FooterMark',['../ir__Daikin_8h.html#ad5668b12e38afa4b44a8e214dac22f2e',1,'ir_Daikin.h']]], + ['kdaikin128freq_925',['kDaikin128Freq',['../ir__Daikin_8h.html#a5a76fc08310d517cb7e182c287e77df1',1,'ir_Daikin.h']]], + ['kdaikin128gap_926',['kDaikin128Gap',['../ir__Daikin_8h.html#a6323c59eb5906ac2887a02f9cd09a329',1,'ir_Daikin.h']]], + ['kdaikin128halfhouroffset_927',['kDaikin128HalfHourOffset',['../ir__Daikin_8h.html#a8fddd8a5dbad2fd49445eaa2104f7da3',1,'ir_Daikin.h']]], + ['kdaikin128hdrmark_928',['kDaikin128HdrMark',['../ir__Daikin_8h.html#a6257375541b6e10bda4083d9529e80f0',1,'ir_Daikin.h']]], + ['kdaikin128hdrspace_929',['kDaikin128HdrSpace',['../ir__Daikin_8h.html#a114a4cef444d4c552b90701cb7debc73',1,'ir_Daikin.h']]], + ['kdaikin128heat_930',['kDaikin128Heat',['../ir__Daikin_8h.html#ada28db809b26e2ae9e927650d4cb4f7a',1,'ir_Daikin.h']]], + ['kdaikin128hoursoffset_931',['kDaikin128HoursOffset',['../ir__Daikin_8h.html#ace543fba33c68e3df4aa4d250ed1e792',1,'ir_Daikin.h']]], + ['kdaikin128hourssize_932',['kDaikin128HoursSize',['../ir__Daikin_8h.html#ac5441402c0ee486f3c752a91f09375ff',1,'ir_Daikin.h']]], + ['kdaikin128leadermark_933',['kDaikin128LeaderMark',['../ir__Daikin_8h.html#ab609b8979a2d2bf4fa5b7164590b2bfb',1,'ir_Daikin.h']]], + ['kdaikin128leaderspace_934',['kDaikin128LeaderSpace',['../ir__Daikin_8h.html#a259bfa510a9ec06049c0a7bf6563eb35',1,'ir_Daikin.h']]], + ['kdaikin128maskfan_935',['kDaikin128MaskFan',['../ir__Daikin_8h.html#ae58228f3b9eae0ec171527ced89e509f',1,'ir_Daikin.h']]], + ['kdaikin128masklight_936',['kDaikin128MaskLight',['../ir__Daikin_8h.html#a8d3d4325f91cbdd8ce0cec25fc0d2022',1,'ir_Daikin.h']]], + ['kdaikin128maxtemp_937',['kDaikin128MaxTemp',['../ir__Daikin_8h.html#a7dcd514d292ef98d70083227d046baad',1,'ir_Daikin.h']]], + ['kdaikin128mintemp_938',['kDaikin128MinTemp',['../ir__Daikin_8h.html#aad27f3ff311f1defc5ac9fb3be0ad504',1,'ir_Daikin.h']]], + ['kdaikin128modesize_939',['kDaikin128ModeSize',['../ir__Daikin_8h.html#a32a97adddfa791cc0e48d9bd847a3a4c',1,'ir_Daikin.h']]], + ['kdaikin128onespace_940',['kDaikin128OneSpace',['../ir__Daikin_8h.html#ac6a9a48ae0037b889a6619361fd090ac',1,'ir_Daikin.h']]], + ['kdaikin128sectionlength_941',['kDaikin128SectionLength',['../ir__Daikin_8h.html#a204a306e7d7071d4b798f7947c232520',1,'ir_Daikin.h']]], + ['kdaikin128sections_942',['kDaikin128Sections',['../ir__Daikin_8h.html#a81f0cfda4d8452d6053cc6999a270b1f',1,'ir_Daikin.h']]], + ['kdaikin128statelength_943',['kDaikin128StateLength',['../IRremoteESP8266_8h.html#a4279ccd14a3af2046e393661a7b4879f',1,'IRremoteESP8266.h']]], + ['kdaikin128timeroffset_944',['kDaikin128TimerOffset',['../ir__Daikin_8h.html#aabde7c45424ae82a812485e8ceb58dbd',1,'ir_Daikin.h']]], + ['kdaikin128timersize_945',['kDaikin128TimerSize',['../ir__Daikin_8h.html#a6f4022c5e4a092eb039c53ea72f51188',1,'ir_Daikin.h']]], + ['kdaikin128zerospace_946',['kDaikin128ZeroSpace',['../ir__Daikin_8h.html#a1ca69805ada8ec451199c18d9da6f02a',1,'ir_Daikin.h']]], + ['kdaikin152bitmark_947',['kDaikin152BitMark',['../ir__Daikin_8h.html#afd50318eaa383a7e85f0d0c2866bc9d5',1,'ir_Daikin.h']]], + ['kdaikin152bits_948',['kDaikin152Bits',['../IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09',1,'IRremoteESP8266.h']]], + ['kdaikin152comfortbyte_949',['kDaikin152ComfortByte',['../ir__Daikin_8h.html#a414b7acd5259122af5b496979fe068dc',1,'ir_Daikin.h']]], + ['kdaikin152comfortoffset_950',['kDaikin152ComfortOffset',['../ir__Daikin_8h.html#a9cc7bb09fb66aa0cf7d0b751505fd3e6',1,'ir_Daikin.h']]], + ['kdaikin152defaultrepeat_951',['kDaikin152DefaultRepeat',['../IRremoteESP8266_8h.html#a9407eebab271524e74bc3ddddb1a2e0b',1,'IRremoteESP8266.h']]], + ['kdaikin152drytemp_952',['kDaikin152DryTemp',['../ir__Daikin_8h.html#a86e9308c00dbdd79546687af412c4156',1,'ir_Daikin.h']]], + ['kdaikin152econobyte_953',['kDaikin152EconoByte',['../ir__Daikin_8h.html#a988782fd6bcf25b098d7c07e38679a78',1,'ir_Daikin.h']]], + ['kdaikin152fanbyte_954',['kDaikin152FanByte',['../ir__Daikin_8h.html#a1972e59df2902335e37b2d66d16048a8',1,'ir_Daikin.h']]], + ['kdaikin152fantemp_955',['kDaikin152FanTemp',['../ir__Daikin_8h.html#ad5c5bb7e8b181c79fe68607c1a4d202f',1,'ir_Daikin.h']]], + ['kdaikin152freq_956',['kDaikin152Freq',['../ir__Daikin_8h.html#aa45492ae186142971975b7da56658a0b',1,'ir_Daikin.h']]], + ['kdaikin152gap_957',['kDaikin152Gap',['../ir__Daikin_8h.html#aee02d3b17db4a382035c00329c6c2a0a',1,'ir_Daikin.h']]], + ['kdaikin152hdrmark_958',['kDaikin152HdrMark',['../ir__Daikin_8h.html#a85fad797a9b43cb317fdb2e2c254a3bb',1,'ir_Daikin.h']]], + ['kdaikin152hdrspace_959',['kDaikin152HdrSpace',['../ir__Daikin_8h.html#a0eb0b1b5fabab75a5956b6b939696a12',1,'ir_Daikin.h']]], + ['kdaikin152leaderbits_960',['kDaikin152LeaderBits',['../ir__Daikin_8h.html#a432454efd5ea7457d34fe014b0d328c1',1,'ir_Daikin.h']]], + ['kdaikin152modebyte_961',['kDaikin152ModeByte',['../ir__Daikin_8h.html#a1aaa767f722926e9aaf02dbcd8029003',1,'ir_Daikin.h']]], + ['kdaikin152onespace_962',['kDaikin152OneSpace',['../ir__Daikin_8h.html#a1f96172c74b261a26ec6d71201f7c589',1,'ir_Daikin.h']]], + ['kdaikin152powerbyte_963',['kDaikin152PowerByte',['../ir__Daikin_8h.html#a67ff6fbdc004d3a29b1d31c5bc47f572',1,'ir_Daikin.h']]], + ['kdaikin152powerfulbyte_964',['kDaikin152PowerfulByte',['../ir__Daikin_8h.html#a720a3019f7bb2f8c458a7b79fbadd08f',1,'ir_Daikin.h']]], + ['kdaikin152quietbyte_965',['kDaikin152QuietByte',['../ir__Daikin_8h.html#ad534758115c401368a428d887faa8768',1,'ir_Daikin.h']]], + ['kdaikin152sensorbyte_966',['kDaikin152SensorByte',['../ir__Daikin_8h.html#a33187d50e8414f943d050a0b1c312168',1,'ir_Daikin.h']]], + ['kdaikin152sensoroffset_967',['kDaikin152SensorOffset',['../ir__Daikin_8h.html#a01ef92b6eb478b1897fdfdcea03d7116',1,'ir_Daikin.h']]], + ['kdaikin152statelength_968',['kDaikin152StateLength',['../IRremoteESP8266_8h.html#ae7579708922ffd3e44295f8770878983',1,'IRremoteESP8266.h']]], + ['kdaikin152swingvbyte_969',['kDaikin152SwingVByte',['../ir__Daikin_8h.html#a9ed39bcce7d0bc73060fba843dfd2b28',1,'ir_Daikin.h']]], + ['kdaikin152tempbyte_970',['kDaikin152TempByte',['../ir__Daikin_8h.html#a5e232b17db30a7e0ba159e2413df8b14',1,'ir_Daikin.h']]], + ['kdaikin152tempsize_971',['kDaikin152TempSize',['../ir__Daikin_8h.html#ad22ee842100e70d95f1ebcdcaf3f2099',1,'ir_Daikin.h']]], + ['kdaikin152zerospace_972',['kDaikin152ZeroSpace',['../ir__Daikin_8h.html#aec201aee71c0e301e8e191ddcaadb2de',1,'ir_Daikin.h']]], + ['kdaikin160bitmark_973',['kDaikin160BitMark',['../ir__Daikin_8h.html#a852c2268ed7a8dd42c629e8a0706b6f5',1,'ir_Daikin.h']]], + ['kdaikin160bits_974',['kDaikin160Bits',['../IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6',1,'IRremoteESP8266.h']]], + ['kdaikin160bytefan_975',['kDaikin160ByteFan',['../ir__Daikin_8h.html#a980ae6010c956c92348d3ac88c084247',1,'ir_Daikin.h']]], + ['kdaikin160bytemode_976',['kDaikin160ByteMode',['../ir__Daikin_8h.html#a6c5bcb2c4447dafc53c26775539886e6',1,'ir_Daikin.h']]], + ['kdaikin160bytepower_977',['kDaikin160BytePower',['../ir__Daikin_8h.html#a8e79923cf8aa346ea52791887b54ffbe',1,'ir_Daikin.h']]], + ['kdaikin160byteswingv_978',['kDaikin160ByteSwingV',['../ir__Daikin_8h.html#a35032831d79e96a98527896cd5d52efe',1,'ir_Daikin.h']]], + ['kdaikin160bytetemp_979',['kDaikin160ByteTemp',['../ir__Daikin_8h.html#a1b9eed515f9cfc3508cce7d53fb7a84a',1,'ir_Daikin.h']]], + ['kdaikin160defaultrepeat_980',['kDaikin160DefaultRepeat',['../IRremoteESP8266_8h.html#a82f4f1d8fae51c7e2f1f6753ca6e6053',1,'IRremoteESP8266.h']]], + ['kdaikin160freq_981',['kDaikin160Freq',['../ir__Daikin_8h.html#a69e8abb57aecc6b99c60c5df7e18ff39',1,'ir_Daikin.h']]], + ['kdaikin160gap_982',['kDaikin160Gap',['../ir__Daikin_8h.html#a8d107f0d63ef6951d657a55a370e8a8b',1,'ir_Daikin.h']]], + ['kdaikin160hdrmark_983',['kDaikin160HdrMark',['../ir__Daikin_8h.html#a96043b43ba4d963456206e2d02639325',1,'ir_Daikin.h']]], + ['kdaikin160hdrspace_984',['kDaikin160HdrSpace',['../ir__Daikin_8h.html#aefa7b5de43483951e00bd5d2cdbe5665',1,'ir_Daikin.h']]], + ['kdaikin160maskfan_985',['kDaikin160MaskFan',['../ir__Daikin_8h.html#a623f586183436960361a85f8480c87c6',1,'ir_Daikin.h']]], + ['kdaikin160maskswingv_986',['kDaikin160MaskSwingV',['../ir__Daikin_8h.html#abfaa078f7dfdd1c0bb14ad15fee26604',1,'ir_Daikin.h']]], + ['kdaikin160onespace_987',['kDaikin160OneSpace',['../ir__Daikin_8h.html#a068c2252191675dca6503bfc37e4785e',1,'ir_Daikin.h']]], + ['kdaikin160section1length_988',['kDaikin160Section1Length',['../ir__Daikin_8h.html#a06b59ee56cddcdcd9dfa375663da0c2d',1,'ir_Daikin.h']]], + ['kdaikin160section2length_989',['kDaikin160Section2Length',['../ir__Daikin_8h.html#a7d6194a363661e11167cc972f1b92f68',1,'ir_Daikin.h']]], + ['kdaikin160sections_990',['kDaikin160Sections',['../ir__Daikin_8h.html#afcc5de2994c1cd618437f1c67a5754d0',1,'ir_Daikin.h']]], + ['kdaikin160statelength_991',['kDaikin160StateLength',['../IRremoteESP8266_8h.html#a09f022a12a40a8fae09bfbddfbee6d62',1,'IRremoteESP8266.h']]], + ['kdaikin160swingvauto_992',['kDaikin160SwingVAuto',['../ir__Daikin_8h.html#aa6d9ee84d2c15c69ed8dbbc832285baf',1,'ir_Daikin.h']]], + ['kdaikin160swingvhigh_993',['kDaikin160SwingVHigh',['../ir__Daikin_8h.html#abf542bd70d12534af72fb4ec8df5d265',1,'ir_Daikin.h']]], + ['kdaikin160swingvhighest_994',['kDaikin160SwingVHighest',['../ir__Daikin_8h.html#a2a48ca041acbde68b902a4d0be4aeec5',1,'ir_Daikin.h']]], + ['kdaikin160swingvlow_995',['kDaikin160SwingVLow',['../ir__Daikin_8h.html#a04ff7cb63db6b281ced56283288f05c0',1,'ir_Daikin.h']]], + ['kdaikin160swingvlowest_996',['kDaikin160SwingVLowest',['../ir__Daikin_8h.html#ac4f34c7862802b21dede2ac0b534c8d8',1,'ir_Daikin.h']]], + ['kdaikin160swingvmiddle_997',['kDaikin160SwingVMiddle',['../ir__Daikin_8h.html#a620b644f07f9b664f09417bb362dc216',1,'ir_Daikin.h']]], + ['kdaikin160tempoffset_998',['kDaikin160TempOffset',['../ir__Daikin_8h.html#aa2f7050929bab65dbdb8af5b493dafe2',1,'ir_Daikin.h']]], + ['kdaikin160tempsize_999',['kDaikin160TempSize',['../ir__Daikin_8h.html#adfecac727480010fae8e419ac3f13e73',1,'ir_Daikin.h']]], + ['kdaikin160zerospace_1000',['kDaikin160ZeroSpace',['../ir__Daikin_8h.html#a2b4591126c0b26ab16b5611dbfa4d5f6',1,'ir_Daikin.h']]], + ['kdaikin176bitmark_1001',['kDaikin176BitMark',['../ir__Daikin_8h.html#a4be0185fb8f65c0286cbf55dfd63a40f',1,'ir_Daikin.h']]], + ['kdaikin176bits_1002',['kDaikin176Bits',['../IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7',1,'IRremoteESP8266.h']]], + ['kdaikin176bytefan_1003',['kDaikin176ByteFan',['../ir__Daikin_8h.html#a21e4b1854d3f87757ba0f0c10074226c',1,'ir_Daikin.h']]], + ['kdaikin176bytemode_1004',['kDaikin176ByteMode',['../ir__Daikin_8h.html#ad114b4570f96bcbf5358fa1ece354572',1,'ir_Daikin.h']]], + ['kdaikin176bytemodebutton_1005',['kDaikin176ByteModeButton',['../ir__Daikin_8h.html#aacda7563a2aaa9a56c77ce550f24a237',1,'ir_Daikin.h']]], + ['kdaikin176bytepower_1006',['kDaikin176BytePower',['../ir__Daikin_8h.html#aabfb9642dce0ab4169b193955221b938',1,'ir_Daikin.h']]], + ['kdaikin176byteswingh_1007',['kDaikin176ByteSwingH',['../ir__Daikin_8h.html#a4566642e6aaa0d64c531fafe0309dccc',1,'ir_Daikin.h']]], + ['kdaikin176bytetemp_1008',['kDaikin176ByteTemp',['../ir__Daikin_8h.html#afab294c7e8c65e5bf58e85bee4901752',1,'ir_Daikin.h']]], + ['kdaikin176cool_1009',['kDaikin176Cool',['../ir__Daikin_8h.html#ab67e912a9abdda7dcbe52ce90b70a3b5',1,'ir_Daikin.h']]], + ['kdaikin176defaultrepeat_1010',['kDaikin176DefaultRepeat',['../IRremoteESP8266_8h.html#a0228803e8fff3c73227214d4bb3d8b05',1,'IRremoteESP8266.h']]], + ['kdaikin176dryfantemp_1011',['kDaikin176DryFanTemp',['../ir__Daikin_8h.html#a462ad30312f13443f51b510e5b391f42',1,'ir_Daikin.h']]], + ['kdaikin176fanmax_1012',['kDaikin176FanMax',['../ir__Daikin_8h.html#a97e77d2a09bc753c17104f9695a0c0b1',1,'ir_Daikin.h']]], + ['kdaikin176freq_1013',['kDaikin176Freq',['../ir__Daikin_8h.html#a7f0c76e579dad510f21c34ba57cbf8dc',1,'ir_Daikin.h']]], + ['kdaikin176gap_1014',['kDaikin176Gap',['../ir__Daikin_8h.html#a0309c9d689f64e2d57ab09a2bb27bc18',1,'ir_Daikin.h']]], + ['kdaikin176hdrmark_1015',['kDaikin176HdrMark',['../ir__Daikin_8h.html#a9ff1ca660571d09caa0de39ce1370720',1,'ir_Daikin.h']]], + ['kdaikin176hdrspace_1016',['kDaikin176HdrSpace',['../ir__Daikin_8h.html#a64c4874b5d92682911ca84e826e1ff0b',1,'ir_Daikin.h']]], + ['kdaikin176maskfan_1017',['kDaikin176MaskFan',['../ir__Daikin_8h.html#ae7410031c68ae8426caa61bc97909cdf',1,'ir_Daikin.h']]], + ['kdaikin176maskmode_1018',['kDaikin176MaskMode',['../ir__Daikin_8h.html#a65b76b7a85d70a4ed1af359b2babffa1',1,'ir_Daikin.h']]], + ['kdaikin176modebutton_1019',['kDaikin176ModeButton',['../ir__Daikin_8h.html#a5c8602d17e9f70eefd735741b9d714eb',1,'ir_Daikin.h']]], + ['kdaikin176onespace_1020',['kDaikin176OneSpace',['../ir__Daikin_8h.html#a86ed046d66daf884ac0f06722991f5ba',1,'ir_Daikin.h']]], + ['kdaikin176section1length_1021',['kDaikin176Section1Length',['../ir__Daikin_8h.html#a4c5ce7df75834c77c0908cc40dbe02ed',1,'ir_Daikin.h']]], + ['kdaikin176section2length_1022',['kDaikin176Section2Length',['../ir__Daikin_8h.html#a9e2bb25a1d64d2c042e7eef38f5347d0',1,'ir_Daikin.h']]], + ['kdaikin176sections_1023',['kDaikin176Sections',['../ir__Daikin_8h.html#a177d12ac0f4fe8b5c5aeaf8f72579607',1,'ir_Daikin.h']]], + ['kdaikin176statelength_1024',['kDaikin176StateLength',['../IRremoteESP8266_8h.html#aa71fc87dcb6f14b82997e1d2269429d2',1,'IRremoteESP8266.h']]], + ['kdaikin176swinghauto_1025',['kDaikin176SwingHAuto',['../ir__Daikin_8h.html#a326ffcf00330a1759e4f71f8f8603f23',1,'ir_Daikin.h']]], + ['kdaikin176swinghoff_1026',['kDaikin176SwingHOff',['../ir__Daikin_8h.html#a8672ccb9016808c84b1b06de6584188a',1,'ir_Daikin.h']]], + ['kdaikin176tempoffset_1027',['kDaikin176TempOffset',['../ir__Daikin_8h.html#aa5f6cc15ca424e4bf9cc4357d9db79c9',1,'ir_Daikin.h']]], + ['kdaikin176tempsize_1028',['kDaikin176TempSize',['../ir__Daikin_8h.html#a3ef1914f2caf650a90d8412f2c1e2b74',1,'ir_Daikin.h']]], + ['kdaikin176zerospace_1029',['kDaikin176ZeroSpace',['../ir__Daikin_8h.html#a4db8836caa6cae0bab6fbde94409c879',1,'ir_Daikin.h']]], + ['kdaikin216bitmark_1030',['kDaikin216BitMark',['../ir__Daikin_8h.html#ada7cf9c593d716617ff4436755eef4f9',1,'ir_Daikin.h']]], + ['kdaikin216bits_1031',['kDaikin216Bits',['../IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9',1,'IRremoteESP8266.h']]], + ['kdaikin216bytefan_1032',['kDaikin216ByteFan',['../ir__Daikin_8h.html#a832e7a349293058ebc50c17b904fb8f7',1,'ir_Daikin.h']]], + ['kdaikin216bytemode_1033',['kDaikin216ByteMode',['../ir__Daikin_8h.html#a48974eb3ceb40f2f580bd266a60f0392',1,'ir_Daikin.h']]], + ['kdaikin216bytepower_1034',['kDaikin216BytePower',['../ir__Daikin_8h.html#a740c2db81aebd8cb9e18b3f8c6c5b8be',1,'ir_Daikin.h']]], + ['kdaikin216bytepowerful_1035',['kDaikin216BytePowerful',['../ir__Daikin_8h.html#a9a428d988d705beae3ff1f7c0f01cb8d',1,'ir_Daikin.h']]], + ['kdaikin216byteswingh_1036',['kDaikin216ByteSwingH',['../ir__Daikin_8h.html#a20239baacdf9fb981eb0fb84b0ef536a',1,'ir_Daikin.h']]], + ['kdaikin216byteswingv_1037',['kDaikin216ByteSwingV',['../ir__Daikin_8h.html#a9fd16b0fb0d67a7058816d4b4f1659fc',1,'ir_Daikin.h']]], + ['kdaikin216bytetemp_1038',['kDaikin216ByteTemp',['../ir__Daikin_8h.html#a5828687e12d2b7fe1d793235d91750bd',1,'ir_Daikin.h']]], + ['kdaikin216defaultrepeat_1039',['kDaikin216DefaultRepeat',['../IRremoteESP8266_8h.html#a9d14d424d5a93de62f3e6f453db112db',1,'IRremoteESP8266.h']]], + ['kdaikin216freq_1040',['kDaikin216Freq',['../ir__Daikin_8h.html#aa3a9753c90ecb6d7f5ee3e5a16c79217',1,'ir_Daikin.h']]], + ['kdaikin216gap_1041',['kDaikin216Gap',['../ir__Daikin_8h.html#ab807adaab8afbeb97afaa9ddb2ec2c63',1,'ir_Daikin.h']]], + ['kdaikin216hdrmark_1042',['kDaikin216HdrMark',['../ir__Daikin_8h.html#a24163655b3d374aa643506c2bf4a2406',1,'ir_Daikin.h']]], + ['kdaikin216hdrspace_1043',['kDaikin216HdrSpace',['../ir__Daikin_8h.html#a2e69973e9a4aee29668597d09fcd70a4',1,'ir_Daikin.h']]], + ['kdaikin216maskfan_1044',['kDaikin216MaskFan',['../ir__Daikin_8h.html#a88f67ea1fe03ef40b81c5226ff5c72d5',1,'ir_Daikin.h']]], + ['kdaikin216onespace_1045',['kDaikin216OneSpace',['../ir__Daikin_8h.html#a1edeb73093bdea23e6cfb39c31ca1fce',1,'ir_Daikin.h']]], + ['kdaikin216section1length_1046',['kDaikin216Section1Length',['../ir__Daikin_8h.html#a5aacc812feb33ef954adc49086036859',1,'ir_Daikin.h']]], + ['kdaikin216section2length_1047',['kDaikin216Section2Length',['../ir__Daikin_8h.html#aade497bb9aad663a9e1e9403188d2154',1,'ir_Daikin.h']]], + ['kdaikin216sections_1048',['kDaikin216Sections',['../ir__Daikin_8h.html#a0ecd54bb733b982e3e5adf0c13ac9f6b',1,'ir_Daikin.h']]], + ['kdaikin216statelength_1049',['kDaikin216StateLength',['../IRremoteESP8266_8h.html#a70a1a65c1947b440e4ff27477de5ddc7',1,'IRremoteESP8266.h']]], + ['kdaikin216swingoff_1050',['kDaikin216SwingOff',['../ir__Daikin_8h.html#a84d6bb74c705dfbcd558f0b411a2a88e',1,'ir_Daikin.h']]], + ['kdaikin216swingon_1051',['kDaikin216SwingOn',['../ir__Daikin_8h.html#a4b2d77aafd84ed004390b5d4c7ad0455',1,'ir_Daikin.h']]], + ['kdaikin216swingsize_1052',['kDaikin216SwingSize',['../ir__Daikin_8h.html#a90d9e740067051fe294f1b408f7e020b',1,'ir_Daikin.h']]], + ['kdaikin216tempoffset_1053',['kDaikin216TempOffset',['../ir__Daikin_8h.html#a8e497623bb05ff10287ca06ac6ec15f6',1,'ir_Daikin.h']]], + ['kdaikin216tempsize_1054',['kDaikin216TempSize',['../ir__Daikin_8h.html#a3ef59f8474b38d1b0311f1018dbd6225',1,'ir_Daikin.h']]], + ['kdaikin216zerospace_1055',['kDaikin216ZeroSpace',['../ir__Daikin_8h.html#a448250dbb5a3a9733f21a0e347d17999',1,'ir_Daikin.h']]], + ['kdaikin2beepoffset_1056',['kDaikin2BeepOffset',['../ir__Daikin_8h.html#ad7f6110b5e3bf8c3b72ca07b745bae7c',1,'ir_Daikin.h']]], + ['kdaikin2beepsize_1057',['kDaikin2BeepSize',['../ir__Daikin_8h.html#a3a42f10a3427bff7af3c745592fe58fe',1,'ir_Daikin.h']]], + ['kdaikin2bitclean_1058',['kDaikin2BitClean',['../ir__Daikin_8h.html#a6672ff35e765c9ecb14107e7732b0bb2',1,'ir_Daikin.h']]], + ['kdaikin2bitcleanoffset_1059',['kDaikin2BitCleanOffset',['../ir__Daikin_8h.html#a4fa7ed25fb3f2371c3b5c7cf4906a3f3',1,'ir_Daikin.h']]], + ['kdaikin2biteye_1060',['kDaikin2BitEye',['../ir__Daikin_8h.html#a8adb3f3e8508adf8adc530365fceb96b',1,'ir_Daikin.h']]], + ['kdaikin2biteyeauto_1061',['kDaikin2BitEyeAuto',['../ir__Daikin_8h.html#a6a24519db9870520a645e4ad31857e39',1,'ir_Daikin.h']]], + ['kdaikin2biteyeautooffset_1062',['kDaikin2BitEyeAutoOffset',['../ir__Daikin_8h.html#a73db209ad074eeaef1a5317cbee8ab35',1,'ir_Daikin.h']]], + ['kdaikin2biteyeoffset_1063',['kDaikin2BitEyeOffset',['../ir__Daikin_8h.html#a7a4c6e131d9a0e441de549bd5f93074f',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshair_1064',['kDaikin2BitFreshAir',['../ir__Daikin_8h.html#a9ab2c4b0f415ce0042b848e44850b7b8',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshairhigh_1065',['kDaikin2BitFreshAirHigh',['../ir__Daikin_8h.html#a21a3f3c0f39827057d8f459283a72980',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshairhighoffset_1066',['kDaikin2BitFreshAirHighOffset',['../ir__Daikin_8h.html#afd4f5946e5fa5d8f48af32b8934b0f93',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshairoffset_1067',['kDaikin2BitFreshAirOffset',['../ir__Daikin_8h.html#a15e49a577737bdca28c28aeeb4260e57',1,'ir_Daikin.h']]], + ['kdaikin2bitmark_1068',['kDaikin2BitMark',['../ir__Daikin_8h.html#a226f10b7216d4f039cf79af823673a18',1,'ir_Daikin.h']]], + ['kdaikin2bitmold_1069',['kDaikin2BitMold',['../ir__Daikin_8h.html#aa452116afeb7d246cee672d2717e0ff7',1,'ir_Daikin.h']]], + ['kdaikin2bitmoldoffset_1070',['kDaikin2BitMoldOffset',['../ir__Daikin_8h.html#a0e58caeb44ebc6b7c6d06e91fee33795',1,'ir_Daikin.h']]], + ['kdaikin2bitpower_1071',['kDaikin2BitPower',['../ir__Daikin_8h.html#ac7b549d7b68bc245521d7f4e6a4643ab',1,'ir_Daikin.h']]], + ['kdaikin2bitpoweroffset_1072',['kDaikin2BitPowerOffset',['../ir__Daikin_8h.html#a617d14e811cb26b86fef3048151ffc45',1,'ir_Daikin.h']]], + ['kdaikin2bitpurify_1073',['kDaikin2BitPurify',['../ir__Daikin_8h.html#a9c4d6aa579adbfe454aa19f9f604f21c',1,'ir_Daikin.h']]], + ['kdaikin2bitpurifyoffset_1074',['kDaikin2BitPurifyOffset',['../ir__Daikin_8h.html#a847a9646dc86c26da931e5bf6640ddab',1,'ir_Daikin.h']]], + ['kdaikin2bits_1075',['kDaikin2Bits',['../IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de',1,'IRremoteESP8266.h']]], + ['kdaikin2bitsleeptimer_1076',['kDaikin2BitSleepTimer',['../ir__Daikin_8h.html#a928ae056887b123fdf6b1e2072d03564',1,'ir_Daikin.h']]], + ['kdaikin2bitsleeptimeroffset_1077',['kDaikin2BitSleepTimerOffset',['../ir__Daikin_8h.html#abf7cfde40fd00c3500ed08831434b80f',1,'ir_Daikin.h']]], + ['kdaikin2defaultrepeat_1078',['kDaikin2DefaultRepeat',['../IRremoteESP8266_8h.html#a2dde8fd00f8a28e35da04cff9a3a1908',1,'IRremoteESP8266.h']]], + ['kdaikin2fanbyte_1079',['kDaikin2FanByte',['../ir__Daikin_8h.html#a88608f735885e11734ae83a0cc69dc8d',1,'ir_Daikin.h']]], + ['kdaikin2freq_1080',['kDaikin2Freq',['../ir__Daikin_8h.html#ab82e4836d9023c4ba3041d1226761461',1,'ir_Daikin.h']]], + ['kdaikin2gap_1081',['kDaikin2Gap',['../ir__Daikin_8h.html#afe14712c1be4ca14d5cd41e77d4bada0',1,'ir_Daikin.h']]], + ['kdaikin2hdrmark_1082',['kDaikin2HdrMark',['../ir__Daikin_8h.html#ab679ef183af5b94f53697d434e6540c3',1,'ir_Daikin.h']]], + ['kdaikin2hdrspace_1083',['kDaikin2HdrSpace',['../ir__Daikin_8h.html#a557f8eeaf55ff7fda0cacd0245ac27d3',1,'ir_Daikin.h']]], + ['kdaikin2leadermark_1084',['kDaikin2LeaderMark',['../ir__Daikin_8h.html#a533c7ea8f968502d4b31e14eb2b1f614',1,'ir_Daikin.h']]], + ['kdaikin2leaderspace_1085',['kDaikin2LeaderSpace',['../ir__Daikin_8h.html#a9d48d64e470ff0318bd62b3385433f57',1,'ir_Daikin.h']]], + ['kdaikin2lightoffset_1086',['kDaikin2LightOffset',['../ir__Daikin_8h.html#a0f40d38db7c625df9504798938ba24eb',1,'ir_Daikin.h']]], + ['kdaikin2lightsize_1087',['kDaikin2LightSize',['../ir__Daikin_8h.html#a4dc46fabef2c96a263a504a5f9012e1f',1,'ir_Daikin.h']]], + ['kdaikin2mincooltemp_1088',['kDaikin2MinCoolTemp',['../ir__Daikin_8h.html#a78b37644f9327537d35bec4c0fd8faee',1,'ir_Daikin.h']]], + ['kdaikin2onespace_1089',['kDaikin2OneSpace',['../ir__Daikin_8h.html#a70a96368500562fa95f88dc2f203c194',1,'ir_Daikin.h']]], + ['kdaikin2section1length_1090',['kDaikin2Section1Length',['../ir__Daikin_8h.html#a463878e9bfb22ca3c64a40259598872c',1,'ir_Daikin.h']]], + ['kdaikin2section2length_1091',['kDaikin2Section2Length',['../ir__Daikin_8h.html#a8cb956f86fdf487b1ea7ac388eeda2b5',1,'ir_Daikin.h']]], + ['kdaikin2sections_1092',['kDaikin2Sections',['../ir__Daikin_8h.html#a770cef4efa5d5668b063cf0e26f1b134',1,'ir_Daikin.h']]], + ['kdaikin2statelength_1093',['kDaikin2StateLength',['../IRremoteESP8266_8h.html#a349e4d17f83bb3e707ff19c0255c1644',1,'IRremoteESP8266.h']]], + ['kdaikin2swinghauto_1094',['kDaikin2SwingHAuto',['../ir__Daikin_8h.html#a834a3138b0f9bfdac98d26aa63bc951e',1,'ir_Daikin.h']]], + ['kdaikin2swinghleft_1095',['kDaikin2SwingHLeft',['../ir__Daikin_8h.html#aa9b294b2f12660081171df290a7e874f',1,'ir_Daikin.h']]], + ['kdaikin2swinghleftmax_1096',['kDaikin2SwingHLeftMax',['../ir__Daikin_8h.html#aac08696fc9734996537204c089db2f7c',1,'ir_Daikin.h']]], + ['kdaikin2swinghmiddle_1097',['kDaikin2SwingHMiddle',['../ir__Daikin_8h.html#ab882d68819344e622182b07ded30cccf',1,'ir_Daikin.h']]], + ['kdaikin2swinghright_1098',['kDaikin2SwingHRight',['../ir__Daikin_8h.html#a8d7c79266bedbb722dc1a74c8b727a27',1,'ir_Daikin.h']]], + ['kdaikin2swinghrightmax_1099',['kDaikin2SwingHRightMax',['../ir__Daikin_8h.html#a843ad9ee10eccd799814ca9fff57f481',1,'ir_Daikin.h']]], + ['kdaikin2swinghswing_1100',['kDaikin2SwingHSwing',['../ir__Daikin_8h.html#a3776d46e94a771a6dc94d14257f34d09',1,'ir_Daikin.h']]], + ['kdaikin2swinghwide_1101',['kDaikin2SwingHWide',['../ir__Daikin_8h.html#a93157e048486e564757ba737551cf481',1,'ir_Daikin.h']]], + ['kdaikin2swingvauto_1102',['kDaikin2SwingVAuto',['../ir__Daikin_8h.html#aa91228576ef22854a693c86df5276cbb',1,'ir_Daikin.h']]], + ['kdaikin2swingvbreeze_1103',['kDaikin2SwingVBreeze',['../ir__Daikin_8h.html#a5646d38fff6a985314158796665d9d76',1,'ir_Daikin.h']]], + ['kdaikin2swingvcirculate_1104',['kDaikin2SwingVCirculate',['../ir__Daikin_8h.html#a717bb32ce20e6d65ee78a9e8ba0f5490',1,'ir_Daikin.h']]], + ['kdaikin2swingvhigh_1105',['kDaikin2SwingVHigh',['../ir__Daikin_8h.html#a2d25d46fb289c3450ed6817a45982e27',1,'ir_Daikin.h']]], + ['kdaikin2swingvlow_1106',['kDaikin2SwingVLow',['../ir__Daikin_8h.html#accae3be213670675f8dfc974fe19f2cf',1,'ir_Daikin.h']]], + ['kdaikin2swingvswing_1107',['kDaikin2SwingVSwing',['../ir__Daikin_8h.html#a2a62938481ba7b4374df50867295c07d',1,'ir_Daikin.h']]], + ['kdaikin2tolerance_1108',['kDaikin2Tolerance',['../ir__Daikin_8h.html#ac428e884b15026c0610cc1b0b8b46154',1,'ir_Daikin.h']]], + ['kdaikin2zerospace_1109',['kDaikin2ZeroSpace',['../ir__Daikin_8h.html#a91b023ce8679d8d0e4434e014e746f99',1,'ir_Daikin.h']]], + ['kdaikin64bitmark_1110',['kDaikin64BitMark',['../ir__Daikin_8h.html#a6d89c1acd56b670b2aba65429d6fbf00',1,'ir_Daikin.h']]], + ['kdaikin64bits_1111',['kDaikin64Bits',['../IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f',1,'IRremoteESP8266.h']]], + ['kdaikin64checksumoffset_1112',['kDaikin64ChecksumOffset',['../ir__Daikin_8h.html#a5c47c0a0b1d2a23620beb2496af958c5',1,'ir_Daikin.h']]], + ['kdaikin64checksumsize_1113',['kDaikin64ChecksumSize',['../ir__Daikin_8h.html#a0c068274c73deb732e70a7daf6684391',1,'ir_Daikin.h']]], + ['kdaikin64clockhourssize_1114',['kDaikin64ClockHoursSize',['../ir__Daikin_8h.html#ae6d8f59a9707bc807a209167231d4399',1,'ir_Daikin.h']]], + ['kdaikin64clockminssize_1115',['kDaikin64ClockMinsSize',['../ir__Daikin_8h.html#a3ab23d9db994fb6dd52208f5f69b4531',1,'ir_Daikin.h']]], + ['kdaikin64clockoffset_1116',['kDaikin64ClockOffset',['../ir__Daikin_8h.html#af204ccf4e6bd33439cec240445785e9c',1,'ir_Daikin.h']]], + ['kdaikin64clocksize_1117',['kDaikin64ClockSize',['../ir__Daikin_8h.html#a110f42ae8aa2651b195c67eef15c4d79',1,'ir_Daikin.h']]], + ['kdaikin64cool_1118',['kDaikin64Cool',['../ir__Daikin_8h.html#a1ed020e8e7b5b741e90c4a27ca9f3a91',1,'ir_Daikin.h']]], + ['kdaikin64defaultrepeat_1119',['kDaikin64DefaultRepeat',['../IRremoteESP8266_8h.html#aca64338c3e3bbe52f8ec5688317041b3',1,'IRremoteESP8266.h']]], + ['kdaikin64dry_1120',['kDaikin64Dry',['../ir__Daikin_8h.html#aa494c8e2a54209c7467fdd7f40655b0b',1,'ir_Daikin.h']]], + ['kdaikin64fan_1121',['kDaikin64Fan',['../ir__Daikin_8h.html#aa1f4bb12be0f74af35ee54a5540f8a7b',1,'ir_Daikin.h']]], + ['kdaikin64fanauto_1122',['kDaikin64FanAuto',['../ir__Daikin_8h.html#a6fbc965cb8194048ed27d586321c01b2',1,'ir_Daikin.h']]], + ['kdaikin64fanhigh_1123',['kDaikin64FanHigh',['../ir__Daikin_8h.html#a122d57c30d1f4ad8f20d44077b0a1970',1,'ir_Daikin.h']]], + ['kdaikin64fanlow_1124',['kDaikin64FanLow',['../ir__Daikin_8h.html#a5a692fdcb373acf101536adb4c18384f',1,'ir_Daikin.h']]], + ['kdaikin64fanmed_1125',['kDaikin64FanMed',['../ir__Daikin_8h.html#a9b2737ba57e38d4c3dfe7bc65de4c944',1,'ir_Daikin.h']]], + ['kdaikin64fanoffset_1126',['kDaikin64FanOffset',['../ir__Daikin_8h.html#a5523d6df96b83aa152adc1cbdac6534f',1,'ir_Daikin.h']]], + ['kdaikin64fanquiet_1127',['kDaikin64FanQuiet',['../ir__Daikin_8h.html#a1a7d78b2ed8ca5b83d6422d659ecb296',1,'ir_Daikin.h']]], + ['kdaikin64fansize_1128',['kDaikin64FanSize',['../ir__Daikin_8h.html#ac907b8f8d46eb7983a1289f23bc02401',1,'ir_Daikin.h']]], + ['kdaikin64fanturbo_1129',['kDaikin64FanTurbo',['../ir__Daikin_8h.html#ae6d370916c0897bc82346136d7922f5d',1,'ir_Daikin.h']]], + ['kdaikin64freq_1130',['kDaikin64Freq',['../ir__Daikin_8h.html#a7b63829df4d0e1de61ed396c3b07e988',1,'ir_Daikin.h']]], + ['kdaikin64gap_1131',['kDaikin64Gap',['../ir__Daikin_8h.html#ae191cb5f6c65b944970158caaf56618d',1,'ir_Daikin.h']]], + ['kdaikin64hdrmark_1132',['kDaikin64HdrMark',['../ir__Daikin_8h.html#abe7b92798de08dfc5f044869891bdec5',1,'ir_Daikin.h']]], + ['kdaikin64hdrspace_1133',['kDaikin64HdrSpace',['../ir__Daikin_8h.html#a1eac122554acda264f9aa48261b2a884',1,'ir_Daikin.h']]], + ['kdaikin64knowngoodstate_1134',['kDaikin64KnownGoodState',['../ir__Daikin_8h.html#a09f0aa8c586b35b79bbceb19e822eb48',1,'ir_Daikin.h']]], + ['kdaikin64ldrmark_1135',['kDaikin64LdrMark',['../ir__Daikin_8h.html#aca20b8ee0fa9a8aa2d676ef12bd5ba97',1,'ir_Daikin.h']]], + ['kdaikin64ldrspace_1136',['kDaikin64LdrSpace',['../ir__Daikin_8h.html#ada1084c119abe58dadcb17eb4cfed072',1,'ir_Daikin.h']]], + ['kdaikin64maxtemp_1137',['kDaikin64MaxTemp',['../ir__Daikin_8h.html#a495e3b77590263a2c043c1ba12489fac',1,'ir_Daikin.h']]], + ['kdaikin64mintemp_1138',['kDaikin64MinTemp',['../ir__Daikin_8h.html#a209cb1798ae64de1f5274fb167ee62ea',1,'ir_Daikin.h']]], + ['kdaikin64modeoffset_1139',['kDaikin64ModeOffset',['../ir__Daikin_8h.html#ac32a0c805d01b5a9fa4d4aeb5546b8e3',1,'ir_Daikin.h']]], + ['kdaikin64modesize_1140',['kDaikin64ModeSize',['../ir__Daikin_8h.html#a451465916f9ae0586cf915005be33315',1,'ir_Daikin.h']]], + ['kdaikin64offtimeenablebit_1141',['kDaikin64OffTimeEnableBit',['../ir__Daikin_8h.html#a5d5c1380e6dd22cef44a76f74049a813',1,'ir_Daikin.h']]], + ['kdaikin64offtimehalfhourbit_1142',['kDaikin64OffTimeHalfHourBit',['../ir__Daikin_8h.html#a766df1d3c0fce7576a3e694b6e0d9242',1,'ir_Daikin.h']]], + ['kdaikin64offtimeoffset_1143',['kDaikin64OffTimeOffset',['../ir__Daikin_8h.html#a3aecddae0a4c0a3123b296dd6b0fb38e',1,'ir_Daikin.h']]], + ['kdaikin64offtimesize_1144',['kDaikin64OffTimeSize',['../ir__Daikin_8h.html#a70e8ae340d5f1ca35b2d6a46020b9dcc',1,'ir_Daikin.h']]], + ['kdaikin64onespace_1145',['kDaikin64OneSpace',['../ir__Daikin_8h.html#ab3129b72f5300893d04b47e72dd420e1',1,'ir_Daikin.h']]], + ['kdaikin64ontimeenablebit_1146',['kDaikin64OnTimeEnableBit',['../ir__Daikin_8h.html#ae264ee33d051149cecc08e3a026feba7',1,'ir_Daikin.h']]], + ['kdaikin64ontimehalfhourbit_1147',['kDaikin64OnTimeHalfHourBit',['../ir__Daikin_8h.html#a0d37e6624946b26dd30c3ed25181cc37',1,'ir_Daikin.h']]], + ['kdaikin64ontimeoffset_1148',['kDaikin64OnTimeOffset',['../ir__Daikin_8h.html#a6b4af969e8b114502f067b039b0a9467',1,'ir_Daikin.h']]], + ['kdaikin64ontimesize_1149',['kDaikin64OnTimeSize',['../ir__Daikin_8h.html#a46c5e1db123959992db9e746e2b3c58a',1,'ir_Daikin.h']]], + ['kdaikin64overhead_1150',['kDaikin64Overhead',['../ir__Daikin_8h.html#af0dafe45d0127430e05f2312e8ba99bb',1,'ir_Daikin.h']]], + ['kdaikin64powertogglebit_1151',['kDaikin64PowerToggleBit',['../ir__Daikin_8h.html#a55ca8803d859f0ffaac3c3547d6b532c',1,'ir_Daikin.h']]], + ['kdaikin64sleepbit_1152',['kDaikin64SleepBit',['../ir__Daikin_8h.html#addbe01f4a4766469fe5fd1cf9972f437',1,'ir_Daikin.h']]], + ['kdaikin64swingvbit_1153',['kDaikin64SwingVBit',['../ir__Daikin_8h.html#a9c7cbb529c760cead772fe03f7f90b1a',1,'ir_Daikin.h']]], + ['kdaikin64tempoffset_1154',['kDaikin64TempOffset',['../ir__Daikin_8h.html#a4b66ea40f97deafc22df18bd0942b5f1',1,'ir_Daikin.h']]], + ['kdaikin64tempsize_1155',['kDaikin64TempSize',['../ir__Daikin_8h.html#acc21945b46b307068e8669c83fbe5837',1,'ir_Daikin.h']]], + ['kdaikin64tolerancedelta_1156',['kDaikin64ToleranceDelta',['../ir__Daikin_8h.html#ae0b22a140c2727de9a347e8ab8d554e9',1,'ir_Daikin.h']]], + ['kdaikin64zerospace_1157',['kDaikin64ZeroSpace',['../ir__Daikin_8h.html#a142e45c289af1e9802254b9c138003fa',1,'ir_Daikin.h']]], + ['kdaikinauto_1158',['kDaikinAuto',['../ir__Daikin_8h.html#af3a0e7c149d020002cdf345a15606542',1,'ir_Daikin.h']]], + ['kdaikinbeeploud_1159',['kDaikinBeepLoud',['../ir__Daikin_8h.html#a4eb2b3899076882e3ed23220138ebac1',1,'ir_Daikin.h']]], + ['kdaikinbeepoff_1160',['kDaikinBeepOff',['../ir__Daikin_8h.html#a8271934c8bbd4b8e4d6aacdee5a038cf',1,'ir_Daikin.h']]], + ['kdaikinbeepquiet_1161',['kDaikinBeepQuiet',['../ir__Daikin_8h.html#a11008f7d6afc934426b88704d47301e7',1,'ir_Daikin.h']]], + ['kdaikinbitcomfort_1162',['kDaikinBitComfort',['../ir__Daikin_8h.html#aede9991f88965161d3f7cf1dba7fdeb7',1,'ir_Daikin.h']]], + ['kdaikinbitcomfortoffset_1163',['kDaikinBitComfortOffset',['../ir__Daikin_8h.html#a2e218dda2eb4ab3a97ea8018192c5f85',1,'ir_Daikin.h']]], + ['kdaikinbitecono_1164',['kDaikinBitEcono',['../ir__Daikin_8h.html#ab579939e749517944e6e497d5e44e922',1,'ir_Daikin.h']]], + ['kdaikinbiteconooffset_1165',['kDaikinBitEconoOffset',['../ir__Daikin_8h.html#aa99539b36ab708397bd1adbd4fd4f378',1,'ir_Daikin.h']]], + ['kdaikinbiteye_1166',['kDaikinBitEye',['../ir__Daikin_8h.html#a98bbaae1b0f16cf6f2428dcf326eda51',1,'ir_Daikin.h']]], + ['kdaikinbitmark_1167',['kDaikinBitMark',['../ir__Daikin_8h.html#ae109b9ea2120f989dac2529345e38adb',1,'ir_Daikin.h']]], + ['kdaikinbitmold_1168',['kDaikinBitMold',['../ir__Daikin_8h.html#a916ad89ccf3c0225a4ca1b36d74c67b2',1,'ir_Daikin.h']]], + ['kdaikinbitmoldoffset_1169',['kDaikinBitMoldOffset',['../ir__Daikin_8h.html#ad794d6ff5b5d05642e2668378d3a1100',1,'ir_Daikin.h']]], + ['kdaikinbitofftimer_1170',['kDaikinBitOffTimer',['../ir__Daikin_8h.html#a5d68046ada1892be65f14d06c2a25b2b',1,'ir_Daikin.h']]], + ['kdaikinbitofftimeroffset_1171',['kDaikinBitOffTimerOffset',['../ir__Daikin_8h.html#a7156bec80ef23aa0e4e212e11d63bdef',1,'ir_Daikin.h']]], + ['kdaikinbitontimer_1172',['kDaikinBitOnTimer',['../ir__Daikin_8h.html#a421a745ce85313d326e00b996b5afd80',1,'ir_Daikin.h']]], + ['kdaikinbitontimeroffset_1173',['kDaikinBitOnTimerOffset',['../ir__Daikin_8h.html#a7a6b740034320cc25fb6d33d36845ca0',1,'ir_Daikin.h']]], + ['kdaikinbitpower_1174',['kDaikinBitPower',['../ir__Daikin_8h.html#ab0d91673bcd73cbbbf5f18d6d73b699e',1,'ir_Daikin.h']]], + ['kdaikinbitpowerful_1175',['kDaikinBitPowerful',['../ir__Daikin_8h.html#a4d03bc31a28d866c3bf855f6482209e8',1,'ir_Daikin.h']]], + ['kdaikinbitpowerfuloffset_1176',['kDaikinBitPowerfulOffset',['../ir__Daikin_8h.html#a772bca7454e28bd3f61cdd24f58b98c8',1,'ir_Daikin.h']]], + ['kdaikinbitpoweroffset_1177',['kDaikinBitPowerOffset',['../ir__Daikin_8h.html#ad3672753b2b06b52cd8afeca3f564af4',1,'ir_Daikin.h']]], + ['kdaikinbits_1178',['kDaikinBits',['../IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485',1,'IRremoteESP8266.h']]], + ['kdaikinbitsensor_1179',['kDaikinBitSensor',['../ir__Daikin_8h.html#a37c7e26d1af184f844ef2c46064137ad',1,'ir_Daikin.h']]], + ['kdaikinbitsensoroffset_1180',['kDaikinBitSensorOffset',['../ir__Daikin_8h.html#a1ccb2c358aef3bf55005cf6b391e9e9b',1,'ir_Daikin.h']]], + ['kdaikinbitsilent_1181',['kDaikinBitSilent',['../ir__Daikin_8h.html#a85249d39c34b1a8b3bb8de4da32bb502',1,'ir_Daikin.h']]], + ['kdaikinbitsilentoffset_1182',['kDaikinBitSilentOffset',['../ir__Daikin_8h.html#a3fb5172c458084319937aa4ec2d6383b',1,'ir_Daikin.h']]], + ['kdaikinbitsshort_1183',['kDaikinBitsShort',['../IRremoteESP8266_8h.html#aebaa8eb786747761fb369cfd34181cb7',1,'IRremoteESP8266.h']]], + ['kdaikinbitweeklytimer_1184',['kDaikinBitWeeklyTimer',['../ir__Daikin_8h.html#a7d58b7c351394a43117e4710acd35cec',1,'ir_Daikin.h']]], + ['kdaikinbitweeklytimeroffset_1185',['kDaikinBitWeeklyTimerOffset',['../ir__Daikin_8h.html#a8ff2c05701327b6f26bee66361e39365',1,'ir_Daikin.h']]], + ['kdaikinbytechecksum1_1186',['kDaikinByteChecksum1',['../ir__Daikin_8h.html#a887d8d38cf4330e1107443471fa119ca',1,'ir_Daikin.h']]], + ['kdaikinbytechecksum2_1187',['kDaikinByteChecksum2',['../ir__Daikin_8h.html#ab27225f21b29e617bf03fc68cc6e8e0f',1,'ir_Daikin.h']]], + ['kdaikinbytechecksum3_1188',['kDaikinByteChecksum3',['../ir__Daikin_8h.html#a7277c453d4deed6abf0a7577b5b4454f',1,'ir_Daikin.h']]], + ['kdaikinbyteclockminshigh_1189',['kDaikinByteClockMinsHigh',['../ir__Daikin_8h.html#ade7d506fd7da26ae1713602c1620f716',1,'ir_Daikin.h']]], + ['kdaikinbyteclockminslow_1190',['kDaikinByteClockMinsLow',['../ir__Daikin_8h.html#a3c096c2f33eca6c6f7f57f0f684a4b43',1,'ir_Daikin.h']]], + ['kdaikinbytecomfort_1191',['kDaikinByteComfort',['../ir__Daikin_8h.html#a3b209715b7ac4e8ef4f15043654e646b',1,'ir_Daikin.h']]], + ['kdaikinbyteecono_1192',['kDaikinByteEcono',['../ir__Daikin_8h.html#ae08470f2e453a2a5b60bdb478fc8c6d7',1,'ir_Daikin.h']]], + ['kdaikinbyteeye_1193',['kDaikinByteEye',['../ir__Daikin_8h.html#ad3e2bb2f17d599c708e64cf08c042331',1,'ir_Daikin.h']]], + ['kdaikinbytefan_1194',['kDaikinByteFan',['../ir__Daikin_8h.html#a9078ad5b6b9afe43ffa0e646c35f3db6',1,'ir_Daikin.h']]], + ['kdaikinbytemold_1195',['kDaikinByteMold',['../ir__Daikin_8h.html#a81e098798e6aa7c0882703dced8ab039',1,'ir_Daikin.h']]], + ['kdaikinbyteofftimer_1196',['kDaikinByteOffTimer',['../ir__Daikin_8h.html#ad7fce891883a25e260cd8c0890d46f59',1,'ir_Daikin.h']]], + ['kdaikinbyteofftimerminshigh_1197',['kDaikinByteOffTimerMinsHigh',['../ir__Daikin_8h.html#a0294c99254e3eef7e7fa2cd169e0e5a9',1,'ir_Daikin.h']]], + ['kdaikinbyteofftimerminslow_1198',['kDaikinByteOffTimerMinsLow',['../ir__Daikin_8h.html#a45855767cf37f1562a7726dbf6419c87',1,'ir_Daikin.h']]], + ['kdaikinbyteontimer_1199',['kDaikinByteOnTimer',['../ir__Daikin_8h.html#a0a685bb92d8e3df4c9bd96b71c48f352',1,'ir_Daikin.h']]], + ['kdaikinbyteontimerminshigh_1200',['kDaikinByteOnTimerMinsHigh',['../ir__Daikin_8h.html#a77ce46689e1a353237edd45e7170bff6',1,'ir_Daikin.h']]], + ['kdaikinbyteontimerminslow_1201',['kDaikinByteOnTimerMinsLow',['../ir__Daikin_8h.html#a7c434f5c6a3febddf3da44e1c2b97872',1,'ir_Daikin.h']]], + ['kdaikinbytepower_1202',['kDaikinBytePower',['../ir__Daikin_8h.html#aa99cac4871f7ef1cdff2f41496989218',1,'ir_Daikin.h']]], + ['kdaikinbytepowerful_1203',['kDaikinBytePowerful',['../ir__Daikin_8h.html#a79b3d4cd40f839a3708fa33abb4b74c4',1,'ir_Daikin.h']]], + ['kdaikinbytesensor_1204',['kDaikinByteSensor',['../ir__Daikin_8h.html#afd18e8b5b4c9c6572659ea46df01a6df',1,'ir_Daikin.h']]], + ['kdaikinbytesilent_1205',['kDaikinByteSilent',['../ir__Daikin_8h.html#aac58a7371777f682cac3189d9905b968',1,'ir_Daikin.h']]], + ['kdaikinbyteswingh_1206',['kDaikinByteSwingH',['../ir__Daikin_8h.html#a58b88a2679bd57d723aa33afca4f2427',1,'ir_Daikin.h']]], + ['kdaikinbytetemp_1207',['kDaikinByteTemp',['../ir__Daikin_8h.html#acd14c2ebc40a8375343595ed8f0109f8',1,'ir_Daikin.h']]], + ['kdaikinbyteweeklytimer_1208',['kDaikinByteWeeklyTimer',['../ir__Daikin_8h.html#ad4eba59910311bdc8b489b27b4b59751',1,'ir_Daikin.h']]], + ['kdaikinclockminshighoffset_1209',['kDaikinClockMinsHighOffset',['../ir__Daikin_8h.html#a1b28496ffacf558f7919029f029c2dc6',1,'ir_Daikin.h']]], + ['kdaikinclockminshighsize_1210',['kDaikinClockMinsHighSize',['../ir__Daikin_8h.html#a1e018d153b13c65e411b3b090efc6d27',1,'ir_Daikin.h']]], + ['kdaikincool_1211',['kDaikinCool',['../ir__Daikin_8h.html#aa57615a0a9f79b97139580a807bf095f',1,'ir_Daikin.h']]], + ['kdaikincurbit_1212',['kDaikinCurBit',['../ir__Daikin_8h.html#afccfde2b46f5fcb425f02a79a9c20494',1,'ir_Daikin.h']]], + ['kdaikincurindex_1213',['kDaikinCurIndex',['../ir__Daikin_8h.html#a5c01a0bfbd92b337d2e4a5c3df381865',1,'ir_Daikin.h']]], + ['kdaikindefaultrepeat_1214',['kDaikinDefaultRepeat',['../IRremoteESP8266_8h.html#af691d5202b7f121a16b2d9871ee14d9c',1,'IRremoteESP8266.h']]], + ['kdaikindowoffset_1215',['kDaikinDoWOffset',['../ir__Daikin_8h.html#a07793a4b1ea8e9aabb77730ccbdf7e15',1,'ir_Daikin.h']]], + ['kdaikindowsize_1216',['kDaikinDoWSize',['../ir__Daikin_8h.html#a7bb34e2fc2c1926167b79889a5036ba0',1,'ir_Daikin.h']]], + ['kdaikindry_1217',['kDaikinDry',['../ir__Daikin_8h.html#ab6143bef74a122c3fba3a3b29df0cf29',1,'ir_Daikin.h']]], + ['kdaikinfan_1218',['kDaikinFan',['../ir__Daikin_8h.html#a616df34328cdac764aecc9ffb0f16f09',1,'ir_Daikin.h']]], + ['kdaikinfanauto_1219',['kDaikinFanAuto',['../ir__Daikin_8h.html#a87807bd5727d9da1b615fca2bd732292',1,'ir_Daikin.h']]], + ['kdaikinfanmax_1220',['kDaikinFanMax',['../ir__Daikin_8h.html#ab483f3913a909884f44f8cd8f779bca0',1,'ir_Daikin.h']]], + ['kdaikinfanmed_1221',['kDaikinFanMed',['../ir__Daikin_8h.html#ab6eb2c902c2b5f927160efc9fb9ab08c',1,'ir_Daikin.h']]], + ['kdaikinfanmin_1222',['kDaikinFanMin',['../ir__Daikin_8h.html#a83ad300b9374e50c22211501ee2d1a7a',1,'ir_Daikin.h']]], + ['kdaikinfanoffset_1223',['kDaikinFanOffset',['../ir__Daikin_8h.html#a48d0d0cb1174069d5b6ee2882761cb88',1,'ir_Daikin.h']]], + ['kdaikinfanquiet_1224',['kDaikinFanQuiet',['../ir__Daikin_8h.html#aae481cf166671c30bccdc7f47aa6666e',1,'ir_Daikin.h']]], + ['kdaikinfansize_1225',['kDaikinFanSize',['../ir__Daikin_8h.html#a1e490e414ff3f5f55b4cca443661cd1a',1,'ir_Daikin.h']]], + ['kdaikinfirstheader64_1226',['kDaikinFirstHeader64',['../ir__Daikin_8h.html#a0bd3b36061d545bb21562622642f4196',1,'ir_Daikin.h']]], + ['kdaikingap_1227',['kDaikinGap',['../ir__Daikin_8h.html#aed68991584125a277593c339ab387276',1,'ir_Daikin.h']]], + ['kdaikinhdrmark_1228',['kDaikinHdrMark',['../ir__Daikin_8h.html#a0a38b3bdfd8f4f7a18f969188388e29e',1,'ir_Daikin.h']]], + ['kdaikinhdrspace_1229',['kDaikinHdrSpace',['../ir__Daikin_8h.html#ac4ca6c53faeec7d7a7ccfb50802087dc',1,'ir_Daikin.h']]], + ['kdaikinheaderlength_1230',['kDaikinHeaderLength',['../ir__Daikin_8h.html#a476ca864b6791439549bb4257ca78b23',1,'ir_Daikin.h']]], + ['kdaikinheat_1231',['kDaikinHeat',['../ir__Daikin_8h.html#a05824dc5af4ed0d3eceda540ad0e7a9f',1,'ir_Daikin.h']]], + ['kdaikinlightbright_1232',['kDaikinLightBright',['../ir__Daikin_8h.html#a20a3103d8d0a672c0c05c1679bf3b2ab',1,'ir_Daikin.h']]], + ['kdaikinlightdim_1233',['kDaikinLightDim',['../ir__Daikin_8h.html#a1093baf5b62fca42f9361715be2198a3',1,'ir_Daikin.h']]], + ['kdaikinlightoff_1234',['kDaikinLightOff',['../ir__Daikin_8h.html#ae57f7d2ea43e865ebf8175a8dbacab45',1,'ir_Daikin.h']]], + ['kdaikinmarkexcess_1235',['kDaikinMarkExcess',['../ir__Daikin_8h.html#a5331e1ee51bd7b001346aa41ee5d26cc',1,'ir_Daikin.h']]], + ['kdaikinmaxtemp_1236',['kDaikinMaxTemp',['../ir__Daikin_8h.html#aab7be756494a5ed23e9202af769e0012',1,'ir_Daikin.h']]], + ['kdaikinmintemp_1237',['kDaikinMinTemp',['../ir__Daikin_8h.html#af257feb15dc282c7d06351ee9eed666b',1,'ir_Daikin.h']]], + ['kdaikinmodeoffset_1238',['kDaikinModeOffset',['../ir__Daikin_8h.html#a9a3aa5ee98496b468c5ba86faa3eeeae',1,'ir_Daikin.h']]], + ['kdaikinmodesize_1239',['kDaikinModeSize',['../ir__Daikin_8h.html#a00fc390085520e5382dbce2633b7142e',1,'ir_Daikin.h']]], + ['kdaikinonespace_1240',['kDaikinOneSpace',['../ir__Daikin_8h.html#a6653082dcfde989bd2c5810809fc18a9',1,'ir_Daikin.h']]], + ['kdaikinontimerminshighoffset_1241',['kDaikinOnTimerMinsHighOffset',['../ir__Daikin_8h.html#a2a4a4254fc853901686982c1410c77c8',1,'ir_Daikin.h']]], + ['kdaikinontimerminshighsize_1242',['kDaikinOnTimerMinsHighSize',['../ir__Daikin_8h.html#a2fc9c203378e49ea1d49557d776de620',1,'ir_Daikin.h']]], + ['kdaikinsection1length_1243',['kDaikinSection1Length',['../ir__Daikin_8h.html#ab3b8aacbebe6c1c5514141102d1ca26f',1,'ir_Daikin.h']]], + ['kdaikinsection2length_1244',['kDaikinSection2Length',['../ir__Daikin_8h.html#a2e65cdf05d22a20f01ae5f6d3e222218',1,'ir_Daikin.h']]], + ['kdaikinsection3length_1245',['kDaikinSection3Length',['../ir__Daikin_8h.html#ae7dbaf6b4034267e4610087f9f2f51e3',1,'ir_Daikin.h']]], + ['kdaikinsections_1246',['kDaikinSections',['../ir__Daikin_8h.html#aad822c70789b861fa5beb839833e0b4c',1,'ir_Daikin.h']]], + ['kdaikinstatelength_1247',['kDaikinStateLength',['../IRremoteESP8266_8h.html#af1fda5b9f355e526dc66cf58824315a7',1,'IRremoteESP8266.h']]], + ['kdaikinstatelengthshort_1248',['kDaikinStateLengthShort',['../IRremoteESP8266_8h.html#ae94c897cb0bd25ca7a4d693c7be9be3d',1,'IRremoteESP8266.h']]], + ['kdaikinswingoff_1249',['kDaikinSwingOff',['../ir__Daikin_8h.html#abc9194f48f63632b87c6139dd8ab6ecf',1,'ir_Daikin.h']]], + ['kdaikinswingoffset_1250',['kDaikinSwingOffset',['../ir__Daikin_8h.html#abeac0c8df9be90fc5b28db4b2284ed10',1,'ir_Daikin.h']]], + ['kdaikinswingon_1251',['kDaikinSwingOn',['../ir__Daikin_8h.html#af19ec29dc79837deca05f6061f2e6524',1,'ir_Daikin.h']]], + ['kdaikinswingsize_1252',['kDaikinSwingSize',['../ir__Daikin_8h.html#a0f7daf6ef2652bc0be591caa2fa0fad6',1,'ir_Daikin.h']]], + ['kdaikintempoffset_1253',['kDaikinTempOffset',['../ir__Daikin_8h.html#a1a38843bdf0f65f29c21b301f6f45ba5',1,'ir_Daikin.h']]], + ['kdaikintempsize_1254',['kDaikinTempSize',['../ir__Daikin_8h.html#aa2eef2bb403846d88df5387912af0a00',1,'ir_Daikin.h']]], + ['kdaikintolerance_1255',['kDaikinTolerance',['../ir__Daikin_8h.html#aea3938d1522df0040ddb9775075d6669',1,'ir_Daikin.h']]], + ['kdaikinunusedtime_1256',['kDaikinUnusedTime',['../ir__Daikin_8h.html#af60d27bb9d08317498b35f62c167f6a4',1,'ir_Daikin.h']]], + ['kdaikinzerospace_1257',['kDaikinZeroSpace',['../ir__Daikin_8h.html#ace5b2c2be3b58f22248eafb2148d059c',1,'ir_Daikin.h']]], + ['kdaysstr_1258',['kDaysStr',['../IRtext_8cpp.html#a4269111ae41c3a673ec0a87fca0fd78b',1,'kDaysStr(): IRtext.cpp'],['../IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae',1,'kDaysStr(): IRtext.cpp']]], + ['kdaystr_1259',['kDayStr',['../IRtext_8cpp.html#ab6fb8803c6a95d1926abb56b7ecb2e09',1,'kDayStr(): IRtext.cpp'],['../IRtext_8h.html#adb64531a5054629613696f9af39420e2',1,'kDayStr(): IRtext.cpp']]], + ['kdefaultesp32timer_1260',['kDefaultESP32Timer',['../IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709',1,'IRrecv.h']]], + ['kdefaultmessagegap_1261',['kDefaultMessageGap',['../IRsend_8h.html#ad49e9828319afbad49fd5082c50ef4a7',1,'IRsend.h']]], + ['kdelonghiacauto_1262',['kDelonghiAcAuto',['../ir__Delonghi_8h.html#ab10d4fe0b9dbe99ed942b73a6ff61d37',1,'ir_Delonghi.h']]], + ['kdelonghiacbitmark_1263',['kDelonghiAcBitMark',['../ir__Delonghi_8cpp.html#aa70f02d16b78f513e245871d4db0785a',1,'ir_Delonghi.cpp']]], + ['kdelonghiacbits_1264',['kDelonghiAcBits',['../IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909',1,'IRremoteESP8266.h']]], + ['kdelonghiacboostbit_1265',['kDelonghiAcBoostBit',['../ir__Delonghi_8h.html#a52c86741107eb5e33780f78fbf5667d5',1,'ir_Delonghi.h']]], + ['kdelonghiacchecksumoffset_1266',['kDelonghiAcChecksumOffset',['../ir__Delonghi_8h.html#a4b5e3d9874b016f60b7f9c26e7cf0cfd',1,'ir_Delonghi.h']]], + ['kdelonghiacchecksumsize_1267',['kDelonghiAcChecksumSize',['../ir__Delonghi_8h.html#a376acfc72923eccd3a1a9cc04453c0fc',1,'ir_Delonghi.h']]], + ['kdelonghiaccool_1268',['kDelonghiAcCool',['../ir__Delonghi_8h.html#a9447cc3a3f6f4e0603ecc99104523119',1,'ir_Delonghi.h']]], + ['kdelonghiacdefaultrepeat_1269',['kDelonghiAcDefaultRepeat',['../IRremoteESP8266_8h.html#a8f18256a0a6893e077e253e5e80da164',1,'IRremoteESP8266.h']]], + ['kdelonghiacdry_1270',['kDelonghiAcDry',['../ir__Delonghi_8h.html#a1c83f080ac1f48548fcfa5d691ef893d',1,'ir_Delonghi.h']]], + ['kdelonghiacfan_1271',['kDelonghiAcFan',['../ir__Delonghi_8h.html#af494534acfb8ae1c0f9c15bc13e2d0c8',1,'ir_Delonghi.h']]], + ['kdelonghiacfanauto_1272',['kDelonghiAcFanAuto',['../ir__Delonghi_8h.html#adf2286936d79d8c899283fa6e3838ebb',1,'ir_Delonghi.h']]], + ['kdelonghiacfanhigh_1273',['kDelonghiAcFanHigh',['../ir__Delonghi_8h.html#a03027eb1a6a382479b44db0699aee30b',1,'ir_Delonghi.h']]], + ['kdelonghiacfanlow_1274',['kDelonghiAcFanLow',['../ir__Delonghi_8h.html#a053a51021679cd5c4720e7ec68fa43eb',1,'ir_Delonghi.h']]], + ['kdelonghiacfanmedium_1275',['kDelonghiAcFanMedium',['../ir__Delonghi_8h.html#ac748c5e0b7c5acb108086f90c088028f',1,'ir_Delonghi.h']]], + ['kdelonghiacfanoffset_1276',['kDelonghiAcFanOffset',['../ir__Delonghi_8h.html#ab9ff55f2717de8401a940b6afd4c13d6',1,'ir_Delonghi.h']]], + ['kdelonghiacfansize_1277',['kDelonghiAcFanSize',['../ir__Delonghi_8h.html#adc3ed20ff78231b8ac2eb82481d3ebb2',1,'ir_Delonghi.h']]], + ['kdelonghiacfreq_1278',['kDelonghiAcFreq',['../ir__Delonghi_8cpp.html#a9425e4f71aa6454a89b55f3b5789d94d',1,'ir_Delonghi.cpp']]], + ['kdelonghiacgap_1279',['kDelonghiAcGap',['../ir__Delonghi_8cpp.html#ab1cd2481fc96811ed822c8c9f63420c3',1,'ir_Delonghi.cpp']]], + ['kdelonghiachdrmark_1280',['kDelonghiAcHdrMark',['../ir__Delonghi_8cpp.html#a0feead944883173788b8d02b7ae94ef8',1,'ir_Delonghi.cpp']]], + ['kdelonghiachdrspace_1281',['kDelonghiAcHdrSpace',['../ir__Delonghi_8cpp.html#a606ea96746b1b6471b1d76f05bdc7e5a',1,'ir_Delonghi.cpp']]], + ['kdelonghiachourssize_1282',['kDelonghiAcHoursSize',['../ir__Delonghi_8h.html#a94e0d6ed9ba66c467d9fb4467ab4e512',1,'ir_Delonghi.h']]], + ['kdelonghiacminssize_1283',['kDelonghiAcMinsSize',['../ir__Delonghi_8h.html#a91ed842a356878349760fe75f6d686b2',1,'ir_Delonghi.h']]], + ['kdelonghiacmodeoffset_1284',['kDelonghiAcModeOffset',['../ir__Delonghi_8h.html#a8044375ad833a12e56974b71ddfc2bc7',1,'ir_Delonghi.h']]], + ['kdelonghiacmodesize_1285',['kDelonghiAcModeSize',['../ir__Delonghi_8h.html#a30dc468cb735389aff3a27846e8a24f1',1,'ir_Delonghi.h']]], + ['kdelonghiacofftimerenablebit_1286',['kDelonghiAcOffTimerEnableBit',['../ir__Delonghi_8h.html#a93b8d905151be16f6d0918d6fd8d27e2',1,'ir_Delonghi.h']]], + ['kdelonghiacofftimerhoursoffset_1287',['kDelonghiAcOffTimerHoursOffset',['../ir__Delonghi_8h.html#a6d7b8115532bf01ae8c53b2ecbbf223b',1,'ir_Delonghi.h']]], + ['kdelonghiacofftimerminsoffset_1288',['kDelonghiAcOffTimerMinsOffset',['../ir__Delonghi_8h.html#a47b2f9c730c23d2c117141653622e04b',1,'ir_Delonghi.h']]], + ['kdelonghiaconespace_1289',['kDelonghiAcOneSpace',['../ir__Delonghi_8cpp.html#a8805fdc60cd3537ba2d94038610a3490',1,'ir_Delonghi.cpp']]], + ['kdelonghiacontimerenablebit_1290',['kDelonghiAcOnTimerEnableBit',['../ir__Delonghi_8h.html#a56d225e53ffcc29c486fce295ff3295b',1,'ir_Delonghi.h']]], + ['kdelonghiacontimerhoursoffset_1291',['kDelonghiAcOnTimerHoursOffset',['../ir__Delonghi_8h.html#a310b01f1ba238a8342261c01f77f0234',1,'ir_Delonghi.h']]], + ['kdelonghiacontimerminsoffset_1292',['kDelonghiAcOnTimerMinsOffset',['../ir__Delonghi_8h.html#a37d9a33640b64833daeb1ccc4e209be1',1,'ir_Delonghi.h']]], + ['kdelonghiacoverhead_1293',['kDelonghiAcOverhead',['../ir__Delonghi_8cpp.html#ac265c123c0cd7492d26f030d129f3475',1,'ir_Delonghi.cpp']]], + ['kdelonghiacpowerbit_1294',['kDelonghiAcPowerBit',['../ir__Delonghi_8h.html#ac89b7d74aaf3d4beaa21849085d2d7e3',1,'ir_Delonghi.h']]], + ['kdelonghiacsleepbit_1295',['kDelonghiAcSleepBit',['../ir__Delonghi_8h.html#aa1f75ea73bac50c6645625393b137391',1,'ir_Delonghi.h']]], + ['kdelonghiactempautodrymode_1296',['kDelonghiAcTempAutoDryMode',['../ir__Delonghi_8h.html#add6f728d2746a089e00a35644d664a6c',1,'ir_Delonghi.h']]], + ['kdelonghiactempfanmode_1297',['kDelonghiAcTempFanMode',['../ir__Delonghi_8h.html#a120ae31fac35c33214317c3187aae15c',1,'ir_Delonghi.h']]], + ['kdelonghiactempmaxc_1298',['kDelonghiAcTempMaxC',['../ir__Delonghi_8h.html#a476922b8d240c46cf092897f6c701e87',1,'ir_Delonghi.h']]], + ['kdelonghiactempmaxf_1299',['kDelonghiAcTempMaxF',['../ir__Delonghi_8h.html#abc11f81bc221aa3789258b7a990633b3',1,'ir_Delonghi.h']]], + ['kdelonghiactempminc_1300',['kDelonghiAcTempMinC',['../ir__Delonghi_8h.html#ad31267284f7dd8f533fc978ed7e92428',1,'ir_Delonghi.h']]], + ['kdelonghiactempminf_1301',['kDelonghiAcTempMinF',['../ir__Delonghi_8h.html#a0311abab5eff5a8c47261db8e3d40ed5',1,'ir_Delonghi.h']]], + ['kdelonghiactempoffset_1302',['kDelonghiAcTempOffset',['../ir__Delonghi_8h.html#a9d02f6520d6d1d7e305ea651099cc9ef',1,'ir_Delonghi.h']]], + ['kdelonghiactempsize_1303',['kDelonghiAcTempSize',['../ir__Delonghi_8h.html#a3fb467e0d2385893c8c7a8daa0505ec1',1,'ir_Delonghi.h']]], + ['kdelonghiactempunitbit_1304',['kDelonghiAcTempUnitBit',['../ir__Delonghi_8h.html#ac9e6f419569558f4bd5f5a6e10d24bb6',1,'ir_Delonghi.h']]], + ['kdelonghiactimermax_1305',['kDelonghiAcTimerMax',['../ir__Delonghi_8h.html#a44d3f0d850c5cd5ad8c0e2dc7c2bd860',1,'ir_Delonghi.h']]], + ['kdelonghiaczerospace_1306',['kDelonghiAcZeroSpace',['../ir__Delonghi_8cpp.html#a4c1a9a70a50c7da9aa6cf91af85c695e',1,'ir_Delonghi.cpp']]], + ['kdenon48bits_1307',['kDenon48Bits',['../IRremoteESP8266_8h.html#ad7389b5b4f01a16dbf940eaae005c805',1,'IRremoteESP8266.h']]], + ['kdenonbitmark_1308',['kDenonBitMark',['../ir__Denon_8cpp.html#a1cd978061cfdc9bf1d5e1142dad86e59',1,'ir_Denon.cpp']]], + ['kdenonbitmarkticks_1309',['kDenonBitMarkTicks',['../ir__Denon_8cpp.html#ae6dddc89296abc186ac524c3f1efbe63',1,'ir_Denon.cpp']]], + ['kdenonbits_1310',['kDenonBits',['../IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238',1,'IRremoteESP8266.h']]], + ['kdenonhdrmark_1311',['kDenonHdrMark',['../ir__Denon_8cpp.html#a6f7b5da8c723615200109f425df72254',1,'ir_Denon.cpp']]], + ['kdenonhdrmarkticks_1312',['kDenonHdrMarkTicks',['../ir__Denon_8cpp.html#a484a90cdd15de164c931f1c70ab02938',1,'ir_Denon.cpp']]], + ['kdenonhdrspace_1313',['kDenonHdrSpace',['../ir__Denon_8cpp.html#a758b11259a5dcab3e949739cf67106be',1,'ir_Denon.cpp']]], + ['kdenonhdrspaceticks_1314',['kDenonHdrSpaceTicks',['../ir__Denon_8cpp.html#afe6cb1be37dcea0251ebf0fc43640fe1',1,'ir_Denon.cpp']]], + ['kdenonlegacybits_1315',['kDenonLegacyBits',['../IRremoteESP8266_8h.html#aacf2eea1349016ccbc96e97a0976f4ec',1,'IRremoteESP8266.h']]], + ['kdenonmanufacturer_1316',['kDenonManufacturer',['../ir__Denon_8cpp.html#abd89138765e21d25991fd5857506491b',1,'ir_Denon.cpp']]], + ['kdenonmincommandlengthticks_1317',['kDenonMinCommandLengthTicks',['../ir__Denon_8cpp.html#abb20f9f6053e0d46399011de71697a6a',1,'ir_Denon.cpp']]], + ['kdenonmingap_1318',['kDenonMinGap',['../ir__Denon_8cpp.html#a19b3fe79e06b3ece2cb167d5e14b2c11',1,'ir_Denon.cpp']]], + ['kdenonmingapticks_1319',['kDenonMinGapTicks',['../ir__Denon_8cpp.html#a191e0cfcf8167805ef9bfdc05463c313',1,'ir_Denon.cpp']]], + ['kdenononespace_1320',['kDenonOneSpace',['../ir__Denon_8cpp.html#a150b22eeeb64b59a3d9df51904fdda3f',1,'ir_Denon.cpp']]], + ['kdenononespaceticks_1321',['kDenonOneSpaceTicks',['../ir__Denon_8cpp.html#ad15a88b8f6b953918799eac1e814d107',1,'ir_Denon.cpp']]], + ['kdenontick_1322',['kDenonTick',['../ir__Denon_8cpp.html#a6cc0eba04ca4a2362068bf47d1869752',1,'ir_Denon.cpp']]], + ['kdenonzerospace_1323',['kDenonZeroSpace',['../ir__Denon_8cpp.html#ad8f53f000727e66938d086eadb5bf6eb',1,'ir_Denon.cpp']]], + ['kdenonzerospaceticks_1324',['kDenonZeroSpaceTicks',['../ir__Denon_8cpp.html#aed0c86367586cd043d8381499b3a4bdd',1,'ir_Denon.cpp']]], + ['kdishbitmark_1325',['kDishBitMark',['../ir__Dish_8cpp.html#aabe7f9815a2f5e65558b0f482e2ac50e',1,'ir_Dish.cpp']]], + ['kdishbitmarkticks_1326',['kDishBitMarkTicks',['../ir__Dish_8cpp.html#a1cfd9b730c78aac35f6c2cb56367c7bb',1,'ir_Dish.cpp']]], + ['kdishbits_1327',['kDishBits',['../IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831',1,'IRremoteESP8266.h']]], + ['kdishhdrmark_1328',['kDishHdrMark',['../ir__Dish_8cpp.html#ac4311aaed27b1f37a41a2a9cced0ecc5',1,'ir_Dish.cpp']]], + ['kdishhdrmarkticks_1329',['kDishHdrMarkTicks',['../ir__Dish_8cpp.html#a8dce19ee6e3a6859bd2d43c0c9e90517',1,'ir_Dish.cpp']]], + ['kdishhdrspace_1330',['kDishHdrSpace',['../ir__Dish_8cpp.html#ac68dfa9e554c919fd51b379621b2fbc4',1,'ir_Dish.cpp']]], + ['kdishhdrspaceticks_1331',['kDishHdrSpaceTicks',['../ir__Dish_8cpp.html#ab212535e169722d7f23b461b011400c2',1,'ir_Dish.cpp']]], + ['kdishminrepeat_1332',['kDishMinRepeat',['../IRremoteESP8266_8h.html#a5c2263819b032e3af4d416ab41126bd8',1,'IRremoteESP8266.h']]], + ['kdishonespace_1333',['kDishOneSpace',['../ir__Dish_8cpp.html#a6f1986377a4571c8eba5f401b772c194',1,'ir_Dish.cpp']]], + ['kdishonespaceticks_1334',['kDishOneSpaceTicks',['../ir__Dish_8cpp.html#ade25414e4747c56303752060d9f89446',1,'ir_Dish.cpp']]], + ['kdishrptspace_1335',['kDishRptSpace',['../ir__Dish_8cpp.html#a67628a3581fe85638f72711581ec0e42',1,'ir_Dish.cpp']]], + ['kdishrptspaceticks_1336',['kDishRptSpaceTicks',['../ir__Dish_8cpp.html#a801af68fd07720f74abcf2712e3228dd',1,'ir_Dish.cpp']]], + ['kdishtick_1337',['kDishTick',['../ir__Dish_8cpp.html#aa1eccae3b18a457c7cec248d483e808a',1,'ir_Dish.cpp']]], + ['kdishzerospace_1338',['kDishZeroSpace',['../ir__Dish_8cpp.html#acde5c5a789af871f7b5aacdf3f0efeb7',1,'ir_Dish.cpp']]], + ['kdishzerospaceticks_1339',['kDishZeroSpaceTicks',['../ir__Dish_8cpp.html#a68a0f2b9e2e457c8a58fa533e0ca5336',1,'ir_Dish.cpp']]], + ['kdisplaytempstr_1340',['kDisplayTempStr',['../IRtext_8cpp.html#a018814e961b4eb51b91680db3be7d17c',1,'kDisplayTempStr(): IRtext.cpp'],['../IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3',1,'kDisplayTempStr(): IRtext.cpp']]], + ['kdoshishabitmark_1341',['kDoshishaBitMark',['../ir__Doshisha_8cpp.html#a50a4feaff92c4a9fbba6128638fdb2fb',1,'ir_Doshisha.cpp']]], + ['kdoshishabits_1342',['kDoshishaBits',['../IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362',1,'IRremoteESP8266.h']]], + ['kdoshishahdrmark_1343',['kDoshishaHdrMark',['../ir__Doshisha_8cpp.html#adbfc15a1abb62540538afc9c645c1875',1,'ir_Doshisha.cpp']]], + ['kdoshishahdrspace_1344',['kDoshishaHdrSpace',['../ir__Doshisha_8cpp.html#a95a58b09fde0ee9ba59fcf838d16f736',1,'ir_Doshisha.cpp']]], + ['kdoshishaonespace_1345',['kDoshishaOneSpace',['../ir__Doshisha_8cpp.html#a48f3b70ddd3bc06c628ebe7ce29e74d3',1,'ir_Doshisha.cpp']]], + ['kdoshishazerospace_1346',['kDoshishaZeroSpace',['../ir__Doshisha_8cpp.html#a055ae27320600bc7e100ea7e147775f9',1,'ir_Doshisha.cpp']]], + ['kdownstr_1347',['kDownStr',['../IRtext_8cpp.html#a24998688cbbe54780843983394e925e5',1,'kDownStr(): IRtext.cpp'],['../IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd',1,'kDownStr(): IRtext.cpp']]], + ['kdry_1348',['kDry',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa0d254f21cc940f41cf7cc1c8ff46ce1f',1,'stdAc']]], + ['kdrystr_1349',['kDryStr',['../IRtext_8cpp.html#a149780a7bbdd13757ee4336c281ccd9d',1,'kDryStr(): IRtext.cpp'],['../IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5',1,'kDryStr(): IRtext.cpp']]], + ['kdutydefault_1350',['kDutyDefault',['../IRsend_8h.html#affa33c170fe058b783372852fca7cc5b',1,'IRsend.h']]], + ['kdutymax_1351',['kDutyMax',['../IRsend_8h.html#ac076e3f79a3d8d2dae9fc248a6f571e2',1,'IRsend.h']]], + ['keconostr_1352',['kEconoStr',['../IRtext_8cpp.html#a4e3bee67564fe8f13d1d4f997924f464',1,'kEconoStr(): IRtext.cpp'],['../IRtext_8h.html#ab0b71c4429416a581a393f07e898bade',1,'kEconoStr(): IRtext.cpp']]], + ['kelectraacauto_1353',['kElectraAcAuto',['../ir__Electra_8h.html#a536965f5003a474d68860005883afb5a',1,'ir_Electra.h']]], + ['kelectraacbitmark_1354',['kElectraAcBitMark',['../ir__Electra_8cpp.html#a41f7254b061b099b8131ec4d2a775116',1,'ir_Electra.cpp']]], + ['kelectraacbits_1355',['kElectraAcBits',['../IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16',1,'IRremoteESP8266.h']]], + ['kelectraaccleanoffset_1356',['kElectraAcCleanOffset',['../ir__Electra_8h.html#a466b5c998c1e2736214f816f1bab8239',1,'ir_Electra.h']]], + ['kelectraaccool_1357',['kElectraAcCool',['../ir__Electra_8h.html#a6a37f4e24aad54a982994599a1bca59d',1,'ir_Electra.h']]], + ['kelectraacdry_1358',['kElectraAcDry',['../ir__Electra_8h.html#a9b8636631c22e003072bf84a9e30ddff',1,'ir_Electra.h']]], + ['kelectraacfan_1359',['kElectraAcFan',['../ir__Electra_8h.html#a28047c7d083d8bc9d9e34ab210c28185',1,'ir_Electra.h']]], + ['kelectraacfanauto_1360',['kElectraAcFanAuto',['../ir__Electra_8h.html#a48b3067393d4dc1e3461db4535212bff',1,'ir_Electra.h']]], + ['kelectraacfanhigh_1361',['kElectraAcFanHigh',['../ir__Electra_8h.html#a5cbf3118669f056f377b4625e8e97d8c',1,'ir_Electra.h']]], + ['kelectraacfanlow_1362',['kElectraAcFanLow',['../ir__Electra_8h.html#a9a5663e86cb766a4e4579d1b81473c44',1,'ir_Electra.h']]], + ['kelectraacfanmed_1363',['kElectraAcFanMed',['../ir__Electra_8h.html#a4e906bcb7aa6c0fc5c71bd06c43c3993',1,'ir_Electra.h']]], + ['kelectraacfanoffset_1364',['kElectraAcFanOffset',['../ir__Electra_8h.html#a0efe73807b12370aa7c57ff831e56192',1,'ir_Electra.h']]], + ['kelectraacfansize_1365',['kElectraAcFanSize',['../ir__Electra_8h.html#aeb9bddbd47459ae51c1207baac9e6219',1,'ir_Electra.h']]], + ['kelectraachdrmark_1366',['kElectraAcHdrMark',['../ir__Electra_8cpp.html#a1200826684547765f1e526f362408e2e',1,'ir_Electra.cpp']]], + ['kelectraachdrspace_1367',['kElectraAcHdrSpace',['../ir__Electra_8cpp.html#a28cd57057c52b0def3683e71ee92c5d3',1,'ir_Electra.cpp']]], + ['kelectraacheat_1368',['kElectraAcHeat',['../ir__Electra_8h.html#af764a4738f146b752b8e29357af257e3',1,'ir_Electra.h']]], + ['kelectraaclighttogglemask_1369',['kElectraAcLightToggleMask',['../ir__Electra_8h.html#aa51ccef46052dd988ac1bccc4f2303f6',1,'ir_Electra.h']]], + ['kelectraaclighttoggleoff_1370',['kElectraAcLightToggleOff',['../ir__Electra_8h.html#ae98c4a00f003cc98c253b9367226c5c5',1,'ir_Electra.h']]], + ['kelectraaclighttoggleon_1371',['kElectraAcLightToggleOn',['../ir__Electra_8h.html#aa9ca231e98b7e529b081c3aaa1876df9',1,'ir_Electra.h']]], + ['kelectraacmaxtemp_1372',['kElectraAcMaxTemp',['../ir__Electra_8h.html#a3962ca1ae42f006baa1181683cbcbf86',1,'ir_Electra.h']]], + ['kelectraacmessagegap_1373',['kElectraAcMessageGap',['../ir__Electra_8cpp.html#adbcde2296ebf6ea93c7c95ce6d0b264e',1,'ir_Electra.cpp']]], + ['kelectraacminrepeat_1374',['kElectraAcMinRepeat',['../IRremoteESP8266_8h.html#a2ca237d578ca9a59aecac9813ab851ba',1,'IRremoteESP8266.h']]], + ['kelectraacmintemp_1375',['kElectraAcMinTemp',['../ir__Electra_8h.html#ad6f62477d70b59c958ba347c228f8e2b',1,'ir_Electra.h']]], + ['kelectraacmodeoffset_1376',['kElectraAcModeOffset',['../ir__Electra_8h.html#a79ea9dfa776115e5ec4ee816c4eef559',1,'ir_Electra.h']]], + ['kelectraaconespace_1377',['kElectraAcOneSpace',['../ir__Electra_8cpp.html#aeb59d520635a93f5dd7acdbe4327174d',1,'ir_Electra.cpp']]], + ['kelectraacpoweroffset_1378',['kElectraAcPowerOffset',['../ir__Electra_8h.html#a54012f7683397fada44f13c3e57d9ee0',1,'ir_Electra.h']]], + ['kelectraacstatelength_1379',['kElectraAcStateLength',['../IRremoteESP8266_8h.html#a8fb8c5778feaa94114218c36e8e43641',1,'IRremoteESP8266.h']]], + ['kelectraacswinghoffset_1380',['kElectraAcSwingHOffset',['../ir__Electra_8h.html#ac39219316f9b49ead4183cd206b4a3fb',1,'ir_Electra.h']]], + ['kelectraacswingoff_1381',['kElectraAcSwingOff',['../ir__Electra_8h.html#ade2211d0bd695daf490300db856d660a',1,'ir_Electra.h']]], + ['kelectraacswingon_1382',['kElectraAcSwingOn',['../ir__Electra_8h.html#a4ef75911d929752357d727aee339563e',1,'ir_Electra.h']]], + ['kelectraacswingsize_1383',['kElectraAcSwingSize',['../ir__Electra_8h.html#a67c58c049b50d04d4fadd93eee0231cf',1,'ir_Electra.h']]], + ['kelectraacswingvoffset_1384',['kElectraAcSwingVOffset',['../ir__Electra_8h.html#a4a5737e41994fe6c0cd566be354a70fb',1,'ir_Electra.h']]], + ['kelectraactempdelta_1385',['kElectraAcTempDelta',['../ir__Electra_8h.html#ac3310f7b0d4b9fbe22d7192465669487',1,'ir_Electra.h']]], + ['kelectraactempoffset_1386',['kElectraAcTempOffset',['../ir__Electra_8h.html#a928ee72169f9ab56a4209606aa7e5e43',1,'ir_Electra.h']]], + ['kelectraactempsize_1387',['kElectraAcTempSize',['../ir__Electra_8h.html#aeeb469144f4fd02ddd8a802f5cf7c308',1,'ir_Electra.h']]], + ['kelectraacturbooffset_1388',['kElectraAcTurboOffset',['../ir__Electra_8h.html#afbbd997ef8ddf5a4adfd0a37404d6782',1,'ir_Electra.h']]], + ['kelectraaczerospace_1389',['kElectraAcZeroSpace',['../ir__Electra_8cpp.html#a1453e0796cfe6ca169fd3c56e2595082',1,'ir_Electra.cpp']]], + ['kelvinator_1390',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac::kelvinator()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab3a52797572065c912c34c976c08c542',1,'KELVINATOR(): IRremoteESP8266.h']]], + ['kepsonbits_1391',['kEpsonBits',['../IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425',1,'IRremoteESP8266.h']]], + ['kepsonminrepeat_1392',['kEpsonMinRepeat',['../IRremoteESP8266_8h.html#ac8738cb054de937b77269acb973c5133',1,'IRremoteESP8266.h']]], + ['keyeautostr_1393',['kEyeAutoStr',['../IRtext_8cpp.html#ab7c525442638022439c7a277e1edf694',1,'kEyeAutoStr(): IRtext.cpp'],['../IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f',1,'kEyeAutoStr(): IRtext.cpp']]], + ['keyestr_1394',['kEyeStr',['../IRtext_8cpp.html#a1d8dc83e7f15aacd013509e36a49a9d8',1,'kEyeStr(): IRtext.cpp'],['../IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885',1,'kEyeStr(): IRtext.cpp']]], + ['kfalsestr_1395',['kFalseStr',['../IRtext_8cpp.html#a338ee31c8fb5a1c74c0640b279051cd2',1,'kFalseStr(): IRtext.cpp'],['../IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988',1,'kFalseStr(): IRtext.cpp']]], + ['kfan_1396',['kFan',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa03b7310c6ec7018a07ee9e3ffb95a34b',1,'stdAc']]], + ['kfanonlystr_1397',['kFanOnlyStr',['../IRtext_8cpp.html#adada7550fa28466a6db6f4544f8c7063',1,'kFanOnlyStr(): IRtext.cpp'],['../IRtext_8h.html#a220378c7b69db06362af5ad932965628',1,'kFanOnlyStr(): IRtext.cpp']]], + ['kfanstr_1398',['kFanStr',['../IRtext_8cpp.html#aaab703dfae684a786852a55c0f7f61ec',1,'kFanStr(): IRtext.cpp'],['../IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300',1,'kFanStr(): IRtext.cpp']]], + ['kfaststr_1399',['kFastStr',['../IRtext_8cpp.html#ad6084cb569cd62bb1199c6ecc8ac4126',1,'kFastStr(): IRtext.cpp'],['../IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8',1,'kFastStr(): IRtext.cpp']]], + ['kfilterstr_1400',['kFilterStr',['../IRtext_8cpp.html#af287ead64de5dc3b1cbafe7bc945e519',1,'kFilterStr(): IRtext.cpp'],['../IRtext_8h.html#a5b3133e24c729077da411e08119033be',1,'kFilterStr(): IRtext.cpp']]], + ['kfixedstr_1401',['kFixedStr',['../IRtext_8cpp.html#ab45f91a889dae134e48c86586608bfc9',1,'kFixedStr(): IRtext.cpp'],['../IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14',1,'kFixedStr(): IRtext.cpp']]], + ['kfnvbasis32_1402',['kFnvBasis32',['../IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3',1,'IRrecv.h']]], + ['kfnvprime32_1403',['kFnvPrime32',['../IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f',1,'IRrecv.h']]], + ['kfollowstr_1404',['kFollowStr',['../IRtext_8cpp.html#a5477068666c86b3d605df8cf0240c86f',1,'kFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b',1,'kFollowStr(): IRtext.cpp']]], + ['kfooter_1405',['kFooter',['../IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3',1,'IRrecv.h']]], + ['kfreshstr_1406',['kFreshStr',['../IRtext_8cpp.html#ae416979803b912c932aa5eda837fc471',1,'kFreshStr(): IRtext.cpp'],['../IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2',1,'kFreshStr(): IRtext.cpp']]], + ['kfujitsuacbitmark_1407',['kFujitsuAcBitMark',['../ir__Fujitsu_8cpp.html#a2e01906b1317da42fcc204284646e3db',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacbits_1408',['kFujitsuAcBits',['../IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47',1,'IRremoteESP8266.h']]], + ['kfujitsuaccleanoffset_1409',['kFujitsuAcCleanOffset',['../ir__Fujitsu_8h.html#ae7e7dc770ef9712296d2beeb085d2c1f',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdecono_1410',['kFujitsuAcCmdEcono',['../ir__Fujitsu_8h.html#a1e1eb4274232c43769f70b40f395a084',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdpowerful_1411',['kFujitsuAcCmdPowerful',['../ir__Fujitsu_8h.html#a69349537a37674a82b8ca630e6ca1b5a',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdstayon_1412',['kFujitsuAcCmdStayOn',['../ir__Fujitsu_8h.html#acc729a2cd570761f97c63b98024c157d',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdstephoriz_1413',['kFujitsuAcCmdStepHoriz',['../ir__Fujitsu_8h.html#ac67e3fa9ab8f1e1146bed1296f9a2131',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdstepvert_1414',['kFujitsuAcCmdStepVert',['../ir__Fujitsu_8h.html#a5dda60d753d93089fc323bfcd9567afd',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdtoggleswinghoriz_1415',['kFujitsuAcCmdToggleSwingHoriz',['../ir__Fujitsu_8h.html#a43b5912e65a8e6d3f1c672b155135f27',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdtoggleswingvert_1416',['kFujitsuAcCmdToggleSwingVert',['../ir__Fujitsu_8h.html#a66960882cee5d109f332917fe1f8067c',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdturnoff_1417',['kFujitsuAcCmdTurnOff',['../ir__Fujitsu_8h.html#a073903b56c40d89b9999ee9b7dc48f00',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdturnon_1418',['kFujitsuAcCmdTurnOn',['../ir__Fujitsu_8h.html#a51c2abda78c7d6ced59f88acb857281e',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanauto_1419',['kFujitsuAcFanAuto',['../ir__Fujitsu_8h.html#a55bbb5a5b1760515f070d302c9fa4cbb',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanhigh_1420',['kFujitsuAcFanHigh',['../ir__Fujitsu_8h.html#a30b11ea24865a00b10468015aae77886',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanlow_1421',['kFujitsuAcFanLow',['../ir__Fujitsu_8h.html#aa0162cde862a3c02dd877a3a7933c130',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanmed_1422',['kFujitsuAcFanMed',['../ir__Fujitsu_8h.html#a0efcb8e8a6521e4788a82ff6c556b67b',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanquiet_1423',['kFujitsuAcFanQuiet',['../ir__Fujitsu_8h.html#a9abb4ec5fe9f27c6acd62273329490b6',1,'ir_Fujitsu.h']]], + ['kfujitsuacfansize_1424',['kFujitsuAcFanSize',['../ir__Fujitsu_8h.html#a797e68082ceebea788a215ecbfc279d9',1,'ir_Fujitsu.h']]], + ['kfujitsuacfilteroffset_1425',['kFujitsuAcFilterOffset',['../ir__Fujitsu_8h.html#a3c6349b24651bffb33f2633d3c65144c',1,'ir_Fujitsu.h']]], + ['kfujitsuachdrmark_1426',['kFujitsuAcHdrMark',['../ir__Fujitsu_8cpp.html#a96402e0aed6962a8a72cc736fa9bbc08',1,'ir_Fujitsu.cpp']]], + ['kfujitsuachdrspace_1427',['kFujitsuAcHdrSpace',['../ir__Fujitsu_8cpp.html#a655e37e172ab06dc06ca69f3c06223b2',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacmaxtemp_1428',['kFujitsuAcMaxTemp',['../ir__Fujitsu_8h.html#ad817f46441ac1284e3bbe8417e4f4388',1,'ir_Fujitsu.h']]], + ['kfujitsuacminbits_1429',['kFujitsuAcMinBits',['../IRremoteESP8266_8h.html#a025caa6d0ae6becdd5ee58b5ac6ed61f',1,'IRremoteESP8266.h']]], + ['kfujitsuacmingap_1430',['kFujitsuAcMinGap',['../ir__Fujitsu_8cpp.html#a255fab3b9047b34cf6c4d42c0c82c485',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacminrepeat_1431',['kFujitsuAcMinRepeat',['../IRremoteESP8266_8h.html#a9dd52420366167afb4c8831b4ccd02fa',1,'IRremoteESP8266.h']]], + ['kfujitsuacmintemp_1432',['kFujitsuAcMinTemp',['../ir__Fujitsu_8h.html#a35ec9572b356a7bcfb75947d03b198f7',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodeauto_1433',['kFujitsuAcModeAuto',['../ir__Fujitsu_8h.html#acf0aa6d1d033c893a3acd5b8d7756a5b',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodecool_1434',['kFujitsuAcModeCool',['../ir__Fujitsu_8h.html#a782e226fadab0a256144821cacea2314',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodedry_1435',['kFujitsuAcModeDry',['../ir__Fujitsu_8h.html#ae66f2ed2e554a6befdf0377d01bce257',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodefan_1436',['kFujitsuAcModeFan',['../ir__Fujitsu_8h.html#a7cc07ec4747b5cebc50257ec02297800',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodeheat_1437',['kFujitsuAcModeHeat',['../ir__Fujitsu_8h.html#ad9b47b7419853a4cb1cf072023dac69b',1,'ir_Fujitsu.h']]], + ['kfujitsuaconespace_1438',['kFujitsuAcOneSpace',['../ir__Fujitsu_8cpp.html#a4f5246e6428cc701dbaa18923904713a',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacoutsidequietoffset_1439',['kFujitsuAcOutsideQuietOffset',['../ir__Fujitsu_8h.html#a38522dc07bb7be2dd1ec654d4e60eb4f',1,'ir_Fujitsu.h']]], + ['kfujitsuacstatelength_1440',['kFujitsuAcStateLength',['../IRremoteESP8266_8h.html#ac3aa33a8386f73de0f57fc1ff7c6e7d9',1,'IRremoteESP8266.h']]], + ['kfujitsuacstatelengthshort_1441',['kFujitsuAcStateLengthShort',['../IRremoteESP8266_8h.html#a81cb09663eedbdc3888ee68438f0a5d3',1,'IRremoteESP8266.h']]], + ['kfujitsuacswingboth_1442',['kFujitsuAcSwingBoth',['../ir__Fujitsu_8h.html#a07c5a757b0c3bbe07412813807272434',1,'ir_Fujitsu.h']]], + ['kfujitsuacswinghoriz_1443',['kFujitsuAcSwingHoriz',['../ir__Fujitsu_8h.html#a8875f62d61afb8cbf468207aedcb8982',1,'ir_Fujitsu.h']]], + ['kfujitsuacswingoff_1444',['kFujitsuAcSwingOff',['../ir__Fujitsu_8h.html#a7f8109a1b8fd13a93d6b0255d05413df',1,'ir_Fujitsu.h']]], + ['kfujitsuacswingsize_1445',['kFujitsuAcSwingSize',['../ir__Fujitsu_8h.html#a1eb20884dc6c9bccbe899f779c4b5ad4',1,'ir_Fujitsu.h']]], + ['kfujitsuacswingvert_1446',['kFujitsuAcSwingVert',['../ir__Fujitsu_8h.html#a5c532a43ab11bf7cb353de2081260f40',1,'ir_Fujitsu.h']]], + ['kfujitsuaczerospace_1447',['kFujitsuAcZeroSpace',['../ir__Fujitsu_8cpp.html#a3815b89a2037cd0c8d774217df603d6e',1,'ir_Fujitsu.cpp']]], + ['kgicablebitmark_1448',['kGicableBitMark',['../ir__GICable_8cpp.html#ac315be0b5e02fb4c7109a6f67c4fac8e',1,'ir_GICable.cpp']]], + ['kgicablebits_1449',['kGicableBits',['../IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa',1,'IRremoteESP8266.h']]], + ['kgicablehdrmark_1450',['kGicableHdrMark',['../ir__GICable_8cpp.html#a0388e7a2030246928029ed1c79ba819d',1,'ir_GICable.cpp']]], + ['kgicablehdrspace_1451',['kGicableHdrSpace',['../ir__GICable_8cpp.html#ab357b0a095155eab6206245008387fc0',1,'ir_GICable.cpp']]], + ['kgicablemincommandlength_1452',['kGicableMinCommandLength',['../ir__GICable_8cpp.html#a79db5de95ff6b42259f0a54fa59f46f6',1,'ir_GICable.cpp']]], + ['kgicablemingap_1453',['kGicableMinGap',['../ir__GICable_8cpp.html#aff7027ab4b933e4a7f5506590c25f699',1,'ir_GICable.cpp']]], + ['kgicableminrepeat_1454',['kGicableMinRepeat',['../IRremoteESP8266_8h.html#ad8142649290db6fc337ac839d4078aef',1,'IRremoteESP8266.h']]], + ['kgicableonespace_1455',['kGicableOneSpace',['../ir__GICable_8cpp.html#a31300a6f41363cbc22d40f26e693b8be',1,'ir_GICable.cpp']]], + ['kgicablerptspace_1456',['kGicableRptSpace',['../ir__GICable_8cpp.html#a9e0d82ed05e210dec2980a7d1a2e081b',1,'ir_GICable.cpp']]], + ['kgicablezerospace_1457',['kGicableZeroSpace',['../ir__GICable_8cpp.html#a1383f274e701ad5c8141beb7703783ff',1,'ir_GICable.cpp']]], + ['kglobalcachefreqindex_1458',['kGlobalCacheFreqIndex',['../ir__GlobalCache_8cpp.html#aaa0bdfe1eb76e8519a111b6588a5a3ff',1,'ir_GlobalCache.cpp']]], + ['kglobalcachemaxrepeat_1459',['kGlobalCacheMaxRepeat',['../ir__GlobalCache_8cpp.html#ae4a19c45ab538e8a386769cd98943a0d',1,'ir_GlobalCache.cpp']]], + ['kglobalcacheminusec_1460',['kGlobalCacheMinUsec',['../ir__GlobalCache_8cpp.html#a133cf089a7b40516fac3b1143981b2a6',1,'ir_GlobalCache.cpp']]], + ['kglobalcacherptindex_1461',['kGlobalCacheRptIndex',['../ir__GlobalCache_8cpp.html#ad4d55ed7e89cfc6d513dae6ecb211fe9',1,'ir_GlobalCache.cpp']]], + ['kglobalcacherptstartindex_1462',['kGlobalCacheRptStartIndex',['../ir__GlobalCache_8cpp.html#afde4c65e9e75558df6ac7aa479bf507a',1,'ir_GlobalCache.cpp']]], + ['kglobalcachestartindex_1463',['kGlobalCacheStartIndex',['../ir__GlobalCache_8cpp.html#a8640be7a67ce3f49452b28bc24912637',1,'ir_GlobalCache.cpp']]], + ['kgoodweatherauto_1464',['kGoodweatherAuto',['../ir__Goodweather_8h.html#a2fc5f0f7d0f68dcff193548830f50528',1,'ir_Goodweather.h']]], + ['kgoodweatherbitairflow_1465',['kGoodweatherBitAirFlow',['../ir__Goodweather_8h.html#ad86cdbc34a6a82c7595cace56d040d64',1,'ir_Goodweather.h']]], + ['kgoodweatherbitcommand_1466',['kGoodweatherBitCommand',['../ir__Goodweather_8h.html#ad6973bf4ac7801097077938e133b1718',1,'ir_Goodweather.h']]], + ['kgoodweatherbiteof_1467',['kGoodweatherBitEOF',['../ir__Goodweather_8h.html#a239d4d1fee77e0d220efb0bc0b3c779a',1,'ir_Goodweather.h']]], + ['kgoodweatherbitfan_1468',['kGoodweatherBitFan',['../ir__Goodweather_8h.html#aa3d5f146109dd671e4d7d86c1dbccba7',1,'ir_Goodweather.h']]], + ['kgoodweatherbitlight_1469',['kGoodweatherBitLight',['../ir__Goodweather_8h.html#a976dc2b37d1fcec4bbc0958861b5a9b0',1,'ir_Goodweather.h']]], + ['kgoodweatherbitmark_1470',['kGoodweatherBitMark',['../ir__Goodweather_8h.html#acb9fb47b2a207997fda0244d1bafbe89',1,'ir_Goodweather.h']]], + ['kgoodweatherbitmode_1471',['kGoodweatherBitMode',['../ir__Goodweather_8h.html#a3795b45c06f6d2db23cc45478bfeeca9',1,'ir_Goodweather.h']]], + ['kgoodweatherbitpower_1472',['kGoodweatherBitPower',['../ir__Goodweather_8h.html#a652b820b22c8381a6035fea7b1ae1b8d',1,'ir_Goodweather.h']]], + ['kgoodweatherbits_1473',['kGoodweatherBits',['../IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425',1,'IRremoteESP8266.h']]], + ['kgoodweatherbitsleep_1474',['kGoodweatherBitSleep',['../ir__Goodweather_8h.html#a763e8033483516c093ad12a378e0c8f8',1,'ir_Goodweather.h']]], + ['kgoodweatherbitswing_1475',['kGoodweatherBitSwing',['../ir__Goodweather_8h.html#a0a3fc264b6a77157174c207688ac2cda',1,'ir_Goodweather.h']]], + ['kgoodweatherbittemp_1476',['kGoodweatherBitTemp',['../ir__Goodweather_8h.html#a692faf9976f90d67d183ff99ed06ee51',1,'ir_Goodweather.h']]], + ['kgoodweatherbitturbo_1477',['kGoodweatherBitTurbo',['../ir__Goodweather_8h.html#afe2ad22bc8ba5ab9cad025e9adaf4d56',1,'ir_Goodweather.h']]], + ['kgoodweathercmdairflow_1478',['kGoodweatherCmdAirFlow',['../ir__Goodweather_8h.html#aa51248353573abd95af37e46f0a2c4a7',1,'ir_Goodweather.h']]], + ['kgoodweathercmddowntemp_1479',['kGoodweatherCmdDownTemp',['../ir__Goodweather_8h.html#a8a0b72bf745b6003fb460a3c917eecff',1,'ir_Goodweather.h']]], + ['kgoodweathercmdfan_1480',['kGoodweatherCmdFan',['../ir__Goodweather_8h.html#a4a0881f87af157fdf9ed3d9f342f1ac5',1,'ir_Goodweather.h']]], + ['kgoodweathercmdhold_1481',['kGoodweatherCmdHold',['../ir__Goodweather_8h.html#ac0f3b1413228cb7e86822c5690f20344',1,'ir_Goodweather.h']]], + ['kgoodweathercmdlight_1482',['kGoodweatherCmdLight',['../ir__Goodweather_8h.html#ae70c4e66b17db9caf4800eb57a50706f',1,'ir_Goodweather.h']]], + ['kgoodweathercmdmode_1483',['kGoodweatherCmdMode',['../ir__Goodweather_8h.html#a6042296931ab29e9dfa5a701f3e42175',1,'ir_Goodweather.h']]], + ['kgoodweathercmdpower_1484',['kGoodweatherCmdPower',['../ir__Goodweather_8h.html#a3f1bf85bb10343512bb276adfc64b3b2',1,'ir_Goodweather.h']]], + ['kgoodweathercmdsleep_1485',['kGoodweatherCmdSleep',['../ir__Goodweather_8h.html#a3f4d72b620c73aec68c2125430ca709d',1,'ir_Goodweather.h']]], + ['kgoodweathercmdswing_1486',['kGoodweatherCmdSwing',['../ir__Goodweather_8h.html#ab4ceedbe859811a9fb394f6ebf233cb5',1,'ir_Goodweather.h']]], + ['kgoodweathercmdtimer_1487',['kGoodweatherCmdTimer',['../ir__Goodweather_8h.html#ad4d247ea6c9fc237e0acda84fdaa2eb6',1,'ir_Goodweather.h']]], + ['kgoodweathercmdturbo_1488',['kGoodweatherCmdTurbo',['../ir__Goodweather_8h.html#aebc6d53b3e7d1769bff47968c19c09c9',1,'ir_Goodweather.h']]], + ['kgoodweathercmduptemp_1489',['kGoodweatherCmdUpTemp',['../ir__Goodweather_8h.html#a51a089b03bd72a247a4c35c2ff3f3dc6',1,'ir_Goodweather.h']]], + ['kgoodweathercommandsize_1490',['kGoodweatherCommandSize',['../ir__Goodweather_8h.html#aa5ae9f1b5f6458a25b31b0d2c7feb508',1,'ir_Goodweather.h']]], + ['kgoodweathercool_1491',['kGoodweatherCool',['../ir__Goodweather_8h.html#a92c807d6ff8a3356e65f04e82b99aba4',1,'ir_Goodweather.h']]], + ['kgoodweatherdry_1492',['kGoodweatherDry',['../ir__Goodweather_8h.html#ac5174a3e2c64361c25adcf7caa5b714c',1,'ir_Goodweather.h']]], + ['kgoodweathereofmask_1493',['kGoodweatherEOFMask',['../ir__Goodweather_8h.html#a3d86da1a2bab92a9f70cc88e2628f266',1,'ir_Goodweather.h']]], + ['kgoodweatherextratolerance_1494',['kGoodweatherExtraTolerance',['../ir__Goodweather_8h.html#aae814dfbd574241d3b434d0bf2d38939',1,'ir_Goodweather.h']]], + ['kgoodweatherfan_1495',['kGoodweatherFan',['../ir__Goodweather_8h.html#ad56f00c7e39df93d28419d6a4afa360b',1,'ir_Goodweather.h']]], + ['kgoodweatherfanauto_1496',['kGoodweatherFanAuto',['../ir__Goodweather_8h.html#a9cc119524ac1cb93395dff3bb44b85cc',1,'ir_Goodweather.h']]], + ['kgoodweatherfanhigh_1497',['kGoodweatherFanHigh',['../ir__Goodweather_8h.html#af2b24de50923a0aabd4379dc6d3ef10f',1,'ir_Goodweather.h']]], + ['kgoodweatherfanlow_1498',['kGoodweatherFanLow',['../ir__Goodweather_8h.html#a7bc7c0cf9f2df574a7c087542991ab9b',1,'ir_Goodweather.h']]], + ['kgoodweatherfanmed_1499',['kGoodweatherFanMed',['../ir__Goodweather_8h.html#a5174245e9369a488332b32dfa416963e',1,'ir_Goodweather.h']]], + ['kgoodweatherfansize_1500',['kGoodweatherFanSize',['../ir__Goodweather_8h.html#a687ae6502d8fe6b4a5bd11468106481e',1,'ir_Goodweather.h']]], + ['kgoodweatherhdrmark_1501',['kGoodweatherHdrMark',['../ir__Goodweather_8h.html#a5c39e33226770babb4b0e89fc0cde709',1,'ir_Goodweather.h']]], + ['kgoodweatherhdrspace_1502',['kGoodweatherHdrSpace',['../ir__Goodweather_8h.html#a837bfeaa111b00e2744c4ada89281bfb',1,'ir_Goodweather.h']]], + ['kgoodweatherheat_1503',['kGoodweatherHeat',['../ir__Goodweather_8h.html#a17d223f03df2718151a426582a224a2e',1,'ir_Goodweather.h']]], + ['kgoodweatherminrepeat_1504',['kGoodweatherMinRepeat',['../IRremoteESP8266_8h.html#a885bc5a3a5ba2d8827a62d07a43d0321',1,'IRremoteESP8266.h']]], + ['kgoodweatheronespace_1505',['kGoodweatherOneSpace',['../ir__Goodweather_8h.html#a8efa251085a8f434cb91c049e65cda56',1,'ir_Goodweather.h']]], + ['kgoodweatherstateinit_1506',['kGoodweatherStateInit',['../ir__Goodweather_8h.html#a5ec0e7ca097241d6bef0cbf2135c8fca',1,'ir_Goodweather.h']]], + ['kgoodweatherswingfast_1507',['kGoodweatherSwingFast',['../ir__Goodweather_8h.html#a2d2fa76fa35cf7d450aaf0b980660514',1,'ir_Goodweather.h']]], + ['kgoodweatherswingoff_1508',['kGoodweatherSwingOff',['../ir__Goodweather_8h.html#aa2c53f56daa2820351924d91b542bb67',1,'ir_Goodweather.h']]], + ['kgoodweatherswingsize_1509',['kGoodweatherSwingSize',['../ir__Goodweather_8h.html#a208e47dc4f9e6a85464b4ce3ecaf5c3e',1,'ir_Goodweather.h']]], + ['kgoodweatherswingslow_1510',['kGoodweatherSwingSlow',['../ir__Goodweather_8h.html#ad2c87d849af2c77088ffc533d279aadb',1,'ir_Goodweather.h']]], + ['kgoodweathertempmax_1511',['kGoodweatherTempMax',['../ir__Goodweather_8h.html#abec401548ce2221a9c668318a33a039c',1,'ir_Goodweather.h']]], + ['kgoodweathertempmin_1512',['kGoodweatherTempMin',['../ir__Goodweather_8h.html#a8e76c0ec1bd5e124d9cee5742a2d1cfe',1,'ir_Goodweather.h']]], + ['kgoodweathertempsize_1513',['kGoodweatherTempSize',['../ir__Goodweather_8h.html#a2ef3336be36de4f34940de28cfe195a8',1,'ir_Goodweather.h']]], + ['kgoodweatherzerospace_1514',['kGoodweatherZeroSpace',['../ir__Goodweather_8h.html#a411cbfb812d102daeaf6a83c742f9a9a',1,'ir_Goodweather.h']]], + ['kgpiounused_1515',['kGpioUnused',['../IRac_8h.html#afd817f0bc02c516b6430098dcecde383',1,'IRac.h']]], + ['kgreeauto_1516',['kGreeAuto',['../ir__Gree_8h.html#a65d2d0192a1baff86b859da1018ef2f8',1,'ir_Gree.h']]], + ['kgreebitmark_1517',['kGreeBitMark',['../ir__Gree_8cpp.html#ad7e23346f6d793cc2469e4c8a5650397',1,'ir_Gree.cpp']]], + ['kgreebits_1518',['kGreeBits',['../IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d',1,'IRremoteESP8266.h']]], + ['kgreeblockfooter_1519',['kGreeBlockFooter',['../ir__Gree_8cpp.html#ae6d01cfa7ee2ef6ff27c1ecd7cd9be51',1,'ir_Gree.cpp']]], + ['kgreeblockfooterbits_1520',['kGreeBlockFooterBits',['../ir__Gree_8cpp.html#ae866eef4c729c703597a266917799cbd',1,'ir_Gree.cpp']]], + ['kgreecool_1521',['kGreeCool',['../ir__Gree_8h.html#a1e1eeab696b43864cec66e6485487cea',1,'ir_Gree.h']]], + ['kgreedefaultrepeat_1522',['kGreeDefaultRepeat',['../IRremoteESP8266_8h.html#a6816d2cb11b99a61fb63e6d0928e6706',1,'IRremoteESP8266.h']]], + ['kgreedisplaytempinside_1523',['kGreeDisplayTempInside',['../ir__Gree_8h.html#a7495e5873f63135490090929ed79e994',1,'ir_Gree.h']]], + ['kgreedisplaytempoff_1524',['kGreeDisplayTempOff',['../ir__Gree_8h.html#aa5881910d1c01b816f3ac22ddf0f89a8',1,'ir_Gree.h']]], + ['kgreedisplaytempoffset_1525',['kGreeDisplayTempOffset',['../ir__Gree_8h.html#ab60baff4d0e83964d6e5b23994949a06',1,'ir_Gree.h']]], + ['kgreedisplaytempoutside_1526',['kGreeDisplayTempOutside',['../ir__Gree_8h.html#a737c90e90897053623b15b5579cdb6a1',1,'ir_Gree.h']]], + ['kgreedisplaytempset_1527',['kGreeDisplayTempSet',['../ir__Gree_8h.html#a20f7d0948b158f83655ee4187a104176',1,'ir_Gree.h']]], + ['kgreedisplaytempsize_1528',['kGreeDisplayTempSize',['../ir__Gree_8h.html#aad94a8d5de27b1a46c03c9e3773cf8ec',1,'ir_Gree.h']]], + ['kgreedry_1529',['kGreeDry',['../ir__Gree_8h.html#aa818bcc036988ee24fe0467d128d174f',1,'ir_Gree.h']]], + ['kgreefan_1530',['kGreeFan',['../ir__Gree_8h.html#aa1513ffe43257664f761e4e1a5c2a38f',1,'ir_Gree.h']]], + ['kgreefanauto_1531',['kGreeFanAuto',['../ir__Gree_8h.html#aaad16357e34078257315aad7155b2cd1',1,'ir_Gree.h']]], + ['kgreefanmax_1532',['kGreeFanMax',['../ir__Gree_8h.html#a8753f860f2f503a4a70609fb000654f2',1,'ir_Gree.h']]], + ['kgreefanmed_1533',['kGreeFanMed',['../ir__Gree_8h.html#a674d096a91a5db4b5b7f1b0650c833de',1,'ir_Gree.h']]], + ['kgreefanmin_1534',['kGreeFanMin',['../ir__Gree_8h.html#a34ca09b196c41acc85a4fa0036f3ac3b',1,'ir_Gree.h']]], + ['kgreefanoffset_1535',['kGreeFanOffset',['../ir__Gree_8h.html#a3227e6075f673408577884feb0e6ef10',1,'ir_Gree.h']]], + ['kgreefansize_1536',['kGreeFanSize',['../ir__Gree_8h.html#a8285633b179fbe513c6f8bd2c316e957',1,'ir_Gree.h']]], + ['kgreehdrmark_1537',['kGreeHdrMark',['../ir__Gree_8cpp.html#aaae182fb09bed73e37a5b5d3aee6a5fb',1,'ir_Gree.cpp']]], + ['kgreehdrspace_1538',['kGreeHdrSpace',['../ir__Gree_8cpp.html#a96b50632219c2b5808aea4ee9077b15c',1,'ir_Gree.cpp']]], + ['kgreeheat_1539',['kGreeHeat',['../ir__Gree_8h.html#ada5dac7b789497bf7a434a809d4070f6',1,'ir_Gree.h']]], + ['kgreeifeeloffset_1540',['kGreeIFeelOffset',['../ir__Gree_8h.html#a7253f3b97bade5353a72bfcf2df7976b',1,'ir_Gree.h']]], + ['kgreelightoffset_1541',['kGreeLightOffset',['../ir__Gree_8h.html#ade795164ac467f2547583b9654e2e471',1,'ir_Gree.h']]], + ['kgreemaxtempc_1542',['kGreeMaxTempC',['../ir__Gree_8h.html#a4c01aedfff06ed5a028c40010ad7bfa0',1,'ir_Gree.h']]], + ['kgreemaxtempf_1543',['kGreeMaxTempF',['../ir__Gree_8h.html#a6495898a7a6ddda1473b55820f4b6c44',1,'ir_Gree.h']]], + ['kgreemintempc_1544',['kGreeMinTempC',['../ir__Gree_8h.html#ad127acfc710e281a7b29023c8d1da8f6',1,'ir_Gree.h']]], + ['kgreemintempf_1545',['kGreeMinTempF',['../ir__Gree_8h.html#acf0ecb1b535894e3e790b668333fb66b',1,'ir_Gree.h']]], + ['kgreemsgspace_1546',['kGreeMsgSpace',['../ir__Gree_8cpp.html#a619ed3a2915196ab91d87db2b5a829fd',1,'ir_Gree.cpp']]], + ['kgreeonespace_1547',['kGreeOneSpace',['../ir__Gree_8cpp.html#ab139138084643ea0fca13b28412904e9',1,'ir_Gree.cpp']]], + ['kgreepower1offset_1548',['kGreePower1Offset',['../ir__Gree_8h.html#a300b990aa836926d38dfea0ee99dc295',1,'ir_Gree.h']]], + ['kgreepower2offset_1549',['kGreePower2Offset',['../ir__Gree_8h.html#af29131d47e6cba73682727cd5e8b243d',1,'ir_Gree.h']]], + ['kgreesleepoffset_1550',['kGreeSleepOffset',['../ir__Gree_8h.html#ab715200758a0a4ee2733baf924729132',1,'ir_Gree.h']]], + ['kgreestatelength_1551',['kGreeStateLength',['../IRremoteESP8266_8h.html#a5558b24542873d8475e1ee0e2439839f',1,'IRremoteESP8266.h']]], + ['kgreeswingauto_1552',['kGreeSwingAuto',['../ir__Gree_8h.html#a414a503ad11c1d1d3b68d8b630df1f3a',1,'ir_Gree.h']]], + ['kgreeswingautooffset_1553',['kGreeSwingAutoOffset',['../ir__Gree_8h.html#a60d3de1ba88a6b06c79205116fbd7869',1,'ir_Gree.h']]], + ['kgreeswingdown_1554',['kGreeSwingDown',['../ir__Gree_8h.html#abbe69b966ceb1f9eb60fe9c3fb18088d',1,'ir_Gree.h']]], + ['kgreeswingdownauto_1555',['kGreeSwingDownAuto',['../ir__Gree_8h.html#abc7d7b7de5dd2eb9c0a6ca28827aeb06',1,'ir_Gree.h']]], + ['kgreeswinglastpos_1556',['kGreeSwingLastPos',['../ir__Gree_8h.html#a630cd8fec01f13bfda0fffc1a0e59199',1,'ir_Gree.h']]], + ['kgreeswingmiddle_1557',['kGreeSwingMiddle',['../ir__Gree_8h.html#a12a7caa871f33a5bb83611b4efc7a42b',1,'ir_Gree.h']]], + ['kgreeswingmiddleauto_1558',['kGreeSwingMiddleAuto',['../ir__Gree_8h.html#ac9f85ef5c1bfeac1e4c759742e2d147f',1,'ir_Gree.h']]], + ['kgreeswingmiddledown_1559',['kGreeSwingMiddleDown',['../ir__Gree_8h.html#acad74b8154d73786e093fa215ab800b0',1,'ir_Gree.h']]], + ['kgreeswingmiddleup_1560',['kGreeSwingMiddleUp',['../ir__Gree_8h.html#aefbdd203df5b35eb61be1d0edd712c80',1,'ir_Gree.h']]], + ['kgreeswingsize_1561',['kGreeSwingSize',['../ir__Gree_8h.html#a287e3c06c9a1efbf7091841f2f689968',1,'ir_Gree.h']]], + ['kgreeswingup_1562',['kGreeSwingUp',['../ir__Gree_8h.html#adad431eb1010951fcf77dc4dac6449c6',1,'ir_Gree.h']]], + ['kgreeswingupauto_1563',['kGreeSwingUpAuto',['../ir__Gree_8h.html#a63f04add215785d4ccfe6ccec03d7667',1,'ir_Gree.h']]], + ['kgreetempextradegreefoffset_1564',['kGreeTempExtraDegreeFOffset',['../ir__Gree_8h.html#abbbca05f6971b4bc2d83d4e5bd79854c',1,'ir_Gree.h']]], + ['kgreetempoffset_1565',['kGreeTempOffset',['../ir__Gree_8h.html#a838def81d0f1253e7371fa237f5f0a34',1,'ir_Gree.h']]], + ['kgreetempsize_1566',['kGreeTempSize',['../ir__Gree_8h.html#a15e8555687b1e6bfc47cd4ee4079b700',1,'ir_Gree.h']]], + ['kgreetimerenabledoffset_1567',['kGreeTimerEnabledOffset',['../ir__Gree_8h.html#aec18110852ca714f58734749ef8d4e7d',1,'ir_Gree.h']]], + ['kgreetimerhalfhroffset_1568',['kGreeTimerHalfHrOffset',['../ir__Gree_8h.html#af0779698759e0b6b41bd1f0b77fbddea',1,'ir_Gree.h']]], + ['kgreetimerhoursoffset_1569',['kGreeTimerHoursOffset',['../ir__Gree_8h.html#a1aeba4b3c5bff86b541291ea29220a60',1,'ir_Gree.h']]], + ['kgreetimerhourssize_1570',['kGreeTimerHoursSize',['../ir__Gree_8h.html#af08673b8c795a0c9a710825ceacd6bdb',1,'ir_Gree.h']]], + ['kgreetimermax_1571',['kGreeTimerMax',['../ir__Gree_8h.html#a76048e03908dd0d22cc8cacfbd99a40b',1,'ir_Gree.h']]], + ['kgreetimertenshroffset_1572',['kGreeTimerTensHrOffset',['../ir__Gree_8h.html#a5ca305d48fde5b5c6792c7734b31b941',1,'ir_Gree.h']]], + ['kgreetimertenshrsize_1573',['kGreeTimerTensHrSize',['../ir__Gree_8h.html#a5d8b007e38dcec0327ed0e38705f05c0',1,'ir_Gree.h']]], + ['kgreeturbooffset_1574',['kGreeTurboOffset',['../ir__Gree_8h.html#a5fe9afa8e66edd95a94404abe00dd1f1',1,'ir_Gree.h']]], + ['kgreeusefahrenheitoffset_1575',['kGreeUseFahrenheitOffset',['../ir__Gree_8h.html#a741c43d31a99fd8b723315d9db0724cc',1,'ir_Gree.h']]], + ['kgreewifioffset_1576',['kGreeWiFiOffset',['../ir__Gree_8h.html#a993dede6398a2c4ec2c1e025f4746768',1,'ir_Gree.h']]], + ['kgreexfanoffset_1577',['kGreeXfanOffset',['../ir__Gree_8h.html#a2388c44b2826823349d02dec581da584',1,'ir_Gree.h']]], + ['kgreezerospace_1578',['kGreeZeroSpace',['../ir__Gree_8cpp.html#aa4694ba8ff0e14cd6b9c4730675c385f',1,'ir_Gree.cpp']]], + ['khaieracauto_1579',['kHaierAcAuto',['../ir__Haier_8h.html#ac33a02f63ee77e0d3050598511730865',1,'ir_Haier.h']]], + ['khaieracbitmark_1580',['kHaierAcBitMark',['../ir__Haier_8cpp.html#a4dec38325834c873c03588a8046f0963',1,'ir_Haier.cpp']]], + ['khaieracbits_1581',['kHaierACBits',['../IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720',1,'IRremoteESP8266.h']]], + ['khaieraccmdfan_1582',['kHaierAcCmdFan',['../ir__Haier_8h.html#a447818ec7970e2ca09540afe44ecf90d',1,'ir_Haier.h']]], + ['khaieraccmdhealth_1583',['kHaierAcCmdHealth',['../ir__Haier_8h.html#a83cd0b5f307d9ae3ed0a3c6ed8fef94d',1,'ir_Haier.h']]], + ['khaieraccmdmode_1584',['kHaierAcCmdMode',['../ir__Haier_8h.html#a4543aa4ee28323bb9cb5c077f9bf9da1',1,'ir_Haier.h']]], + ['khaieraccmdoff_1585',['kHaierAcCmdOff',['../ir__Haier_8h.html#a96599917176ee244874926d1a530dd7e',1,'ir_Haier.h']]], + ['khaieraccmdon_1586',['kHaierAcCmdOn',['../ir__Haier_8h.html#a83973c2ad2b7b95611c81628c387e0d8',1,'ir_Haier.h']]], + ['khaieraccmdsleep_1587',['kHaierAcCmdSleep',['../ir__Haier_8h.html#abe52b62dd513395f2a8c7d47fa2fc514',1,'ir_Haier.h']]], + ['khaieraccmdswing_1588',['kHaierAcCmdSwing',['../ir__Haier_8h.html#afab164c2aabf39fdc1e956ff88af19d9',1,'ir_Haier.h']]], + ['khaieraccmdtempdown_1589',['kHaierAcCmdTempDown',['../ir__Haier_8h.html#aecc31139b4e45a7784669554c6fdbb54',1,'ir_Haier.h']]], + ['khaieraccmdtempup_1590',['kHaierAcCmdTempUp',['../ir__Haier_8h.html#aab5363f07920971c31d6acf8e70d392c',1,'ir_Haier.h']]], + ['khaieraccmdtimercancel_1591',['kHaierAcCmdTimerCancel',['../ir__Haier_8h.html#ab780da80fc471f004c5b34dc8f347d00',1,'ir_Haier.h']]], + ['khaieraccmdtimerset_1592',['kHaierAcCmdTimerSet',['../ir__Haier_8h.html#a9bd7c081d460a4ae5e3eac977f3916e4',1,'ir_Haier.h']]], + ['khaieraccool_1593',['kHaierAcCool',['../ir__Haier_8h.html#a83cd81ea1115f42a403ea5ee07a32bbb',1,'ir_Haier.h']]], + ['khaieracdefaultrepeat_1594',['kHaierAcDefaultRepeat',['../IRremoteESP8266_8h.html#a882914932449e33933b6f8e224cbaf3c',1,'IRremoteESP8266.h']]], + ['khaieracdeftemp_1595',['kHaierAcDefTemp',['../ir__Haier_8h.html#a86c9e8176fc01e52e883cadcc1d31763',1,'ir_Haier.h']]], + ['khaieracdry_1596',['kHaierAcDry',['../ir__Haier_8h.html#a3d36fbe1308221248f45044e5a671636',1,'ir_Haier.h']]], + ['khaieracfan_1597',['kHaierAcFan',['../ir__Haier_8h.html#af4049629b2139ca82471dfed1e1ced15',1,'ir_Haier.h']]], + ['khaieracfanauto_1598',['kHaierAcFanAuto',['../ir__Haier_8h.html#a8a34e74f7083caa98ed4afc31294539e',1,'ir_Haier.h']]], + ['khaieracfanhigh_1599',['kHaierAcFanHigh',['../ir__Haier_8h.html#aa4d9e45ca5777707778ef78a3284da19',1,'ir_Haier.h']]], + ['khaieracfanlow_1600',['kHaierAcFanLow',['../ir__Haier_8h.html#ae31e878b09284a6730a11e2017cfd7a8',1,'ir_Haier.h']]], + ['khaieracfanmed_1601',['kHaierAcFanMed',['../ir__Haier_8h.html#a5dfa833768e549964aa0bf8a336c32b0',1,'ir_Haier.h']]], + ['khaierachdr_1602',['kHaierAcHdr',['../ir__Haier_8cpp.html#a0f5dbd2eb92f10bc354e6b0a7a074084',1,'ir_Haier.cpp']]], + ['khaierachdrgap_1603',['kHaierAcHdrGap',['../ir__Haier_8cpp.html#a4c3fe62f8e5abf5d084009bbd4c4f878',1,'ir_Haier.cpp']]], + ['khaierachealthbitoffset_1604',['kHaierAcHealthBitOffset',['../ir__Haier_8h.html#ae2e5e80f891c9bbca2844d808b0b3d1b',1,'ir_Haier.h']]], + ['khaieracheat_1605',['kHaierAcHeat',['../ir__Haier_8h.html#a0edb011bdf85197e63a32d37f8517dd2',1,'ir_Haier.h']]], + ['khaierachourssize_1606',['kHaierAcHoursSize',['../ir__Haier_8h.html#a3db7b7dddae84a5d12101c5cdd06975e',1,'ir_Haier.h']]], + ['khaieracmaxtemp_1607',['kHaierAcMaxTemp',['../ir__Haier_8h.html#a925252489fe34d9932151817d0dbe90b',1,'ir_Haier.h']]], + ['khaieracmaxtime_1608',['kHaierAcMaxTime',['../ir__Haier_8h.html#ae04e48e926a7533c3b62f0ff991e1f88',1,'ir_Haier.h']]], + ['khaieracmingap_1609',['kHaierAcMinGap',['../ir__Haier_8cpp.html#a7ab1f44876a931da765b52e4633e5e82',1,'ir_Haier.cpp']]], + ['khaieracminssize_1610',['kHaierAcMinsSize',['../ir__Haier_8h.html#a105e047084515305e896d8ff776d05e6',1,'ir_Haier.h']]], + ['khaieracmintemp_1611',['kHaierAcMinTemp',['../ir__Haier_8h.html#aafd2a4f38ecf78482a5a94e9c6c23f1c',1,'ir_Haier.h']]], + ['khaieracmodeoffset_1612',['kHaierAcModeOffset',['../ir__Haier_8h.html#a93fdbb1742923cf3f738c8078d5660f8',1,'ir_Haier.h']]], + ['khaieracofftimeroffset_1613',['kHaierAcOffTimerOffset',['../ir__Haier_8h.html#ace8cd6ed41c3f247ada91052d653b515',1,'ir_Haier.h']]], + ['khaieraconespace_1614',['kHaierAcOneSpace',['../ir__Haier_8cpp.html#a43739aa786e08fca2a4a62a680b5c38b',1,'ir_Haier.cpp']]], + ['khaieracontimeroffset_1615',['kHaierAcOnTimerOffset',['../ir__Haier_8h.html#a5189092c278fb5c31efd4f539f905da5',1,'ir_Haier.h']]], + ['khaieracprefix_1616',['kHaierAcPrefix',['../ir__Haier_8h.html#a8502c9bea40205e01e6a01b47354272a',1,'ir_Haier.h']]], + ['khaieracsleepbit_1617',['kHaierAcSleepBit',['../ir__Haier_8h.html#ac63b91acdffa55d440b08aee05bda5dc',1,'ir_Haier.h']]], + ['khaieracsleepbitoffset_1618',['kHaierAcSleepBitOffset',['../ir__Haier_8h.html#ad9f4cbfd8e6a5874d661195858156eec',1,'ir_Haier.h']]], + ['khaieracstatelength_1619',['kHaierACStateLength',['../IRremoteESP8266_8h.html#afb4cd0c1a9c689d862e7095f0ab6dbe5',1,'IRremoteESP8266.h']]], + ['khaieracswingchg_1620',['kHaierAcSwingChg',['../ir__Haier_8h.html#af65a92a0b9d29a52ac882d4457e954e8',1,'ir_Haier.h']]], + ['khaieracswingdown_1621',['kHaierAcSwingDown',['../ir__Haier_8h.html#a2cf3a2102c6d4f9aede44efe853ffaa8',1,'ir_Haier.h']]], + ['khaieracswingoff_1622',['kHaierAcSwingOff',['../ir__Haier_8h.html#ac21f78c3cef931154b3fc953bbebc3b4',1,'ir_Haier.h']]], + ['khaieracswingoffset_1623',['kHaierAcSwingOffset',['../ir__Haier_8h.html#a0872af0b2b3f22f6681917b9c81c3bbd',1,'ir_Haier.h']]], + ['khaieracswingsize_1624',['kHaierAcSwingSize',['../ir__Haier_8h.html#ad032725404a02c0e5a93350f20daf6e1',1,'ir_Haier.h']]], + ['khaieracswingup_1625',['kHaierAcSwingUp',['../ir__Haier_8h.html#a4bff8829604ee927dda5cfc54bd6cfe6',1,'ir_Haier.h']]], + ['khaieractimeoffset_1626',['kHaierAcTimeOffset',['../ir__Haier_8h.html#abb7a8ec83d3c0dbbe4d660d6bf627f23',1,'ir_Haier.h']]], + ['khaieracyrw02auto_1627',['kHaierAcYrw02Auto',['../ir__Haier_8h.html#aa025eeba1c344c50cc98334c97a3c174',1,'ir_Haier.h']]], + ['khaieracyrw02bits_1628',['kHaierACYRW02Bits',['../IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27',1,'IRremoteESP8266.h']]], + ['khaieracyrw02buttonfan_1629',['kHaierAcYrw02ButtonFan',['../ir__Haier_8h.html#a0f9c265510e1e27f38817f08ef9c622b',1,'ir_Haier.h']]], + ['khaieracyrw02buttonhealth_1630',['kHaierAcYrw02ButtonHealth',['../ir__Haier_8h.html#ab1dc6c0a4ed59446bb69c4dd671c78cd',1,'ir_Haier.h']]], + ['khaieracyrw02buttonmode_1631',['kHaierAcYrw02ButtonMode',['../ir__Haier_8h.html#a74466c50b450b08407c9f226a5d657e5',1,'ir_Haier.h']]], + ['khaieracyrw02buttonpower_1632',['kHaierAcYrw02ButtonPower',['../ir__Haier_8h.html#af36b9c628a697f6c596052ecd143d80b',1,'ir_Haier.h']]], + ['khaieracyrw02buttonsleep_1633',['kHaierAcYrw02ButtonSleep',['../ir__Haier_8h.html#a5c7b8ff351e3d0167ec2c897c4820c40',1,'ir_Haier.h']]], + ['khaieracyrw02buttonswing_1634',['kHaierAcYrw02ButtonSwing',['../ir__Haier_8h.html#aa10c558317448783535e96be5876505c',1,'ir_Haier.h']]], + ['khaieracyrw02buttontempdown_1635',['kHaierAcYrw02ButtonTempDown',['../ir__Haier_8h.html#af4a9e5f7f705c331531ea2863dbbd11d',1,'ir_Haier.h']]], + ['khaieracyrw02buttontempup_1636',['kHaierAcYrw02ButtonTempUp',['../ir__Haier_8h.html#a3b24373f9c812f93eca05ee47e61d6e0',1,'ir_Haier.h']]], + ['khaieracyrw02buttonturbo_1637',['kHaierAcYrw02ButtonTurbo',['../ir__Haier_8h.html#ad80547c526b2eba142297715c0a0636d',1,'ir_Haier.h']]], + ['khaieracyrw02cool_1638',['kHaierAcYrw02Cool',['../ir__Haier_8h.html#a30c5d4e61ae3112a8a3e3622eecbb10b',1,'ir_Haier.h']]], + ['khaieracyrw02defaultrepeat_1639',['kHaierAcYrw02DefaultRepeat',['../IRremoteESP8266_8h.html#a62412e221207dbc2660f93dc265b4218',1,'IRremoteESP8266.h']]], + ['khaieracyrw02dry_1640',['kHaierAcYrw02Dry',['../ir__Haier_8h.html#a66cd902f2d35b4c8f66f085a0950a5fc',1,'ir_Haier.h']]], + ['khaieracyrw02fan_1641',['kHaierAcYrw02Fan',['../ir__Haier_8h.html#a35f50f043a2dda75c59507c1ed845b5d',1,'ir_Haier.h']]], + ['khaieracyrw02fanauto_1642',['kHaierAcYrw02FanAuto',['../ir__Haier_8h.html#ad554d38035ac15e4ea8b855802886989',1,'ir_Haier.h']]], + ['khaieracyrw02fanhigh_1643',['kHaierAcYrw02FanHigh',['../ir__Haier_8h.html#ab47bc48ac77fbf6734a41d10f0a53e4a',1,'ir_Haier.h']]], + ['khaieracyrw02fanlow_1644',['kHaierAcYrw02FanLow',['../ir__Haier_8h.html#a9a0a14ab98e1e52b60b9b9bf611c20cc',1,'ir_Haier.h']]], + ['khaieracyrw02fanmed_1645',['kHaierAcYrw02FanMed',['../ir__Haier_8h.html#a65583649324c6039112e7db26d685afc',1,'ir_Haier.h']]], + ['khaieracyrw02fanoffset_1646',['kHaierAcYrw02FanOffset',['../ir__Haier_8h.html#a0910d1996a451c98383124a39ef65f84',1,'ir_Haier.h']]], + ['khaieracyrw02fansize_1647',['kHaierAcYrw02FanSize',['../ir__Haier_8h.html#aa2c6bd47b47e0ea1b51931fec7daef4d',1,'ir_Haier.h']]], + ['khaieracyrw02healthoffset_1648',['kHaierAcYrw02HealthOffset',['../ir__Haier_8h.html#a4bcb42b359472cf770e0710b5369493b',1,'ir_Haier.h']]], + ['khaieracyrw02heat_1649',['kHaierAcYrw02Heat',['../ir__Haier_8h.html#aa0873975b6649294a3c9943130cb7a38',1,'ir_Haier.h']]], + ['khaieracyrw02modeoffset_1650',['kHaierAcYrw02ModeOffset',['../ir__Haier_8h.html#a027199b609d29ead8aec9bb89178cb30',1,'ir_Haier.h']]], + ['khaieracyrw02power_1651',['kHaierAcYrw02Power',['../ir__Haier_8h.html#abe59df7abf20a66107516054f3a2d32b',1,'ir_Haier.h']]], + ['khaieracyrw02poweroffset_1652',['kHaierAcYrw02PowerOffset',['../ir__Haier_8h.html#a67401152b0aa06fb7922bbca743cd600',1,'ir_Haier.h']]], + ['khaieracyrw02prefix_1653',['kHaierAcYrw02Prefix',['../ir__Haier_8h.html#ac62d0f7ca94e064712f8a7a80da2f11e',1,'ir_Haier.h']]], + ['khaieracyrw02sleep_1654',['kHaierAcYrw02Sleep',['../ir__Haier_8h.html#abb70fe8ca6004246345df3d841047252',1,'ir_Haier.h']]], + ['khaieracyrw02sleepoffset_1655',['kHaierAcYrw02SleepOffset',['../ir__Haier_8h.html#ac651bfee5d261124700c81ec5db184a7',1,'ir_Haier.h']]], + ['khaieracyrw02statelength_1656',['kHaierACYRW02StateLength',['../IRremoteESP8266_8h.html#a8f52b7d4595c117cf0b81ffbd1148cda',1,'IRremoteESP8266.h']]], + ['khaieracyrw02swingauto_1657',['kHaierAcYrw02SwingAuto',['../ir__Haier_8h.html#a95ae88223d910d4d966949241bccff8d',1,'ir_Haier.h']]], + ['khaieracyrw02swingbottom_1658',['kHaierAcYrw02SwingBottom',['../ir__Haier_8h.html#aa4b64385da5e9b2a89e15f70cd8c89e9',1,'ir_Haier.h']]], + ['khaieracyrw02swingdown_1659',['kHaierAcYrw02SwingDown',['../ir__Haier_8h.html#aab380411ac07b2b7f67956a5bbc362fb',1,'ir_Haier.h']]], + ['khaieracyrw02swingmiddle_1660',['kHaierAcYrw02SwingMiddle',['../ir__Haier_8h.html#a32d6dd98a050711bf928bf250b769839',1,'ir_Haier.h']]], + ['khaieracyrw02swingoff_1661',['kHaierAcYrw02SwingOff',['../ir__Haier_8h.html#a62570c15418cf24a94c92b162967f892',1,'ir_Haier.h']]], + ['khaieracyrw02swingtop_1662',['kHaierAcYrw02SwingTop',['../ir__Haier_8h.html#adf10f1bc1b293c684232cb6398631f70',1,'ir_Haier.h']]], + ['khaieracyrw02turbohigh_1663',['kHaierAcYrw02TurboHigh',['../ir__Haier_8h.html#ab096c15c69f242b99fbc1e4d7bd7548e',1,'ir_Haier.h']]], + ['khaieracyrw02turbolow_1664',['kHaierAcYrw02TurboLow',['../ir__Haier_8h.html#a19b7f4aee8115eb77267c415d8b3bd82',1,'ir_Haier.h']]], + ['khaieracyrw02turbooff_1665',['kHaierAcYrw02TurboOff',['../ir__Haier_8h.html#aa06ba46287b5806a6373e921cee34a51',1,'ir_Haier.h']]], + ['khaieracyrw02turbooffset_1666',['kHaierAcYrw02TurboOffset',['../ir__Haier_8h.html#a6581fc8ec43b9ac9f877bf27231554bd',1,'ir_Haier.h']]], + ['khaieracyrw02turbosize_1667',['kHaierAcYrw02TurboSize',['../ir__Haier_8h.html#a6ad469ec094d8af5a68cc94a744079bb',1,'ir_Haier.h']]], + ['khaieraczerospace_1668',['kHaierAcZeroSpace',['../ir__Haier_8cpp.html#af2b1a4f27c7b50a1e60ae00bbbec7a16',1,'ir_Haier.cpp']]], + ['kheader_1669',['kHeader',['../IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed',1,'IRrecv.h']]], + ['khealthstr_1670',['kHealthStr',['../IRtext_8cpp.html#a12474bbd4a7f700c922bcc1de240894f',1,'kHealthStr(): IRtext.cpp'],['../IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42',1,'kHealthStr(): IRtext.cpp']]], + ['kheat_1671',['kHeat',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faece059b52386d38cd6da9729cca08b4e',1,'stdAc']]], + ['kheatstr_1672',['kHeatStr',['../IRtext_8cpp.html#a3a16f1dabca01c8f8e5ba1516408ba39',1,'kHeatStr(): IRtext.cpp'],['../IRtext_8h.html#a058df7d2db245e307719d025352d464d',1,'kHeatStr(): IRtext.cpp']]], + ['khigh_1673',['kHigh',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()']]], + ['khighest_1674',['kHighest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a24d8e31603e486f788826bc24e3a2e1d',1,'stdAc']]], + ['khigheststr_1675',['kHighestStr',['../IRtext_8cpp.html#a219f1d54c5ea75bd5c736efc0d7d7275',1,'kHighestStr(): IRtext.cpp'],['../IRtext_8h.html#ad7706307f507466526b4288e33385bde',1,'kHighestStr(): IRtext.cpp']]], + ['khighnibble_1676',['kHighNibble',['../IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032',1,'IRutils.h']]], + ['khighstr_1677',['kHighStr',['../IRtext_8cpp.html#a127a20ad54e671f48a8faa822ff006f4',1,'kHighStr(): IRtext.cpp'],['../IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1',1,'kHighStr(): IRtext.cpp']]], + ['khistr_1678',['kHiStr',['../IRtext_8cpp.html#a7f4994ce51aed70ce6b5b4c88b886466',1,'kHiStr(): IRtext.cpp'],['../IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd',1,'kHiStr(): IRtext.cpp']]], + ['khitachiac1auto_1679',['kHitachiAc1Auto',['../ir__Hitachi_8h.html#a2689ef34702107dc3dce3d1cfa260fc9',1,'ir_Hitachi.h']]], + ['khitachiac1bits_1680',['kHitachiAc1Bits',['../IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1',1,'IRremoteESP8266.h']]], + ['khitachiac1checksumstartbyte_1681',['kHitachiAc1ChecksumStartByte',['../ir__Hitachi_8h.html#afafa689c5e922b812f63e08941feb2a7',1,'ir_Hitachi.h']]], + ['khitachiac1cool_1682',['kHitachiAc1Cool',['../ir__Hitachi_8h.html#a1146eda7688843d16094acf7a19a75ac',1,'ir_Hitachi.h']]], + ['khitachiac1dry_1683',['kHitachiAc1Dry',['../ir__Hitachi_8h.html#a82895db5201610844da803bf333102a3',1,'ir_Hitachi.h']]], + ['khitachiac1fan_1684',['kHitachiAc1Fan',['../ir__Hitachi_8h.html#ac5a3ba0e0e4ed02d4792d5a8e6a22654',1,'ir_Hitachi.h']]], + ['khitachiac1fanauto_1685',['kHitachiAc1FanAuto',['../ir__Hitachi_8h.html#a6f9adda7b08ec4b8566ceb4d79966689',1,'ir_Hitachi.h']]], + ['khitachiac1fanbyte_1686',['kHitachiAc1FanByte',['../ir__Hitachi_8h.html#afe6b5951ba3b4e7ad5400f30228d106e',1,'ir_Hitachi.h']]], + ['khitachiac1fanhigh_1687',['kHitachiAc1FanHigh',['../ir__Hitachi_8h.html#ace677cf030da9d74eda0f50d54c91411',1,'ir_Hitachi.h']]], + ['khitachiac1fanlow_1688',['kHitachiAc1FanLow',['../ir__Hitachi_8h.html#a011219de5c0e2ba043a8be6345f8cb05',1,'ir_Hitachi.h']]], + ['khitachiac1fanmed_1689',['kHitachiAc1FanMed',['../ir__Hitachi_8h.html#afbc2a535d85adb80cbcbac63e2432b1a',1,'ir_Hitachi.h']]], + ['khitachiac1fanoffset_1690',['kHitachiAc1FanOffset',['../ir__Hitachi_8h.html#af533c283666d80c0b9348f706909f4c4',1,'ir_Hitachi.h']]], + ['khitachiac1fansize_1691',['kHitachiAc1FanSize',['../ir__Hitachi_8h.html#a2b2a24680efaf1eeaf76dacaabef5c1d',1,'ir_Hitachi.h']]], + ['khitachiac1hdrmark_1692',['kHitachiAc1HdrMark',['../ir__Hitachi_8cpp.html#a2b1891174c78be6f960e92b389d25fe7',1,'ir_Hitachi.cpp']]], + ['khitachiac1hdrspace_1693',['kHitachiAc1HdrSpace',['../ir__Hitachi_8cpp.html#a93f34ee53a375dd7f4ccf82458453701',1,'ir_Hitachi.cpp']]], + ['khitachiac1heat_1694',['kHitachiAc1Heat',['../ir__Hitachi_8h.html#abd5d4db30d6be3b990a74d4481e7eabe',1,'ir_Hitachi.h']]], + ['khitachiac1modebyte_1695',['kHitachiAc1ModeByte',['../ir__Hitachi_8h.html#a57e27b66ff6d471c0dd335b610bc6e24',1,'ir_Hitachi.h']]], + ['khitachiac1model_5fa_1696',['kHitachiAc1Model_A',['../ir__Hitachi_8h.html#a5f8fc3bb000d46705e4530ca0a8f7b60',1,'ir_Hitachi.h']]], + ['khitachiac1model_5fb_1697',['kHitachiAc1Model_B',['../ir__Hitachi_8h.html#a2d894a528c538b8a3922e2500241a55b',1,'ir_Hitachi.h']]], + ['khitachiac1modelbyte_1698',['kHitachiAc1ModelByte',['../ir__Hitachi_8h.html#a2e2a76b8b7decef99cfb7b197e8fb7f7',1,'ir_Hitachi.h']]], + ['khitachiac1modeloffset_1699',['kHitachiAc1ModelOffset',['../ir__Hitachi_8h.html#a8a440a64e6e164511e0976dc5b6585ff',1,'ir_Hitachi.h']]], + ['khitachiac1modelsize_1700',['kHitachiAc1ModelSize',['../ir__Hitachi_8h.html#ab74bbcb475b7eaf33f70dbfdb853d8c3',1,'ir_Hitachi.h']]], + ['khitachiac1modeoffset_1701',['kHitachiAc1ModeOffset',['../ir__Hitachi_8h.html#a3f010fa5ae43ee36771be18659d8bc80',1,'ir_Hitachi.h']]], + ['khitachiac1modesize_1702',['kHitachiAc1ModeSize',['../ir__Hitachi_8h.html#a38b456d96602e83e7832e2a7af75f321',1,'ir_Hitachi.h']]], + ['khitachiac1offtimerhighbyte_1703',['kHitachiAc1OffTimerHighByte',['../ir__Hitachi_8h.html#a36e6b7fc328ee247c11f5779487119b6',1,'ir_Hitachi.h']]], + ['khitachiac1offtimerlowbyte_1704',['kHitachiAc1OffTimerLowByte',['../ir__Hitachi_8h.html#ac8eaedd191009b2ddaf1e047ac6ecf11',1,'ir_Hitachi.h']]], + ['khitachiac1ontimerhighbyte_1705',['kHitachiAc1OnTimerHighByte',['../ir__Hitachi_8h.html#aff6907e9999561abceac42e4cce1dc3b',1,'ir_Hitachi.h']]], + ['khitachiac1ontimerlowbyte_1706',['kHitachiAc1OnTimerLowByte',['../ir__Hitachi_8h.html#a95fef3be6809026b714847c709ba655b',1,'ir_Hitachi.h']]], + ['khitachiac1powerbyte_1707',['kHitachiAc1PowerByte',['../ir__Hitachi_8h.html#acda489ff6137ab3ebfb1795a32e1ec8e',1,'ir_Hitachi.h']]], + ['khitachiac1poweroffset_1708',['kHitachiAc1PowerOffset',['../ir__Hitachi_8h.html#a3fdcd0375b85ac2641d9d5cc6e4770f8',1,'ir_Hitachi.h']]], + ['khitachiac1powertoggleoffset_1709',['kHitachiAc1PowerToggleOffset',['../ir__Hitachi_8h.html#aac994777ce070ad69550229824800ee0',1,'ir_Hitachi.h']]], + ['khitachiac1sleep1_1710',['kHitachiAc1Sleep1',['../ir__Hitachi_8h.html#ab4ca89a9d8c8034e6a3d8ff17b09f3d5',1,'ir_Hitachi.h']]], + ['khitachiac1sleep2_1711',['kHitachiAc1Sleep2',['../ir__Hitachi_8h.html#a1e1a1ea1743b38da6bc6be63fa796689',1,'ir_Hitachi.h']]], + ['khitachiac1sleep3_1712',['kHitachiAc1Sleep3',['../ir__Hitachi_8h.html#a17eaa63f13a3c04aede9f485c310a930',1,'ir_Hitachi.h']]], + ['khitachiac1sleep4_1713',['kHitachiAc1Sleep4',['../ir__Hitachi_8h.html#a21360448a538fbd9491aa9dd28e6c545',1,'ir_Hitachi.h']]], + ['khitachiac1sleepbyte_1714',['kHitachiAc1SleepByte',['../ir__Hitachi_8h.html#ac693a15878e7cdc8e1f575502ea82843',1,'ir_Hitachi.h']]], + ['khitachiac1sleepoff_1715',['kHitachiAc1SleepOff',['../ir__Hitachi_8h.html#a96f87cb3838a1e1aab4b8407dcfc5b78',1,'ir_Hitachi.h']]], + ['khitachiac1sleepoffset_1716',['kHitachiAc1SleepOffset',['../ir__Hitachi_8h.html#a277ca55dbfd35258ea40059bdff62488',1,'ir_Hitachi.h']]], + ['khitachiac1sleepsize_1717',['kHitachiAc1SleepSize',['../ir__Hitachi_8h.html#a199cedd7120057f735ffc640f93a9a1a',1,'ir_Hitachi.h']]], + ['khitachiac1statelength_1718',['kHitachiAc1StateLength',['../IRremoteESP8266_8h.html#abb5e2ddb1a8d3c6fa7a94dbe1989ec5d',1,'IRremoteESP8266.h']]], + ['khitachiac1swingbyte_1719',['kHitachiAc1SwingByte',['../ir__Hitachi_8h.html#a5a283583007b26c1b45d8d7afcd55408',1,'ir_Hitachi.h']]], + ['khitachiac1swinghoffset_1720',['kHitachiAc1SwingHOffset',['../ir__Hitachi_8h.html#ab35d4bb6c17fc5bbcb5385a642476238',1,'ir_Hitachi.h']]], + ['khitachiac1swingtoggleoffset_1721',['kHitachiAc1SwingToggleOffset',['../ir__Hitachi_8h.html#a08eac3b64687e83229648c8664d75dc4',1,'ir_Hitachi.h']]], + ['khitachiac1swingvoffset_1722',['kHitachiAc1SwingVOffset',['../ir__Hitachi_8h.html#af4e410f10812d49175cd419ed678535b',1,'ir_Hitachi.h']]], + ['khitachiac1tempauto_1723',['kHitachiAc1TempAuto',['../ir__Hitachi_8h.html#ad402dff999a97b50b392572899522b6a',1,'ir_Hitachi.h']]], + ['khitachiac1tempbyte_1724',['kHitachiAc1TempByte',['../ir__Hitachi_8h.html#a03185c3b2ddb62d12267da014796da56',1,'ir_Hitachi.h']]], + ['khitachiac1tempdelta_1725',['kHitachiAc1TempDelta',['../ir__Hitachi_8h.html#a279c856a2b4d25651b117a8c654cb48d',1,'ir_Hitachi.h']]], + ['khitachiac1tempoffset_1726',['kHitachiAc1TempOffset',['../ir__Hitachi_8h.html#a8a92aa41be23301229ecec1486714b9a',1,'ir_Hitachi.h']]], + ['khitachiac1tempsize_1727',['kHitachiAc1TempSize',['../ir__Hitachi_8h.html#affb52642edc8f2231f0dc83bc5271885',1,'ir_Hitachi.h']]], + ['khitachiac1timersize_1728',['kHitachiAc1TimerSize',['../ir__Hitachi_8h.html#afd7f469f67f55263b0031b325232751b',1,'ir_Hitachi.h']]], + ['khitachiac2bits_1729',['kHitachiAc2Bits',['../IRremoteESP8266_8h.html#a362a0b0b0afc216cf8162a3724cf073a',1,'IRremoteESP8266.h']]], + ['khitachiac2statelength_1730',['kHitachiAc2StateLength',['../IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352',1,'IRremoteESP8266.h']]], + ['khitachiac344bits_1731',['kHitachiAc344Bits',['../IRremoteESP8266_8h.html#a204fc2410c3d555a37b152a01dceead0',1,'IRremoteESP8266.h']]], + ['khitachiac344buttonfan_1732',['kHitachiAc344ButtonFan',['../ir__Hitachi_8h.html#a5f33b956ec83ee0004785a9c44bd5b0b',1,'ir_Hitachi.h']]], + ['khitachiac344buttonpowermode_1733',['kHitachiAc344ButtonPowerMode',['../ir__Hitachi_8h.html#a3816a8ad86e03f8c5870057e7ad86335',1,'ir_Hitachi.h']]], + ['khitachiac344buttonswingh_1734',['kHitachiAc344ButtonSwingH',['../ir__Hitachi_8h.html#a10dea534868d76d99e91458ee28f5fe9',1,'ir_Hitachi.h']]], + ['khitachiac344buttonswingv_1735',['kHitachiAc344ButtonSwingV',['../ir__Hitachi_8h.html#a95c1b0ee7e3802631f4c2708371e7d34',1,'ir_Hitachi.h']]], + ['khitachiac344buttontempdown_1736',['kHitachiAc344ButtonTempDown',['../ir__Hitachi_8h.html#a05d9bd95037669f1d3743d935471db33',1,'ir_Hitachi.h']]], + ['khitachiac344buttontempup_1737',['kHitachiAc344ButtonTempUp',['../ir__Hitachi_8h.html#a74abf2ce4ed5918bf68f485eff179578',1,'ir_Hitachi.h']]], + ['khitachiac344cool_1738',['kHitachiAc344Cool',['../ir__Hitachi_8h.html#a92d4d8dea34a9387e55852b6b5289328',1,'ir_Hitachi.h']]], + ['khitachiac344dry_1739',['kHitachiAc344Dry',['../ir__Hitachi_8h.html#a37697339ddc2ffaf4ee13b5e140adf2c',1,'ir_Hitachi.h']]], + ['khitachiac344fan_1740',['kHitachiAc344Fan',['../ir__Hitachi_8h.html#a296cd0fc1f414a4e15ce228b5a794bcb',1,'ir_Hitachi.h']]], + ['khitachiac344fanauto_1741',['kHitachiAc344FanAuto',['../ir__Hitachi_8h.html#a6439744edb1ae4dd9e8ea2097fac7a9d',1,'ir_Hitachi.h']]], + ['khitachiac344fanhigh_1742',['kHitachiAc344FanHigh',['../ir__Hitachi_8h.html#a83ea1924948ce9ac8266ab64a41f3ebd',1,'ir_Hitachi.h']]], + ['khitachiac344fanlow_1743',['kHitachiAc344FanLow',['../ir__Hitachi_8h.html#acbbb61fde653c84a8e35865fa724872c',1,'ir_Hitachi.h']]], + ['khitachiac344fanmax_1744',['kHitachiAc344FanMax',['../ir__Hitachi_8h.html#af041ed41027b8e444e3069d9a3481c51',1,'ir_Hitachi.h']]], + ['khitachiac344fanmedium_1745',['kHitachiAc344FanMedium',['../ir__Hitachi_8h.html#aa6d47b5c28f758aa297b345cbf853c9a',1,'ir_Hitachi.h']]], + ['khitachiac344fanmin_1746',['kHitachiAc344FanMin',['../ir__Hitachi_8h.html#ac4bafed10c76739698e9a35183beb970',1,'ir_Hitachi.h']]], + ['khitachiac344heat_1747',['kHitachiAc344Heat',['../ir__Hitachi_8h.html#a6c4102910d21dc838efee1fb2477218d',1,'ir_Hitachi.h']]], + ['khitachiac344maxtemp_1748',['kHitachiAc344MaxTemp',['../ir__Hitachi_8h.html#a4a394fc23fb119ba67e3ca53e4b88f7f',1,'ir_Hitachi.h']]], + ['khitachiac344mintemp_1749',['kHitachiAc344MinTemp',['../ir__Hitachi_8h.html#a7322f7769c9c1af2311180474e5b0f57',1,'ir_Hitachi.h']]], + ['khitachiac344statelength_1750',['kHitachiAc344StateLength',['../IRremoteESP8266_8h.html#a2192f6b7c353f7f124dff3b57eab0659',1,'IRremoteESP8266.h']]], + ['khitachiac344swinghauto_1751',['kHitachiAc344SwingHAuto',['../ir__Hitachi_8h.html#a4f93eccee6e3e5f5c49c84034ca25af3',1,'ir_Hitachi.h']]], + ['khitachiac344swinghbyte_1752',['kHitachiAc344SwingHByte',['../ir__Hitachi_8h.html#a132b64e007043ade4f209b0416fd5f4d',1,'ir_Hitachi.h']]], + ['khitachiac344swinghleft_1753',['kHitachiAc344SwingHLeft',['../ir__Hitachi_8h.html#af714a1eb296b05f3fc8167aff5419764',1,'ir_Hitachi.h']]], + ['khitachiac344swinghleftmax_1754',['kHitachiAc344SwingHLeftMax',['../ir__Hitachi_8h.html#ad0c5636ac0ccfd7e9cd087101bd5d204',1,'ir_Hitachi.h']]], + ['khitachiac344swinghmiddle_1755',['kHitachiAc344SwingHMiddle',['../ir__Hitachi_8h.html#a7e4372e02d72723049b378e955070c21',1,'ir_Hitachi.h']]], + ['khitachiac344swinghoffset_1756',['kHitachiAc344SwingHOffset',['../ir__Hitachi_8h.html#a7e8e57b0b37f20a502eb66f13980989c',1,'ir_Hitachi.h']]], + ['khitachiac344swinghright_1757',['kHitachiAc344SwingHRight',['../ir__Hitachi_8h.html#af4b087dec06cfd86920dbf9df22aca63',1,'ir_Hitachi.h']]], + ['khitachiac344swinghrightmax_1758',['kHitachiAc344SwingHRightMax',['../ir__Hitachi_8h.html#a90cffc131be89a36d352c462403f689f',1,'ir_Hitachi.h']]], + ['khitachiac344swinghsize_1759',['kHitachiAc344SwingHSize',['../ir__Hitachi_8h.html#aadd389cd818207920c1e8efef53fde91',1,'ir_Hitachi.h']]], + ['khitachiac344swingvbyte_1760',['kHitachiAc344SwingVByte',['../ir__Hitachi_8h.html#ae40211be39e522ebf9b580b3481f49f3',1,'ir_Hitachi.h']]], + ['khitachiac344swingvoffset_1761',['kHitachiAc344SwingVOffset',['../ir__Hitachi_8h.html#a8b38ef096697f70bdba8f4bd2799e148',1,'ir_Hitachi.h']]], + ['khitachiac3bitmark_1762',['kHitachiAc3BitMark',['../ir__Hitachi_8cpp.html#a68269a88e02a3030749061e5f28f74cc',1,'ir_Hitachi.cpp']]], + ['khitachiac3bits_1763',['kHitachiAc3Bits',['../IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb',1,'IRremoteESP8266.h']]], + ['khitachiac3hdrmark_1764',['kHitachiAc3HdrMark',['../ir__Hitachi_8cpp.html#af0a80a66094e67b4a78e8dfa539cd22f',1,'ir_Hitachi.cpp']]], + ['khitachiac3hdrspace_1765',['kHitachiAc3HdrSpace',['../ir__Hitachi_8cpp.html#aca4dc0b851c69a5e640337d68eb6f412',1,'ir_Hitachi.cpp']]], + ['khitachiac3minbits_1766',['kHitachiAc3MinBits',['../IRremoteESP8266_8h.html#a66ebaf70d2b4018371825c9cd3078a42',1,'IRremoteESP8266.h']]], + ['khitachiac3minstatelength_1767',['kHitachiAc3MinStateLength',['../IRremoteESP8266_8h.html#ac3becb270bfddaa1c64b1f8582dfc902',1,'IRremoteESP8266.h']]], + ['khitachiac3onespace_1768',['kHitachiAc3OneSpace',['../ir__Hitachi_8cpp.html#a0e630e38b4bffd5ec931153c20e41d97',1,'ir_Hitachi.cpp']]], + ['khitachiac3statelength_1769',['kHitachiAc3StateLength',['../IRremoteESP8266_8h.html#a9cc230bac4f902d46049c7b2c2fdbd3d',1,'IRremoteESP8266.h']]], + ['khitachiac3zerospace_1770',['kHitachiAc3ZeroSpace',['../ir__Hitachi_8cpp.html#a7cf96a2734bcc9a5eb390b8647666925',1,'ir_Hitachi.cpp']]], + ['khitachiac424bitmark_1771',['kHitachiAc424BitMark',['../ir__Hitachi_8cpp.html#acf5f9d83873a74688eb0413708e26eed',1,'ir_Hitachi.cpp']]], + ['khitachiac424bits_1772',['kHitachiAc424Bits',['../IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb',1,'IRremoteESP8266.h']]], + ['khitachiac424buttonbyte_1773',['kHitachiAc424ButtonByte',['../ir__Hitachi_8h.html#a057159edca95f9a000c80c7059919e83',1,'ir_Hitachi.h']]], + ['khitachiac424buttonfan_1774',['kHitachiAc424ButtonFan',['../ir__Hitachi_8h.html#a4aa278fb1983213a2506c71debe035aa',1,'ir_Hitachi.h']]], + ['khitachiac424buttonpowermode_1775',['kHitachiAc424ButtonPowerMode',['../ir__Hitachi_8h.html#a2dd37a36c6ad928ad0c3485ae4ea78fd',1,'ir_Hitachi.h']]], + ['khitachiac424buttonswingh_1776',['kHitachiAc424ButtonSwingH',['../ir__Hitachi_8h.html#af3a0d9499fab327bc7dfb5d57562a946',1,'ir_Hitachi.h']]], + ['khitachiac424buttonswingv_1777',['kHitachiAc424ButtonSwingV',['../ir__Hitachi_8h.html#a59d8e5407daf37d38e0c76ab3abdec9d',1,'ir_Hitachi.h']]], + ['khitachiac424buttontempdown_1778',['kHitachiAc424ButtonTempDown',['../ir__Hitachi_8h.html#ad909ee0bc97e24aa70ff6ecd1cffe6c2',1,'ir_Hitachi.h']]], + ['khitachiac424buttontempup_1779',['kHitachiAc424ButtonTempUp',['../ir__Hitachi_8h.html#ac8885804fb276f6327beb2018b204359',1,'ir_Hitachi.h']]], + ['khitachiac424cool_1780',['kHitachiAc424Cool',['../ir__Hitachi_8h.html#a64c1e01c222e6dec001a7052e822d64f',1,'ir_Hitachi.h']]], + ['khitachiac424dry_1781',['kHitachiAc424Dry',['../ir__Hitachi_8h.html#a56bfde42914bc92f47929179cddcbdf3',1,'ir_Hitachi.h']]], + ['khitachiac424fan_1782',['kHitachiAc424Fan',['../ir__Hitachi_8h.html#a35db6fdcedeb3de0ffb0bb72f1e60a0b',1,'ir_Hitachi.h']]], + ['khitachiac424fanauto_1783',['kHitachiAc424FanAuto',['../ir__Hitachi_8h.html#add1ec95cfd4e388f90154b25410471d0',1,'ir_Hitachi.h']]], + ['khitachiac424fanbyte_1784',['kHitachiAc424FanByte',['../ir__Hitachi_8h.html#aa4758708fe16d13cf6f50b7aa9e12bf6',1,'ir_Hitachi.h']]], + ['khitachiac424fanhigh_1785',['kHitachiAc424FanHigh',['../ir__Hitachi_8h.html#aacabc41baea6c3ddf711424a400144a3',1,'ir_Hitachi.h']]], + ['khitachiac424fanlow_1786',['kHitachiAc424FanLow',['../ir__Hitachi_8h.html#acae66b060db5cd03732ccbf808c6049e',1,'ir_Hitachi.h']]], + ['khitachiac424fanmax_1787',['kHitachiAc424FanMax',['../ir__Hitachi_8h.html#a6298e6dee6ff9f5fc57cfc9ccf30c073',1,'ir_Hitachi.h']]], + ['khitachiac424fanmaxdry_1788',['kHitachiAc424FanMaxDry',['../ir__Hitachi_8h.html#af770b29d838610b87463551444548ac0',1,'ir_Hitachi.h']]], + ['khitachiac424fanmedium_1789',['kHitachiAc424FanMedium',['../ir__Hitachi_8h.html#a3d6479f2e76bd84eeda9f5c0772210c5',1,'ir_Hitachi.h']]], + ['khitachiac424fanmin_1790',['kHitachiAc424FanMin',['../ir__Hitachi_8h.html#aacf1d4b99d89a0e24622ca02402c683b',1,'ir_Hitachi.h']]], + ['khitachiac424fantemp_1791',['kHitachiAc424FanTemp',['../ir__Hitachi_8h.html#a874362698fad488da1a477c4f99923aa',1,'ir_Hitachi.h']]], + ['khitachiac424hdrmark_1792',['kHitachiAc424HdrMark',['../ir__Hitachi_8cpp.html#a7b1dcaa7569237831b08ea061fd403fb',1,'ir_Hitachi.cpp']]], + ['khitachiac424hdrspace_1793',['kHitachiAc424HdrSpace',['../ir__Hitachi_8cpp.html#a9309b801d147dd3eba96ed15245f7445',1,'ir_Hitachi.cpp']]], + ['khitachiac424heat_1794',['kHitachiAc424Heat',['../ir__Hitachi_8h.html#a5cfd38c9e7aa2c39dfa38b1ef4b33b4c',1,'ir_Hitachi.h']]], + ['khitachiac424ldrmark_1795',['kHitachiAc424LdrMark',['../ir__Hitachi_8cpp.html#a0e2a88cb5930fb9726a453bdefe33bae',1,'ir_Hitachi.cpp']]], + ['khitachiac424ldrspace_1796',['kHitachiAc424LdrSpace',['../ir__Hitachi_8cpp.html#ad6285b55ed74e0e1087c3eb12d63b39c',1,'ir_Hitachi.cpp']]], + ['khitachiac424maxtemp_1797',['kHitachiAc424MaxTemp',['../ir__Hitachi_8h.html#a22574044b5a9163aca1f0581b9fa9241',1,'ir_Hitachi.h']]], + ['khitachiac424mintemp_1798',['kHitachiAc424MinTemp',['../ir__Hitachi_8h.html#a3d4311f1f28bbe31a22b80556e678b22',1,'ir_Hitachi.h']]], + ['khitachiac424modebyte_1799',['kHitachiAc424ModeByte',['../ir__Hitachi_8h.html#a3c6e0d27a95d94142360efa19a342c99',1,'ir_Hitachi.h']]], + ['khitachiac424onespace_1800',['kHitachiAc424OneSpace',['../ir__Hitachi_8cpp.html#a9b9cd22801f17acac593a8bcf334fd71',1,'ir_Hitachi.cpp']]], + ['khitachiac424powerbyte_1801',['kHitachiAc424PowerByte',['../ir__Hitachi_8h.html#a815e6761376ca4eae649ec837d55dc25',1,'ir_Hitachi.h']]], + ['khitachiac424poweroff_1802',['kHitachiAc424PowerOff',['../ir__Hitachi_8h.html#affc2d076cc0de329466ecbde7186d4eb',1,'ir_Hitachi.h']]], + ['khitachiac424poweron_1803',['kHitachiAc424PowerOn',['../ir__Hitachi_8h.html#a922478904efd86c6ecf7dabec3dd759f',1,'ir_Hitachi.h']]], + ['khitachiac424statelength_1804',['kHitachiAc424StateLength',['../IRremoteESP8266_8h.html#aff17d9c0ccf683895d2c868094679f0a',1,'IRremoteESP8266.h']]], + ['khitachiac424tempbyte_1805',['kHitachiAc424TempByte',['../ir__Hitachi_8h.html#a5de1ae606d6a34e24420b08a73542b94',1,'ir_Hitachi.h']]], + ['khitachiac424tempoffset_1806',['kHitachiAc424TempOffset',['../ir__Hitachi_8h.html#a3adb47220c4c72a62d9296092047900f',1,'ir_Hitachi.h']]], + ['khitachiac424tempsize_1807',['kHitachiAc424TempSize',['../ir__Hitachi_8h.html#ae6738f4a4476e5f34efbeb52e8c413de',1,'ir_Hitachi.h']]], + ['khitachiac424zerospace_1808',['kHitachiAc424ZeroSpace',['../ir__Hitachi_8cpp.html#a0f2032ac476bf344df31dc9351b2b98a',1,'ir_Hitachi.cpp']]], + ['khitachiacauto_1809',['kHitachiAcAuto',['../ir__Hitachi_8h.html#af8c74a8388361162b93339e1b0bc94d9',1,'ir_Hitachi.h']]], + ['khitachiacautotemp_1810',['kHitachiAcAutoTemp',['../ir__Hitachi_8h.html#aaa28bb683fefc065cb115fbfb66994ec',1,'ir_Hitachi.h']]], + ['khitachiacbitmark_1811',['kHitachiAcBitMark',['../ir__Hitachi_8cpp.html#a0993bf3d527a12bfe51c7bbfcf788c59',1,'ir_Hitachi.cpp']]], + ['khitachiacbits_1812',['kHitachiAcBits',['../IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b',1,'IRremoteESP8266.h']]], + ['khitachiaccool_1813',['kHitachiAcCool',['../ir__Hitachi_8h.html#a2b40b07601fdf8b038c97bb8bd2bec59',1,'ir_Hitachi.h']]], + ['khitachiacdefaultrepeat_1814',['kHitachiAcDefaultRepeat',['../IRremoteESP8266_8h.html#acc8510281d2ff9a808501d375c03ba21',1,'IRremoteESP8266.h']]], + ['khitachiacdry_1815',['kHitachiAcDry',['../ir__Hitachi_8h.html#a19730b13fca736392600580c156ae3c3',1,'ir_Hitachi.h']]], + ['khitachiacfan_1816',['kHitachiAcFan',['../ir__Hitachi_8h.html#a69626883b6fdbd3ccd26bb3123bf1883',1,'ir_Hitachi.h']]], + ['khitachiacfanauto_1817',['kHitachiAcFanAuto',['../ir__Hitachi_8h.html#a6be6f6eae193e784133be63d7cc5d75e',1,'ir_Hitachi.h']]], + ['khitachiacfanhigh_1818',['kHitachiAcFanHigh',['../ir__Hitachi_8h.html#a85ef905a1d3704237141f07defc128f5',1,'ir_Hitachi.h']]], + ['khitachiacfanlow_1819',['kHitachiAcFanLow',['../ir__Hitachi_8h.html#a0add8c3a3d00a81fcc3279af78256de2',1,'ir_Hitachi.h']]], + ['khitachiacfanmed_1820',['kHitachiAcFanMed',['../ir__Hitachi_8h.html#ac88b4cfdce5d69bf07316ddd716c2c11',1,'ir_Hitachi.h']]], + ['khitachiacfreq_1821',['kHitachiAcFreq',['../ir__Hitachi_8h.html#a443eaa664017d7b671bef0e9aa2d643b',1,'ir_Hitachi.h']]], + ['khitachiachdrmark_1822',['kHitachiAcHdrMark',['../ir__Hitachi_8cpp.html#aefe34d17f5c72ee05afb9a6302a450da',1,'ir_Hitachi.cpp']]], + ['khitachiachdrspace_1823',['kHitachiAcHdrSpace',['../ir__Hitachi_8cpp.html#a4a4352723f119ea070be1eba2aafe36b',1,'ir_Hitachi.cpp']]], + ['khitachiacheat_1824',['kHitachiAcHeat',['../ir__Hitachi_8h.html#add2498e77e5585fd8c82a553bb0c22c0',1,'ir_Hitachi.h']]], + ['khitachiacmaxtemp_1825',['kHitachiAcMaxTemp',['../ir__Hitachi_8h.html#a63e17171c40d770d25f24d018aee2c4c',1,'ir_Hitachi.h']]], + ['khitachiacmingap_1826',['kHitachiAcMinGap',['../ir__Hitachi_8cpp.html#a14016b9110c11423c628c8e220e50864',1,'ir_Hitachi.cpp']]], + ['khitachiacmintemp_1827',['kHitachiAcMinTemp',['../ir__Hitachi_8h.html#a9b4f3ea50cc0491f10ff8dc8eabb3ecd',1,'ir_Hitachi.h']]], + ['khitachiaconespace_1828',['kHitachiAcOneSpace',['../ir__Hitachi_8cpp.html#a79a79aaf52a05c021621335586dd928f',1,'ir_Hitachi.cpp']]], + ['khitachiacpoweroffset_1829',['kHitachiAcPowerOffset',['../ir__Hitachi_8h.html#a30062f0646ac63c3612d13f98211e36b',1,'ir_Hitachi.h']]], + ['khitachiacstatelength_1830',['kHitachiAcStateLength',['../IRremoteESP8266_8h.html#a8bef76bac826afbbc51c2a867af15ed8',1,'IRremoteESP8266.h']]], + ['khitachiacswingoffset_1831',['kHitachiAcSwingOffset',['../ir__Hitachi_8h.html#aac1fcff513a4eca2aeb4f13c739165e2',1,'ir_Hitachi.h']]], + ['khitachiaczerospace_1832',['kHitachiAcZeroSpace',['../ir__Hitachi_8cpp.html#a0b03a4abb11d69a8b8da56ca2abc50c8',1,'ir_Hitachi.cpp']]], + ['kholdstr_1833',['kHoldStr',['../IRtext_8cpp.html#a86fd1f86e4a513603449e90a47500986',1,'kHoldStr(): IRtext.cpp'],['../IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e',1,'kHoldStr(): IRtext.cpp']]], + ['khoursstr_1834',['kHoursStr',['../IRtext_8cpp.html#ae94260daddf2ea56e54d56bbad66526c',1,'kHoursStr(): IRtext.cpp'],['../IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161',1,'kHoursStr(): IRtext.cpp']]], + ['khourstr_1835',['kHourStr',['../IRtext_8cpp.html#a1d25a0bf2c8a638fff1557a0c5637977',1,'kHourStr(): IRtext.cpp'],['../IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6',1,'kHourStr(): IRtext.cpp']]], + ['khumidstr_1836',['kHumidStr',['../IRtext_8cpp.html#aae236cd2e7ed4961360fe687fe38170d',1,'kHumidStr(): IRtext.cpp'],['../IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f',1,'kHumidStr(): IRtext.cpp']]], + ['kidlestate_1837',['kIdleState',['../IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf',1,'IRrecv.h']]], + ['kifeelstr_1838',['kIFeelStr',['../IRtext_8cpp.html#a3c7368d9138477f0eac2a6249ba2606b',1,'kIFeelStr(): IRtext.cpp'],['../IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f',1,'kIFeelStr(): IRtext.cpp']]], + ['kinaxbitmark_1839',['kInaxBitMark',['../ir__Inax_8cpp.html#a84553819866dbfcfad8cba87f6c02e04',1,'ir_Inax.cpp']]], + ['kinaxbits_1840',['kInaxBits',['../IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a',1,'IRremoteESP8266.h']]], + ['kinaxhdrmark_1841',['kInaxHdrMark',['../ir__Inax_8cpp.html#ac467a96d91b6266c3ce9a2a4ec2a8b44',1,'ir_Inax.cpp']]], + ['kinaxhdrspace_1842',['kInaxHdrSpace',['../ir__Inax_8cpp.html#a6ddcc8ca7a5d05cee91e57b3e69cca33',1,'ir_Inax.cpp']]], + ['kinaxmingap_1843',['kInaxMinGap',['../ir__Inax_8cpp.html#a600f49303a77fbdc1d77aae2abe9b9aa',1,'ir_Inax.cpp']]], + ['kinaxminrepeat_1844',['kInaxMinRepeat',['../IRremoteESP8266_8h.html#a37a3d0ae51a6ce850a424fe77d5b22d2',1,'IRremoteESP8266.h']]], + ['kinaxonespace_1845',['kInaxOneSpace',['../ir__Inax_8cpp.html#aeb77e3a51838547a29c1b343eba4c7ef',1,'ir_Inax.cpp']]], + ['kinaxtick_1846',['kInaxTick',['../ir__Inax_8cpp.html#ad437f0beac0893853cc9d5cc214b03c6',1,'ir_Inax.cpp']]], + ['kinaxzerospace_1847',['kInaxZeroSpace',['../ir__Inax_8cpp.html#a115f1f061362c1c3c41e3bb20ea7e1c6',1,'ir_Inax.cpp']]], + ['kinsidestr_1848',['kInsideStr',['../IRtext_8cpp.html#aa94c7a9b472bcd2297b43a5b4008bc51',1,'kInsideStr(): IRtext.cpp'],['../IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb',1,'kInsideStr(): IRtext.cpp']]], + ['kionstr_1849',['kIonStr',['../IRtext_8cpp.html#afc36ce4beed72e662a8d9d1473dad235',1,'kIonStr(): IRtext.cpp'],['../IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b',1,'kIonStr(): IRtext.cpp']]], + ['kjvcbitmark_1850',['kJvcBitMark',['../ir__JVC_8cpp.html#a23c11d77431d37bba18776f9341c767f',1,'ir_JVC.cpp']]], + ['kjvcbitmarkticks_1851',['kJvcBitMarkTicks',['../ir__JVC_8cpp.html#aad7cf432a9bd0d2b4df66d5f903a70dd',1,'ir_JVC.cpp']]], + ['kjvcbits_1852',['kJvcBits',['../IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f',1,'IRremoteESP8266.h']]], + ['kjvchdrmark_1853',['kJvcHdrMark',['../ir__JVC_8cpp.html#a60d81ad0066288b602054bd24a912f1f',1,'ir_JVC.cpp']]], + ['kjvchdrmarkticks_1854',['kJvcHdrMarkTicks',['../ir__JVC_8cpp.html#abb12fba45b7a366e23849d693953e749',1,'ir_JVC.cpp']]], + ['kjvchdrspace_1855',['kJvcHdrSpace',['../ir__JVC_8cpp.html#a5444718f66ba8b43c1d7d99f7b378a0d',1,'ir_JVC.cpp']]], + ['kjvchdrspaceticks_1856',['kJvcHdrSpaceTicks',['../ir__JVC_8cpp.html#ae7cf6cb7b5ea5fe17a9b182d1ef3b008',1,'ir_JVC.cpp']]], + ['kjvcmingap_1857',['kJvcMinGap',['../ir__JVC_8cpp.html#ac19d8396c10adb687a883d016ec43aa5',1,'ir_JVC.cpp']]], + ['kjvcmingapticks_1858',['kJvcMinGapTicks',['../ir__JVC_8cpp.html#a525e7d672b148c02bdca1f66ab92e6c7',1,'ir_JVC.cpp']]], + ['kjvconespace_1859',['kJvcOneSpace',['../ir__JVC_8cpp.html#a8befef1d03f3a09541c2612c66c0256f',1,'ir_JVC.cpp']]], + ['kjvconespaceticks_1860',['kJvcOneSpaceTicks',['../ir__JVC_8cpp.html#a20d4f7737d71bdbec58694e775669df9',1,'ir_JVC.cpp']]], + ['kjvcrptlength_1861',['kJvcRptLength',['../ir__JVC_8cpp.html#a3896e40881e70c63234fecb88375b5a1',1,'ir_JVC.cpp']]], + ['kjvcrptlengthticks_1862',['kJvcRptLengthTicks',['../ir__JVC_8cpp.html#a75e03cf5739ab0ba67e5cfa426776d16',1,'ir_JVC.cpp']]], + ['kjvctick_1863',['kJvcTick',['../ir__JVC_8cpp.html#acd5a2ba251824cac5311adcc9a813b1a',1,'ir_JVC.cpp']]], + ['kjvczerospace_1864',['kJvcZeroSpace',['../ir__JVC_8cpp.html#a67c790b909f82e044b8c4e7227d9c189',1,'ir_JVC.cpp']]], + ['kjvczerospaceticks_1865',['kJvcZeroSpaceTicks',['../ir__JVC_8cpp.html#a0a5319df3b1e01741cd35a37087342f5',1,'ir_JVC.cpp']]], + ['kkelvinatorauto_1866',['kKelvinatorAuto',['../ir__Kelvinator_8h.html#a879b005fc5493a693b05e3bb7cbc8fbf',1,'ir_Kelvinator.h']]], + ['kkelvinatorautotemp_1867',['kKelvinatorAutoTemp',['../ir__Kelvinator_8h.html#afa9e7ea8c9fb86cb02358cc8221733b0',1,'ir_Kelvinator.h']]], + ['kkelvinatorbasicfanmax_1868',['kKelvinatorBasicFanMax',['../ir__Kelvinator_8h.html#a10624389f033451cf9a6f4530c2dfb98',1,'ir_Kelvinator.h']]], + ['kkelvinatorbasicfansize_1869',['kKelvinatorBasicFanSize',['../ir__Kelvinator_8cpp.html#a35ffe10c5c1b834703fe44c5eeeb4c8f',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorbitmark_1870',['kKelvinatorBitMark',['../ir__Kelvinator_8cpp.html#a2014f9f92f1e24a04341398e7e673807',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorbitmarkticks_1871',['kKelvinatorBitMarkTicks',['../ir__Kelvinator_8cpp.html#a2d6579257ab7f185e4f0fecdbdf03835',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorbits_1872',['kKelvinatorBits',['../IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86',1,'IRremoteESP8266.h']]], + ['kkelvinatorchecksumstart_1873',['kKelvinatorChecksumStart',['../ir__Kelvinator_8cpp.html#a0afa7cec1db6a5f46c1b30d7ce718ae6',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorcmdfooter_1874',['kKelvinatorCmdFooter',['../ir__Kelvinator_8cpp.html#ad2361e09472fa03376b447114a19513f',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorcmdfooterbits_1875',['kKelvinatorCmdFooterBits',['../ir__Kelvinator_8cpp.html#af6c85d3b30a5949da53ad9400734f203',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorcool_1876',['kKelvinatorCool',['../ir__Kelvinator_8h.html#ad49a2e457470d6e16d001cdae3215606',1,'ir_Kelvinator.h']]], + ['kkelvinatordefaultrepeat_1877',['kKelvinatorDefaultRepeat',['../IRremoteESP8266_8h.html#a94c968c5cc929f189b8e578d2f55b132',1,'IRremoteESP8266.h']]], + ['kkelvinatordry_1878',['kKelvinatorDry',['../ir__Kelvinator_8h.html#a181b3d10b522f9afb29706da42afea55',1,'ir_Kelvinator.h']]], + ['kkelvinatorfan_1879',['kKelvinatorFan',['../ir__Kelvinator_8h.html#a8d6d97be2fd8a5aefa1319d3f662a50c',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanauto_1880',['kKelvinatorFanAuto',['../ir__Kelvinator_8h.html#ac4994c36634ca0ad8791807c9a992976',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanmax_1881',['kKelvinatorFanMax',['../ir__Kelvinator_8h.html#a889ce17d112d1a61420e1064d72c583a',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanmin_1882',['kKelvinatorFanMin',['../ir__Kelvinator_8h.html#a36a9422e2e6c6b7a87e8b2deffd1b189',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanoffset_1883',['kKelvinatorFanOffset',['../ir__Kelvinator_8cpp.html#a4988bb98a4f8798c0b927e981667cfbd',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorfansize_1884',['kKelvinatorFanSize',['../ir__Kelvinator_8cpp.html#a286636ba83aceab9c8518878a6d7209e',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorgapspace_1885',['kKelvinatorGapSpace',['../ir__Kelvinator_8cpp.html#abf66116a235a9d05089182f2f7fd7640',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorgapspaceticks_1886',['kKelvinatorGapSpaceTicks',['../ir__Kelvinator_8cpp.html#a6a81fb4c1cf1ad34f99f3ca87ab74a5c',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrmark_1887',['kKelvinatorHdrMark',['../ir__Kelvinator_8cpp.html#a413e824c6bdd4778e70f496917b3fe30',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrmarkticks_1888',['kKelvinatorHdrMarkTicks',['../ir__Kelvinator_8cpp.html#a8ad828958071c75a80928abfb916c0df',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrspace_1889',['kKelvinatorHdrSpace',['../ir__Kelvinator_8cpp.html#a9cab23fbd5ba62714fda24765db0e7d1',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrspaceticks_1890',['kKelvinatorHdrSpaceTicks',['../ir__Kelvinator_8cpp.html#ab4fbf899dcb2c2d510055215617d5b44',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorheat_1891',['kKelvinatorHeat',['../ir__Kelvinator_8h.html#a080eade5648791e37c76af7a52e85731',1,'ir_Kelvinator.h']]], + ['kkelvinatorionfilteroffset_1892',['kKelvinatorIonFilterOffset',['../ir__Kelvinator_8cpp.html#a5cbdc907f0cb6a47d0c548148933067b',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorlightoffset_1893',['kKelvinatorLightOffset',['../ir__Kelvinator_8cpp.html#a7e757add18951b8e36c2065c5dbefc24',1,'ir_Kelvinator.cpp']]], + ['kkelvinatormaxtemp_1894',['kKelvinatorMaxTemp',['../ir__Kelvinator_8h.html#a14933442e718db1a87bae5d076ad228d',1,'ir_Kelvinator.h']]], + ['kkelvinatormintemp_1895',['kKelvinatorMinTemp',['../ir__Kelvinator_8h.html#a98871ce825dbbe80d072f25253142879',1,'ir_Kelvinator.h']]], + ['kkelvinatormodeoffset_1896',['kKelvinatorModeOffset',['../ir__Kelvinator_8cpp.html#a6a52d11326d5f83653c510393bb2a518',1,'ir_Kelvinator.cpp']]], + ['kkelvinatoronespace_1897',['kKelvinatorOneSpace',['../ir__Kelvinator_8cpp.html#aae5a009282517309b8fdbfdaced9d659',1,'ir_Kelvinator.cpp']]], + ['kkelvinatoronespaceticks_1898',['kKelvinatorOneSpaceTicks',['../ir__Kelvinator_8cpp.html#ac907f4495debdcaf680f6e6941b844d5',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorpoweroffset_1899',['kKelvinatorPowerOffset',['../ir__Kelvinator_8cpp.html#a5a9591e2dd98f68ad6f562e199b1a304',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorquietoffset_1900',['kKelvinatorQuietOffset',['../ir__Kelvinator_8cpp.html#ad354be321ea41c51ead876fd30674546',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorstatelength_1901',['kKelvinatorStateLength',['../IRremoteESP8266_8h.html#af68545e8c2fe9af3719fb74c5d21f0c9',1,'IRremoteESP8266.h']]], + ['kkelvinatortick_1902',['kKelvinatorTick',['../ir__Kelvinator_8cpp.html#a846cbb5609b1dff139a90487000c7393',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorturbooffset_1903',['kKelvinatorTurboOffset',['../ir__Kelvinator_8cpp.html#a21987b6f00c7f2e9bba94c59bc5b804b',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorventswinghoffset_1904',['kKelvinatorVentSwingHOffset',['../ir__Kelvinator_8cpp.html#a551df2c1e21764f12030f6bfa6d5942d',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorventswingoffset_1905',['kKelvinatorVentSwingOffset',['../ir__Kelvinator_8cpp.html#a38012bf9daa0c362a9007107183391ef',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorventswingvoffset_1906',['kKelvinatorVentSwingVOffset',['../ir__Kelvinator_8cpp.html#a64d3767b464d4fe2543560cf5a2a5b21',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorxfanoffset_1907',['kKelvinatorXfanOffset',['../ir__Kelvinator_8cpp.html#a4417448475405306f10166fc9cd98054',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorzerospace_1908',['kKelvinatorZeroSpace',['../ir__Kelvinator_8cpp.html#a10469f76f50285a6084bb088fd601dea',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorzerospaceticks_1909',['kKelvinatorZeroSpaceTicks',['../ir__Kelvinator_8cpp.html#a0abc0fdc3d9ac9f12133a46e95d69432',1,'ir_Kelvinator.cpp']]], + ['klasertagbits_1910',['kLasertagBits',['../IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e',1,'IRremoteESP8266.h']]], + ['klasertagdelta_1911',['kLasertagDelta',['../ir__Lasertag_8cpp.html#a5c0e8e9c6dec0480c09fcd339ed62257',1,'ir_Lasertag.cpp']]], + ['klasertagexcess_1912',['kLasertagExcess',['../ir__Lasertag_8cpp.html#afa77dc5a431a8d851320e7623378983e',1,'ir_Lasertag.cpp']]], + ['klasertagmingap_1913',['kLasertagMinGap',['../ir__Lasertag_8cpp.html#a33762e2c44dac34e00d255b41d9f2822',1,'ir_Lasertag.cpp']]], + ['klasertagminrepeat_1914',['kLasertagMinRepeat',['../IRremoteESP8266_8h.html#a9b36135c3df24eab232a5edac8c58c5e',1,'IRremoteESP8266.h']]], + ['klasertagminsamples_1915',['kLasertagMinSamples',['../ir__Lasertag_8cpp.html#acbf98970106cadb43e0703ae2caab0c1',1,'ir_Lasertag.cpp']]], + ['klasertagtick_1916',['kLasertagTick',['../ir__Lasertag_8cpp.html#a878b5d53379f8b1b21dfe19f1f83a626',1,'ir_Lasertag.cpp']]], + ['klasertagtolerance_1917',['kLasertagTolerance',['../ir__Lasertag_8cpp.html#a6146bcf378515d31330b3fec5c967346',1,'ir_Lasertag.cpp']]], + ['klastdecodetype_1918',['kLastDecodeType',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab09881b84bf9d61af99e62a85cce0b59',1,'IRremoteESP8266.h']]], + ['klastfanspeedenum_1919',['kLastFanspeedEnum',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383ab2d2a6993491fd666f1fa0afff5913ad',1,'stdAc']]], + ['klastopmodeenum_1920',['kLastOpmodeEnum',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa8dd00ffd575f66172d594e78860aad9f',1,'stdAc']]], + ['klaststr_1921',['kLastStr',['../IRtext_8cpp.html#ad7c8430b935afb7aec114788a9c0bf7d',1,'kLastStr(): IRtext.cpp'],['../IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32',1,'kLastStr(): IRtext.cpp']]], + ['klastswinghenum_1922',['kLastSwinghEnum',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ac5bc5e605db47897c114283926ba7fe4',1,'stdAc']]], + ['klastswingvenum_1923',['kLastSwingvEnum',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a4127912afc084d51c71c4ea0c7dd7b30',1,'stdAc']]], + ['kleft_1924',['kLeft',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2d5fde1d924910a2a01ecd8e70a87c28',1,'stdAc']]], + ['kleftmax_1925',['kLeftMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a375fe2e8ea70186052eeb2983baa1d7d',1,'stdAc']]], + ['kleftmaxstr_1926',['kLeftMaxStr',['../IRtext_8cpp.html#a1a82999b6eb3b6637f51bb8ce6a46efd',1,'kLeftMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf',1,'kLeftMaxStr(): IRtext.cpp']]], + ['kleftstr_1927',['kLeftStr',['../IRtext_8cpp.html#a0bb005966f2ff2da12a542e713f7f1f2',1,'kLeftStr(): IRtext.cpp'],['../IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf',1,'kLeftStr(): IRtext.cpp']]], + ['klegopfbitmark_1928',['kLegoPfBitMark',['../ir__Lego_8cpp.html#afdf76660f62bfefb4a813d57cd84b590',1,'ir_Lego.cpp']]], + ['klegopfbits_1929',['kLegoPfBits',['../IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e',1,'IRremoteESP8266.h']]], + ['klegopfhdrspace_1930',['kLegoPfHdrSpace',['../ir__Lego_8cpp.html#a140e8707900bfd4e3a9e2722a6b0bfb3',1,'ir_Lego.cpp']]], + ['klegopfmincommandlength_1931',['kLegoPfMinCommandLength',['../ir__Lego_8cpp.html#ad9a0c5184cc422ec1b32edf58c52d2b1',1,'ir_Lego.cpp']]], + ['klegopfminrepeat_1932',['kLegoPfMinRepeat',['../IRremoteESP8266_8h.html#a2614cf3cb840f028eb1dc684aeb1272c',1,'IRremoteESP8266.h']]], + ['klegopfonespace_1933',['kLegoPfOneSpace',['../ir__Lego_8cpp.html#a59a41085f2e8f81e1019fd40782269e3',1,'ir_Lego.cpp']]], + ['klegopfzerospace_1934',['kLegoPfZeroSpace',['../ir__Lego_8cpp.html#ada07e8aaf79cf58c46b301a410d9fb3e',1,'ir_Lego.cpp']]], + ['klg2bitmark_1935',['kLg2BitMark',['../ir__LG_8cpp.html#abf4db4647161db6fb2548b5200c41843',1,'ir_LG.cpp']]], + ['klg2bitmarkticks_1936',['kLg2BitMarkTicks',['../ir__LG_8cpp.html#aae477dcb68b9c5f1b12adf832eb388a1',1,'ir_LG.cpp']]], + ['klg2hdrmark_1937',['kLg2HdrMark',['../ir__LG_8cpp.html#a5ca50077fba2d5130220255e1659e0c3',1,'ir_LG.cpp']]], + ['klg2hdrmarkticks_1938',['kLg2HdrMarkTicks',['../ir__LG_8cpp.html#adb636fb6b634c651364ae954d31b5692',1,'ir_LG.cpp']]], + ['klg2hdrspace_1939',['kLg2HdrSpace',['../ir__LG_8cpp.html#a6637da052fea9320e97cff261f219cdb',1,'ir_LG.cpp']]], + ['klg2hdrspaceticks_1940',['kLg2HdrSpaceTicks',['../ir__LG_8cpp.html#abd2f843416070a93587d07e4d32f1eb5',1,'ir_LG.cpp']]], + ['klg32bits_1941',['kLg32Bits',['../IRremoteESP8266_8h.html#ae3c458814d7221b66d2f267cb2663bd2',1,'IRremoteESP8266.h']]], + ['klg32hdrmark_1942',['kLg32HdrMark',['../ir__LG_8cpp.html#a26cb3fb11b1a0bf0815868767e50f31b',1,'ir_LG.cpp']]], + ['klg32hdrmarkticks_1943',['kLg32HdrMarkTicks',['../ir__LG_8cpp.html#aded50973c0a938d455c1537cb240d5e9',1,'ir_LG.cpp']]], + ['klg32hdrspace_1944',['kLg32HdrSpace',['../ir__LG_8cpp.html#a59ddf2070642615e162c85b7575aff76',1,'ir_LG.cpp']]], + ['klg32hdrspaceticks_1945',['kLg32HdrSpaceTicks',['../ir__LG_8cpp.html#aa029c2c83a96f1ff02610eddd6b946fa',1,'ir_LG.cpp']]], + ['klg32rpthdrmark_1946',['kLg32RptHdrMark',['../ir__LG_8cpp.html#af19a674228bea82c1c588aa9dd974805',1,'ir_LG.cpp']]], + ['klg32rpthdrmarkticks_1947',['kLg32RptHdrMarkTicks',['../ir__LG_8cpp.html#a5c79f7072eee35fc1df10ecd18e2a3d2',1,'ir_LG.cpp']]], + ['klgacauto_1948',['kLgAcAuto',['../ir__LG_8h.html#ae5e45a0f42ce7544d6fb7981a43fb932',1,'ir_LG.h']]], + ['klgacchecksumoffset_1949',['kLgAcChecksumOffset',['../ir__LG_8h.html#aa0b9abe43a870097d886efcd0fd3bb96',1,'ir_LG.h']]], + ['klgacchecksumsize_1950',['kLgAcChecksumSize',['../ir__LG_8h.html#a177d205346380d47ae47b52079e5ffaf',1,'ir_LG.h']]], + ['klgaccool_1951',['kLgAcCool',['../ir__LG_8h.html#a3ba35885488bdda3d87ba344a5c58eb2',1,'ir_LG.h']]], + ['klgacdry_1952',['kLgAcDry',['../ir__LG_8h.html#ab3b9a106551be1217e0c824cffe1ea44',1,'ir_LG.h']]], + ['klgacfan_1953',['kLgAcFan',['../ir__LG_8h.html#afc12144673b8dd0555833427fa757275',1,'ir_LG.h']]], + ['klgacfanauto_1954',['kLgAcFanAuto',['../ir__LG_8h.html#a3dee1dc33f768d36a2216213c90a0a5c',1,'ir_LG.h']]], + ['klgacfanhigh_1955',['kLgAcFanHigh',['../ir__LG_8h.html#a89888f8d36899b5526e4c2ebb1097357',1,'ir_LG.h']]], + ['klgacfanlow_1956',['kLgAcFanLow',['../ir__LG_8h.html#afa3633c1b26d837f85b10a8a8d677efc',1,'ir_LG.h']]], + ['klgacfanmedium_1957',['kLgAcFanMedium',['../ir__LG_8h.html#abe0fb8a8f9d6ab9ebda36d0343841619',1,'ir_LG.h']]], + ['klgacfanoffset_1958',['kLgAcFanOffset',['../ir__LG_8h.html#a428d348215682243f7e5fe03c7580665',1,'ir_LG.h']]], + ['klgacfansize_1959',['kLgAcFanSize',['../ir__LG_8h.html#a4baf7484fee55fdd5cdbf13d11d7f1b9',1,'ir_LG.h']]], + ['klgacheat_1960',['kLgAcHeat',['../ir__LG_8h.html#a6c17d61082cc24f9d714c5d4ac151933',1,'ir_LG.h']]], + ['klgacmaxtemp_1961',['kLgAcMaxTemp',['../ir__LG_8h.html#a0fab7b6e6d1138638bdeadeab85f5090',1,'ir_LG.h']]], + ['klgacmintemp_1962',['kLgAcMinTemp',['../ir__LG_8h.html#ae3bef99e329f057358001cacf67f6d70',1,'ir_LG.h']]], + ['klgacmodeoffset_1963',['kLgAcModeOffset',['../ir__LG_8h.html#abbc65ef461fd214d9ef41ebf62693467',1,'ir_LG.h']]], + ['klgacmodesize_1964',['kLgAcModeSize',['../ir__LG_8h.html#ae9927832fbb45c310666d8de1ebe5f0f',1,'ir_LG.h']]], + ['klgacoffcommand_1965',['kLgAcOffCommand',['../ir__LG_8h.html#aecf8158eec1d9ec0d54056392b512296',1,'ir_LG.h']]], + ['klgacpoweroff_1966',['kLgAcPowerOff',['../ir__LG_8h.html#a3b2681e41071298197d849fbd7649318',1,'ir_LG.h']]], + ['klgacpoweroffset_1967',['kLgAcPowerOffset',['../ir__LG_8h.html#a7cce14305909efe3b904d68f902d42de',1,'ir_LG.h']]], + ['klgacpoweron_1968',['kLgAcPowerOn',['../ir__LG_8h.html#a87d2f6e4e2755aaab4762952b1bf6108',1,'ir_LG.h']]], + ['klgacpowersize_1969',['kLgAcPowerSize',['../ir__LG_8h.html#a624eee0bc9084e4d9d801f8cbdc28d1e',1,'ir_LG.h']]], + ['klgacsignature_1970',['kLgAcSignature',['../ir__LG_8h.html#ab7c3589deb28829ad0313b1505ec196e',1,'ir_LG.h']]], + ['klgacsignatureoffset_1971',['kLgAcSignatureOffset',['../ir__LG_8h.html#a406dff4b4ffa5b809b8ea87ddfd3bf8b',1,'ir_LG.h']]], + ['klgacsignaturesize_1972',['kLgAcSignatureSize',['../ir__LG_8h.html#a7420d729a5dca26d95be3b9907eb477e',1,'ir_LG.h']]], + ['klgactempadjust_1973',['kLgAcTempAdjust',['../ir__LG_8h.html#a16210dc395a86dc4562436047c22600f',1,'ir_LG.h']]], + ['klgactempoffset_1974',['kLgAcTempOffset',['../ir__LG_8h.html#aca5ae781e03e4a88a83303cb0cae0609',1,'ir_LG.h']]], + ['klgactempsize_1975',['kLgAcTempSize',['../ir__LG_8h.html#ad0235a6c5bebb086b75dc65433b3c9e1',1,'ir_LG.h']]], + ['klgbitmark_1976',['kLgBitMark',['../ir__LG_8cpp.html#a9311195710d4c3a2ac48456390a03138',1,'ir_LG.cpp']]], + ['klgbitmarkticks_1977',['kLgBitMarkTicks',['../ir__LG_8cpp.html#a80b2d221b207c8c0faa74f1f39e9920b',1,'ir_LG.cpp']]], + ['klgbits_1978',['kLgBits',['../IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102',1,'IRremoteESP8266.h']]], + ['klgdefaultrepeat_1979',['kLgDefaultRepeat',['../IRremoteESP8266_8h.html#a2d6832b3d214e0adad781c205993e461',1,'IRremoteESP8266.h']]], + ['klghdrmark_1980',['kLgHdrMark',['../ir__LG_8cpp.html#a74f253d9e4cc72148233021c47d59f35',1,'ir_LG.cpp']]], + ['klghdrmarkticks_1981',['kLgHdrMarkTicks',['../ir__LG_8cpp.html#a6f1f88f3cefe49b9796a10a9109e560e',1,'ir_LG.cpp']]], + ['klghdrspace_1982',['kLgHdrSpace',['../ir__LG_8cpp.html#a6eaf100cde647fc119d3e993680afd47',1,'ir_LG.cpp']]], + ['klghdrspaceticks_1983',['kLgHdrSpaceTicks',['../ir__LG_8cpp.html#a22d8775d4c8985970b47e449232b45de',1,'ir_LG.cpp']]], + ['klgmingap_1984',['kLgMinGap',['../ir__LG_8cpp.html#a784323468e6b5ebc65bd2870a94fb553',1,'ir_LG.cpp']]], + ['klgmingapticks_1985',['kLgMinGapTicks',['../ir__LG_8cpp.html#aa56fd5b4fe946992aa1b9bdf61b1518b',1,'ir_LG.cpp']]], + ['klgminmessagelength_1986',['kLgMinMessageLength',['../ir__LG_8cpp.html#a4eb3f82ae2ca6c34b58e512848a6dc41',1,'ir_LG.cpp']]], + ['klgminmessagelengthticks_1987',['kLgMinMessageLengthTicks',['../ir__LG_8cpp.html#ab000fc974bdd0723e8bcb4872f33dd72',1,'ir_LG.cpp']]], + ['klgonespace_1988',['kLgOneSpace',['../ir__LG_8cpp.html#a05fe6a47f437efc686cb46ec805da4d4',1,'ir_LG.cpp']]], + ['klgonespaceticks_1989',['kLgOneSpaceTicks',['../ir__LG_8cpp.html#a535b089cd72bd027cbc34eb917d71ae5',1,'ir_LG.cpp']]], + ['klgrptspace_1990',['kLgRptSpace',['../ir__LG_8cpp.html#a834b8f08ee32030c51ea5e2c5bd5a73c',1,'ir_LG.cpp']]], + ['klgrptspaceticks_1991',['kLgRptSpaceTicks',['../ir__LG_8cpp.html#abc43b327c2c752dc5ed2794f08e2eba8',1,'ir_LG.cpp']]], + ['klgtick_1992',['kLgTick',['../ir__LG_8cpp.html#ab8ab28ebf1fae94aa900a3199a6fc191',1,'ir_LG.cpp']]], + ['klgzerospace_1993',['kLgZeroSpace',['../ir__LG_8cpp.html#a981fe3cfc4adf0b3016a008ca1bbf734',1,'ir_LG.cpp']]], + ['klgzerospaceticks_1994',['kLgZeroSpaceTicks',['../ir__LG_8cpp.html#af932345e15db822da67d7796cd5b6584',1,'ir_LG.cpp']]], + ['klightstr_1995',['kLightStr',['../IRtext_8cpp.html#a2912b7dc11fd571706eaaf90e0095a4f',1,'kLightStr(): IRtext.cpp'],['../IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da',1,'kLightStr(): IRtext.cpp']]], + ['klighttogglestr_1996',['kLightToggleStr',['../IRtext_8cpp.html#a74a3ef3c72995e19582be04a2716b285',1,'kLightToggleStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c',1,'kLightToggleStr(): IRtext.cpp']]], + ['klostr_1997',['kLoStr',['../IRtext_8cpp.html#a72fc3855eec7026260de3a6b3a25c377',1,'kLoStr(): IRtext.cpp'],['../IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c',1,'kLoStr(): IRtext.cpp']]], + ['kloudstr_1998',['kLoudStr',['../IRtext_8cpp.html#a3b6d3eed96c5623cc95ebcfb93cb6f96',1,'kLoudStr(): IRtext.cpp'],['../IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2',1,'kLoudStr(): IRtext.cpp']]], + ['klow_1999',['kLow',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()']]], + ['klowerstr_2000',['kLowerStr',['../IRtext_8cpp.html#a518681524ec3c8f8bc993823003fe58a',1,'kLowerStr(): IRtext.cpp'],['../IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c',1,'kLowerStr(): IRtext.cpp']]], + ['klowest_2001',['kLowest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a334c684494b7f19d765cf062ae94a314',1,'stdAc']]], + ['kloweststr_2002',['kLowestStr',['../IRtext_8cpp.html#ae0c595955599a398669a372edd339f67',1,'kLowestStr(): IRtext.cpp'],['../IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3',1,'kLowestStr(): IRtext.cpp']]], + ['klownibble_2003',['kLowNibble',['../IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec',1,'IRutils.h']]], + ['klowstr_2004',['kLowStr',['../IRtext_8cpp.html#a18f69bf40b866ee1d30d1586757d5f41',1,'kLowStr(): IRtext.cpp'],['../IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea',1,'kLowStr(): IRtext.cpp']]], + ['klutronbits_2005',['kLutronBits',['../IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99',1,'IRremoteESP8266.h']]], + ['klutrondelta_2006',['kLutronDelta',['../ir__Lutron_8cpp.html#a4220004fac195ef46388199ad9624860',1,'ir_Lutron.cpp']]], + ['klutrongap_2007',['kLutronGap',['../ir__Lutron_8cpp.html#a18ffb51db0ae33904a64012cb72d6165',1,'ir_Lutron.cpp']]], + ['klutrontick_2008',['kLutronTick',['../ir__Lutron_8cpp.html#a04a84309978b79c0983c398a497a087a',1,'ir_Lutron.cpp']]], + ['kmagiquestbits_2009',['kMagiquestBits',['../IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751',1,'IRremoteESP8266.h']]], + ['kmagiquestgap_2010',['kMagiQuestGap',['../ir__Magiquest_8h.html#aebdea5a1a55547d812f1f7bb2d3ddf1f',1,'ir_Magiquest.h']]], + ['kmagiquestmarkone_2011',['kMagiQuestMarkOne',['../ir__Magiquest_8h.html#a0d5d090015ecf49995514054c29cb4e2',1,'ir_Magiquest.h']]], + ['kmagiquestmarkzero_2012',['kMagiQuestMarkZero',['../ir__Magiquest_8h.html#a7240a15dbb9bc6a1e31575be7837c390',1,'ir_Magiquest.h']]], + ['kmagiquestoneratio_2013',['kMagiQuestOneRatio',['../ir__Magiquest_8h.html#a073cdb7ca4dd35b8fa05d99eb7da5b65',1,'ir_Magiquest.h']]], + ['kmagiquestspaceone_2014',['kMagiQuestSpaceOne',['../ir__Magiquest_8h.html#a92bad440c0291cbb903f08de08d96fb2',1,'ir_Magiquest.h']]], + ['kmagiquestspacezero_2015',['kMagiQuestSpaceZero',['../ir__Magiquest_8h.html#abe557052c5c3bef87e62daf71b4c8654',1,'ir_Magiquest.h']]], + ['kmagiquesttotalusec_2016',['kMagiQuestTotalUsec',['../ir__Magiquest_8h.html#a819dcf22b127f4f7b282d784490a83c3',1,'ir_Magiquest.h']]], + ['kmagiquestzeroratio_2017',['kMagiQuestZeroRatio',['../ir__Magiquest_8h.html#a41e5594b8e1510267e563ed78fbe98b0',1,'ir_Magiquest.h']]], + ['kmanualstr_2018',['kManualStr',['../IRtext_8cpp.html#a619896ae89717b2b0e1d3492bb528cbc',1,'kManualStr(): IRtext.cpp'],['../IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8',1,'kManualStr(): IRtext.cpp']]], + ['kmark_2019',['kMark',['../ir__Lasertag_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_RC5_RC6.cpp']]], + ['kmarkexcess_2020',['kMarkExcess',['../IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e',1,'IRrecv.h']]], + ['kmarkstate_2021',['kMarkState',['../IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2',1,'IRrecv.h']]], + ['kmax_2022',['kMax',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa0b1ac8aae6b1cfbbe89085c642b3b4b',1,'stdAc']]], + ['kmaxaccurateusecdelay_2023',['kMaxAccurateUsecDelay',['../IRsend_8h.html#a527e66125f3ae6ce87adbc72eab7d0b9',1,'IRsend.h']]], + ['kmaximumstr_2024',['kMaximumStr',['../IRtext_8cpp.html#af346693e98c91c7ce79bb22c7460dcee',1,'kMaximumStr(): IRtext.cpp'],['../IRtext_8h.html#a487173616cc3fced0489c01c11333912',1,'kMaximumStr(): IRtext.cpp']]], + ['kmaxleftstr_2025',['kMaxLeftStr',['../IRtext_8cpp.html#ae8ad7e46c3a33b4b9c5fa6545c9e3822',1,'kMaxLeftStr(): IRtext.cpp'],['../IRtext_8h.html#aac197960695463757652bc643efdcd59',1,'kMaxLeftStr(): IRtext.cpp']]], + ['kmaxrightstr_2026',['kMaxRightStr',['../IRtext_8cpp.html#a1ae3f331adb8ac6d1a27aa3d688fb65f',1,'kMaxRightStr(): IRtext.cpp'],['../IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e',1,'kMaxRightStr(): IRtext.cpp']]], + ['kmaxstr_2027',['kMaxStr',['../IRtext_8cpp.html#ad30e01090f06db0a3cb0c00bb6d2f0ca',1,'kMaxStr(): IRtext.cpp'],['../IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb',1,'kMaxStr(): IRtext.cpp']]], + ['kmaxtimeoutms_2028',['kMaxTimeoutMs',['../IRrecv_8h.html#a73391726d7caccb9b498bba73a969784',1,'IRrecv.h']]], + ['kmedium_2029',['kMedium',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a3ce9d817402b59f65fb01ea044bb1ee9',1,'stdAc']]], + ['kmediumstr_2030',['kMediumStr',['../IRtext_8cpp.html#ac59539e93fdc7d8f15f1f55bcbf933c5',1,'kMediumStr(): IRtext.cpp'],['../IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b',1,'kMediumStr(): IRtext.cpp']]], + ['kmedstr_2031',['kMedStr',['../IRtext_8cpp.html#a4832f8f5118018fa3c6eae1cd652eabf',1,'kMedStr(): IRtext.cpp'],['../IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0',1,'kMedStr(): IRtext.cpp']]], + ['kmiddle_2032',['kMiddle',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()']]], + ['kmiddlestr_2033',['kMiddleStr',['../IRtext_8cpp.html#a536f05d84867cfae601d4c1a2312d755',1,'kMiddleStr(): IRtext.cpp'],['../IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad',1,'kMiddleStr(): IRtext.cpp']]], + ['kmidea24bits_2034',['kMidea24Bits',['../IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14',1,'IRremoteESP8266.h']]], + ['kmidea24mingap_2035',['kMidea24MinGap',['../ir__Midea_8cpp.html#abfee73cafcc017c4742893908200dffc',1,'ir_Midea.cpp']]], + ['kmidea24minrepeat_2036',['kMidea24MinRepeat',['../IRremoteESP8266_8h.html#a8ed4bb62818fc64e4c4b60ef1094059e',1,'IRremoteESP8266.h']]], + ['kmideaacauto_2037',['kMideaACAuto',['../ir__Midea_8h.html#a379f580c4d1832a62fe49d66f7c13af6',1,'ir_Midea.h']]], + ['kmideaaccelsiusoffset_2038',['kMideaACCelsiusOffset',['../ir__Midea_8h.html#a3354c62fbd83c1f0c55aee359d45a1e0',1,'ir_Midea.h']]], + ['kmideaaccool_2039',['kMideaACCool',['../ir__Midea_8h.html#a94b1b18f6aa9c5010699ea9bfcc89b21',1,'ir_Midea.h']]], + ['kmideaacdry_2040',['kMideaACDry',['../ir__Midea_8h.html#a88c2d215406e337b437b99a04c4ca6c4',1,'ir_Midea.h']]], + ['kmideaacfan_2041',['kMideaACFan',['../ir__Midea_8h.html#ac92dd372bb18d43aea73d5ec511e1290',1,'ir_Midea.h']]], + ['kmideaacfanauto_2042',['kMideaACFanAuto',['../ir__Midea_8h.html#a334a64f653b141d67ffda2eca2a9851f',1,'ir_Midea.h']]], + ['kmideaacfanhigh_2043',['kMideaACFanHigh',['../ir__Midea_8h.html#a9c177aff562a19f32d6cf010704ac681',1,'ir_Midea.h']]], + ['kmideaacfanlow_2044',['kMideaACFanLow',['../ir__Midea_8h.html#a90ebe3812e8b554798a2083ddfe9fdff',1,'ir_Midea.h']]], + ['kmideaacfanmed_2045',['kMideaACFanMed',['../ir__Midea_8h.html#a9406c8d9ad79e6a121a29cd5455e8e7d',1,'ir_Midea.h']]], + ['kmideaacfanoffset_2046',['kMideaACFanOffset',['../ir__Midea_8h.html#ac210e7bed85ad46cef1fa15a71d8e4c9',1,'ir_Midea.h']]], + ['kmideaacfansize_2047',['kMideaACFanSize',['../ir__Midea_8h.html#ab2726e607d432d00b625471d51b71b21',1,'ir_Midea.h']]], + ['kmideaacheat_2048',['kMideaACHeat',['../ir__Midea_8h.html#aa0fb74d8406327a9510f0efa8a16a488',1,'ir_Midea.h']]], + ['kmideaacmaxtempc_2049',['kMideaACMaxTempC',['../ir__Midea_8h.html#a0cccc3093cffabe1e512f298c04b3ba1',1,'ir_Midea.h']]], + ['kmideaacmaxtempf_2050',['kMideaACMaxTempF',['../ir__Midea_8h.html#ac7306c86080e934055d5be9728c91629',1,'ir_Midea.h']]], + ['kmideaacmintempc_2051',['kMideaACMinTempC',['../ir__Midea_8h.html#ae849eb79db6c077d617283154edade84',1,'ir_Midea.h']]], + ['kmideaacmintempf_2052',['kMideaACMinTempF',['../ir__Midea_8h.html#a0b0bdf519164f793a129d0e32152069a',1,'ir_Midea.h']]], + ['kmideaacmodeoffset_2053',['kMideaACModeOffset',['../ir__Midea_8h.html#a04fb535d82fe9d44d6898dd7c2e3491e',1,'ir_Midea.h']]], + ['kmideaacpoweroffset_2054',['kMideaACPowerOffset',['../ir__Midea_8h.html#a299cd691572c33f5d4742a9c289c279c',1,'ir_Midea.h']]], + ['kmideaacsleepoffset_2055',['kMideaACSleepOffset',['../ir__Midea_8h.html#a3c968881e59795eadfcb991b36755494',1,'ir_Midea.h']]], + ['kmideaactempoffset_2056',['kMideaACTempOffset',['../ir__Midea_8h.html#aec7e9182f167eb9b094670cf9889a595',1,'ir_Midea.h']]], + ['kmideaactempsize_2057',['kMideaACTempSize',['../ir__Midea_8h.html#aad2041ff636467046b63ceeb9fdfaaea',1,'ir_Midea.h']]], + ['kmideaactoggleswingv_2058',['kMideaACToggleSwingV',['../ir__Midea_8h.html#a5420b72289d3ae99a6dbc5c94914c473',1,'ir_Midea.h']]], + ['kmideabitmark_2059',['kMideaBitMark',['../ir__Midea_8cpp.html#a39dc2d03456f67418519dc0f5efde7e0',1,'ir_Midea.cpp']]], + ['kmideabitmarkticks_2060',['kMideaBitMarkTicks',['../ir__Midea_8cpp.html#ac4d9b1460516aa19913b5bd328c1e176',1,'ir_Midea.cpp']]], + ['kmideabits_2061',['kMideaBits',['../IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239',1,'IRremoteESP8266.h']]], + ['kmideahdrmark_2062',['kMideaHdrMark',['../ir__Midea_8cpp.html#adcaa1ad6e2ba1022f3c90266f4fd0378',1,'ir_Midea.cpp']]], + ['kmideahdrmarkticks_2063',['kMideaHdrMarkTicks',['../ir__Midea_8cpp.html#af63b6cfcc5dc3e501b61c0d55d678f9e',1,'ir_Midea.cpp']]], + ['kmideahdrspace_2064',['kMideaHdrSpace',['../ir__Midea_8cpp.html#a8676eda087a85f6639b547140496c12f',1,'ir_Midea.cpp']]], + ['kmideahdrspaceticks_2065',['kMideaHdrSpaceTicks',['../ir__Midea_8cpp.html#aad99b5d8361733a9ca662735783e061c',1,'ir_Midea.cpp']]], + ['kmideamingap_2066',['kMideaMinGap',['../ir__Midea_8cpp.html#ad9ed8fb4841654fa756614862ac63be7',1,'ir_Midea.cpp']]], + ['kmideamingapticks_2067',['kMideaMinGapTicks',['../ir__Midea_8cpp.html#accd4e69e8fe0957ba013b97879fb1120',1,'ir_Midea.cpp']]], + ['kmideaminrepeat_2068',['kMideaMinRepeat',['../IRremoteESP8266_8h.html#aa8876e8e177b8e71154f8cfb42b19160',1,'IRremoteESP8266.h']]], + ['kmideaonespace_2069',['kMideaOneSpace',['../ir__Midea_8cpp.html#aabe187743f36e664c6069b004e9a82f7',1,'ir_Midea.cpp']]], + ['kmideaonespaceticks_2070',['kMideaOneSpaceTicks',['../ir__Midea_8cpp.html#a2cf0d5df2e5a3d7b1d24fd25ae3d7453',1,'ir_Midea.cpp']]], + ['kmideatick_2071',['kMideaTick',['../ir__Midea_8cpp.html#a878185258a4174978b072ac36aa377e2',1,'ir_Midea.cpp']]], + ['kmideatolerance_2072',['kMideaTolerance',['../ir__Midea_8cpp.html#a55553c3b8e7997fb1257ac2a37a929b6',1,'ir_Midea.cpp']]], + ['kmideazerospace_2073',['kMideaZeroSpace',['../ir__Midea_8cpp.html#a107d1d062e8475b84ec4ab548c3f01ef',1,'ir_Midea.cpp']]], + ['kmideazerospaceticks_2074',['kMideaZeroSpaceTicks',['../ir__Midea_8cpp.html#acd6580988c12ef5614727dd4d1b4c92d',1,'ir_Midea.cpp']]], + ['kmidstr_2075',['kMidStr',['../IRtext_8cpp.html#afd827d424c0bfdcc34b3607440fd2652',1,'kMidStr(): IRtext.cpp'],['../IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196',1,'kMidStr(): IRtext.cpp']]], + ['kmin_2076',['kMin',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a8fbc2f6c44a6d70550df79903eb57d48',1,'stdAc']]], + ['kminimumstr_2077',['kMinimumStr',['../IRtext_8cpp.html#acbd869e5978b6fee053d33d8cf21e11a',1,'kMinimumStr(): IRtext.cpp'],['../IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607',1,'kMinimumStr(): IRtext.cpp']]], + ['kminstr_2078',['kMinStr',['../IRtext_8cpp.html#a2b0c7369c1a93b8a7d5a87bf37fcee34',1,'kMinStr(): IRtext.cpp'],['../IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8',1,'kMinStr(): IRtext.cpp']]], + ['kminutesstr_2079',['kMinutesStr',['../IRtext_8cpp.html#a1c05b3e6af04586a0060c58979df002f',1,'kMinutesStr(): IRtext.cpp'],['../IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38',1,'kMinutesStr(): IRtext.cpp']]], + ['kminutestr_2080',['kMinuteStr',['../IRtext_8cpp.html#acab620931ba510a7bc395bad59169099',1,'kMinuteStr(): IRtext.cpp'],['../IRtext_8h.html#a54df015b1adadb211a30f826999c78f6',1,'kMinuteStr(): IRtext.cpp']]], + ['kmitsubishi112auto_2081',['kMitsubishi112Auto',['../ir__Mitsubishi_8h.html#a6e38f06ff78e3406a4f2cf1e1b453402',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112bitmark_2082',['kMitsubishi112BitMark',['../ir__Mitsubishi_8cpp.html#aef96bbd77d5bd66ed220840c09f54c37',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112bits_2083',['kMitsubishi112Bits',['../IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8',1,'IRremoteESP8266.h']]], + ['kmitsubishi112cool_2084',['kMitsubishi112Cool',['../ir__Mitsubishi_8h.html#aa9d1a63a8a275cda1794628f8d516963',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112dry_2085',['kMitsubishi112Dry',['../ir__Mitsubishi_8h.html#a4a3023d0342003b7947b19c9c5c25fb3',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanbyte_2086',['kMitsubishi112FanByte',['../ir__Mitsubishi_8h.html#a4312828eb864a67f8cc67a90c1324d3a',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanlow_2087',['kMitsubishi112FanLow',['../ir__Mitsubishi_8h.html#a4b8d6d04bb75ed98f6ed5bdff7472f50',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanmax_2088',['kMitsubishi112FanMax',['../ir__Mitsubishi_8h.html#a5a3e7c72ed85864b34f8ee298b3adc49',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanmed_2089',['kMitsubishi112FanMed',['../ir__Mitsubishi_8h.html#aa8a81057eeccbf528962b31a197b0319',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanmin_2090',['kMitsubishi112FanMin',['../ir__Mitsubishi_8h.html#ad8b101130e781d30b5d4072b3c514c78',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanoffset_2091',['kMitsubishi112FanOffset',['../ir__Mitsubishi_8h.html#ac000e0d3a59314c115e516f37c29983d',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanquiet_2092',['kMitsubishi112FanQuiet',['../ir__Mitsubishi_8h.html#addcf7a99c5ba2f4510754d22a4c0760f',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fansize_2093',['kMitsubishi112FanSize',['../ir__Mitsubishi_8h.html#ab102138f689d66c2c4c97445931f2dec',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112gap_2094',['kMitsubishi112Gap',['../ir__Mitsubishi_8cpp.html#ab24cc7d395c1620b9519b5d0ce2a2023',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112hdrmark_2095',['kMitsubishi112HdrMark',['../ir__Mitsubishi_8cpp.html#a3082567d58d6f8e6ef26714ff23f3728',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112hdrmarktolerance_2096',['kMitsubishi112HdrMarkTolerance',['../ir__Mitsubishi_8cpp.html#a288931e01f8cffa1917fb7bc59710e20',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112hdrspace_2097',['kMitsubishi112HdrSpace',['../ir__Mitsubishi_8cpp.html#a7b35ecbbc94f7ef622b20f21f83c0fba',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112heat_2098',['kMitsubishi112Heat',['../ir__Mitsubishi_8h.html#a260b6883e9433b466abf31618b1c4015',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112maxtemp_2099',['kMitsubishi112MaxTemp',['../ir__Mitsubishi_8h.html#afd968ea297ef8856b7266a8cc6e1bba0',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112minrepeat_2100',['kMitsubishi112MinRepeat',['../IRremoteESP8266_8h.html#a6bba58bb0f33feb9a6dfd20637d01d13',1,'IRremoteESP8266.h']]], + ['kmitsubishi112mintemp_2101',['kMitsubishi112MinTemp',['../ir__Mitsubishi_8h.html#acea288a8911a540cb9602d057eccb2a6',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112modebyte_2102',['kMitsubishi112ModeByte',['../ir__Mitsubishi_8h.html#a7e7663483fa89b4283baafba744d707a',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112modeoffset_2103',['kMitsubishi112ModeOffset',['../ir__Mitsubishi_8h.html#a39c8631bfd414738f1934eb28e74b97b',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112onespace_2104',['kMitsubishi112OneSpace',['../ir__Mitsubishi_8cpp.html#a8dd0d824826a7da007e78741015d418a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112powerbyte_2105',['kMitsubishi112PowerByte',['../ir__Mitsubishi_8h.html#ab09f78fee2a242dfdb0318a4caf7a2d6',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112poweroffset_2106',['kMitsubishi112PowerOffset',['../ir__Mitsubishi_8h.html#afd78de91190fa6ec8ffcc9132e3a8b35',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112statelength_2107',['kMitsubishi112StateLength',['../IRremoteESP8266_8h.html#a5ff0437b26e325bc2516a3e63c7ffe76',1,'IRremoteESP8266.h']]], + ['kmitsubishi112swinghauto_2108',['kMitsubishi112SwingHAuto',['../ir__Mitsubishi_8h.html#ab55e72c6d2b407868cda075efb24ac92',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghbyte_2109',['kMitsubishi112SwingHByte',['../ir__Mitsubishi_8h.html#ac149161c62c9ceee1c3a37d73930a7e8',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghleft_2110',['kMitsubishi112SwingHLeft',['../ir__Mitsubishi_8h.html#a8299b42b0972bda8a4bc4f32527c33e9',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghleftmax_2111',['kMitsubishi112SwingHLeftMax',['../ir__Mitsubishi_8h.html#a48346e97056af670454bc77a64b904bc',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghmiddle_2112',['kMitsubishi112SwingHMiddle',['../ir__Mitsubishi_8h.html#a7adcab7d152d84adef2059339de4bb40',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghoffset_2113',['kMitsubishi112SwingHOffset',['../ir__Mitsubishi_8h.html#a42f92264157e170d68046b9970a057ed',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghright_2114',['kMitsubishi112SwingHRight',['../ir__Mitsubishi_8h.html#a76cf277572a2b628d4a5353186ca2522',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghrightmax_2115',['kMitsubishi112SwingHRightMax',['../ir__Mitsubishi_8h.html#a1ff73f603b6e32075cbc9253d3090b49',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghsize_2116',['kMitsubishi112SwingHSize',['../ir__Mitsubishi_8h.html#a9ab977dbab987789d40fae38212f07ba',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghwide_2117',['kMitsubishi112SwingHWide',['../ir__Mitsubishi_8h.html#afab80db45769ab2957afc0e4799b46e5',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvauto_2118',['kMitsubishi112SwingVAuto',['../ir__Mitsubishi_8h.html#a1e16b172e864a74b426b1f823770cdaa',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvbyte_2119',['kMitsubishi112SwingVByte',['../ir__Mitsubishi_8h.html#afbcd99e59a029ccc6276c87a46d560dd',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvhigh_2120',['kMitsubishi112SwingVHigh',['../ir__Mitsubishi_8h.html#ab6e345e609d72f9ed903e30f3aa9a26f',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvhighest_2121',['kMitsubishi112SwingVHighest',['../ir__Mitsubishi_8h.html#a1cb8c62990dfb98a8ea228ad59cd88e5',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvlow_2122',['kMitsubishi112SwingVLow',['../ir__Mitsubishi_8h.html#a515bea322889f619d64ae96c37eaba72',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvlowest_2123',['kMitsubishi112SwingVLowest',['../ir__Mitsubishi_8h.html#ac4dd729a11e3ece244df6b1ddc9250f8',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvmiddle_2124',['kMitsubishi112SwingVMiddle',['../ir__Mitsubishi_8h.html#a0ae62480999dc4cf8a223b59938a0d68',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvoffset_2125',['kMitsubishi112SwingVOffset',['../ir__Mitsubishi_8h.html#ae4f3919271bb464d90a42066e8052c64',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvsize_2126',['kMitsubishi112SwingVSize',['../ir__Mitsubishi_8h.html#ae4f466b64691d8aa20e66a982d65ceea',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112tempbyte_2127',['kMitsubishi112TempByte',['../ir__Mitsubishi_8h.html#a4099370512a63ae3414221ab45f05034',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112tempsize_2128',['kMitsubishi112TempSize',['../ir__Mitsubishi_8h.html#a30d0ece1b7db3558ecc03214843c9fec',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112zerospace_2129',['kMitsubishi112ZeroSpace',['../ir__Mitsubishi_8cpp.html#ad70d1567dc2e4ea07a247f2555fc23b4',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136auto_2130',['kMitsubishi136Auto',['../ir__Mitsubishi_8h.html#ae10977a0d09f4c583b03fa05720c3aed',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136bitmark_2131',['kMitsubishi136BitMark',['../ir__Mitsubishi_8cpp.html#a3aa9c715088a58a8b4a97d5038dbf6d4',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136bits_2132',['kMitsubishi136Bits',['../IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974',1,'IRremoteESP8266.h']]], + ['kmitsubishi136cool_2133',['kMitsubishi136Cool',['../ir__Mitsubishi_8h.html#a93332579055a07ea291b3caf9ad11944',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136dry_2134',['kMitsubishi136Dry',['../ir__Mitsubishi_8h.html#ad612c480e8664169e2b8e062d47bd8b9',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fan_2135',['kMitsubishi136Fan',['../ir__Mitsubishi_8h.html#a4445944955b9017fcd6d1ae447f1b0d7',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanbyte_2136',['kMitsubishi136FanByte',['../ir__Mitsubishi_8h.html#a62166a745fdf0bbbd4b0eb114073b03e',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanlow_2137',['kMitsubishi136FanLow',['../ir__Mitsubishi_8h.html#af0f7177491c4cb053e6811376be956ec',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanmax_2138',['kMitsubishi136FanMax',['../ir__Mitsubishi_8h.html#a43a4337e20fbf4f6747a58c15213bd16',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanmed_2139',['kMitsubishi136FanMed',['../ir__Mitsubishi_8h.html#a73ff7df8fe65829cfd5875dc5040dec7',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanmin_2140',['kMitsubishi136FanMin',['../ir__Mitsubishi_8h.html#a2623eaf6e7d2ceb20ee72faddf46569e',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanoffset_2141',['kMitsubishi136FanOffset',['../ir__Mitsubishi_8h.html#aaa194e1e4394d3805477f4b2b78d3a81',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanquiet_2142',['kMitsubishi136FanQuiet',['../ir__Mitsubishi_8h.html#af2f7483bbb99216614e01dd5aedc35d5',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fansize_2143',['kMitsubishi136FanSize',['../ir__Mitsubishi_8h.html#a3fa7836f102aa9c78d7dd287a038baee',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136gap_2144',['kMitsubishi136Gap',['../ir__Mitsubishi_8cpp.html#a3f9e0708bbe8ed3ff98a563c3ff1af2b',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136hdrmark_2145',['kMitsubishi136HdrMark',['../ir__Mitsubishi_8cpp.html#a49c54ff757d070de54e3739b775bea00',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136hdrspace_2146',['kMitsubishi136HdrSpace',['../ir__Mitsubishi_8cpp.html#a1ddd09e423c427b3956298c20725188a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136heat_2147',['kMitsubishi136Heat',['../ir__Mitsubishi_8h.html#a932f074e9348d35cea119c8141eeb7f2',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136maxtemp_2148',['kMitsubishi136MaxTemp',['../ir__Mitsubishi_8h.html#a2db420b28003dc3e05bf1c86830c61ed',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136minrepeat_2149',['kMitsubishi136MinRepeat',['../IRremoteESP8266_8h.html#a448bd7af5fdab67fb40901a3d6efed21',1,'IRremoteESP8266.h']]], + ['kmitsubishi136mintemp_2150',['kMitsubishi136MinTemp',['../ir__Mitsubishi_8h.html#a5e2e5783d33f927f941271a44d11434c',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136modebyte_2151',['kMitsubishi136ModeByte',['../ir__Mitsubishi_8h.html#a98fbde8559e82a1875235019913e859c',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136modeoffset_2152',['kMitsubishi136ModeOffset',['../ir__Mitsubishi_8h.html#a061d59096df59826d951e83594728893',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136onespace_2153',['kMitsubishi136OneSpace',['../ir__Mitsubishi_8cpp.html#a9a0cfee8b6ea94d3f798d53d30c99d5f',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136powerbit_2154',['kMitsubishi136PowerBit',['../ir__Mitsubishi_8h.html#abbe2f7821db2a6f4696cf7f9138c509d',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136powerbyte_2155',['kMitsubishi136PowerByte',['../ir__Mitsubishi_8h.html#aca06b9d066d3f1a322bbb0f3d1a874a7',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136poweroffset_2156',['kMitsubishi136PowerOffset',['../ir__Mitsubishi_8h.html#ad235f31bc4b42548373c15e18f29e8b1',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136statelength_2157',['kMitsubishi136StateLength',['../IRremoteESP8266_8h.html#a01adbe4e1afb2ba26a5a60bf5b0b42f6',1,'IRremoteESP8266.h']]], + ['kmitsubishi136swingvauto_2158',['kMitsubishi136SwingVAuto',['../ir__Mitsubishi_8h.html#a828c2cc017cb7d00872137464d2119ae',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvbyte_2159',['kMitsubishi136SwingVByte',['../ir__Mitsubishi_8h.html#ab31414515f89e94ec8b63028e215b5ad',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvhigh_2160',['kMitsubishi136SwingVHigh',['../ir__Mitsubishi_8h.html#a319b36df23511aba8fb16b13eda9333b',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvhighest_2161',['kMitsubishi136SwingVHighest',['../ir__Mitsubishi_8h.html#a5bd1dbb97df91dfec0f9493120ea1269',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvlow_2162',['kMitsubishi136SwingVLow',['../ir__Mitsubishi_8h.html#a1ba4f3f7eb75bb54a752cfb11f196af0',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvlowest_2163',['kMitsubishi136SwingVLowest',['../ir__Mitsubishi_8h.html#ab0701f0127b07780066040bc08e46a2e',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136tempbyte_2164',['kMitsubishi136TempByte',['../ir__Mitsubishi_8h.html#a22bf24adb745489a75fb877fa5cc249a',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136zerospace_2165',['kMitsubishi136ZeroSpace',['../ir__Mitsubishi_8cpp.html#afaf1eca1169f492dcdd8a7266756c827',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2bitmark_2166',['kMitsubishi2BitMark',['../ir__Mitsubishi_8cpp.html#a8b0e87a15c51c3b62c14b4e7a071207f',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2hdrmark_2167',['kMitsubishi2HdrMark',['../ir__Mitsubishi_8cpp.html#a2d838e748f1f69165fb6b672955ea95e',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2hdrspace_2168',['kMitsubishi2HdrSpace',['../ir__Mitsubishi_8cpp.html#acd8994a08389c8d874afcbb8eb9c0861',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2mingap_2169',['kMitsubishi2MinGap',['../ir__Mitsubishi_8cpp.html#a7fa283a14968b582123a474c86a6fde9',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2onespace_2170',['kMitsubishi2OneSpace',['../ir__Mitsubishi_8cpp.html#aeee614cef3e95f661dca95b344edcf64',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2zerospace_2171',['kMitsubishi2ZeroSpace',['../ir__Mitsubishi_8cpp.html#a665522ccd10f4c9fba39e3f8f8a5cb95',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacauto_2172',['kMitsubishiAcAuto',['../ir__Mitsubishi_8h.html#a1fdbdc0906594e0efebbd05110877000',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacbitmark_2173',['kMitsubishiAcBitMark',['../ir__Mitsubishi_8cpp.html#a3787c48ffff208ef964886efab7e17ca',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacbits_2174',['kMitsubishiACBits',['../IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b',1,'IRremoteESP8266.h']]], + ['kmitsubishiaccool_2175',['kMitsubishiAcCool',['../ir__Mitsubishi_8h.html#a434455f6c76f0ca354b01e6a8a6479e9',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacdry_2176',['kMitsubishiAcDry',['../ir__Mitsubishi_8h.html#a9875c4b91a1b155b5f2e12370c33e031',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacextratolerance_2177',['kMitsubishiAcExtraTolerance',['../ir__Mitsubishi_8cpp.html#a98a0e4182311d584d4de4632eb491f04',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacfanauto_2178',['kMitsubishiAcFanAuto',['../ir__Mitsubishi_8h.html#a302cfd0468875cff23c69f71c392ad36',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanautooffset_2179',['kMitsubishiAcFanAutoOffset',['../ir__Mitsubishi_8h.html#ab8696268b90bf45314d712c212d68a10',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanmax_2180',['kMitsubishiAcFanMax',['../ir__Mitsubishi_8h.html#abbc2b87dfc6b2364d065f66f4d3e540c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanoffset_2181',['kMitsubishiAcFanOffset',['../ir__Mitsubishi_8h.html#ac16a5f7fe9800006de4511fd4ac89d64',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanquiet_2182',['kMitsubishiAcFanQuiet',['../ir__Mitsubishi_8h.html#a90799250620dec05385b9e81cfcb83af',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanrealmax_2183',['kMitsubishiAcFanRealMax',['../ir__Mitsubishi_8h.html#aa28f81fbd686adb082786e7cda9a17fc',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfansilent_2184',['kMitsubishiAcFanSilent',['../ir__Mitsubishi_8h.html#a731206548afa4f2672a78dae677f6b44',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfansize_2185',['kMitsubishiAcFanSize',['../ir__Mitsubishi_8h.html#a565c641228d28357282b211048f1bd1c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiachdrmark_2186',['kMitsubishiAcHdrMark',['../ir__Mitsubishi_8cpp.html#a11fcb08ce6bf9fa5fc50ca0e5c7d2d64',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiachdrspace_2187',['kMitsubishiAcHdrSpace',['../ir__Mitsubishi_8cpp.html#af0af560129a4666aeba1a4a9ab59e271',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacheat_2188',['kMitsubishiAcHeat',['../ir__Mitsubishi_8h.html#a6107df195ecf54ec4ef97b5ab82e911c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacmaxtemp_2189',['kMitsubishiAcMaxTemp',['../ir__Mitsubishi_8h.html#a8ba3fba3eb9dd63f5ade3cb3bd11269b',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacminrepeat_2190',['kMitsubishiACMinRepeat',['../IRremoteESP8266_8h.html#a376653a421df42d889ac3b2a071de58b',1,'IRremoteESP8266.h']]], + ['kmitsubishiacmintemp_2191',['kMitsubishiAcMinTemp',['../ir__Mitsubishi_8h.html#a2d6d53ccf446fcb03331f4e9757f4169',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacmodeoffset_2192',['kMitsubishiAcModeOffset',['../ir__Mitsubishi_8h.html#ac0037c13e3f90b7bde5a8328faaa3b9b',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacnotimer_2193',['kMitsubishiAcNoTimer',['../ir__Mitsubishi_8h.html#a0f5da97478cd6cdf2ffab161657e4ab6',1,'ir_Mitsubishi.h']]], + ['kmitsubishiaconespace_2194',['kMitsubishiAcOneSpace',['../ir__Mitsubishi_8cpp.html#abdf26b381c5288556257fabf43458775',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacpower_2195',['kMitsubishiAcPower',['../ir__Mitsubishi_8h.html#a864c4d936663d68f65ed4525072bd3eb',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacpoweroffset_2196',['kMitsubishiAcPowerOffset',['../ir__Mitsubishi_8h.html#a78749519549fb76a920ca447a4504e72',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacrptmark_2197',['kMitsubishiAcRptMark',['../ir__Mitsubishi_8cpp.html#a541d764aef906909a1a0d40466567c92',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacrptspace_2198',['kMitsubishiAcRptSpace',['../ir__Mitsubishi_8cpp.html#a4b120db1bd34c62778597abf05092d0a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacstartstoptimer_2199',['kMitsubishiAcStartStopTimer',['../ir__Mitsubishi_8h.html#aecbdc43fb4bd199c47cb5125816eab59',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacstarttimer_2200',['kMitsubishiAcStartTimer',['../ir__Mitsubishi_8h.html#a4107cbc35f18204f46adb57b0fd0f09c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacstatelength_2201',['kMitsubishiACStateLength',['../IRremoteESP8266_8h.html#a7d0d6dd6d5741f91a1afb641f11d9bc5',1,'IRremoteESP8266.h']]], + ['kmitsubishiacstoptimer_2202',['kMitsubishiAcStopTimer',['../ir__Mitsubishi_8h.html#a5e59039d523d15b145aa87222d52f2bf',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvaneauto_2203',['kMitsubishiAcVaneAuto',['../ir__Mitsubishi_8h.html#a1caff28ea3678cc5f655fc7147c5a15e',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvaneautomove_2204',['kMitsubishiAcVaneAutoMove',['../ir__Mitsubishi_8h.html#a2dc0b1ff66ffc21f626d7d8894a31fbb',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvanebitoffset_2205',['kMitsubishiAcVaneBitOffset',['../ir__Mitsubishi_8h.html#a0766870a9709320cfff03d0147f8e414',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvaneoffset_2206',['kMitsubishiAcVaneOffset',['../ir__Mitsubishi_8h.html#a2e928c1f814b71a1c346b3e987d7b857',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvanesize_2207',['kMitsubishiAcVaneSize',['../ir__Mitsubishi_8h.html#a27d52c41a9309a89e3a2c45b87c501ff',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacwidevaneauto_2208',['kMitsubishiAcWideVaneAuto',['../ir__Mitsubishi_8h.html#a2081e2b8eb778e15b7d9f2f0f332c012',1,'ir_Mitsubishi.h']]], + ['kmitsubishiaczerospace_2209',['kMitsubishiAcZeroSpace',['../ir__Mitsubishi_8cpp.html#a9481515c349154bbb6f56cec2712ba85',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishibitmark_2210',['kMitsubishiBitMark',['../ir__Mitsubishi_8cpp.html#a82c8e081b172080df14bdd6e3e6eb608',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishibitmarkticks_2211',['kMitsubishiBitMarkTicks',['../ir__Mitsubishi_8cpp.html#a6daf88606f40b13bce698c73d00f5faf',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishibits_2212',['kMitsubishiBits',['../IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152bits_2213',['kMitsubishiHeavy152Bits',['../IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152fanauto_2214',['kMitsubishiHeavy152FanAuto',['../ir__MitsubishiHeavy_8h.html#ae1739c1b5cd00b28a06dfd96413570a8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanecono_2215',['kMitsubishiHeavy152FanEcono',['../ir__MitsubishiHeavy_8h.html#acf0522589438103f805889e980259eb8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanhigh_2216',['kMitsubishiHeavy152FanHigh',['../ir__MitsubishiHeavy_8h.html#a48881ddd596b6945d04465b3f7a9bee6',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanlow_2217',['kMitsubishiHeavy152FanLow',['../ir__MitsubishiHeavy_8h.html#acff7254b2ced32550ec9305dbaac3d95',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanmax_2218',['kMitsubishiHeavy152FanMax',['../ir__MitsubishiHeavy_8h.html#aa1e9a41137a7dd65fc049ae41856795f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanmed_2219',['kMitsubishiHeavy152FanMed',['../ir__MitsubishiHeavy_8h.html#ac432324a30abcc0e664cf0ff8e974516',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanturbo_2220',['kMitsubishiHeavy152FanTurbo',['../ir__MitsubishiHeavy_8h.html#a7665d1ecb52afabd0dd951f2ab54e59b',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152minrepeat_2221',['kMitsubishiHeavy152MinRepeat',['../IRremoteESP8266_8h.html#a789cbb74cf332f8440a4fcdcac188741',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152statelength_2222',['kMitsubishiHeavy152StateLength',['../IRremoteESP8266_8h.html#a31d12a44c8c3a3c4533f65b8213e2086',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152swinghauto_2223',['kMitsubishiHeavy152SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac0ed87ce67ece78e2e9f2b49da5ba152',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghleft_2224',['kMitsubishiHeavy152SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a1a20549b529745e913565e6d717d9f95',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghleftmax_2225',['kMitsubishiHeavy152SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a970e6b602f5bbd4d560249966f6de6c9',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghleftright_2226',['kMitsubishiHeavy152SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a24c71dc5a17affb2f2d136f6846befbc',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghmiddle_2227',['kMitsubishiHeavy152SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#af1a02e21631c1efb12a01b3db065916c',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghoff_2228',['kMitsubishiHeavy152SwingHOff',['../ir__MitsubishiHeavy_8h.html#a246f8f9c9083f21ee22c2367ece2b9e2',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghright_2229',['kMitsubishiHeavy152SwingHRight',['../ir__MitsubishiHeavy_8h.html#aeec05249b3958f5a1cd629b328209e05',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghrightleft_2230',['kMitsubishiHeavy152SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#a43ddc14cc8707aa9743519b1c54eb776',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghrightmax_2231',['kMitsubishiHeavy152SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#ae825ed46bf143bc6a01891a5f021c870',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvauto_2232',['kMitsubishiHeavy152SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a31c20346b5538d74b58cb1fd499b5751',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvhigh_2233',['kMitsubishiHeavy152SwingVHigh',['../ir__MitsubishiHeavy_8h.html#a9ac8e39e46b43fb2276af7dd9724e3d4',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvhighest_2234',['kMitsubishiHeavy152SwingVHighest',['../ir__MitsubishiHeavy_8h.html#a554efbb611fd29a5d388d8195aa79993',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvlow_2235',['kMitsubishiHeavy152SwingVLow',['../ir__MitsubishiHeavy_8h.html#ad9a0b57ba70d318572b77236c23830a7',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvlowest_2236',['kMitsubishiHeavy152SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a02f1b980aa78b4ff314209d16bf0a6e8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvmiddle_2237',['kMitsubishiHeavy152SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#ae5c3ec8b8837dddff01d71c44a4ba813',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvoff_2238',['kMitsubishiHeavy152SwingVOff',['../ir__MitsubishiHeavy_8h.html#abb6905210a2f4021d157eeb61eaed7cd',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvoffset_2239',['kMitsubishiHeavy152SwingVOffset',['../ir__MitsubishiHeavy_8h.html#ae46f3549243667bbc38d6dc058772699',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvsize_2240',['kMitsubishiHeavy152SwingVSize',['../ir__MitsubishiHeavy_8h.html#a9cf7566686359cd5d553881b5eb96131',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy3dmask_2241',['kMitsubishiHeavy3DMask',['../ir__MitsubishiHeavy_8h.html#a16dcde537c9a2b1e8ddab4d6e08abb39',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88bits_2242',['kMitsubishiHeavy88Bits',['../IRremoteESP8266_8h.html#aa80d389140df4ab7071bfb3510b35dda',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy88cleanoffset_2243',['kMitsubishiHeavy88CleanOffset',['../ir__MitsubishiHeavy_8h.html#ac0a4108b9ce94b3a85c2cb9680c98f4e',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanauto_2244',['kMitsubishiHeavy88FanAuto',['../ir__MitsubishiHeavy_8h.html#a607cbc27223765b3dd1f9bfd77932d0f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanecono_2245',['kMitsubishiHeavy88FanEcono',['../ir__MitsubishiHeavy_8h.html#ab5fbaaffd9e0182fc7e60252f89da2c3',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanhigh_2246',['kMitsubishiHeavy88FanHigh',['../ir__MitsubishiHeavy_8h.html#aa45b29aaa7d8df7a34dfe6308a6b6412',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanlow_2247',['kMitsubishiHeavy88FanLow',['../ir__MitsubishiHeavy_8h.html#a92f0cba1aef78e5ade01c648837e7553',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanmed_2248',['kMitsubishiHeavy88FanMed',['../ir__MitsubishiHeavy_8h.html#aade681ee8ed4c4647a997a3caad093ea',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanoffset_2249',['kMitsubishiHeavy88FanOffset',['../ir__MitsubishiHeavy_8h.html#a477fe23b5b186f4386e5d0cbded98710',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fansize_2250',['kMitsubishiHeavy88FanSize',['../ir__MitsubishiHeavy_8h.html#a68ffc738a040b3c95a839362e069fe8a',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanturbo_2251',['kMitsubishiHeavy88FanTurbo',['../ir__MitsubishiHeavy_8h.html#a29201ebd9395edb2660337ee00efa1dd',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88minrepeat_2252',['kMitsubishiHeavy88MinRepeat',['../IRremoteESP8266_8h.html#ad7bccde1a9b32c962c99748fb130f711',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy88statelength_2253',['kMitsubishiHeavy88StateLength',['../IRremoteESP8266_8h.html#a515e5a081c388dd4313b20ff2b6c7955',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy88swingh3d_2254',['kMitsubishiHeavy88SwingH3D',['../ir__MitsubishiHeavy_8h.html#adfeb87be0ddfc6c06bbcb4a1506d3185',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghauto_2255',['kMitsubishiHeavy88SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac39f2339ab90bdc6d9c98dd6cf95fce2',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghleft_2256',['kMitsubishiHeavy88SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a32a76b07c6da2b09d04d985544d91af1',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghleftmax_2257',['kMitsubishiHeavy88SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a83340e32cff8ca09eb7596ec55a67853',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghleftright_2258',['kMitsubishiHeavy88SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a82f7addc930441b6e756d71ce3df24ca',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghmiddle_2259',['kMitsubishiHeavy88SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#a7a4b00b2953f2bc068d83c2618484c69',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghoff_2260',['kMitsubishiHeavy88SwingHOff',['../ir__MitsubishiHeavy_8h.html#a5313aeb4115ca5a795c6ebb9871ce436',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghoffset1_2261',['kMitsubishiHeavy88SwingHOffset1',['../ir__MitsubishiHeavy_8h.html#aeefa28e96d259e4ad5b63b86abf46f39',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghoffset2_2262',['kMitsubishiHeavy88SwingHOffset2',['../ir__MitsubishiHeavy_8h.html#a9efbee563f821dad4006e8c56de9131d',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghright_2263',['kMitsubishiHeavy88SwingHRight',['../ir__MitsubishiHeavy_8h.html#a35224e254d897b9d42e16f9dae04d984',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghrightleft_2264',['kMitsubishiHeavy88SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#aa913c0f1c61260c533c66aaa12dc83ac',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghrightmax_2265',['kMitsubishiHeavy88SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#a83c481d42999e377a2c50cacc28017b0',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghsize_2266',['kMitsubishiHeavy88SwingHSize',['../ir__MitsubishiHeavy_8h.html#a46a3cb1874cf5d1875e971094527b98f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvauto_2267',['kMitsubishiHeavy88SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a65c66f030afd2795d3132b3d0be2cabe',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte5offset_2268',['kMitsubishiHeavy88SwingVByte5Offset',['../ir__MitsubishiHeavy_8h.html#adab63d1b0145cbea0953a9fdd34fd3cf',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte5size_2269',['kMitsubishiHeavy88SwingVByte5Size',['../ir__MitsubishiHeavy_8h.html#ae0569562330f8c2af57a78764341c310',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte7offset_2270',['kMitsubishiHeavy88SwingVByte7Offset',['../ir__MitsubishiHeavy_8h.html#a8e864258ce7f01edb3b8d4672bba6312',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte7size_2271',['kMitsubishiHeavy88SwingVByte7Size',['../ir__MitsubishiHeavy_8h.html#a2e0d599b002366cc73d07f876d4fc0f7',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvhigh_2272',['kMitsubishiHeavy88SwingVHigh',['../ir__MitsubishiHeavy_8h.html#af99a8f0925f184f56080ddf3e9a37606',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvhighest_2273',['kMitsubishiHeavy88SwingVHighest',['../ir__MitsubishiHeavy_8h.html#adc2a20b5ca5dda6417c60a1a3c321fc0',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvlow_2274',['kMitsubishiHeavy88SwingVLow',['../ir__MitsubishiHeavy_8h.html#adb086c76e06cbf6c8808470363da5e93',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvlowest_2275',['kMitsubishiHeavy88SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a6f4af31ee9b187648c242aca2851d3ed',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvmiddle_2276',['kMitsubishiHeavy88SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#aeaddb1d80dd777c0fdd8e77661479598',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvoff_2277',['kMitsubishiHeavy88SwingVOff',['../ir__MitsubishiHeavy_8h.html#ad29f5b94153e0fc9943a2c4c02aa1f61',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyauto_2278',['kMitsubishiHeavyAuto',['../ir__MitsubishiHeavy_8h.html#a1bcb7429a89904e3b431aaaff20e35fa',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavybitmark_2279',['kMitsubishiHeavyBitMark',['../ir__MitsubishiHeavy_8cpp.html#a54b398e130a1893bdc81067c636d6001',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavycleanoffset_2280',['kMitsubishiHeavyCleanOffset',['../ir__MitsubishiHeavy_8h.html#acbcff6b22bf5dee4eeb1dbccc323409a',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavycool_2281',['kMitsubishiHeavyCool',['../ir__MitsubishiHeavy_8h.html#a5d819a9a6372fde79380a6890ffd3168',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavydry_2282',['kMitsubishiHeavyDry',['../ir__MitsubishiHeavy_8h.html#a749f4d74b6cce4ad29a7ab78bb780eaf',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyfan_2283',['kMitsubishiHeavyFan',['../ir__MitsubishiHeavy_8h.html#a55d9e0b9676da64dfdc888e7941665f8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyfilteroffset_2284',['kMitsubishiHeavyFilterOffset',['../ir__MitsubishiHeavy_8h.html#a32232c193503a4a6bab8f783fdebeddf',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavygap_2285',['kMitsubishiHeavyGap',['../ir__MitsubishiHeavy_8cpp.html#a92920bf4a95bccb9b55c623ff6dac96a',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyhdrmark_2286',['kMitsubishiHeavyHdrMark',['../ir__MitsubishiHeavy_8cpp.html#a9b1724efadc251117733297c424e76f4',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyhdrspace_2287',['kMitsubishiHeavyHdrSpace',['../ir__MitsubishiHeavy_8cpp.html#a9070250903c1d1653beb54ac3de27033',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyheat_2288',['kMitsubishiHeavyHeat',['../ir__MitsubishiHeavy_8h.html#a0b76a854d109dd0622155015edd31d74',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavymaxtemp_2289',['kMitsubishiHeavyMaxTemp',['../ir__MitsubishiHeavy_8h.html#a49abbf34671b67eb4ebbe881444180f4',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavymintemp_2290',['kMitsubishiHeavyMinTemp',['../ir__MitsubishiHeavy_8h.html#afa83fd435c67699da272b883277dbb98',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavymodeoffset_2291',['kMitsubishiHeavyModeOffset',['../ir__MitsubishiHeavy_8h.html#a2ac27d9659d3a203c8cc360bda901d10',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavynightoffset_2292',['kMitsubishiHeavyNightOffset',['../ir__MitsubishiHeavy_8h.html#a01b341211034e272bf5d4be00b88cc78',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyonespace_2293',['kMitsubishiHeavyOneSpace',['../ir__MitsubishiHeavy_8cpp.html#adec6564e4af2886b4c7d44343d98b9dc',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavypoweroffset_2294',['kMitsubishiHeavyPowerOffset',['../ir__MitsubishiHeavy_8h.html#a51d81b3a7d97e423858e00aecd9719c9',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavysiglength_2295',['kMitsubishiHeavySigLength',['../ir__MitsubishiHeavy_8h.html#af08e6fc65b10821e52dd4a0073033d14',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavysilentoffset_2296',['kMitsubishiHeavySilentOffset',['../ir__MitsubishiHeavy_8h.html#a9b7eb89d7a3f08e84339317d1f21ca6f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyzerospace_2297',['kMitsubishiHeavyZeroSpace',['../ir__MitsubishiHeavy_8cpp.html#a903c30cee53f76c7dc3d2fef74b6e4b2',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyzjssig_2298',['kMitsubishiHeavyZjsSig',['../ir__MitsubishiHeavy_8h.html#a01eb89bfc9d4b271a97fea566eb937ff',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyzmssig_2299',['kMitsubishiHeavyZmsSig',['../ir__MitsubishiHeavy_8h.html#a18761991123d121c8d40531d07922165',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishimincommandlength_2300',['kMitsubishiMinCommandLength',['../ir__Mitsubishi_8cpp.html#ad5a6d37e755ce1faa4cdb024d2bed26a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishimincommandlengthticks_2301',['kMitsubishiMinCommandLengthTicks',['../ir__Mitsubishi_8cpp.html#a4f69a50c720c7a19f0ee04d262eb5948',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishimingap_2302',['kMitsubishiMinGap',['../ir__Mitsubishi_8cpp.html#a66f6379ca4c0e5f03eda2d81be0a35b2',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishimingapticks_2303',['kMitsubishiMinGapTicks',['../ir__Mitsubishi_8cpp.html#af9e8409306344cf4cd0117f2131fc67a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiminrepeat_2304',['kMitsubishiMinRepeat',['../IRremoteESP8266_8h.html#ad88bda81b48f25d30bb5a169d3b6bcec',1,'IRremoteESP8266.h']]], + ['kmitsubishionespace_2305',['kMitsubishiOneSpace',['../ir__Mitsubishi_8cpp.html#ab3c6a50b722402633aaf26e2a4a39ff0',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishionespaceticks_2306',['kMitsubishiOneSpaceTicks',['../ir__Mitsubishi_8cpp.html#a3b12f2aa2c3b4b7ef439f86356aab9cf',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishitick_2307',['kMitsubishiTick',['../ir__Mitsubishi_8cpp.html#a5197eb8b6e8de8fdfb9f056b6f7d9aa5',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishizerospace_2308',['kMitsubishiZeroSpace',['../ir__Mitsubishi_8cpp.html#a9660ac382e9a929f6acb73a32b2a1a3c',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishizerospaceticks_2309',['kMitsubishiZeroSpaceTicks',['../ir__Mitsubishi_8cpp.html#a18f364a0ba491236538bc9d086303d69',1,'ir_Mitsubishi.cpp']]], + ['kmodebitssize_2310',['kModeBitsSize',['../IRutils_8h.html#a5432915ab86062fceadc067a233f1627',1,'IRutils.h']]], + ['kmodelstr_2311',['kModelStr',['../IRtext_8cpp.html#a40905418e2934e539c50c6cfc2c4ffe3',1,'kModelStr(): IRtext.cpp'],['../IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186',1,'kModelStr(): IRtext.cpp']]], + ['kmodestr_2312',['kModeStr',['../IRtext_8cpp.html#a7260c578d290c33b7705cd1439d992ee',1,'kModeStr(): IRtext.cpp'],['../IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f',1,'kModeStr(): IRtext.cpp']]], + ['kmouldstr_2313',['kMouldStr',['../IRtext_8cpp.html#ac665ea584a4949565aa35629d791dbc5',1,'kMouldStr(): IRtext.cpp'],['../IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30',1,'kMouldStr(): IRtext.cpp']]], + ['kmovestr_2314',['kMoveStr',['../IRtext_8cpp.html#a321f98699209fb487287c4911a0c0200',1,'kMoveStr(): IRtext.cpp'],['../IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd',1,'kMoveStr(): IRtext.cpp']]], + ['kmultibracketsbits_2315',['kMultibracketsBits',['../IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1',1,'IRremoteESP8266.h']]], + ['kmultibracketsdefaultrepeat_2316',['kMultibracketsDefaultRepeat',['../IRremoteESP8266_8h.html#a5aa418baefd018d5facc08d3bb721fe9',1,'IRremoteESP8266.h']]], + ['kmultibracketsfooterspace_2317',['kMultibracketsFooterSpace',['../ir__Multibrackets_8cpp.html#a738cde2d6a25611bea116d04375dd28a',1,'ir_Multibrackets.cpp']]], + ['kmultibracketsfreq_2318',['kMultibracketsFreq',['../ir__Multibrackets_8cpp.html#a38ba01a3c516f6018199aa9031a5fb4a',1,'ir_Multibrackets.cpp']]], + ['kmultibracketshdrmark_2319',['kMultibracketsHdrMark',['../ir__Multibrackets_8cpp.html#a4eaafbf701604ceb6591b8a8b9c1d202',1,'ir_Multibrackets.cpp']]], + ['kmultibracketstick_2320',['kMultibracketsTick',['../ir__Multibrackets_8cpp.html#aa528fbf06b8d5293d82b7efc2bcd1e9b',1,'ir_Multibrackets.cpp']]], + ['kmultibracketstolerance_2321',['kMultibracketsTolerance',['../ir__Multibrackets_8cpp.html#a242017fb86f015cdecbf31c278c43ccc',1,'ir_Multibrackets.cpp']]], + ['kmwmdelta_2322',['kMWMDelta',['../ir__MWM_8cpp.html#a4e32849a3c799af002d1290a8a33366e',1,'ir_MWM.cpp']]], + ['kmwmexcess_2323',['kMWMExcess',['../ir__MWM_8cpp.html#ab3ff88bfc09c94e70fb74a77dbdd87d7',1,'ir_MWM.cpp']]], + ['kmwmmaxwidth_2324',['kMWMMaxWidth',['../ir__MWM_8cpp.html#a833013dcb331ebce3b885b0ce73c9eaa',1,'ir_MWM.cpp']]], + ['kmwmmingap_2325',['kMWMMinGap',['../ir__MWM_8cpp.html#a4d1f9c5442390a5ba089270c1187e917',1,'ir_MWM.cpp']]], + ['kmwmminsamples_2326',['kMWMMinSamples',['../ir__MWM_8cpp.html#ad386c922a0fcbd0c5b904b9abdd8d582',1,'ir_MWM.cpp']]], + ['kmwmtick_2327',['kMWMTick',['../ir__MWM_8cpp.html#a42c39c0101ccad1e88fa206a26447256',1,'ir_MWM.cpp']]], + ['kmwmtolerance_2328',['kMWMTolerance',['../ir__MWM_8cpp.html#ae3a91ec66f51f50810229b4adc1264fd',1,'ir_MWM.cpp']]], + ['knastr_2329',['kNAStr',['../IRtext_8cpp.html#a1757349137713553454f405872bc4dcd',1,'kNAStr(): IRtext.cpp'],['../IRtext_8h.html#a5d094344fba1715dbde69ff947775264',1,'kNAStr(): IRtext.cpp']]], + ['knecbitmark_2330',['kNecBitMark',['../ir__NEC_8h.html#ab536a800ec8f7259fe7e485ea4aea465',1,'ir_NEC.h']]], + ['knecbitmarkticks_2331',['kNecBitMarkTicks',['../ir__NEC_8h.html#a84ca60f84d64d65872b40a87819eccc1',1,'ir_NEC.h']]], + ['knecbits_2332',['kNECBits',['../IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097',1,'IRremoteESP8266.h']]], + ['knechdrmark_2333',['kNecHdrMark',['../ir__NEC_8h.html#ac727ede47d30ec76b03e4a41b48ce8c7',1,'ir_NEC.h']]], + ['knechdrmarkticks_2334',['kNecHdrMarkTicks',['../ir__NEC_8h.html#ab1486c07a09bc4324c03b1c887f5c5f7',1,'ir_NEC.h']]], + ['knechdrspace_2335',['kNecHdrSpace',['../ir__NEC_8h.html#a8279410369d6ed266502615d3ff1750b',1,'ir_NEC.h']]], + ['knechdrspaceticks_2336',['kNecHdrSpaceTicks',['../ir__NEC_8h.html#a4470ee927c0c3447bdda20c52b0f8566',1,'ir_NEC.h']]], + ['knecmincommandlength_2337',['kNecMinCommandLength',['../ir__NEC_8h.html#ac7b8d897d9e5bbf29b9b1b899a2ef7d8',1,'ir_NEC.h']]], + ['knecmincommandlengthticks_2338',['kNecMinCommandLengthTicks',['../ir__NEC_8h.html#a78e411960e643495987b1cb53268bc46',1,'ir_NEC.h']]], + ['knecmingap_2339',['kNecMinGap',['../ir__NEC_8h.html#a3d6ecc128599df57dc98e97e51b2264e',1,'ir_NEC.h']]], + ['knecmingapticks_2340',['kNecMinGapTicks',['../ir__NEC_8h.html#a2e6d938510a34aa1217a56aa51ece9f5',1,'ir_NEC.h']]], + ['kneconespace_2341',['kNecOneSpace',['../ir__NEC_8h.html#af57080e9b7513d1c8e7e781f3d502fbd',1,'ir_NEC.h']]], + ['kneconespaceticks_2342',['kNecOneSpaceTicks',['../ir__NEC_8h.html#a2f1e5412d44816f92e4b6c72e16e8b1f',1,'ir_NEC.h']]], + ['knecrptlength_2343',['kNecRptLength',['../ir__NEC_8h.html#af4ab20595dfda177fbb06dd821ea14c7',1,'ir_NEC.h']]], + ['knecrptspace_2344',['kNecRptSpace',['../ir__NEC_8h.html#a9538478446b1ae5d72c8366dd6a11673',1,'ir_NEC.h']]], + ['knecrptspaceticks_2345',['kNecRptSpaceTicks',['../ir__NEC_8h.html#a91b5296d480008a4b44c5b084756f04b',1,'ir_NEC.h']]], + ['knectick_2346',['kNecTick',['../ir__NEC_8h.html#abe1ec110798236c7b626f7efe4cc5657',1,'ir_NEC.h']]], + ['kneczerospace_2347',['kNecZeroSpace',['../ir__NEC_8h.html#a00573a6bdb348339b9898173b644b693',1,'ir_NEC.h']]], + ['kneczerospaceticks_2348',['kNecZeroSpaceTicks',['../ir__NEC_8h.html#a80f316535d761c64f1d5752ef80a65ff',1,'ir_NEC.h']]], + ['kneoclima8cheatoffset_2349',['kNeoclima8CHeatOffset',['../ir__Neoclima_8h.html#a4e9654ac35708a22912448eef3eb2b35',1,'ir_Neoclima.h']]], + ['kneoclimaauto_2350',['kNeoclimaAuto',['../ir__Neoclima_8h.html#a4574742c21aae9aafaff9b10f9423006',1,'ir_Neoclima.h']]], + ['kneoclimabitmark_2351',['kNeoclimaBitMark',['../ir__Neoclima_8cpp.html#ae34236a830ec2d200575ac33fda43689',1,'ir_Neoclima.cpp']]], + ['kneoclimabits_2352',['kNeoclimaBits',['../IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f',1,'IRremoteESP8266.h']]], + ['kneoclimabutton8cheat_2353',['kNeoclimaButton8CHeat',['../ir__Neoclima_8h.html#ad337d964ff800bea5c55f1fe69dfb7ff',1,'ir_Neoclima.h']]], + ['kneoclimabuttonairflow_2354',['kNeoclimaButtonAirFlow',['../ir__Neoclima_8h.html#ab5fff838f8e5ac9ff213fc69346ffa7c',1,'ir_Neoclima.h']]], + ['kneoclimabuttoneye_2355',['kNeoclimaButtonEye',['../ir__Neoclima_8h.html#a6cabdccd3c8d52cb2817f99454bdc884',1,'ir_Neoclima.h']]], + ['kneoclimabuttonfanspeed_2356',['kNeoclimaButtonFanSpeed',['../ir__Neoclima_8h.html#ab41ffd863516b79b6c7e9b69e7d5a272',1,'ir_Neoclima.h']]], + ['kneoclimabuttonfollow_2357',['kNeoclimaButtonFollow',['../ir__Neoclima_8h.html#a592017dce3bfa4ea2f0f341a818aff72',1,'ir_Neoclima.h']]], + ['kneoclimabuttonfresh_2358',['kNeoclimaButtonFresh',['../ir__Neoclima_8h.html#a6a965f2dc7860879ccaf410405095e9c',1,'ir_Neoclima.h']]], + ['kneoclimabuttonhold_2359',['kNeoclimaButtonHold',['../ir__Neoclima_8h.html#aada6fdb6572bd7d841de89f1d1eed3fe',1,'ir_Neoclima.h']]], + ['kneoclimabuttonion_2360',['kNeoclimaButtonIon',['../ir__Neoclima_8h.html#a05dccf1c19237d315bb78f387f8fd57f',1,'ir_Neoclima.h']]], + ['kneoclimabuttonlight_2361',['kNeoclimaButtonLight',['../ir__Neoclima_8h.html#ac66b472b31f6183f4615584561baa284',1,'ir_Neoclima.h']]], + ['kneoclimabuttonmode_2362',['kNeoclimaButtonMode',['../ir__Neoclima_8h.html#a4cfee4b0898f1504be5cbd129cd99278',1,'ir_Neoclima.h']]], + ['kneoclimabuttonoffset_2363',['kNeoclimaButtonOffset',['../ir__Neoclima_8h.html#a08ae86c15defd78ecac0f322f84190d3',1,'ir_Neoclima.h']]], + ['kneoclimabuttonpower_2364',['kNeoclimaButtonPower',['../ir__Neoclima_8h.html#a047d19978c58b35dcd6a069fce04af87',1,'ir_Neoclima.h']]], + ['kneoclimabuttonsize_2365',['kNeoclimaButtonSize',['../ir__Neoclima_8h.html#aac90dbf9fe499df2edf64df44f449e57',1,'ir_Neoclima.h']]], + ['kneoclimabuttonsleep_2366',['kNeoclimaButtonSleep',['../ir__Neoclima_8h.html#adcbe2a89eecf41fe1fe2b8c62428084e',1,'ir_Neoclima.h']]], + ['kneoclimabuttonswing_2367',['kNeoclimaButtonSwing',['../ir__Neoclima_8h.html#aeea180bef85a40d8c7fe3f5facf7b199',1,'ir_Neoclima.h']]], + ['kneoclimabuttontempdown_2368',['kNeoclimaButtonTempDown',['../ir__Neoclima_8h.html#aee91f1ebdf89b6fe9f3b31937d1185a0',1,'ir_Neoclima.h']]], + ['kneoclimabuttontempup_2369',['kNeoclimaButtonTempUp',['../ir__Neoclima_8h.html#abb093132f77d179ab02fc4a022d55236',1,'ir_Neoclima.h']]], + ['kneoclimabuttonturbo_2370',['kNeoclimaButtonTurbo',['../ir__Neoclima_8h.html#af156d94f9e47e8b5e2e2493308cca04c',1,'ir_Neoclima.h']]], + ['kneoclimacool_2371',['kNeoclimaCool',['../ir__Neoclima_8h.html#ac5d874e5ffce72ce68176f38e780c439',1,'ir_Neoclima.h']]], + ['kneoclimadry_2372',['kNeoclimaDry',['../ir__Neoclima_8h.html#ab68ba4480e1bcb685579c5f902d0709e',1,'ir_Neoclima.h']]], + ['kneoclimaeyeoffset_2373',['kNeoclimaEyeOffset',['../ir__Neoclima_8h.html#ad7baeea22b87a69150c65b2c049ee0b2',1,'ir_Neoclima.h']]], + ['kneoclimafan_2374',['kNeoclimaFan',['../ir__Neoclima_8h.html#aa6166bd65d80a708d790dbf703c83ea2',1,'ir_Neoclima.h']]], + ['kneoclimafanauto_2375',['kNeoclimaFanAuto',['../ir__Neoclima_8h.html#a7885fdbc4ae3336aac74d7ee3d8c3258',1,'ir_Neoclima.h']]], + ['kneoclimafanhigh_2376',['kNeoclimaFanHigh',['../ir__Neoclima_8h.html#a57ddf91c1cbb157b3a53b1082bac2d75',1,'ir_Neoclima.h']]], + ['kneoclimafanlow_2377',['kNeoclimaFanLow',['../ir__Neoclima_8h.html#ac9031328be51a46543ebd4360aaca55a',1,'ir_Neoclima.h']]], + ['kneoclimafanmed_2378',['kNeoclimaFanMed',['../ir__Neoclima_8h.html#a11faf2a34faf44460795b50bfbdab402',1,'ir_Neoclima.h']]], + ['kneoclimafanoffest_2379',['kNeoclimaFanOffest',['../ir__Neoclima_8h.html#a32f614475b5f00f8ccdf12498c519713',1,'ir_Neoclima.h']]], + ['kneoclimafansize_2380',['kNeoclimaFanSize',['../ir__Neoclima_8h.html#a888cbc3f0a38137cb909188b6fff91b1',1,'ir_Neoclima.h']]], + ['kneoclimafollowme_2381',['kNeoclimaFollowMe',['../ir__Neoclima_8h.html#a493c1e6b8b8909f4201cd506a1f4804a',1,'ir_Neoclima.h']]], + ['kneoclimafreshoffset_2382',['kNeoclimaFreshOffset',['../ir__Neoclima_8h.html#af19f0f77ece049bdef26930be1b0309f',1,'ir_Neoclima.h']]], + ['kneoclimahdrmark_2383',['kNeoclimaHdrMark',['../ir__Neoclima_8cpp.html#aa392821c0ce822a7b7d67efd202bedd5',1,'ir_Neoclima.cpp']]], + ['kneoclimahdrspace_2384',['kNeoclimaHdrSpace',['../ir__Neoclima_8cpp.html#a3714ad66d75162ccb286152b70375588',1,'ir_Neoclima.cpp']]], + ['kneoclimaheat_2385',['kNeoclimaHeat',['../ir__Neoclima_8h.html#a5a5e53801c0f8e554c391ed56404b926',1,'ir_Neoclima.h']]], + ['kneoclimaholdoffset_2386',['kNeoclimaHoldOffset',['../ir__Neoclima_8h.html#a3a91e7504c7820223021dcc2cbbf9f2a',1,'ir_Neoclima.h']]], + ['kneoclimaionoffset_2387',['kNeoclimaIonOffset',['../ir__Neoclima_8h.html#ad420932425fbe261368938e604dfb0c1',1,'ir_Neoclima.h']]], + ['kneoclimalightoffset_2388',['kNeoclimaLightOffset',['../ir__Neoclima_8h.html#af58a863257c5d436b299ac8cbcb57686',1,'ir_Neoclima.h']]], + ['kneoclimamaxtemp_2389',['kNeoclimaMaxTemp',['../ir__Neoclima_8h.html#a755ef8290df8a3e19f236839bee42412',1,'ir_Neoclima.h']]], + ['kneoclimamingap_2390',['kNeoclimaMinGap',['../ir__Neoclima_8cpp.html#a0e54c73eff563f6c3ec39a0951dd3d2d',1,'ir_Neoclima.cpp']]], + ['kneoclimaminrepeat_2391',['kNeoclimaMinRepeat',['../IRremoteESP8266_8h.html#a16fc26a3ff66a66068ac9638554df847',1,'IRremoteESP8266.h']]], + ['kneoclimamintemp_2392',['kNeoclimaMinTemp',['../ir__Neoclima_8h.html#adc979ad2ac64481f13b1085b1fdd13c4',1,'ir_Neoclima.h']]], + ['kneoclimamodeoffset_2393',['kNeoclimaModeOffset',['../ir__Neoclima_8h.html#a823a960610ef3387099d2a2103dd0b56',1,'ir_Neoclima.h']]], + ['kneoclimaonespace_2394',['kNeoclimaOneSpace',['../ir__Neoclima_8cpp.html#a5fd5f3b7f04134190aafc65762528da0',1,'ir_Neoclima.cpp']]], + ['kneoclimapoweroffset_2395',['kNeoclimaPowerOffset',['../ir__Neoclima_8h.html#a9b881e5400fe9bcd3b1422aeb355cf7c',1,'ir_Neoclima.h']]], + ['kneoclimasleepoffset_2396',['kNeoclimaSleepOffset',['../ir__Neoclima_8h.html#ac0c978cdc30827c7390b93a9a4f05d24',1,'ir_Neoclima.h']]], + ['kneoclimastatelength_2397',['kNeoclimaStateLength',['../IRremoteESP8266_8h.html#a5a871ed6d145c5ea3d50e96600c02e31',1,'IRremoteESP8266.h']]], + ['kneoclimaswinghoffset_2398',['kNeoclimaSwingHOffset',['../ir__Neoclima_8h.html#a5f2e8ccaa590386b0947b0f291ebcb09',1,'ir_Neoclima.h']]], + ['kneoclimaswingvoff_2399',['kNeoclimaSwingVOff',['../ir__Neoclima_8h.html#ad230a8c18e6edb5709cb29033f1fd221',1,'ir_Neoclima.h']]], + ['kneoclimaswingvoffset_2400',['kNeoclimaSwingVOffset',['../ir__Neoclima_8h.html#a91b63c4712093684625a16c76bcc6784',1,'ir_Neoclima.h']]], + ['kneoclimaswingvon_2401',['kNeoclimaSwingVOn',['../ir__Neoclima_8h.html#a7021804eb30e7a7c5b9c9ababb1b8cad',1,'ir_Neoclima.h']]], + ['kneoclimaswingvsize_2402',['kNeoclimaSwingVSize',['../ir__Neoclima_8h.html#ab4b49ec2c326d0e94eba23e7a93b6fc6',1,'ir_Neoclima.h']]], + ['kneoclimatempoffset_2403',['kNeoclimaTempOffset',['../ir__Neoclima_8h.html#a5c3470f6c773b4c557e6996f8c29a573',1,'ir_Neoclima.h']]], + ['kneoclimatempsize_2404',['kNeoclimaTempSize',['../ir__Neoclima_8h.html#af848fc3f4ce46c8786fd2b3e129b1e48',1,'ir_Neoclima.h']]], + ['kneoclimaturbooffset_2405',['kNeoclimaTurboOffset',['../ir__Neoclima_8h.html#ae23c6faf5f54ff12d592360b42d69971',1,'ir_Neoclima.h']]], + ['kneoclimazerospace_2406',['kNeoclimaZeroSpace',['../ir__Neoclima_8cpp.html#a0b98d84da4651d8d31f8f1d84621c21e',1,'ir_Neoclima.cpp']]], + ['knibblesize_2407',['kNibbleSize',['../IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846',1,'IRutils.h']]], + ['knightstr_2408',['kNightStr',['../IRtext_8cpp.html#a01908d3c0f79bc015a699fc0576a8771',1,'kNightStr(): IRtext.cpp'],['../IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0',1,'kNightStr(): IRtext.cpp']]], + ['knikaibitmark_2409',['kNikaiBitMark',['../ir__Nikai_8cpp.html#ad665145b0ee9cc722d9fde43cbd3fd82',1,'ir_Nikai.cpp']]], + ['knikaibitmarkticks_2410',['kNikaiBitMarkTicks',['../ir__Nikai_8cpp.html#ac10d1b4c45af3ddbf3c50b85dbb0c2f0',1,'ir_Nikai.cpp']]], + ['knikaibits_2411',['kNikaiBits',['../IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40',1,'IRremoteESP8266.h']]], + ['knikaihdrmark_2412',['kNikaiHdrMark',['../ir__Nikai_8cpp.html#ae0656b931e18e6e011a7c74cfaf4384b',1,'ir_Nikai.cpp']]], + ['knikaihdrmarkticks_2413',['kNikaiHdrMarkTicks',['../ir__Nikai_8cpp.html#a11671cee9a312ece8f1c90596eddd7ac',1,'ir_Nikai.cpp']]], + ['knikaihdrspace_2414',['kNikaiHdrSpace',['../ir__Nikai_8cpp.html#ae801e20e669f3039888bf48074988b84',1,'ir_Nikai.cpp']]], + ['knikaihdrspaceticks_2415',['kNikaiHdrSpaceTicks',['../ir__Nikai_8cpp.html#a83885a2fc573f947afe5015cd2f4d953',1,'ir_Nikai.cpp']]], + ['knikaimingap_2416',['kNikaiMinGap',['../ir__Nikai_8cpp.html#ad88846eaa7559df7fb944283fd292da1',1,'ir_Nikai.cpp']]], + ['knikaimingapticks_2417',['kNikaiMinGapTicks',['../ir__Nikai_8cpp.html#afdf938a763f30e3c5e534eba269dff1f',1,'ir_Nikai.cpp']]], + ['knikaionespace_2418',['kNikaiOneSpace',['../ir__Nikai_8cpp.html#a4bb69ab22b2abcd20ffff90f9267fa43',1,'ir_Nikai.cpp']]], + ['knikaionespaceticks_2419',['kNikaiOneSpaceTicks',['../ir__Nikai_8cpp.html#a25a4d289b7fad06c31312df552ee81ab',1,'ir_Nikai.cpp']]], + ['knikaitick_2420',['kNikaiTick',['../ir__Nikai_8cpp.html#a70eb8953509420081d0a294203eeb34b',1,'ir_Nikai.cpp']]], + ['knikaizerospace_2421',['kNikaiZeroSpace',['../ir__Nikai_8cpp.html#aa9af57c5c936107b00096e16cc6f57d9',1,'ir_Nikai.cpp']]], + ['knikaizerospaceticks_2422',['kNikaiZeroSpaceTicks',['../ir__Nikai_8cpp.html#a8df777a744c018e27c6969c2109d6d79',1,'ir_Nikai.cpp']]], + ['knorepeat_2423',['kNoRepeat',['../IRremoteESP8266_8h.html#a1a49dde7ffbd753f7756cf0c9dc6d826',1,'IRremoteESP8266.h']]], + ['knostr_2424',['kNoStr',['../IRtext_8cpp.html#a07897ceb4a6607d87ef37a517908a4b5',1,'kNoStr(): IRtext.cpp'],['../IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d',1,'kNoStr(): IRtext.cpp']]], + ['knowstr_2425',['kNowStr',['../IRtext_8cpp.html#a09d8590020bcf998746528d0e50f7a20',1,'kNowStr(): IRtext.cpp'],['../IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12',1,'kNowStr(): IRtext.cpp']]], + ['koff_2426',['kOff',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444facc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()']]], + ['koffstr_2427',['kOffStr',['../IRtext_8cpp.html#a9ce19a214db45b8cff83032ffa1ccdd8',1,'kOffStr(): IRtext.cpp'],['../IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a',1,'kOffStr(): IRtext.cpp']]], + ['kofftimerstr_2428',['kOffTimerStr',['../IRtext_8cpp.html#ae5faab97b26f9e877f79f49002bbba2c',1,'kOffTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f',1,'kOffTimerStr(): IRtext.cpp']]], + ['konstr_2429',['kOnStr',['../IRtext_8cpp.html#ab3f42c8df156baa46326a57193f78c51',1,'kOnStr(): IRtext.cpp'],['../IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7',1,'kOnStr(): IRtext.cpp']]], + ['kontimerstr_2430',['kOnTimerStr',['../IRtext_8cpp.html#adaecb1b5526f2bb3a1334e816a414273',1,'kOnTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a9f355a0d834790287d95eea30b57564d',1,'kOnTimerStr(): IRtext.cpp']]], + ['koutsidequietstr_2431',['kOutsideQuietStr',['../IRtext_8cpp.html#a103f2a8a2a6d351cd8ea259de3c454ef',1,'kOutsideQuietStr(): IRtext.cpp'],['../IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c',1,'kOutsideQuietStr(): IRtext.cpp']]], + ['koutsidestr_2432',['kOutsideStr',['../IRtext_8cpp.html#a8465ee1e8b1e5dd58a9cf872c9569e01',1,'kOutsideStr(): IRtext.cpp'],['../IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0',1,'kOutsideStr(): IRtext.cpp']]], + ['kpanasonicacauto_2433',['kPanasonicAcAuto',['../ir__Panasonic_8h.html#aa7c839a4342205c384870e8a4f5ec36b',1,'ir_Panasonic.h']]], + ['kpanasonicacbits_2434',['kPanasonicAcBits',['../IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a',1,'IRremoteESP8266.h']]], + ['kpanasonicacchecksuminit_2435',['kPanasonicAcChecksumInit',['../ir__Panasonic_8h.html#a49329b4fef403696effcbcc5c8a86cd2',1,'ir_Panasonic.h']]], + ['kpanasonicaccool_2436',['kPanasonicAcCool',['../ir__Panasonic_8h.html#acfaa3d61fbb13fc6cd8d354f1c0a8dc7',1,'ir_Panasonic.h']]], + ['kpanasonicacdefaultrepeat_2437',['kPanasonicAcDefaultRepeat',['../IRremoteESP8266_8h.html#af6b7c6ad564253cb128ac92c00e86f0c',1,'IRremoteESP8266.h']]], + ['kpanasonicacdry_2438',['kPanasonicAcDry',['../ir__Panasonic_8h.html#a2d211bd2150a67819453f3220dc0cc91',1,'ir_Panasonic.h']]], + ['kpanasonicacexcess_2439',['kPanasonicAcExcess',['../ir__Panasonic_8h.html#adde8b69377faa9a4566dc15e95711257',1,'ir_Panasonic.h']]], + ['kpanasonicacfan_2440',['kPanasonicAcFan',['../ir__Panasonic_8h.html#a87e4dd423bbd1f879a9d5da31e1fea5e',1,'ir_Panasonic.h']]], + ['kpanasonicacfanauto_2441',['kPanasonicAcFanAuto',['../ir__Panasonic_8h.html#a7d4486fd68969af4f7230f12e865c698',1,'ir_Panasonic.h']]], + ['kpanasonicacfandelta_2442',['kPanasonicAcFanDelta',['../ir__Panasonic_8h.html#a2210f85a17fba2bbdfbb883e9fb57e52',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmax_2443',['kPanasonicAcFanMax',['../ir__Panasonic_8h.html#aa4599c84d72ab9c622b642870efb9cf1',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmed_2444',['kPanasonicAcFanMed',['../ir__Panasonic_8h.html#a978004e8e2c4122fec81c5a972b842a0',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmin_2445',['kPanasonicAcFanMin',['../ir__Panasonic_8h.html#a450c7951a525817d27351fb7c8ff2df9',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmodetemp_2446',['kPanasonicAcFanModeTemp',['../ir__Panasonic_8h.html#a76543f9d81c2d109e04359f0c61dcb99',1,'ir_Panasonic.h']]], + ['kpanasonicacheat_2447',['kPanasonicAcHeat',['../ir__Panasonic_8h.html#ac37bb7dd975a9aa803edfc108a5071ed',1,'ir_Panasonic.h']]], + ['kpanasonicacionfilterbyte_2448',['kPanasonicAcIonFilterByte',['../ir__Panasonic_8h.html#a16c946660d2ee3821dd2e30a69144a38',1,'ir_Panasonic.h']]], + ['kpanasonicacionfilteroffset_2449',['kPanasonicAcIonFilterOffset',['../ir__Panasonic_8h.html#a5c1b18d1b834e9d46cbd29c74a1b8269',1,'ir_Panasonic.h']]], + ['kpanasonicacmaxtemp_2450',['kPanasonicAcMaxTemp',['../ir__Panasonic_8h.html#a95fe6bc5b2565bf29d1a6dcee2f0c39f',1,'ir_Panasonic.h']]], + ['kpanasonicacmessagegap_2451',['kPanasonicAcMessageGap',['../ir__Panasonic_8cpp.html#a962cde97e8d98ad32f0b59172b641d6d',1,'ir_Panasonic.cpp']]], + ['kpanasonicacmintemp_2452',['kPanasonicAcMinTemp',['../ir__Panasonic_8h.html#a7861e8477904e1a572bcf35286fd3733',1,'ir_Panasonic.h']]], + ['kpanasonicacofftimeroffset_2453',['kPanasonicAcOffTimerOffset',['../ir__Panasonic_8h.html#a477b61044f1db5c296f13a404c536046',1,'ir_Panasonic.h']]], + ['kpanasonicacontimeroffset_2454',['kPanasonicAcOnTimerOffset',['../ir__Panasonic_8h.html#a64350202f82aabfd1673f0dda4d3c13d',1,'ir_Panasonic.h']]], + ['kpanasonicacpowerfulckpoffset_2455',['kPanasonicAcPowerfulCkpOffset',['../ir__Panasonic_8h.html#aa839301a08c8e49548f497e786dbb6fa',1,'ir_Panasonic.h']]], + ['kpanasonicacpowerfuloffset_2456',['kPanasonicAcPowerfulOffset',['../ir__Panasonic_8h.html#a27e9b1af4b65830015576beed69cb27d',1,'ir_Panasonic.h']]], + ['kpanasonicacpoweroffset_2457',['kPanasonicAcPowerOffset',['../ir__Panasonic_8h.html#a9e9b3d0c77ef93ab472ce14ed1534c77',1,'ir_Panasonic.h']]], + ['kpanasonicacquietckpoffset_2458',['kPanasonicAcQuietCkpOffset',['../ir__Panasonic_8h.html#a5a3779cd6fd8d573ae14ed4a6d676dba',1,'ir_Panasonic.h']]], + ['kpanasonicacquietoffset_2459',['kPanasonicAcQuietOffset',['../ir__Panasonic_8h.html#a1ec8db8798f79dead05233ee6333700d',1,'ir_Panasonic.h']]], + ['kpanasonicacsection1length_2460',['kPanasonicAcSection1Length',['../ir__Panasonic_8cpp.html#a34c6c085d468ed4b35f814452335d334',1,'ir_Panasonic.cpp']]], + ['kpanasonicacsectiongap_2461',['kPanasonicAcSectionGap',['../ir__Panasonic_8cpp.html#a3cf28f1268e8a35da220d42deda7c456',1,'ir_Panasonic.cpp']]], + ['kpanasonicacshortbits_2462',['kPanasonicAcShortBits',['../IRremoteESP8266_8h.html#a2fd1f84669f7994bb3c235a508333c6c',1,'IRremoteESP8266.h']]], + ['kpanasonicacstatelength_2463',['kPanasonicAcStateLength',['../IRremoteESP8266_8h.html#ab21d86545b57738354e7a3b833d38f94',1,'IRremoteESP8266.h']]], + ['kpanasonicacstateshortlength_2464',['kPanasonicAcStateShortLength',['../IRremoteESP8266_8h.html#a0a6ca8c1dfa6f313421ddf268d76d8e6',1,'IRremoteESP8266.h']]], + ['kpanasonicacswinghauto_2465',['kPanasonicAcSwingHAuto',['../ir__Panasonic_8h.html#a91e2933692ad98acf054c7a69f6c2018',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghfullleft_2466',['kPanasonicAcSwingHFullLeft',['../ir__Panasonic_8h.html#abf1d8c53a1b69d99019c6878f9ec220d',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghfullright_2467',['kPanasonicAcSwingHFullRight',['../ir__Panasonic_8h.html#a0e1b7a7591a0f14b2f8be3cb222f1187',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghleft_2468',['kPanasonicAcSwingHLeft',['../ir__Panasonic_8h.html#a853f2c2922e03a975bdd11efc474fa7e',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghmiddle_2469',['kPanasonicAcSwingHMiddle',['../ir__Panasonic_8h.html#afad8a7257fc178321867f16939fff7c7',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghright_2470',['kPanasonicAcSwingHRight',['../ir__Panasonic_8h.html#a282900f1c494efdc6ee057357e624d2e',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvauto_2471',['kPanasonicAcSwingVAuto',['../ir__Panasonic_8h.html#a218e2ea8c76966105c71edcb6e46cd12',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvhigh_2472',['kPanasonicAcSwingVHigh',['../ir__Panasonic_8h.html#a25c63195112c5aedc5b5bad40441c55a',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvhighest_2473',['kPanasonicAcSwingVHighest',['../ir__Panasonic_8h.html#ac1cea523d6e1da08d333e0b4acec81af',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvlow_2474',['kPanasonicAcSwingVLow',['../ir__Panasonic_8h.html#a3ae9b6c5581f1bfb5b31e252052a6c9d',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvlowest_2475',['kPanasonicAcSwingVLowest',['../ir__Panasonic_8h.html#af269e81dae5989c33199d607adcc04a0',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvmiddle_2476',['kPanasonicAcSwingVMiddle',['../ir__Panasonic_8h.html#a5d46c8234f97e10695507b17a7483d51',1,'ir_Panasonic.h']]], + ['kpanasonicactempoffset_2477',['kPanasonicAcTempOffset',['../ir__Panasonic_8h.html#a203e0351cd53db8376312a3289503175',1,'ir_Panasonic.h']]], + ['kpanasonicactempsize_2478',['kPanasonicAcTempSize',['../ir__Panasonic_8h.html#af30649a3489a4a1dc1f655d15c00e991',1,'ir_Panasonic.h']]], + ['kpanasonicactimemax_2479',['kPanasonicAcTimeMax',['../ir__Panasonic_8h.html#a61378ccad09d1a2e900123a8cbd34858',1,'ir_Panasonic.h']]], + ['kpanasonicactimeoverflowsize_2480',['kPanasonicAcTimeOverflowSize',['../ir__Panasonic_8h.html#ad7942b5ffbb2b1f7a5d9b3719592622b',1,'ir_Panasonic.h']]], + ['kpanasonicactimesize_2481',['kPanasonicAcTimeSize',['../ir__Panasonic_8h.html#a16577844a2f5ca46e2dff076952f2963',1,'ir_Panasonic.h']]], + ['kpanasonicactimespecial_2482',['kPanasonicAcTimeSpecial',['../ir__Panasonic_8h.html#aefb20e7cdbbc27e3c0725a8660a84a28',1,'ir_Panasonic.h']]], + ['kpanasonicactolerance_2483',['kPanasonicAcTolerance',['../ir__Panasonic_8h.html#a586a655b3afd82c38588fc1b61089aa1',1,'ir_Panasonic.h']]], + ['kpanasonicbitmark_2484',['kPanasonicBitMark',['../ir__Panasonic_8cpp.html#a428cd02c5dc3dc571e495efa0707cc99',1,'ir_Panasonic.cpp']]], + ['kpanasonicbitmarkticks_2485',['kPanasonicBitMarkTicks',['../ir__Panasonic_8cpp.html#aa0b259da4bc3dbf6c8b2ca31de759f55',1,'ir_Panasonic.cpp']]], + ['kpanasonicbits_2486',['kPanasonicBits',['../IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7',1,'IRremoteESP8266.h']]], + ['kpanasonicckp_2487',['kPanasonicCkp',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa537e8c640473597d2a1cb832498f9cb0',1,'IRsend.h']]], + ['kpanasonicdke_2488',['kPanasonicDke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fac8df2e0cfd553b0103f4c06a0fd573fd',1,'IRsend.h']]], + ['kpanasonicendgap_2489',['kPanasonicEndGap',['../ir__Panasonic_8cpp.html#a3cb2f7a925bb8374a90e3156febabb39',1,'ir_Panasonic.cpp']]], + ['kpanasonicfreq_2490',['kPanasonicFreq',['../ir__Panasonic_8h.html#af344612d7f1c0d3f8271c312f310243e',1,'ir_Panasonic.h']]], + ['kpanasonichdrmark_2491',['kPanasonicHdrMark',['../ir__Panasonic_8cpp.html#a0d36b699fead0e229c583dae94f5e8f9',1,'ir_Panasonic.cpp']]], + ['kpanasonichdrmarkticks_2492',['kPanasonicHdrMarkTicks',['../ir__Panasonic_8cpp.html#a0f2d448b87f30840ee38c27032cd10bd',1,'ir_Panasonic.cpp']]], + ['kpanasonichdrspace_2493',['kPanasonicHdrSpace',['../ir__Panasonic_8cpp.html#ae56b3eb80f186a63b0f69c6b4e9efce8',1,'ir_Panasonic.cpp']]], + ['kpanasonichdrspaceticks_2494',['kPanasonicHdrSpaceTicks',['../ir__Panasonic_8cpp.html#a5fa430a5612bd21eb859356cc9c62a3c',1,'ir_Panasonic.cpp']]], + ['kpanasonicjke_2495',['kPanasonicJke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fabf39cff180c071fbc44601eeded236c4',1,'IRsend.h']]], + ['kpanasonicknowngoodstate_2496',['kPanasonicKnownGoodState',['../ir__Panasonic_8h.html#a88a9678f8b00efa173b800b0b8441f87',1,'ir_Panasonic.h']]], + ['kpanasoniclke_2497',['kPanasonicLke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa71ceb4b576a03a47f0d945323b896cd6',1,'IRsend.h']]], + ['kpanasonicmanufacturer_2498',['kPanasonicManufacturer',['../IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47',1,'IRremoteESP8266.h']]], + ['kpanasonicmincommandlength_2499',['kPanasonicMinCommandLength',['../ir__Panasonic_8cpp.html#a5f191fff3eeb722cb03bee859a016132',1,'ir_Panasonic.cpp']]], + ['kpanasonicmincommandlengthticks_2500',['kPanasonicMinCommandLengthTicks',['../ir__Panasonic_8cpp.html#aba420f9aa4c3e6f261e422962362ce31',1,'ir_Panasonic.cpp']]], + ['kpanasonicmingap_2501',['kPanasonicMinGap',['../ir__Panasonic_8cpp.html#a61592f3569c0ee4825cca185fb43236d',1,'ir_Panasonic.cpp']]], + ['kpanasonicmingapticks_2502',['kPanasonicMinGapTicks',['../ir__Panasonic_8cpp.html#aa605847e951b22f1f31b82e6b04c4bab',1,'ir_Panasonic.cpp']]], + ['kpanasonicnke_2503',['kPanasonicNke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6faf70fc847e204f60ab1dc5ecb330fc790',1,'IRsend.h']]], + ['kpanasoniconespace_2504',['kPanasonicOneSpace',['../ir__Panasonic_8cpp.html#a9069f2ab94cacbd301d7615795c155b1',1,'ir_Panasonic.cpp']]], + ['kpanasoniconespaceticks_2505',['kPanasonicOneSpaceTicks',['../ir__Panasonic_8cpp.html#aa7a8cb818a098bb8ec395af7f5dbc6d7',1,'ir_Panasonic.cpp']]], + ['kpanasonicrkr_2506',['kPanasonicRkr',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fab809a062f38eb61589cf5aa2db5789db',1,'IRsend.h']]], + ['kpanasonictick_2507',['kPanasonicTick',['../ir__Panasonic_8cpp.html#ab2fddd81fb53066257aeaa60069527a8',1,'ir_Panasonic.cpp']]], + ['kpanasonicunknown_2508',['kPanasonicUnknown',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa3b23623c9580717d0ade5137200ae2a4',1,'IRsend.h']]], + ['kpanasoniczerospace_2509',['kPanasonicZeroSpace',['../ir__Panasonic_8cpp.html#a43f64a8326fd2447653c81488673fd21',1,'ir_Panasonic.cpp']]], + ['kpanasoniczerospaceticks_2510',['kPanasonicZeroSpaceTicks',['../ir__Panasonic_8cpp.html#a58fef1468dbd4c3963be58754f38b125',1,'ir_Panasonic.cpp']]], + ['kperiodoffset_2511',['kPeriodOffset',['../IRsend_8h.html#a3a451a4e72e39a4bbf75c62af0ac62f5',1,'IRsend.h']]], + ['kpioneerbitmark_2512',['kPioneerBitMark',['../ir__Pioneer_8cpp.html#a6117fd080ad88efcf943aef53dadd1ad',1,'ir_Pioneer.cpp']]], + ['kpioneerbitmarkticks_2513',['kPioneerBitMarkTicks',['../ir__Pioneer_8cpp.html#a1cd60e52b21df3b10ac5f668cf61df16',1,'ir_Pioneer.cpp']]], + ['kpioneerbits_2514',['kPioneerBits',['../IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b',1,'IRremoteESP8266.h']]], + ['kpioneerhdrmark_2515',['kPioneerHdrMark',['../ir__Pioneer_8cpp.html#a03c4df7d9eba6ab56df0451a18e5adbd',1,'ir_Pioneer.cpp']]], + ['kpioneerhdrmarkticks_2516',['kPioneerHdrMarkTicks',['../ir__Pioneer_8cpp.html#a9fc6ba8a158cae2d0d67af8e6cddd169',1,'ir_Pioneer.cpp']]], + ['kpioneerhdrspace_2517',['kPioneerHdrSpace',['../ir__Pioneer_8cpp.html#a1308ff993ce7d030bdef919d65f35e62',1,'ir_Pioneer.cpp']]], + ['kpioneerhdrspaceticks_2518',['kPioneerHdrSpaceTicks',['../ir__Pioneer_8cpp.html#a6c2ab5c384101f9184fd0960f21d13a5',1,'ir_Pioneer.cpp']]], + ['kpioneermincommandlength_2519',['kPioneerMinCommandLength',['../ir__Pioneer_8cpp.html#a22cb7d70bb0eb3b0ce6c7da3631d832f',1,'ir_Pioneer.cpp']]], + ['kpioneermincommandlengthticks_2520',['kPioneerMinCommandLengthTicks',['../ir__Pioneer_8cpp.html#a472ab59d00c439cc8832081492e742cc',1,'ir_Pioneer.cpp']]], + ['kpioneermingap_2521',['kPioneerMinGap',['../ir__Pioneer_8cpp.html#adc67bf557bd3474f18dfaa3125c1af41',1,'ir_Pioneer.cpp']]], + ['kpioneermingapticks_2522',['kPioneerMinGapTicks',['../ir__Pioneer_8cpp.html#abe0ebf83502225b39926ab745a8f8be2',1,'ir_Pioneer.cpp']]], + ['kpioneeronespace_2523',['kPioneerOneSpace',['../ir__Pioneer_8cpp.html#a5238b059346168128184bca93de16a54',1,'ir_Pioneer.cpp']]], + ['kpioneeronespaceticks_2524',['kPioneerOneSpaceTicks',['../ir__Pioneer_8cpp.html#af637842c88b54a022ac1ba3fef3fa041',1,'ir_Pioneer.cpp']]], + ['kpioneertick_2525',['kPioneerTick',['../ir__Pioneer_8cpp.html#a63de2364627344f86537ac82447c5cb4',1,'ir_Pioneer.cpp']]], + ['kpioneerzerospace_2526',['kPioneerZeroSpace',['../ir__Pioneer_8cpp.html#a3c6428f201dd3e32c171d6db44269d67',1,'ir_Pioneer.cpp']]], + ['kpioneerzerospaceticks_2527',['kPioneerZeroSpaceTicks',['../ir__Pioneer_8cpp.html#acdeea63204ce47f1556fa31bbed8a4a4',1,'ir_Pioneer.cpp']]], + ['kpowerbuttonstr_2528',['kPowerButtonStr',['../IRtext_8cpp.html#a69d36084b1410a06aa780edcda9428dd',1,'kPowerButtonStr(): IRtext.cpp'],['../IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c',1,'kPowerButtonStr(): IRtext.cpp']]], + ['kpowerfulstr_2529',['kPowerfulStr',['../IRtext_8cpp.html#a5dfc12bfa12ddf7da3ab6c216258284a',1,'kPowerfulStr(): IRtext.cpp'],['../IRtext_8h.html#a7980630cd028febca8245730dffa684b',1,'kPowerfulStr(): IRtext.cpp']]], + ['kpowerstr_2530',['kPowerStr',['../IRtext_8cpp.html#a5b4b43efe1f1c27d6aee90ebb3500792',1,'kPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda',1,'kPowerStr(): IRtext.cpp']]], + ['kpowertogglestr_2531',['kPowerToggleStr',['../IRtext_8cpp.html#a2f7e242dc28cf61fb718bb5c1b681642',1,'kPowerToggleStr(): IRtext.cpp'],['../IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5',1,'kPowerToggleStr(): IRtext.cpp']]], + ['kpreviouspowerstr_2532',['kPreviousPowerStr',['../IRtext_8cpp.html#a2a5cd83ac519798debd7065eb03d5d72',1,'kPreviousPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c',1,'kPreviousPowerStr(): IRtext.cpp']]], + ['kprontodataoffset_2533',['kProntoDataOffset',['../ir__Pronto_8cpp.html#ac073b9ac759e09091b3d80af747656a1',1,'ir_Pronto.cpp']]], + ['kprontofreqfactor_2534',['kProntoFreqFactor',['../ir__Pronto_8cpp.html#aa63eef9baeb563c8494d85d13b956db8',1,'ir_Pronto.cpp']]], + ['kprontofreqoffset_2535',['kProntoFreqOffset',['../ir__Pronto_8cpp.html#a2fae4105559199e292121bcb847d9d52',1,'ir_Pronto.cpp']]], + ['kprontominlength_2536',['kProntoMinLength',['../IRremoteESP8266_8h.html#a25dd42234e21d41b0b4bc97e1fe921c4',1,'IRremoteESP8266.h']]], + ['kprontoseq1lenoffset_2537',['kProntoSeq1LenOffset',['../ir__Pronto_8cpp.html#a1df51305dddf233fc3963856e288366f',1,'ir_Pronto.cpp']]], + ['kprontoseq2lenoffset_2538',['kProntoSeq2LenOffset',['../ir__Pronto_8cpp.html#a708744a9f82547e5abc17d7ed866a648',1,'ir_Pronto.cpp']]], + ['kprontotypeoffset_2539',['kProntoTypeOffset',['../ir__Pronto_8cpp.html#a603ff34f28f270a98bf0bebdaf19bfbc',1,'ir_Pronto.cpp']]], + ['kprotocolstr_2540',['kProtocolStr',['../IRtext_8cpp.html#afb9e901ded9e88a48218282a7446ff63',1,'kProtocolStr(): IRtext.cpp'],['../IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef',1,'kProtocolStr(): IRtext.cpp']]], + ['kpurifystr_2541',['kPurifyStr',['../IRtext_8cpp.html#a85c2b59f6cba1878648d3d8fe9d7f9a4',1,'kPurifyStr(): IRtext.cpp'],['../IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb',1,'kPurifyStr(): IRtext.cpp']]], + ['kquietstr_2542',['kQuietStr',['../IRtext_8cpp.html#a6f85e3119eb884455f474ff909be6b53',1,'kQuietStr(): IRtext.cpp'],['../IRtext_8h.html#a7086660370d73d6f499972cf802db8f7',1,'kQuietStr(): IRtext.cpp']]], + ['krawbuf_2543',['kRawBuf',['../IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3',1,'IRrecv.h']]], + ['krawtick_2544',['kRawTick',['../IRrecv_8h.html#a373dde69c312b0122665e581eea1297b',1,'IRrecv.h']]], + ['krc5bits_2545',['kRC5Bits',['../IRremoteESP8266_8h.html#ad0935984e6518e340562665742199483',1,'IRremoteESP8266.h']]], + ['krc5mincommandlength_2546',['kRc5MinCommandLength',['../ir__RC5__RC6_8cpp.html#a32b5997148b53fd2984388f6d0384c35',1,'ir_RC5_RC6.cpp']]], + ['krc5mingap_2547',['kRc5MinGap',['../ir__RC5__RC6_8cpp.html#a26580409f593179d838c465647e35c41',1,'ir_RC5_RC6.cpp']]], + ['krc5rawbits_2548',['kRC5RawBits',['../IRremoteESP8266_8h.html#a955183d3358fcafea853014ddd890574',1,'IRremoteESP8266.h']]], + ['krc5samplesmin_2549',['kRc5SamplesMin',['../ir__RC5__RC6_8cpp.html#aa206173838597c760b4a01c36bbc771a',1,'ir_RC5_RC6.cpp']]], + ['krc5t1_2550',['kRc5T1',['../ir__RC5__RC6_8cpp.html#aa42cae15fa77a196eb8f198de09e19eb',1,'ir_RC5_RC6.cpp']]], + ['krc5togglemask_2551',['kRc5ToggleMask',['../ir__RC5__RC6_8cpp.html#ae3485c1c157d6d84a0385cb1bfb8833a',1,'ir_RC5_RC6.cpp']]], + ['krc5xbits_2552',['kRC5XBits',['../IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc',1,'IRremoteESP8266.h']]], + ['krc6_5f36bits_2553',['kRC6_36Bits',['../IRremoteESP8266_8h.html#a30a2cb328aa0d47f53aba56055ac74e0',1,'IRremoteESP8266.h']]], + ['krc6_5f36togglemask_2554',['kRc6_36ToggleMask',['../ir__RC5__RC6_8cpp.html#a31ae862ce2a43edd99bda647262b18fa',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrmark_2555',['kRc6HdrMark',['../ir__RC5__RC6_8cpp.html#ae05bbb9f690cc92feb0a9c14b3b8c477',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrmarkticks_2556',['kRc6HdrMarkTicks',['../ir__RC5__RC6_8cpp.html#aff2a5bc05ddf61d289c44a4fd093009c',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrspace_2557',['kRc6HdrSpace',['../ir__RC5__RC6_8cpp.html#a0196311c9b116cf48c8f901fb6c93ac3',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrspaceticks_2558',['kRc6HdrSpaceTicks',['../ir__RC5__RC6_8cpp.html#a35a9cc59fe5251a34c88e34b6a507fd3',1,'ir_RC5_RC6.cpp']]], + ['krc6mode0bits_2559',['kRC6Mode0Bits',['../IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a',1,'IRremoteESP8266.h']]], + ['krc6rptlength_2560',['kRc6RptLength',['../ir__RC5__RC6_8cpp.html#a4989f36b790a99545e708c8681b6b961',1,'ir_RC5_RC6.cpp']]], + ['krc6rptlengthticks_2561',['kRc6RptLengthTicks',['../ir__RC5__RC6_8cpp.html#acf2dc0074bfe7671deb8985eba4396e3',1,'ir_RC5_RC6.cpp']]], + ['krc6tick_2562',['kRc6Tick',['../ir__RC5__RC6_8cpp.html#aad98dc2541039634817609d4e297322f',1,'ir_RC5_RC6.cpp']]], + ['krc6togglemask_2563',['kRc6ToggleMask',['../ir__RC5__RC6_8cpp.html#a4df09270c1e9cda504026189e30829ff',1,'ir_RC5_RC6.cpp']]], + ['krcmmbitmark_2564',['kRcmmBitMark',['../ir__RCMM_8cpp.html#ad768f62bbd7e4df567c3e53ea0a8ed06',1,'ir_RCMM.cpp']]], + ['krcmmbitmarkticks_2565',['kRcmmBitMarkTicks',['../ir__RCMM_8cpp.html#a48aeb7992d30f8c7cfa04dbd14ea0996',1,'ir_RCMM.cpp']]], + ['krcmmbits_2566',['kRCMMBits',['../IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5',1,'IRremoteESP8266.h']]], + ['krcmmbitspace0_2567',['kRcmmBitSpace0',['../ir__RCMM_8cpp.html#a34a7b22107461be18500f6d1ddf979e3',1,'ir_RCMM.cpp']]], + ['krcmmbitspace0ticks_2568',['kRcmmBitSpace0Ticks',['../ir__RCMM_8cpp.html#a0864042e8c098169d1d221fbd798cda3',1,'ir_RCMM.cpp']]], + ['krcmmbitspace1_2569',['kRcmmBitSpace1',['../ir__RCMM_8cpp.html#a812b9895f0eccaaf78752dc7030022aa',1,'ir_RCMM.cpp']]], + ['krcmmbitspace1ticks_2570',['kRcmmBitSpace1Ticks',['../ir__RCMM_8cpp.html#a89f945e0a91feccd505f0b8310a9ebb9',1,'ir_RCMM.cpp']]], + ['krcmmbitspace2_2571',['kRcmmBitSpace2',['../ir__RCMM_8cpp.html#aff0db6a8f28d3a307cd7bbb6dc90e3e3',1,'ir_RCMM.cpp']]], + ['krcmmbitspace2ticks_2572',['kRcmmBitSpace2Ticks',['../ir__RCMM_8cpp.html#a592dda1dd9239c9a015163b80cddf859',1,'ir_RCMM.cpp']]], + ['krcmmbitspace3_2573',['kRcmmBitSpace3',['../ir__RCMM_8cpp.html#a5e6351cbcb4c576871584dbf61d87d33',1,'ir_RCMM.cpp']]], + ['krcmmbitspace3ticks_2574',['kRcmmBitSpace3Ticks',['../ir__RCMM_8cpp.html#aa3f7d7e37ffa6bf9649eef7720770767',1,'ir_RCMM.cpp']]], + ['krcmmexcess_2575',['kRcmmExcess',['../ir__RCMM_8cpp.html#a3845e23031e92fd008157b0f95827432',1,'ir_RCMM.cpp']]], + ['krcmmhdrmark_2576',['kRcmmHdrMark',['../ir__RCMM_8cpp.html#a7fc5d5c1dc89ef0615fcaebaacc504df',1,'ir_RCMM.cpp']]], + ['krcmmhdrmarkticks_2577',['kRcmmHdrMarkTicks',['../ir__RCMM_8cpp.html#a00e93c94548ac081083ed2cabd614330',1,'ir_RCMM.cpp']]], + ['krcmmhdrspace_2578',['kRcmmHdrSpace',['../ir__RCMM_8cpp.html#af4dc2548c8069caf889612b3b28895ea',1,'ir_RCMM.cpp']]], + ['krcmmhdrspaceticks_2579',['kRcmmHdrSpaceTicks',['../ir__RCMM_8cpp.html#a87cd8bb5322fb38aecd20362a7df5016',1,'ir_RCMM.cpp']]], + ['krcmmmingap_2580',['kRcmmMinGap',['../ir__RCMM_8cpp.html#a94f9533bf18c0a2c2b6511ffa95ff5dc',1,'ir_RCMM.cpp']]], + ['krcmmmingapticks_2581',['kRcmmMinGapTicks',['../ir__RCMM_8cpp.html#aacb274f2da878aed511f6ab400cd51e9',1,'ir_RCMM.cpp']]], + ['krcmmrptlength_2582',['kRcmmRptLength',['../ir__RCMM_8cpp.html#a1dccf2b944d4eeb8b7dd2a1f66548a68',1,'ir_RCMM.cpp']]], + ['krcmmrptlengthticks_2583',['kRcmmRptLengthTicks',['../ir__RCMM_8cpp.html#a4cd637fa0a6071f9ea0b52c346ffe7f0',1,'ir_RCMM.cpp']]], + ['krcmmtick_2584',['kRcmmTick',['../ir__RCMM_8cpp.html#a9e1a3a26185d58ff675eec7485bc671f',1,'ir_RCMM.cpp']]], + ['krcmmtolerance_2585',['kRcmmTolerance',['../ir__RCMM_8cpp.html#a4b95480078186b3498ca6426e5bbc428',1,'ir_RCMM.cpp']]], + ['krcz01channelmask_2586',['kRcz01ChannelMask',['../ir__Doshisha_8cpp.html#a085b3d47e4cf8d8b4ba999ae58ec3533',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel1_2587',['kRcz01CommandLevel1',['../ir__Doshisha_8cpp.html#a436b801a282374de0f28e27828e1c4bf',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel2_2588',['kRcz01CommandLevel2',['../ir__Doshisha_8cpp.html#a311ef41fff985236216238565219bfe7',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel3_2589',['kRcz01CommandLevel3',['../ir__Doshisha_8cpp.html#a879bd44f482c87fbaf9fecaad8ed4c6d',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel4_2590',['kRcz01CommandLevel4',['../ir__Doshisha_8cpp.html#a52bad85f1a3918e3031297a6c6074b45',1,'ir_Doshisha.cpp']]], + ['krcz01commandleveldown_2591',['kRcz01CommandLevelDown',['../ir__Doshisha_8cpp.html#a1678269506503f1abf871ed0af6dcc2b',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevelup_2592',['kRcz01CommandLevelUp',['../ir__Doshisha_8cpp.html#a4eba011d2b110a5348783534e957660e',1,'ir_Doshisha.cpp']]], + ['krcz01commandmask_2593',['kRcz01CommandMask',['../ir__Doshisha_8cpp.html#a148e2f676f895f4e3b77b39780e2ca94',1,'ir_Doshisha.cpp']]], + ['krcz01commandnightlight_2594',['kRcz01CommandNightLight',['../ir__Doshisha_8cpp.html#a47e9d5bf353cf8aef8199fb74693aa0f',1,'ir_Doshisha.cpp']]], + ['krcz01commandoff_2595',['kRcz01CommandOff',['../ir__Doshisha_8cpp.html#a97fd32975ab9fafa85e0704964780773',1,'ir_Doshisha.cpp']]], + ['krcz01commandon_2596',['kRcz01CommandOn',['../ir__Doshisha_8cpp.html#a7377eac8b1d938903fd43d7505dd8a49',1,'ir_Doshisha.cpp']]], + ['krcz01commandswitchchannel_2597',['kRcz01CommandSwitchChannel',['../ir__Doshisha_8cpp.html#afcd3fe98c34ef9572c1a68bd143e128b',1,'ir_Doshisha.cpp']]], + ['krcz01commandtimmer30_2598',['kRcz01CommandTimmer30',['../ir__Doshisha_8cpp.html#a3deebab67d01756f7776f0d11cbdef6e',1,'ir_Doshisha.cpp']]], + ['krcz01commandtimmer60_2599',['kRcz01CommandTimmer60',['../ir__Doshisha_8cpp.html#abac6b50227512508aeb5b6042a8380fd',1,'ir_Doshisha.cpp']]], + ['krcz01signature_2600',['kRcz01Signature',['../ir__Doshisha_8cpp.html#a35c6dff74ae1702933e33f02f743f616',1,'ir_Doshisha.cpp']]], + ['krcz01signaturemask_2601',['kRcz01SignatureMask',['../ir__Doshisha_8cpp.html#a1f3b9cdfba7cc7515611d7145b7318a5',1,'ir_Doshisha.cpp']]], + ['krepeat_2602',['kRepeat',['../IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89',1,'IRrecv.h']]], + ['krepeatstr_2603',['kRepeatStr',['../IRtext_8cpp.html#ad55ef2e023915f39c7ce77e7eeb1ad76',1,'kRepeatStr(): IRtext.cpp'],['../IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b',1,'kRepeatStr(): IRtext.cpp']]], + ['kright_2604',['kRight',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2dd2b017192f8a09367d48c7648213c9',1,'stdAc']]], + ['krightmax_2605',['kRightMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a856bf9929ade459f451be17c97db4b32',1,'stdAc']]], + ['krightmaxstr_2606',['kRightMaxStr',['../IRtext_8cpp.html#af3e63659779f5fdb4aded4861521e564',1,'kRightMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae',1,'kRightMaxStr(): IRtext.cpp']]], + ['krightstr_2607',['kRightStr',['../IRtext_8cpp.html#aacc9b0b21efb6053b75ed117d4ab9105',1,'kRightStr(): IRtext.cpp'],['../IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd',1,'kRightStr(): IRtext.cpp']]], + ['kroomstr_2608',['kRoomStr',['../IRtext_8cpp.html#ab3f02ff54af9a94fd57d098838a4a642',1,'kRoomStr(): IRtext.cpp'],['../IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079',1,'kRoomStr(): IRtext.cpp']]], + ['ksamsung36bits_2609',['kSamsung36Bits',['../IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179',1,'IRremoteESP8266.h']]], + ['ksamsungacauto_2610',['kSamsungAcAuto',['../ir__Samsung_8h.html#a1b05ff970f45c57b13fc13d11e95396b',1,'ir_Samsung.h']]], + ['ksamsungacautotemp_2611',['kSamsungAcAutoTemp',['../ir__Samsung_8h.html#a87bb469afc0e2b6bad44634f3ba5e0ef',1,'ir_Samsung.h']]], + ['ksamsungacbeepoffset_2612',['kSamsungAcBeepOffset',['../ir__Samsung_8h.html#a12ae1e43d05d39c39d335c97223e003e',1,'ir_Samsung.h']]], + ['ksamsungacbitmark_2613',['kSamsungAcBitMark',['../ir__Samsung_8cpp.html#a37e6f36939f1a12ffe52907bbb64a4cf',1,'ir_Samsung.cpp']]], + ['ksamsungacbits_2614',['kSamsungAcBits',['../IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c',1,'IRremoteESP8266.h']]], + ['ksamsungacbreezeoffset_2615',['kSamsungAcBreezeOffset',['../ir__Samsung_8h.html#a31d5463b3819fe41ce078b085c395a40',1,'ir_Samsung.h']]], + ['ksamsungacbreezeon_2616',['kSamsungAcBreezeOn',['../ir__Samsung_8h.html#a06299ba6942969f7b9472e752b50d4d7',1,'ir_Samsung.h']]], + ['ksamsungacbreezesize_2617',['kSamsungAcBreezeSize',['../ir__Samsung_8h.html#a1f6ec492aa58cb704147213e3b6f9f24',1,'ir_Samsung.h']]], + ['ksamsungacclean10offset_2618',['kSamsungAcClean10Offset',['../ir__Samsung_8h.html#a0982038a8c3e27972e69b83c350a0ff3',1,'ir_Samsung.h']]], + ['ksamsungacclean11offset_2619',['kSamsungAcClean11Offset',['../ir__Samsung_8h.html#a87666330f9a410ced00bf15c5f22daf2',1,'ir_Samsung.h']]], + ['ksamsungaccool_2620',['kSamsungAcCool',['../ir__Samsung_8h.html#a24d40e01f046f887b7d41dad67ad7555',1,'ir_Samsung.h']]], + ['ksamsungacdefaultrepeat_2621',['kSamsungAcDefaultRepeat',['../IRremoteESP8266_8h.html#a973f4e0189fc10805f67b67f708be1e4',1,'IRremoteESP8266.h']]], + ['ksamsungacdisplayoffset_2622',['kSamsungAcDisplayOffset',['../ir__Samsung_8h.html#af47c9229cbe569b93ad5f4986c4484ab',1,'ir_Samsung.h']]], + ['ksamsungacdry_2623',['kSamsungAcDry',['../ir__Samsung_8h.html#a6423976c7a41f526e7a878cecb257bbd',1,'ir_Samsung.h']]], + ['ksamsungacextendedbits_2624',['kSamsungAcExtendedBits',['../IRremoteESP8266_8h.html#a296e700965e70a622fe99675ff0438af',1,'IRremoteESP8266.h']]], + ['ksamsungacextendedstatelength_2625',['kSamsungAcExtendedStateLength',['../IRremoteESP8266_8h.html#a28039071f1130e9bc86efddd8265cbf9',1,'IRremoteESP8266.h']]], + ['ksamsungacfan_2626',['kSamsungAcFan',['../ir__Samsung_8h.html#a61d825254b26894a2f097ad92a7dbff2',1,'ir_Samsung.h']]], + ['ksamsungacfanauto_2627',['kSamsungAcFanAuto',['../ir__Samsung_8h.html#a37b29911f4d2b71dcdbd18a5d6dc301a',1,'ir_Samsung.h']]], + ['ksamsungacfanauto2_2628',['kSamsungAcFanAuto2',['../ir__Samsung_8h.html#aafa4319fb523b14d58371f757497e82a',1,'ir_Samsung.h']]], + ['ksamsungacfanhigh_2629',['kSamsungAcFanHigh',['../ir__Samsung_8h.html#a52cccad28fad5b9886ef408af02f56f9',1,'ir_Samsung.h']]], + ['ksamsungacfanlow_2630',['kSamsungAcFanLow',['../ir__Samsung_8h.html#a6f16b5b3f2dea3461f5d44379e8b8634',1,'ir_Samsung.h']]], + ['ksamsungacfanmed_2631',['kSamsungAcFanMed',['../ir__Samsung_8h.html#a798c3544dbd6bb6c8622cf45f88abc14',1,'ir_Samsung.h']]], + ['ksamsungacfanoffest_2632',['kSamsungAcFanOffest',['../ir__Samsung_8h.html#a1dd4a351c1a036972f741fbdafb05a7e',1,'ir_Samsung.h']]], + ['ksamsungacfansize_2633',['kSamsungAcFanSize',['../ir__Samsung_8h.html#a5b055e9951e23ba44bf1fdeed805b332',1,'ir_Samsung.h']]], + ['ksamsungacfanturbo_2634',['kSamsungAcFanTurbo',['../ir__Samsung_8h.html#af6c1432748eaa19df35531b87d197095',1,'ir_Samsung.h']]], + ['ksamsungachdrmark_2635',['kSamsungAcHdrMark',['../ir__Samsung_8cpp.html#ab7385ca5b7b417753b253a0f7cb3721b',1,'ir_Samsung.cpp']]], + ['ksamsungachdrspace_2636',['kSamsungAcHdrSpace',['../ir__Samsung_8cpp.html#a1b1f903fff13b10fb2431be9373e27cb',1,'ir_Samsung.cpp']]], + ['ksamsungacheat_2637',['kSamsungAcHeat',['../ir__Samsung_8h.html#a44ce6be7046ec4b4fe9caba7b71b8f0d',1,'ir_Samsung.h']]], + ['ksamsungacionoffset_2638',['kSamsungAcIonOffset',['../ir__Samsung_8h.html#aa7bbd222553072c092158421d1b9977f',1,'ir_Samsung.h']]], + ['ksamsungacmaxtemp_2639',['kSamsungAcMaxTemp',['../ir__Samsung_8h.html#a0a994796db81a3d56dd2c27cad448a71',1,'ir_Samsung.h']]], + ['ksamsungacmintemp_2640',['kSamsungAcMinTemp',['../ir__Samsung_8h.html#ad5f46ccb96335519f5633c33de0d8018',1,'ir_Samsung.h']]], + ['ksamsungacmodeoffset_2641',['kSamsungAcModeOffset',['../ir__Samsung_8h.html#a64b2aceb5c0d4dbea2d4697efe65aef2',1,'ir_Samsung.h']]], + ['ksamsungaconespace_2642',['kSamsungAcOneSpace',['../ir__Samsung_8cpp.html#ab106d9b7efb165eed83ae2ccef9a49b4',1,'ir_Samsung.cpp']]], + ['ksamsungacpower1offset_2643',['kSamsungAcPower1Offset',['../ir__Samsung_8h.html#aa6a4ff05acfabf24e4dfc126e583c46c',1,'ir_Samsung.h']]], + ['ksamsungacpower6offset_2644',['kSamsungAcPower6Offset',['../ir__Samsung_8h.html#a90591c7d6069d81493f894328d595187',1,'ir_Samsung.h']]], + ['ksamsungacpower6size_2645',['kSamsungAcPower6Size',['../ir__Samsung_8h.html#ace0a7a2cfedbb77d05de53abc5906992',1,'ir_Samsung.h']]], + ['ksamsungacpowerful10offset_2646',['kSamsungAcPowerful10Offset',['../ir__Samsung_8h.html#a7f92d734af799e058723e898d3ebdd30',1,'ir_Samsung.h']]], + ['ksamsungacpowerful10on_2647',['kSamsungAcPowerful10On',['../ir__Samsung_8h.html#aa05bb4788febba1f56b2b3929ac273a3',1,'ir_Samsung.h']]], + ['ksamsungacpowerful10size_2648',['kSamsungAcPowerful10Size',['../ir__Samsung_8h.html#a19ede17e420f68ea552497461e69006a',1,'ir_Samsung.h']]], + ['ksamsungacpowerfulmask8_2649',['kSamsungAcPowerfulMask8',['../ir__Samsung_8h.html#a39e23325e35688a3641c467b720381ce',1,'ir_Samsung.h']]], + ['ksamsungacpowersection_2650',['kSamsungAcPowerSection',['../ir__Samsung_8h.html#a9264b5d640d9052c153562fd38415676',1,'ir_Samsung.h']]], + ['ksamsungacquiet1offset_2651',['kSamsungAcQuiet1Offset',['../ir__Samsung_8h.html#ab029485b433f7eef6413d8194790c566',1,'ir_Samsung.h']]], + ['ksamsungacquiet5offset_2652',['kSamsungAcQuiet5Offset',['../ir__Samsung_8h.html#ae10abd66772da9bab4ba266f29e7ec75',1,'ir_Samsung.h']]], + ['ksamsungacsectiongap_2653',['kSamsungAcSectionGap',['../ir__Samsung_8cpp.html#a9752fc615c215a93c1ee65edca3a359e',1,'ir_Samsung.cpp']]], + ['ksamsungacsectionlength_2654',['kSamsungAcSectionLength',['../ir__Samsung_8h.html#ad3faedf7b111f1b91d671666e38ce6f3',1,'ir_Samsung.h']]], + ['ksamsungacsectionmark_2655',['kSamsungAcSectionMark',['../ir__Samsung_8cpp.html#a4304073cddaa2da9613dedce499fee56',1,'ir_Samsung.cpp']]], + ['ksamsungacsections_2656',['kSamsungAcSections',['../ir__Samsung_8cpp.html#a86185d98d6e891a17688d9d2a0fa7114',1,'ir_Samsung.cpp']]], + ['ksamsungacsectionspace_2657',['kSamsungAcSectionSpace',['../ir__Samsung_8cpp.html#a4837f502ef9b7c972ec409cf4fc3c605',1,'ir_Samsung.cpp']]], + ['ksamsungacstatelength_2658',['kSamsungAcStateLength',['../IRremoteESP8266_8h.html#a2d07d8c8917fee072a261d00e67e0d36',1,'IRremoteESP8266.h']]], + ['ksamsungacswingmove_2659',['kSamsungAcSwingMove',['../ir__Samsung_8h.html#ab2d2b422e3972f77aef23f77c7cfbbac',1,'ir_Samsung.h']]], + ['ksamsungacswingoffset_2660',['kSamsungAcSwingOffset',['../ir__Samsung_8h.html#ab71772d77c56cf4d01f3ce4ab751a55c',1,'ir_Samsung.h']]], + ['ksamsungacswingsize_2661',['kSamsungAcSwingSize',['../ir__Samsung_8h.html#a1b50618058108826f9103f46bf7677ee',1,'ir_Samsung.h']]], + ['ksamsungacswingstop_2662',['kSamsungAcSwingStop',['../ir__Samsung_8h.html#a37c1720d66c4ba02e368946e53036367',1,'ir_Samsung.h']]], + ['ksamsungaczerospace_2663',['kSamsungAcZeroSpace',['../ir__Samsung_8cpp.html#a7492a25e730f93f22c099ab687621b18',1,'ir_Samsung.cpp']]], + ['ksamsungbitmark_2664',['kSamsungBitMark',['../ir__Samsung_8cpp.html#a03f9ae317a7a701437c8015dfde4401f',1,'ir_Samsung.cpp']]], + ['ksamsungbitmarkticks_2665',['kSamsungBitMarkTicks',['../ir__Samsung_8cpp.html#afe1663f83396f7e5cf9bfc32f321e539',1,'ir_Samsung.cpp']]], + ['ksamsungbits_2666',['kSamsungBits',['../IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170',1,'IRremoteESP8266.h']]], + ['ksamsunghdrmark_2667',['kSamsungHdrMark',['../ir__Samsung_8cpp.html#a3d0598585af609af4c8d5004789d2df7',1,'ir_Samsung.cpp']]], + ['ksamsunghdrmarkticks_2668',['kSamsungHdrMarkTicks',['../ir__Samsung_8cpp.html#a0c81f486877d24bfd40215b089c52f2a',1,'ir_Samsung.cpp']]], + ['ksamsunghdrspace_2669',['kSamsungHdrSpace',['../ir__Samsung_8cpp.html#a2f55c53bfc72de06ff202c8ec401163d',1,'ir_Samsung.cpp']]], + ['ksamsunghdrspaceticks_2670',['kSamsungHdrSpaceTicks',['../ir__Samsung_8cpp.html#a1ae96cedfa4ed26869d295cfbb8056dd',1,'ir_Samsung.cpp']]], + ['ksamsungmingap_2671',['kSamsungMinGap',['../ir__Samsung_8cpp.html#ab13edb242547803b386aa8539a4b9470',1,'ir_Samsung.cpp']]], + ['ksamsungmingapticks_2672',['kSamsungMinGapTicks',['../ir__Samsung_8cpp.html#a55d79dcfcd43f05ebe456a9a2fce3ff0',1,'ir_Samsung.cpp']]], + ['ksamsungminmessagelength_2673',['kSamsungMinMessageLength',['../ir__Samsung_8cpp.html#ae2ec2e45f91f872e85c250c7aac0efc1',1,'ir_Samsung.cpp']]], + ['ksamsungminmessagelengthticks_2674',['kSamsungMinMessageLengthTicks',['../ir__Samsung_8cpp.html#a6d436a1b71158ff9b5d7ae21344cd7d2',1,'ir_Samsung.cpp']]], + ['ksamsungonespace_2675',['kSamsungOneSpace',['../ir__Samsung_8cpp.html#ab486b048d13f44623ee291d4221c2a1b',1,'ir_Samsung.cpp']]], + ['ksamsungonespaceticks_2676',['kSamsungOneSpaceTicks',['../ir__Samsung_8cpp.html#a484a1e3ce3dcbbef15be559bfb5822d0',1,'ir_Samsung.cpp']]], + ['ksamsungrptspace_2677',['kSamsungRptSpace',['../ir__Samsung_8cpp.html#a1cc2f3bcd7f2ca36f0a726828c14aa74',1,'ir_Samsung.cpp']]], + ['ksamsungrptspaceticks_2678',['kSamsungRptSpaceTicks',['../ir__Samsung_8cpp.html#a6864f78ad1428358acbc8b46796e50cc',1,'ir_Samsung.cpp']]], + ['ksamsungtick_2679',['kSamsungTick',['../ir__Samsung_8cpp.html#accd7d51c2714bd383170831372f57bc5',1,'ir_Samsung.cpp']]], + ['ksamsungzerospace_2680',['kSamsungZeroSpace',['../ir__Samsung_8cpp.html#ae2c828a3d099d6195208a3794022587e',1,'ir_Samsung.cpp']]], + ['ksamsungzerospaceticks_2681',['kSamsungZeroSpaceTicks',['../ir__Samsung_8cpp.html#aea63a73a5b0af2c173bc473ee2447a93',1,'ir_Samsung.cpp']]], + ['ksanyolc7461addressbits_2682',['kSanyoLC7461AddressBits',['../IRremoteESP8266_8h.html#a7e15e988acbea0fb4dfaee6f5bfa12d0',1,'IRremoteESP8266.h']]], + ['ksanyolc7461addressmask_2683',['kSanyoLc7461AddressMask',['../ir__Sanyo_8cpp.html#a785ccc066e433f11791f8a30243944d3',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461bitmark_2684',['kSanyoLc7461BitMark',['../ir__Sanyo_8cpp.html#a1360ba5ac3f30715c00a6a65155cfec8',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461bits_2685',['kSanyoLC7461Bits',['../IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8',1,'IRremoteESP8266.h']]], + ['ksanyolc7461commandbits_2686',['kSanyoLC7461CommandBits',['../IRremoteESP8266_8h.html#a5cd69a192be51634ce72a40398a6c0d7',1,'IRremoteESP8266.h']]], + ['ksanyolc7461commandmask_2687',['kSanyoLc7461CommandMask',['../ir__Sanyo_8cpp.html#abdd072e210a7616d564a9d4a7f798ad3',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461hdrmark_2688',['kSanyoLc7461HdrMark',['../ir__Sanyo_8cpp.html#a0b2e520442dd96f8cd77969230713277',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461hdrspace_2689',['kSanyoLc7461HdrSpace',['../ir__Sanyo_8cpp.html#aa9ca2469e22f66d6e5e3f4ef952484ba',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461mincommandlength_2690',['kSanyoLc7461MinCommandLength',['../ir__Sanyo_8cpp.html#a237fac9264bba0014124a815133868b2',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461mingap_2691',['kSanyoLc7461MinGap',['../ir__Sanyo_8cpp.html#aff7f31500dbe9939e223bed6b6c631a8',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461onespace_2692',['kSanyoLc7461OneSpace',['../ir__Sanyo_8cpp.html#a52716e37d6943b01e9df37956f1a83de',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461zerospace_2693',['kSanyoLc7461ZeroSpace',['../ir__Sanyo_8cpp.html#a4e386992c8fca642c259e86e34729a4d',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bbits_2694',['kSanyoSA8650BBits',['../IRremoteESP8266_8h.html#a2c572c8bfa811b7dc3a8a537cc642b85',1,'IRremoteESP8266.h']]], + ['ksanyosa8650bdoublespaceusecs_2695',['kSanyoSa8650bDoubleSpaceUsecs',['../ir__Sanyo_8cpp.html#a828caf6fd05e81cedee67c558b88a0b6',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bhdrmark_2696',['kSanyoSa8650bHdrMark',['../ir__Sanyo_8cpp.html#a9d0472d183a96b8ca71a2b704a06cac8',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bhdrspace_2697',['kSanyoSa8650bHdrSpace',['../ir__Sanyo_8cpp.html#ab432df3bd299b72b4449672d611798b7',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bonemark_2698',['kSanyoSa8650bOneMark',['../ir__Sanyo_8cpp.html#a8854c7bd32c1ec53e8e1869cd9dd8cdd',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650brptlength_2699',['kSanyoSa8650bRptLength',['../ir__Sanyo_8cpp.html#a327ee6de7027aacfa9aa6ee8bdc74e3e',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bzeromark_2700',['kSanyoSa8650bZeroMark',['../ir__Sanyo_8cpp.html#a516a45a7934f23274fa302d7e711b43c',1,'ir_Sanyo.cpp']]], + ['ksavestr_2701',['kSaveStr',['../IRtext_8cpp.html#a24f9462727ee596a3ae16393c33e3ebc',1,'kSaveStr(): IRtext.cpp'],['../IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069',1,'kSaveStr(): IRtext.cpp']]], + ['ksecondsstr_2702',['kSecondsStr',['../IRtext_8cpp.html#a282cb9785839a9da66a9333d788c0fb1',1,'kSecondsStr(): IRtext.cpp'],['../IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455',1,'kSecondsStr(): IRtext.cpp']]], + ['ksecondstr_2703',['kSecondStr',['../IRtext_8cpp.html#a5ec55e16709cbd2c4b1ff8c72c01c1f5',1,'kSecondStr(): IRtext.cpp'],['../IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1',1,'kSecondStr(): IRtext.cpp']]], + ['ksensorstr_2704',['kSensorStr',['../IRtext_8cpp.html#aa7e6eab2fbc832f98d6560f62453c934',1,'kSensorStr(): IRtext.cpp'],['../IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8',1,'kSensorStr(): IRtext.cpp']]], + ['ksensortempstr_2705',['kSensorTempStr',['../IRtext_8cpp.html#a756daa989457676d2af255428a01e1d5',1,'kSensorTempStr(): IRtext.cpp'],['../IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1',1,'kSensorTempStr(): IRtext.cpp']]], + ['ksetstr_2706',['kSetStr',['../IRtext_8cpp.html#a27b5e437df44d4d41db9b296a1f236a1',1,'kSetStr(): IRtext.cpp'],['../IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce',1,'kSetStr(): IRtext.cpp']]], + ['ksharpacauto_2707',['kSharpAcAuto',['../ir__Sharp_8h.html#ad4e228b234598a84e11a76e7f2d27199',1,'ir_Sharp.h']]], + ['ksharpacbitcleanoffset_2708',['kSharpAcBitCleanOffset',['../ir__Sharp_8h.html#a3460827972f31d05070c638a57782286',1,'ir_Sharp.h']]], + ['ksharpacbitionoffset_2709',['kSharpAcBitIonOffset',['../ir__Sharp_8h.html#a73f967e9950d04941ed9f6815815fb23',1,'ir_Sharp.h']]], + ['ksharpacbitmark_2710',['kSharpAcBitMark',['../ir__Sharp_8h.html#ae73dd2c91b531bf3a52641b36f56ead7',1,'ir_Sharp.h']]], + ['ksharpacbits_2711',['kSharpAcBits',['../IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2',1,'IRremoteESP8266.h']]], + ['ksharpacbittimerenabled_2712',['kSharpAcBitTimerEnabled',['../ir__Sharp_8h.html#a083863299df4ff081be0add9d5082700',1,'ir_Sharp.h']]], + ['ksharpacbittimertype_2713',['kSharpAcBitTimerType',['../ir__Sharp_8h.html#ad47cf2f20c4589b9cbe6b583d62b4675',1,'ir_Sharp.h']]], + ['ksharpacbyteclean_2714',['kSharpAcByteClean',['../ir__Sharp_8h.html#a2f4a4ddf407413a52d45c955ebd5bcd5',1,'ir_Sharp.h']]], + ['ksharpacbytefan_2715',['kSharpAcByteFan',['../ir__Sharp_8h.html#a24139aa535ca54dcf45558da5ee2ac56',1,'ir_Sharp.h']]], + ['ksharpacbyteion_2716',['kSharpAcByteIon',['../ir__Sharp_8h.html#aaceee11c539050ba5ac368b9612131a4',1,'ir_Sharp.h']]], + ['ksharpacbytemode_2717',['kSharpAcByteMode',['../ir__Sharp_8h.html#af7d8a2ab79ae4f2ad48e569576fd34e8',1,'ir_Sharp.h']]], + ['ksharpacbytepowerspecial_2718',['kSharpAcBytePowerSpecial',['../ir__Sharp_8h.html#a44d180bd3babec15143ba8ea8aa18906',1,'ir_Sharp.h']]], + ['ksharpacbytespecial_2719',['kSharpAcByteSpecial',['../ir__Sharp_8h.html#a78ba1ef4993661f9dfaad776dff1b43e',1,'ir_Sharp.h']]], + ['ksharpacbyteswing_2720',['kSharpAcByteSwing',['../ir__Sharp_8h.html#aee580a3c6cfd75f75f46852d0f3df0db',1,'ir_Sharp.h']]], + ['ksharpacbytetemp_2721',['kSharpAcByteTemp',['../ir__Sharp_8h.html#a1b67ab12ed664517124fe3c1d7325927',1,'ir_Sharp.h']]], + ['ksharpacbytetimer_2722',['kSharpAcByteTimer',['../ir__Sharp_8h.html#af2fc9b6abae8ca6ca0d01b8c924386be',1,'ir_Sharp.h']]], + ['ksharpaccool_2723',['kSharpAcCool',['../ir__Sharp_8h.html#ae828d7e915f69cc1e9538839fc51c895',1,'ir_Sharp.h']]], + ['ksharpacdefaultrepeat_2724',['kSharpAcDefaultRepeat',['../IRremoteESP8266_8h.html#a7f0438831899e3df16f9002717c818b9',1,'IRremoteESP8266.h']]], + ['ksharpacdry_2725',['kSharpAcDry',['../ir__Sharp_8h.html#a50ae949b473ed4a6482fa00d747b2c0f',1,'ir_Sharp.h']]], + ['ksharpacfanauto_2726',['kSharpAcFanAuto',['../ir__Sharp_8h.html#a2ef78269271593420ea2bdc20025ca69',1,'ir_Sharp.h']]], + ['ksharpacfanhigh_2727',['kSharpAcFanHigh',['../ir__Sharp_8h.html#af29136d64c2f2a2515918ccf0ff0f594',1,'ir_Sharp.h']]], + ['ksharpacfanmax_2728',['kSharpAcFanMax',['../ir__Sharp_8h.html#a8b0aaa58a5f4caabea84e3b448793054',1,'ir_Sharp.h']]], + ['ksharpacfanmed_2729',['kSharpAcFanMed',['../ir__Sharp_8h.html#a7607f054da76f5e1508abf42d9cd71fc',1,'ir_Sharp.h']]], + ['ksharpacfanmin_2730',['kSharpAcFanMin',['../ir__Sharp_8h.html#a2372fdfbb0d8c2163a3eae5b8eda570a',1,'ir_Sharp.h']]], + ['ksharpacfanoffset_2731',['kSharpAcFanOffset',['../ir__Sharp_8h.html#ae95f02db8d9799ce726f5f467922a36c',1,'ir_Sharp.h']]], + ['ksharpacfansize_2732',['kSharpAcFanSize',['../ir__Sharp_8h.html#a2640f5c4eb0b4e62b9e2124a1fbfb6d2',1,'ir_Sharp.h']]], + ['ksharpacgap_2733',['kSharpAcGap',['../ir__Sharp_8h.html#a777eb0358ce3ef4528f086ff9ff7cd8d',1,'ir_Sharp.h']]], + ['ksharpachdrmark_2734',['kSharpAcHdrMark',['../ir__Sharp_8h.html#aff6f1e55de051762a0def881a5bb555c',1,'ir_Sharp.h']]], + ['ksharpachdrspace_2735',['kSharpAcHdrSpace',['../ir__Sharp_8h.html#a0ea5ff96afd358a8ad1be8d8ed808f04',1,'ir_Sharp.h']]], + ['ksharpacheat_2736',['kSharpAcHeat',['../ir__Sharp_8h.html#ab546d06a0b1f3477f88282f764f208cb',1,'ir_Sharp.h']]], + ['ksharpacmaxtemp_2737',['kSharpAcMaxTemp',['../ir__Sharp_8h.html#a6cfb060ea8c2f650fdd73b055cfda00a',1,'ir_Sharp.h']]], + ['ksharpacmintemp_2738',['kSharpAcMinTemp',['../ir__Sharp_8h.html#ad9ac5214b6cc780d9424ec7d038fe837',1,'ir_Sharp.h']]], + ['ksharpacmodesize_2739',['kSharpAcModeSize',['../ir__Sharp_8h.html#a7dfcf91a08bc37884cc4882c60004736',1,'ir_Sharp.h']]], + ['ksharpacofftimertype_2740',['kSharpAcOffTimerType',['../ir__Sharp_8h.html#ada633bea9c6c2ffd234c8262e92cebd5',1,'ir_Sharp.h']]], + ['ksharpaconespace_2741',['kSharpAcOneSpace',['../ir__Sharp_8h.html#a20e8eb7c8763fbddb20530badbaab38b',1,'ir_Sharp.h']]], + ['ksharpacontimertype_2742',['kSharpAcOnTimerType',['../ir__Sharp_8h.html#adce8625b00931645c7ccf54edf263c59',1,'ir_Sharp.h']]], + ['ksharpacpoweroff_2743',['kSharpAcPowerOff',['../ir__Sharp_8h.html#a5c13882a47bdd289507e8a5a23ec99d6',1,'ir_Sharp.h']]], + ['ksharpacpoweron_2744',['kSharpAcPowerOn',['../ir__Sharp_8h.html#af485487ea50dd2f9bc153e5f83dc5cf9',1,'ir_Sharp.h']]], + ['ksharpacpoweronfromoff_2745',['kSharpAcPowerOnFromOff',['../ir__Sharp_8h.html#ae484cf776fa47542f4d693c29052fc9f',1,'ir_Sharp.h']]], + ['ksharpacpowersetspecialoff_2746',['kSharpAcPowerSetSpecialOff',['../ir__Sharp_8h.html#a93b22ba4b5e68f8185ed28a6bb7c05dd',1,'ir_Sharp.h']]], + ['ksharpacpowersetspecialoffset_2747',['kSharpAcPowerSetSpecialOffset',['../ir__Sharp_8h.html#a0603455573e1dd203a5f6718efc12085',1,'ir_Sharp.h']]], + ['ksharpacpowersetspecialon_2748',['kSharpAcPowerSetSpecialOn',['../ir__Sharp_8h.html#a67aff6b22c0cfb89debb8ade7239f07e',1,'ir_Sharp.h']]], + ['ksharpacpowerspecialsize_2749',['kSharpAcPowerSpecialSize',['../ir__Sharp_8h.html#a233d545e942de27ec9e96d0d5e7afdb3',1,'ir_Sharp.h']]], + ['ksharpacpowertimersetting_2750',['kSharpAcPowerTimerSetting',['../ir__Sharp_8h.html#a208cb9446ea1f42db42a1f6e24b61219',1,'ir_Sharp.h']]], + ['ksharpacpowerunknown_2751',['kSharpAcPowerUnknown',['../ir__Sharp_8h.html#ab20172b860fa1401607f0678c682640f',1,'ir_Sharp.h']]], + ['ksharpacspecialfan_2752',['kSharpAcSpecialFan',['../ir__Sharp_8h.html#a6c1a1c535150f973eecb1a131d0c4780',1,'ir_Sharp.h']]], + ['ksharpacspecialpower_2753',['kSharpAcSpecialPower',['../ir__Sharp_8h.html#a843585897995ee15e39af0d452d8660d',1,'ir_Sharp.h']]], + ['ksharpacspecialswing_2754',['kSharpAcSpecialSwing',['../ir__Sharp_8h.html#a34127a7df393d2a5a84ca90e60e8507a',1,'ir_Sharp.h']]], + ['ksharpacspecialtempecono_2755',['kSharpAcSpecialTempEcono',['../ir__Sharp_8h.html#af2dcb54fc26802d1818ef88e6ddfc819',1,'ir_Sharp.h']]], + ['ksharpacspecialtimer_2756',['kSharpAcSpecialTimer',['../ir__Sharp_8h.html#a539b21c344db53fbfd4f17c91ab98139',1,'ir_Sharp.h']]], + ['ksharpacspecialtimerhalfhour_2757',['kSharpAcSpecialTimerHalfHour',['../ir__Sharp_8h.html#a1f9bf40a4af95689947c09559ed049bf',1,'ir_Sharp.h']]], + ['ksharpacspecialturbo_2758',['kSharpAcSpecialTurbo',['../ir__Sharp_8h.html#a270bb2bc83d4eb8974f498dd8eb299bb',1,'ir_Sharp.h']]], + ['ksharpacstatelength_2759',['kSharpAcStateLength',['../IRremoteESP8266_8h.html#a5192edb9406a8572e393918bab69e3c6',1,'IRremoteESP8266.h']]], + ['ksharpacswingnotoggle_2760',['kSharpAcSwingNoToggle',['../ir__Sharp_8h.html#a9c56d4f694ea69921ba2cb75f67426d6',1,'ir_Sharp.h']]], + ['ksharpacswingoffset_2761',['kSharpAcSwingOffset',['../ir__Sharp_8h.html#a61c5356e645867fa2eeda02c83e5b9ae',1,'ir_Sharp.h']]], + ['ksharpacswingsize_2762',['kSharpAcSwingSize',['../ir__Sharp_8h.html#aafec87d2ddea0fd56d176f1b5f80a6fa',1,'ir_Sharp.h']]], + ['ksharpacswingtoggle_2763',['kSharpAcSwingToggle',['../ir__Sharp_8h.html#aa6db653d25f67214819292b8f86af0e6',1,'ir_Sharp.h']]], + ['ksharpactimerhoursmax_2764',['kSharpAcTimerHoursMax',['../ir__Sharp_8h.html#a63af01993ba1e539dfb8dae67f42b9ae',1,'ir_Sharp.h']]], + ['ksharpactimerhoursoff_2765',['kSharpAcTimerHoursOff',['../ir__Sharp_8h.html#a462c10c12d828ba58d589cc365bd7be3',1,'ir_Sharp.h']]], + ['ksharpactimerhoursoffset_2766',['kSharpAcTimerHoursOffset',['../ir__Sharp_8h.html#aeb8d6ca49ba029bdb3663ff6b9c2cc4d',1,'ir_Sharp.h']]], + ['ksharpactimerhourssize_2767',['kSharpAcTimerHoursSize',['../ir__Sharp_8h.html#a965ed2ef8ba32a325ec41a351d88c17d',1,'ir_Sharp.h']]], + ['ksharpactimerincrement_2768',['kSharpAcTimerIncrement',['../ir__Sharp_8h.html#af32638e308a7034eb013b7ea9569273e',1,'ir_Sharp.h']]], + ['ksharpaczerospace_2769',['kSharpAcZeroSpace',['../ir__Sharp_8h.html#a5310e0404daae1a6e534dbaeaa9a9939',1,'ir_Sharp.h']]], + ['ksharpaddressbits_2770',['kSharpAddressBits',['../IRremoteESP8266_8h.html#a79c2f3cc459267cf0261124ddef47f5e',1,'IRremoteESP8266.h']]], + ['ksharpaddressmask_2771',['kSharpAddressMask',['../ir__Sharp_8cpp.html#a84fba003383cd4652fc804b97002f464',1,'ir_Sharp.cpp']]], + ['ksharpbitmark_2772',['kSharpBitMark',['../ir__Sharp_8cpp.html#ae2adc2bffb2b024faab8da363621733f',1,'ir_Sharp.cpp']]], + ['ksharpbitmarkticks_2773',['kSharpBitMarkTicks',['../ir__Sharp_8cpp.html#aa64bd0c359add4038c0143b5774627bb',1,'ir_Sharp.cpp']]], + ['ksharpbits_2774',['kSharpBits',['../IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae',1,'IRremoteESP8266.h']]], + ['ksharpcommandbits_2775',['kSharpCommandBits',['../IRremoteESP8266_8h.html#ae4cdfc8e358ec738d20c1bda49842ccf',1,'IRremoteESP8266.h']]], + ['ksharpcommandmask_2776',['kSharpCommandMask',['../ir__Sharp_8cpp.html#ad44eda54ade4bef4fdf4451fdb784950',1,'ir_Sharp.cpp']]], + ['ksharpgap_2777',['kSharpGap',['../ir__Sharp_8cpp.html#a77015be2a04274bcb332ec21cb75251e',1,'ir_Sharp.cpp']]], + ['ksharpgapticks_2778',['kSharpGapTicks',['../ir__Sharp_8cpp.html#a4aa110ec2934797f71ddf9bcd34498d1',1,'ir_Sharp.cpp']]], + ['ksharponespace_2779',['kSharpOneSpace',['../ir__Sharp_8cpp.html#a3359539480a203db37c2cf2efd88fdcc',1,'ir_Sharp.cpp']]], + ['ksharponespaceticks_2780',['kSharpOneSpaceTicks',['../ir__Sharp_8cpp.html#a12e18dfd195faae6ca581936434c9063',1,'ir_Sharp.cpp']]], + ['ksharptick_2781',['kSharpTick',['../ir__Sharp_8cpp.html#af417ab19220576243753903657923ba7',1,'ir_Sharp.cpp']]], + ['ksharptogglemask_2782',['kSharpToggleMask',['../ir__Sharp_8cpp.html#a2701123f01683c6927c23c7699bce13a',1,'ir_Sharp.cpp']]], + ['ksharpzerospace_2783',['kSharpZeroSpace',['../ir__Sharp_8cpp.html#ac2ad6123d938999e234896e1635e3063',1,'ir_Sharp.cpp']]], + ['ksharpzerospaceticks_2784',['kSharpZeroSpaceTicks',['../ir__Sharp_8cpp.html#af8c638f77ff29c2d20555343be80e5f0',1,'ir_Sharp.cpp']]], + ['ksherwoodbits_2785',['kSherwoodBits',['../IRremoteESP8266_8h.html#a94abd640c9e7aa225f4a8873a1ddea6a',1,'IRremoteESP8266.h']]], + ['ksherwoodminrepeat_2786',['kSherwoodMinRepeat',['../IRremoteESP8266_8h.html#a2e00b92b55657fc4e140eb85e3a414dc',1,'IRremoteESP8266.h']]], + ['ksilentstr_2787',['kSilentStr',['../IRtext_8cpp.html#a398d3c627c5b95c5d7adfb5308fc7de0',1,'kSilentStr(): IRtext.cpp'],['../IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e',1,'kSilentStr(): IRtext.cpp']]], + ['ksinglerepeat_2788',['kSingleRepeat',['../IRremoteESP8266_8h.html#a46835b1e2d279570fd818749e88180d4',1,'IRremoteESP8266.h']]], + ['ksleepstr_2789',['kSleepStr',['../IRtext_8cpp.html#a38068788c0ef50e6034dbcffeec1eb36',1,'kSleepStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac743c367e179723b128ad69f124c5',1,'kSleepStr(): IRtext.cpp']]], + ['ksleeptimerstr_2790',['kSleepTimerStr',['../IRtext_8cpp.html#a3402e1f6d78e3c59b71bd0dfdf020b51',1,'kSleepTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa',1,'kSleepTimerStr(): IRtext.cpp']]], + ['kslowstr_2791',['kSlowStr',['../IRtext_8cpp.html#a3131a17a06dff31058579b301227a04f',1,'kSlowStr(): IRtext.cpp'],['../IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473',1,'kSlowStr(): IRtext.cpp']]], + ['ksony12bits_2792',['kSony12Bits',['../IRremoteESP8266_8h.html#aa16fdf708a67dbe22c85ad4bac9b05b6',1,'IRremoteESP8266.h']]], + ['ksony15bits_2793',['kSony15Bits',['../IRremoteESP8266_8h.html#ad868d68d289d618ace266519afa059f4',1,'IRremoteESP8266.h']]], + ['ksony20bits_2794',['kSony20Bits',['../IRremoteESP8266_8h.html#aa9cd1ff8036f6c3a288c4f34af4a5eb4',1,'IRremoteESP8266.h']]], + ['ksonyaltfreq_2795',['kSonyAltFreq',['../ir__Sony_8cpp.html#a05912a15a9a6a4a78416600adc7e526b',1,'ir_Sony.cpp']]], + ['ksonyhdrmark_2796',['kSonyHdrMark',['../ir__Sony_8cpp.html#afac5a232c82e81ac257ddfc94aa4f379',1,'ir_Sony.cpp']]], + ['ksonyhdrmarkticks_2797',['kSonyHdrMarkTicks',['../ir__Sony_8cpp.html#a89abc5f0556f38d462202d1de78cbddb',1,'ir_Sony.cpp']]], + ['ksonyminbits_2798',['kSonyMinBits',['../IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b',1,'IRremoteESP8266.h']]], + ['ksonymingap_2799',['kSonyMinGap',['../ir__Sony_8cpp.html#abfe3a5e1fa2a38ee556326b1ea0e7e11',1,'ir_Sony.cpp']]], + ['ksonymingapticks_2800',['kSonyMinGapTicks',['../ir__Sony_8cpp.html#a150d62f71f79295153bac4694bae0aa3',1,'ir_Sony.cpp']]], + ['ksonyminrepeat_2801',['kSonyMinRepeat',['../IRremoteESP8266_8h.html#a112408429fb4a5cca22a66a351453bad',1,'IRremoteESP8266.h']]], + ['ksonyonemark_2802',['kSonyOneMark',['../ir__Sony_8cpp.html#a490e7ca2b0f81848ae42eb57d0023d13',1,'ir_Sony.cpp']]], + ['ksonyonemarkticks_2803',['kSonyOneMarkTicks',['../ir__Sony_8cpp.html#ad41c0d0496661c2e066056de6974bfe9',1,'ir_Sony.cpp']]], + ['ksonyrptlength_2804',['kSonyRptLength',['../ir__Sony_8cpp.html#a24578b92cf53caa48fa3660f16ec90ec',1,'ir_Sony.cpp']]], + ['ksonyrptlengthticks_2805',['kSonyRptLengthTicks',['../ir__Sony_8cpp.html#a0a7f67ba27e03c35d5df35a2a14a1e19',1,'ir_Sony.cpp']]], + ['ksonyspace_2806',['kSonySpace',['../ir__Sony_8cpp.html#ad09a9eb0dc0b809cea0d0a2a8ff6b9fb',1,'ir_Sony.cpp']]], + ['ksonyspaceticks_2807',['kSonySpaceTicks',['../ir__Sony_8cpp.html#a80dccfab869821cadaf02df664d91eda',1,'ir_Sony.cpp']]], + ['ksonystdfreq_2808',['kSonyStdFreq',['../ir__Sony_8cpp.html#a5e5b14c45909411d160e051f0bc7c63d',1,'ir_Sony.cpp']]], + ['ksonytick_2809',['kSonyTick',['../ir__Sony_8cpp.html#a7ced75a5e9f06f5c68132665d27e01b8',1,'ir_Sony.cpp']]], + ['ksonyzeromark_2810',['kSonyZeroMark',['../ir__Sony_8cpp.html#a7808995a9d2755681f1461d578d5480b',1,'ir_Sony.cpp']]], + ['ksonyzeromarkticks_2811',['kSonyZeroMarkTicks',['../ir__Sony_8cpp.html#a542aed17f98a11ca89456eec507a5225',1,'ir_Sony.cpp']]], + ['kspace_2812',['kSpace',['../ir__Lasertag_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_RC5_RC6.cpp']]], + ['kspacelbracestr_2813',['kSpaceLBraceStr',['../IRtext_8cpp.html#a156ef0014809a3509e7b254a9585e0a1',1,'kSpaceLBraceStr(): IRtext.cpp'],['../IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03',1,'kSpaceLBraceStr(): IRtext.cpp']]], + ['kspacestate_2814',['kSpaceState',['../IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a',1,'IRrecv.h']]], + ['kstartoffset_2815',['kStartOffset',['../IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972',1,'IRrecv.h']]], + ['kstartstr_2816',['kStartStr',['../IRtext_8cpp.html#a2075a48eed571455a88e7dfbc3a547ef',1,'kStartStr(): IRtext.cpp'],['../IRtext_8h.html#ad030c0930697d3c295f3783e8519995c',1,'kStartStr(): IRtext.cpp']]], + ['kstatesizemax_2817',['kStateSizeMax',['../IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2',1,'IRrecv.h']]], + ['kstepstr_2818',['kStepStr',['../IRtext_8cpp.html#ac6c64c4bdc955b6528616db3a4b303c1',1,'kStepStr(): IRtext.cpp'],['../IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3',1,'kStepStr(): IRtext.cpp']]], + ['kstopstate_2819',['kStopState',['../IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3',1,'IRrecv.h']]], + ['kstopstr_2820',['kStopStr',['../IRtext_8cpp.html#a0466188f9064d18622304cd375b18390',1,'kStopStr(): IRtext.cpp'],['../IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b',1,'kStopStr(): IRtext.cpp']]], + ['ksuperstr_2821',['kSuperStr',['../IRtext_8cpp.html#a81e6c76017bc819882a043ac8fcc2854',1,'kSuperStr(): IRtext.cpp'],['../IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7',1,'kSuperStr(): IRtext.cpp']]], + ['kswinghstr_2822',['kSwingHStr',['../IRtext_8cpp.html#a12d4e0afe0f6b96af817ebc95eb0b6f4',1,'kSwingHStr(): IRtext.cpp'],['../IRtext_8h.html#acfad569446290c1da0c102b98344411c',1,'kSwingHStr(): IRtext.cpp']]], + ['kswingstr_2823',['kSwingStr',['../IRtext_8cpp.html#a106174aef3a46450c0a16bef7c36a8c5',1,'kSwingStr(): IRtext.cpp'],['../IRtext_8h.html#a56d1a94eae3422758b2762da008e243c',1,'kSwingStr(): IRtext.cpp']]], + ['kswingvmodestr_2824',['kSwingVModeStr',['../IRtext_8cpp.html#ab71be957190939e2b4643f2e56e1201f',1,'kSwingVModeStr(): IRtext.cpp'],['../IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485',1,'kSwingVModeStr(): IRtext.cpp']]], + ['kswingvstr_2825',['kSwingVStr',['../IRtext_8cpp.html#a6dc1ec788e0659e82219534b5dbb79bc',1,'kSwingVStr(): IRtext.cpp'],['../IRtext_8h.html#a8415af77afcb671c3729d604be51fd22',1,'kSwingVStr(): IRtext.cpp']]], + ['kswingvtogglestr_2826',['kSwingVToggleStr',['../IRtext_8cpp.html#a3efcf06e5ac4d6309bad1b1d0e49a933',1,'kSwingVToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a27ae4d475898878bd8e71111066629c6',1,'kSwingVToggleStr(): IRtext.cpp']]], + ['ksymphonybits_2827',['kSymphonyBits',['../IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533',1,'IRremoteESP8266.h']]], + ['ksymphonydefaultrepeat_2828',['kSymphonyDefaultRepeat',['../IRremoteESP8266_8h.html#a219b8495f77932c200680f7a2b133880',1,'IRremoteESP8266.h']]], + ['ksymphonyfootergap_2829',['kSymphonyFooterGap',['../ir__Symphony_8cpp.html#a363cf54f4e752932d5e341975c2445f4',1,'ir_Symphony.cpp']]], + ['ksymphonyonemark_2830',['kSymphonyOneMark',['../ir__Symphony_8cpp.html#a469bfa8046ba75f9ba7cda4996dd785d',1,'ir_Symphony.cpp']]], + ['ksymphonyonespace_2831',['kSymphonyOneSpace',['../ir__Symphony_8cpp.html#ab699747bdf28d5a89920041e9c5bb01b',1,'ir_Symphony.cpp']]], + ['ksymphonyzeromark_2832',['kSymphonyZeroMark',['../ir__Symphony_8cpp.html#a58f27b1b9da16ffe73448c7ae3998fc9',1,'ir_Symphony.cpp']]], + ['ksymphonyzerospace_2833',['kSymphonyZeroSpace',['../ir__Symphony_8cpp.html#a9aaf8db419618de847573d2019155287',1,'ir_Symphony.cpp']]], + ['ktcl112acauto_2834',['kTcl112AcAuto',['../ir__Tcl_8h.html#a11a982cc182e446d53ded658cb7a08b6',1,'ir_Tcl.h']]], + ['ktcl112acbiteconooffset_2835',['kTcl112AcBitEconoOffset',['../ir__Tcl_8h.html#a97c8948de72d702b859a7abccfbc423e',1,'ir_Tcl.h']]], + ['ktcl112acbithealthoffset_2836',['kTcl112AcBitHealthOffset',['../ir__Tcl_8h.html#a2acb2c5cd2f8b729047f9eecf93f96af',1,'ir_Tcl.h']]], + ['ktcl112acbitlightoffset_2837',['kTcl112AcBitLightOffset',['../ir__Tcl_8h.html#ad87c878f7a30a05418a5babfc52c0e9e',1,'ir_Tcl.h']]], + ['ktcl112acbitmark_2838',['kTcl112AcBitMark',['../ir__Tcl_8h.html#a45360de532d2262246bf57cb7c08604d',1,'ir_Tcl.h']]], + ['ktcl112acbits_2839',['kTcl112AcBits',['../IRremoteESP8266_8h.html#a4a60d79056d70d3d56067b0bb2ec00f4',1,'IRremoteESP8266.h']]], + ['ktcl112acbitswinghoffset_2840',['kTcl112AcBitSwingHOffset',['../ir__Tcl_8h.html#ad807894f92249e44d1725f18de013369',1,'ir_Tcl.h']]], + ['ktcl112acbitturbooffset_2841',['kTcl112AcBitTurboOffset',['../ir__Tcl_8h.html#a7a6e09c1b4620e96820b3b3c54fb0e18',1,'ir_Tcl.h']]], + ['ktcl112accool_2842',['kTcl112AcCool',['../ir__Tcl_8h.html#a4a4b778086b3ebf856b750fe0c4bd2c0',1,'ir_Tcl.h']]], + ['ktcl112acdefaultrepeat_2843',['kTcl112AcDefaultRepeat',['../IRremoteESP8266_8h.html#a97c82cec6d72845d9ab8a201b0fa5034',1,'IRremoteESP8266.h']]], + ['ktcl112acdry_2844',['kTcl112AcDry',['../ir__Tcl_8h.html#a1d9ec40c278fedf87acb7420ef861101',1,'ir_Tcl.h']]], + ['ktcl112acfan_2845',['kTcl112AcFan',['../ir__Tcl_8h.html#ae07f3dd0a84be27bcb13ba60f4fd025b',1,'ir_Tcl.h']]], + ['ktcl112acfanauto_2846',['kTcl112AcFanAuto',['../ir__Tcl_8h.html#a099935d6d2bf6ebb28332005036c59c0',1,'ir_Tcl.h']]], + ['ktcl112acfanhigh_2847',['kTcl112AcFanHigh',['../ir__Tcl_8h.html#aab9672bac3e83b2e3b3d2cc5f1aa0e1f',1,'ir_Tcl.h']]], + ['ktcl112acfanlow_2848',['kTcl112AcFanLow',['../ir__Tcl_8h.html#a5114fe3f978672fc62c0cd16f6d46dd7',1,'ir_Tcl.h']]], + ['ktcl112acfanmed_2849',['kTcl112AcFanMed',['../ir__Tcl_8h.html#ad8f34f1972da347a169e2eb4ddf3d835',1,'ir_Tcl.h']]], + ['ktcl112acfansize_2850',['kTcl112AcFanSize',['../ir__Tcl_8h.html#a802bbb6258edf6dcdd05a383db28e9d3',1,'ir_Tcl.h']]], + ['ktcl112acgap_2851',['kTcl112AcGap',['../ir__Tcl_8h.html#a9ccdf5ce9ce325b9813dadbdc855a469',1,'ir_Tcl.h']]], + ['ktcl112achalfdegreeoffset_2852',['kTcl112AcHalfDegreeOffset',['../ir__Tcl_8h.html#a1ba7d7fa8df2243330eafce097209651',1,'ir_Tcl.h']]], + ['ktcl112achdrmark_2853',['kTcl112AcHdrMark',['../ir__Tcl_8h.html#a56f9f7daf3ada77f8f844afd46a80de9',1,'ir_Tcl.h']]], + ['ktcl112achdrmarktolerance_2854',['kTcl112AcHdrMarkTolerance',['../ir__Tcl_8h.html#ab9d980747b2ddd1b7fb04f00d71af1e7',1,'ir_Tcl.h']]], + ['ktcl112achdrspace_2855',['kTcl112AcHdrSpace',['../ir__Tcl_8h.html#a9135b4d7496383ad3a7da7c3ac7c92b4',1,'ir_Tcl.h']]], + ['ktcl112acheat_2856',['kTcl112AcHeat',['../ir__Tcl_8h.html#ae573f856f0bdf50406e9be84b1aa8ade',1,'ir_Tcl.h']]], + ['ktcl112acmodesize_2857',['kTcl112AcModeSize',['../ir__Tcl_8h.html#a07e49881d14cb1c84cfbf3695ae64580',1,'ir_Tcl.h']]], + ['ktcl112aconespace_2858',['kTcl112AcOneSpace',['../ir__Tcl_8h.html#af1e67019978260ba3f514cd895b54dad',1,'ir_Tcl.h']]], + ['ktcl112acpoweroffset_2859',['kTcl112AcPowerOffset',['../ir__Tcl_8h.html#ad36204b310ec8a069f631322d806aa7f',1,'ir_Tcl.h']]], + ['ktcl112acstatelength_2860',['kTcl112AcStateLength',['../IRremoteESP8266_8h.html#a23ba2f5af02242e14ae7eefcd066152e',1,'IRremoteESP8266.h']]], + ['ktcl112acswingvoff_2861',['kTcl112AcSwingVOff',['../ir__Tcl_8h.html#aa78e1b544f392c251093d458e5d21e12',1,'ir_Tcl.h']]], + ['ktcl112acswingvoffset_2862',['kTcl112AcSwingVOffset',['../ir__Tcl_8h.html#ab0412b0d865eaf788a5672300575b1d8',1,'ir_Tcl.h']]], + ['ktcl112acswingvon_2863',['kTcl112AcSwingVOn',['../ir__Tcl_8h.html#a5406fbabd66478d601aebc6939a3788f',1,'ir_Tcl.h']]], + ['ktcl112acswingvsize_2864',['kTcl112AcSwingVSize',['../ir__Tcl_8h.html#a7bacb40b18b280da13b2d1b781c825e5',1,'ir_Tcl.h']]], + ['ktcl112actempmax_2865',['kTcl112AcTempMax',['../ir__Tcl_8h.html#a60efbe31031e1e9c3a17c7d80cac54cb',1,'ir_Tcl.h']]], + ['ktcl112actempmin_2866',['kTcl112AcTempMin',['../ir__Tcl_8h.html#a30fe65ec015bc4d91cd35ead9cc43dcc',1,'ir_Tcl.h']]], + ['ktcl112actolerance_2867',['kTcl112AcTolerance',['../ir__Tcl_8h.html#a13bbe794b2b59763f7f93f15a3f26820',1,'ir_Tcl.h']]], + ['ktcl112aczerospace_2868',['kTcl112AcZeroSpace',['../ir__Tcl_8h.html#abc05edaeb1a4fa7e6ccf9bda1f66b483',1,'ir_Tcl.h']]], + ['ktecoauto_2869',['kTecoAuto',['../ir__Teco_8h.html#a79178aa25d9f60c0a838285369e1b910',1,'ir_Teco.h']]], + ['ktecobitmark_2870',['kTecoBitMark',['../ir__Teco_8cpp.html#a0aa2e352f4a61027b17467e92863883b',1,'ir_Teco.cpp']]], + ['ktecobits_2871',['kTecoBits',['../IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d',1,'IRremoteESP8266.h']]], + ['ktecocool_2872',['kTecoCool',['../ir__Teco_8h.html#a554686c72b6bc487d03c9461f9633a6b',1,'ir_Teco.h']]], + ['ktecodefaultrepeat_2873',['kTecoDefaultRepeat',['../IRremoteESP8266_8h.html#a095362359f34c1ee5ab71d56e6d64f64',1,'IRremoteESP8266.h']]], + ['ktecodry_2874',['kTecoDry',['../ir__Teco_8h.html#af7efcf371967eb97fd31d54016a82006',1,'ir_Teco.h']]], + ['ktecofan_2875',['kTecoFan',['../ir__Teco_8h.html#a7385fe198242c9203e3a5d5ffb7beb4d',1,'ir_Teco.h']]], + ['ktecofanauto_2876',['kTecoFanAuto',['../ir__Teco_8h.html#a43e58c0158efac1c4e5497c619b5674c',1,'ir_Teco.h']]], + ['ktecofanhigh_2877',['kTecoFanHigh',['../ir__Teco_8h.html#a0a73f5f892e7f9812793fbf5dab458dd',1,'ir_Teco.h']]], + ['ktecofanlow_2878',['kTecoFanLow',['../ir__Teco_8h.html#abac7443a86fb304376dd94a9c10e6940',1,'ir_Teco.h']]], + ['ktecofanmed_2879',['kTecoFanMed',['../ir__Teco_8h.html#a35f313943f9e2f5b69d5237fdaa64914',1,'ir_Teco.h']]], + ['ktecofanoffset_2880',['kTecoFanOffset',['../ir__Teco_8h.html#ae70841ad987ac89abaaf99b11655eaae',1,'ir_Teco.h']]], + ['ktecofansize_2881',['kTecoFanSize',['../ir__Teco_8h.html#a45734d2be952e3faa796d86245eaf241',1,'ir_Teco.h']]], + ['ktecogap_2882',['kTecoGap',['../ir__Teco_8cpp.html#a6a153d84287fba3bd11e3e5054fd7e30',1,'ir_Teco.cpp']]], + ['ktecohdrmark_2883',['kTecoHdrMark',['../ir__Teco_8cpp.html#ada983ce2d6f03949cddfe06191ab05d9',1,'ir_Teco.cpp']]], + ['ktecohdrspace_2884',['kTecoHdrSpace',['../ir__Teco_8cpp.html#acf417d42fd39dbaf06282162ab5b17e2',1,'ir_Teco.cpp']]], + ['ktecoheat_2885',['kTecoHeat',['../ir__Teco_8h.html#ab6f9dbeb2838b124be12d08fd9b209bb',1,'ir_Teco.h']]], + ['ktecohumidoffset_2886',['kTecoHumidOffset',['../ir__Teco_8h.html#ad95126f6815d24b5d1b38e44677f3d7e',1,'ir_Teco.h']]], + ['ktecolightoffset_2887',['kTecoLightOffset',['../ir__Teco_8h.html#a5dc2cb366974b2baa9f7cbfb26d90415',1,'ir_Teco.h']]], + ['ktecomaxtemp_2888',['kTecoMaxTemp',['../ir__Teco_8h.html#a1c24aa0cc4d475a5eb97d5208f4dcf06',1,'ir_Teco.h']]], + ['ktecomintemp_2889',['kTecoMinTemp',['../ir__Teco_8h.html#a54da99bfcbea5e076c3ca2934e769ab1',1,'ir_Teco.h']]], + ['ktecomodeoffset_2890',['kTecoModeOffset',['../ir__Teco_8h.html#a1aca7a8a2822cd1494dabeda5b11b9be',1,'ir_Teco.h']]], + ['ktecoonespace_2891',['kTecoOneSpace',['../ir__Teco_8cpp.html#a62eccbf6773ea8fbc18432627c62d0d5',1,'ir_Teco.cpp']]], + ['ktecopoweroffset_2892',['kTecoPowerOffset',['../ir__Teco_8h.html#a4eec88582ed29e424549497deb9eceef',1,'ir_Teco.h']]], + ['ktecoreset_2893',['kTecoReset',['../ir__Teco_8h.html#acf559a2cd772835ce46c3f673cd95806',1,'ir_Teco.h']]], + ['ktecosaveoffset_2894',['kTecoSaveOffset',['../ir__Teco_8h.html#a63d5efa7cfc84ee22d3575cc713d1f62',1,'ir_Teco.h']]], + ['ktecosleepoffset_2895',['kTecoSleepOffset',['../ir__Teco_8h.html#ae7da65034a8a84e79ebb1497e56e38fe',1,'ir_Teco.h']]], + ['ktecoswingoffset_2896',['kTecoSwingOffset',['../ir__Teco_8h.html#aaa821eb3ad9a5edadba2b83b6d2094b6',1,'ir_Teco.h']]], + ['ktecotempoffset_2897',['kTecoTempOffset',['../ir__Teco_8h.html#ae887d9c5702d63e4b4fa5250ed5bf0d9',1,'ir_Teco.h']]], + ['ktecotempsize_2898',['kTecoTempSize',['../ir__Teco_8h.html#a635db8dbba35e4326958fca6dfe67603',1,'ir_Teco.h']]], + ['ktecotimerhalfhouroffset_2899',['kTecoTimerHalfHourOffset',['../ir__Teco_8h.html#a2692a59900c10b6da6662fac5a312e04',1,'ir_Teco.h']]], + ['ktecotimeronoffset_2900',['kTecoTimerOnOffset',['../ir__Teco_8h.html#a7bcf79fa5e5280ad35c9a9512b2fdc7f',1,'ir_Teco.h']]], + ['ktecotimertenshoursoffset_2901',['kTecoTimerTensHoursOffset',['../ir__Teco_8h.html#adaa73601e31fa7217d371645d835f0ca',1,'ir_Teco.h']]], + ['ktecotimertenshourssize_2902',['kTecoTimerTensHoursSize',['../ir__Teco_8h.html#a57bf1b777b9b56aad4f224b6bba1218c',1,'ir_Teco.h']]], + ['ktecotimerunithoursoffset_2903',['kTecoTimerUnitHoursOffset',['../ir__Teco_8h.html#ac47fc38319e7e1d90d42c789b806cdbd',1,'ir_Teco.h']]], + ['ktecotimerunithourssize_2904',['kTecoTimerUnitHoursSize',['../ir__Teco_8h.html#a54ac664e32ce0d8b4d8d4d4d459dbc46',1,'ir_Teco.h']]], + ['ktecozerospace_2905',['kTecoZeroSpace',['../ir__Teco_8cpp.html#a8dc1f6ea44519a0930b48f69a83a7363',1,'ir_Teco.cpp']]], + ['ktempdownstr_2906',['kTempDownStr',['../IRtext_8cpp.html#a3fa3262c5631c9357a5723c70dc3be12',1,'kTempDownStr(): IRtext.cpp'],['../IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395',1,'kTempDownStr(): IRtext.cpp']]], + ['ktempstr_2907',['kTempStr',['../IRtext_8cpp.html#a487bd9a4225536aba2595be0b5cb8039',1,'kTempStr(): IRtext.cpp'],['../IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb',1,'kTempStr(): IRtext.cpp']]], + ['ktempupstr_2908',['kTempUpStr',['../IRtext_8cpp.html#a7c4f18322b600aaaf5a8716654d05dc3',1,'kTempUpStr(): IRtext.cpp'],['../IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86',1,'kTempUpStr(): IRtext.cpp']]], + ['kthreeletterdayofweekstr_2909',['kThreeLetterDayOfWeekStr',['../IRtext_8cpp.html#ae16da0464743313a1fbeae92dcfcebbd',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp'],['../IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp']]], + ['ktimeoutms_2910',['kTimeoutMs',['../IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b',1,'IRrecv.h']]], + ['ktimerstr_2911',['kTimerStr',['../IRtext_8cpp.html#a2b5219ba887cfbc578fb880ebada832a',1,'kTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109',1,'kTimerStr(): IRtext.cpp']]], + ['ktimesep_2912',['kTimeSep',['../IRtext_8cpp.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp'],['../IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp']]], + ['ktogglestr_2913',['kToggleStr',['../IRtext_8cpp.html#a33860b90859d19191c9759b099283b37',1,'kToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e',1,'kToggleStr(): IRtext.cpp']]], + ['ktolerance_2914',['kTolerance',['../IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272',1,'IRrecv.h']]], + ['ktopstr_2915',['kTopStr',['../IRtext_8cpp.html#a65a8bf89c9dd0277607478277c0c7088',1,'kTopStr(): IRtext.cpp'],['../IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2',1,'kTopStr(): IRtext.cpp']]], + ['ktoshibaacauto_2916',['kToshibaAcAuto',['../ir__Toshiba_8h.html#a4730189595a884ae6535805948e096aa',1,'ir_Toshiba.h']]], + ['ktoshibaacbitmark_2917',['kToshibaAcBitMark',['../ir__Toshiba_8cpp.html#adff1c244103ff274243b8e20ca209866',1,'ir_Toshiba.cpp']]], + ['ktoshibaacbits_2918',['kToshibaACBits',['../IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0',1,'IRremoteESP8266.h']]], + ['ktoshibaaccool_2919',['kToshibaAcCool',['../ir__Toshiba_8h.html#a2f30e65bb092365d1a8bcb1f3395333a',1,'ir_Toshiba.h']]], + ['ktoshibaacdry_2920',['kToshibaAcDry',['../ir__Toshiba_8h.html#a10b77d1038efc59775398789c33af91e',1,'ir_Toshiba.h']]], + ['ktoshibaacfanauto_2921',['kToshibaAcFanAuto',['../ir__Toshiba_8h.html#a69f52e19a5b0e68abda00b680fbef7f6',1,'ir_Toshiba.h']]], + ['ktoshibaacfanmax_2922',['kToshibaAcFanMax',['../ir__Toshiba_8h.html#a0f6ffde3491f464166d6064d7dfe5ba4',1,'ir_Toshiba.h']]], + ['ktoshibaacfanmed_2923',['kToshibaAcFanMed',['../ir__Toshiba_8h.html#a3ff967af7d1a30c7c5cb958eaa5cbd58',1,'ir_Toshiba.h']]], + ['ktoshibaacfanmin_2924',['kToshibaAcFanMin',['../ir__Toshiba_8h.html#ab2c5eea9ccabf2e0e56bc03baec5d898',1,'ir_Toshiba.h']]], + ['ktoshibaacfanoffset_2925',['kToshibaAcFanOffset',['../ir__Toshiba_8h.html#a8276d25876329968bbf36eac3598972c',1,'ir_Toshiba.h']]], + ['ktoshibaacfansize_2926',['kToshibaAcFanSize',['../ir__Toshiba_8h.html#a5a91c19e799721560a5a9ef77a245888',1,'ir_Toshiba.h']]], + ['ktoshibaachdrmark_2927',['kToshibaAcHdrMark',['../ir__Toshiba_8cpp.html#a2eac25ff2a381ad6690623641153a780',1,'ir_Toshiba.cpp']]], + ['ktoshibaachdrspace_2928',['kToshibaAcHdrSpace',['../ir__Toshiba_8cpp.html#a0ae9047d5a204f320c06736fa40d0a7d',1,'ir_Toshiba.cpp']]], + ['ktoshibaacheat_2929',['kToshibaAcHeat',['../ir__Toshiba_8h.html#aa9ec24f9a5e460aa7017f642ce7a4c0d',1,'ir_Toshiba.h']]], + ['ktoshibaacmaxtemp_2930',['kToshibaAcMaxTemp',['../ir__Toshiba_8h.html#a475028a2a519e3310506ceac0a5dc4e6',1,'ir_Toshiba.h']]], + ['ktoshibaacmingap_2931',['kToshibaAcMinGap',['../ir__Toshiba_8cpp.html#ade7642284aa7c6a638b9fab45610cc59',1,'ir_Toshiba.cpp']]], + ['ktoshibaacminrepeat_2932',['kToshibaACMinRepeat',['../IRremoteESP8266_8h.html#a8fca6a7c3cd608ff49cab35f24af0546',1,'IRremoteESP8266.h']]], + ['ktoshibaacmintemp_2933',['kToshibaAcMinTemp',['../ir__Toshiba_8h.html#ad0e8e76aabc38ac7ba2f13a009de98e0',1,'ir_Toshiba.h']]], + ['ktoshibaacmodeoffset_2934',['kToshibaAcModeOffset',['../ir__Toshiba_8h.html#a4e097e34b0f2dd9eaacf94d043f726d0',1,'ir_Toshiba.h']]], + ['ktoshibaacmodesize_2935',['kToshibaAcModeSize',['../ir__Toshiba_8h.html#a920d55af8e499a7c2293a7d8180104da',1,'ir_Toshiba.h']]], + ['ktoshibaaconespace_2936',['kToshibaAcOneSpace',['../ir__Toshiba_8cpp.html#a787330c9e5f9d30e8df157acc15f56dd',1,'ir_Toshiba.cpp']]], + ['ktoshibaacpoweroffset_2937',['kToshibaAcPowerOffset',['../ir__Toshiba_8h.html#adfd3caac2bd0b636508afbbf67b04dcd',1,'ir_Toshiba.h']]], + ['ktoshibaacstatelength_2938',['kToshibaACStateLength',['../IRremoteESP8266_8h.html#ad3be6a1b9241c20bb1464a2cb80b97d2',1,'IRremoteESP8266.h']]], + ['ktoshibaactempoffset_2939',['kToshibaAcTempOffset',['../ir__Toshiba_8h.html#a68be75c21288e249d7b44fe9648de91f',1,'ir_Toshiba.h']]], + ['ktoshibaactempsize_2940',['kToshibaAcTempSize',['../ir__Toshiba_8h.html#a89ec8108586e0d5b9f58a160f4db37c8',1,'ir_Toshiba.h']]], + ['ktoshibaaczerospace_2941',['kToshibaAcZeroSpace',['../ir__Toshiba_8cpp.html#ab2fc2833cfb31d872894073687eebd99',1,'ir_Toshiba.cpp']]], + ['ktrotecauto_2942',['kTrotecAuto',['../ir__Trotec_8h.html#a53b2687b96f8e69ec6f57dd2ac7a6dfa',1,'ir_Trotec.h']]], + ['ktrotecbitmark_2943',['kTrotecBitMark',['../ir__Trotec_8cpp.html#a870b2da19855eff625a2834ca7fd8765',1,'ir_Trotec.cpp']]], + ['ktrotecbits_2944',['kTrotecBits',['../IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2',1,'IRremoteESP8266.h']]], + ['ktroteccool_2945',['kTrotecCool',['../ir__Trotec_8h.html#add33a35046e4270ad9ff3b998526d5d1',1,'ir_Trotec.h']]], + ['ktrotecdefaultrepeat_2946',['kTrotecDefaultRepeat',['../IRremoteESP8266_8h.html#a4c0411462f2854a8606deca09ed15df5',1,'IRremoteESP8266.h']]], + ['ktrotecdeftemp_2947',['kTrotecDefTemp',['../ir__Trotec_8h.html#ac28d1d0ea6db18716a7d9d21e84178c0',1,'ir_Trotec.h']]], + ['ktrotecdry_2948',['kTrotecDry',['../ir__Trotec_8h.html#abdaa1836c6bc90b1d5813df028a76e21',1,'ir_Trotec.h']]], + ['ktrotecfan_2949',['kTrotecFan',['../ir__Trotec_8h.html#a9309d528d50dd542a5184a51fb101a6a',1,'ir_Trotec.h']]], + ['ktrotecfanhigh_2950',['kTrotecFanHigh',['../ir__Trotec_8h.html#ae780f0bb6b9b83f3dbcc1c1e282e5436',1,'ir_Trotec.h']]], + ['ktrotecfanlow_2951',['kTrotecFanLow',['../ir__Trotec_8h.html#aa1c3695c1becc935d2a3b2691996a17b',1,'ir_Trotec.h']]], + ['ktrotecfanmed_2952',['kTrotecFanMed',['../ir__Trotec_8h.html#abae1944f529099ff4736b6cb13bcbeda',1,'ir_Trotec.h']]], + ['ktrotecfanoffset_2953',['kTrotecFanOffset',['../ir__Trotec_8h.html#a3b9034b96268707f7b6fc45a16499479',1,'ir_Trotec.h']]], + ['ktrotecfansize_2954',['kTrotecFanSize',['../ir__Trotec_8h.html#a89d7de622d0f53f800c1a5a2887a81e4',1,'ir_Trotec.h']]], + ['ktrotecgap_2955',['kTrotecGap',['../ir__Trotec_8cpp.html#a753ba93d7b757dc58fcf1b4a6bb65ff6',1,'ir_Trotec.cpp']]], + ['ktrotecgapend_2956',['kTrotecGapEnd',['../ir__Trotec_8cpp.html#a5fcc4a020bcebfe90abe12d4a47de372',1,'ir_Trotec.cpp']]], + ['ktrotechdrmark_2957',['kTrotecHdrMark',['../ir__Trotec_8cpp.html#a809faed7ee2fef78a5b8271a2c5ddd10',1,'ir_Trotec.cpp']]], + ['ktrotechdrspace_2958',['kTrotecHdrSpace',['../ir__Trotec_8cpp.html#a5d42cd98bf737dd8161572afa393be1e',1,'ir_Trotec.cpp']]], + ['ktrotecintro1_2959',['kTrotecIntro1',['../ir__Trotec_8h.html#aabc5c6a9b4867c25d84ffe2839e88564',1,'ir_Trotec.h']]], + ['ktrotecintro2_2960',['kTrotecIntro2',['../ir__Trotec_8h.html#ac33de8b2fc4b70bb272a56f6bbb68e34',1,'ir_Trotec.h']]], + ['ktrotecmaxtemp_2961',['kTrotecMaxTemp',['../ir__Trotec_8h.html#abfe4004dcac892f575ec1efb09567595',1,'ir_Trotec.h']]], + ['ktrotecmaxtimer_2962',['kTrotecMaxTimer',['../ir__Trotec_8h.html#a8467d1b9983d5750a61817cacb148efd',1,'ir_Trotec.h']]], + ['ktrotecmintemp_2963',['kTrotecMinTemp',['../ir__Trotec_8h.html#a091904af9fee2384e137feab274af7f8',1,'ir_Trotec.h']]], + ['ktrotecmodeoffset_2964',['kTrotecModeOffset',['../ir__Trotec_8h.html#aa0d48802845d5cf0410550bb98e4cbb5',1,'ir_Trotec.h']]], + ['ktrotecmodesize_2965',['kTrotecModeSize',['../ir__Trotec_8h.html#ae45ea2f0f8b5d09568c0322e1735ca85',1,'ir_Trotec.h']]], + ['ktroteconespace_2966',['kTrotecOneSpace',['../ir__Trotec_8cpp.html#a570aa73a82089906971932212d99a283',1,'ir_Trotec.cpp']]], + ['ktrotecpowerbitoffset_2967',['kTrotecPowerBitOffset',['../ir__Trotec_8h.html#a11fcdfe886385de6363d06371cdcff43',1,'ir_Trotec.h']]], + ['ktrotecsleepbitoffset_2968',['kTrotecSleepBitOffset',['../ir__Trotec_8h.html#af81754a025119a3dc9924df5508b18c0',1,'ir_Trotec.h']]], + ['ktrotecstatelength_2969',['kTrotecStateLength',['../IRremoteESP8266_8h.html#ae1d2aa52fef81f03b92c35f4970728d2',1,'IRremoteESP8266.h']]], + ['ktrotectempoffset_2970',['kTrotecTempOffset',['../ir__Trotec_8h.html#a08a844aefec8d0440365c9204a01034c',1,'ir_Trotec.h']]], + ['ktrotectempsize_2971',['kTrotecTempSize',['../ir__Trotec_8h.html#a1141680a808f41513548a8747c37f975',1,'ir_Trotec.h']]], + ['ktrotectimerbitoffset_2972',['kTrotecTimerBitOffset',['../ir__Trotec_8h.html#aad59f1284ec04736a3c6629c3cd87731',1,'ir_Trotec.h']]], + ['ktroteczerospace_2973',['kTrotecZeroSpace',['../ir__Trotec_8cpp.html#a8e8f85e7b8a8157eb425316b5108d717',1,'ir_Trotec.cpp']]], + ['ktruestr_2974',['kTrueStr',['../IRtext_8cpp.html#a28a627d6f48d7d06a560f9613e4550fa',1,'kTrueStr(): IRtext.cpp'],['../IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0',1,'kTrueStr(): IRtext.cpp']]], + ['kturbostr_2975',['kTurboStr',['../IRtext_8cpp.html#a9f3f7395d980887699ac5a0c146d37d2',1,'kTurboStr(): IRtext.cpp'],['../IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8',1,'kTurboStr(): IRtext.cpp']]], + ['kunknownstr_2976',['kUnknownStr',['../IRtext_8cpp.html#a9c6c6d47ce3eb07cc607faa600978029',1,'kUnknownStr(): IRtext.cpp'],['../IRtext_8h.html#aa59176b31741b60729d4279817a7da1b',1,'kUnknownStr(): IRtext.cpp']]], + ['kunknownthreshold_2977',['kUnknownThreshold',['../IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f',1,'IRrecv.h']]], + ['kupperstr_2978',['kUpperStr',['../IRtext_8cpp.html#a887bb7c61f38014d21b025c67102fa0b',1,'kUpperStr(): IRtext.cpp'],['../IRtext_8h.html#a5aea60591627481d90688f655b2eb82a',1,'kUpperStr(): IRtext.cpp']]], + ['kupstr_2979',['kUpStr',['../IRtext_8cpp.html#ab970b3d5239f08f21a8e5e2eae49739f',1,'kUpStr(): IRtext.cpp'],['../IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a',1,'kUpStr(): IRtext.cpp']]], + ['kusedeftol_2980',['kUseDefTol',['../IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c',1,'IRrecv.h']]], + ['kvestelacauto_2981',['kVestelAcAuto',['../ir__Vestel_8h.html#a157e879cbe3b216075e3b7b2db5fdc3c',1,'ir_Vestel.h']]], + ['kvestelacbitmark_2982',['kVestelAcBitMark',['../ir__Vestel_8h.html#a70d7198002c61529956625986aa533f0',1,'ir_Vestel.h']]], + ['kvestelacbits_2983',['kVestelAcBits',['../IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7',1,'IRremoteESP8266.h']]], + ['kvestelacchecksumoffset_2984',['kVestelAcChecksumOffset',['../ir__Vestel_8h.html#ac3fa10d1dba540a82b77cc88b01f9a7e',1,'ir_Vestel.h']]], + ['kvestelacchecksumsize_2985',['kVestelAcChecksumSize',['../ir__Vestel_8h.html#a61979a3b944ce7309c5b3f5b24b0a14c',1,'ir_Vestel.h']]], + ['kvestelaccool_2986',['kVestelAcCool',['../ir__Vestel_8h.html#aa2ec681dd63a976a6b2b182ae590e020',1,'ir_Vestel.h']]], + ['kvestelacdry_2987',['kVestelAcDry',['../ir__Vestel_8h.html#a21a255842a75a932a3a0735851d9c197',1,'ir_Vestel.h']]], + ['kvestelacfan_2988',['kVestelAcFan',['../ir__Vestel_8h.html#aeabf5404a3f66fd1428b6e4c09f24c08',1,'ir_Vestel.h']]], + ['kvestelacfanauto_2989',['kVestelAcFanAuto',['../ir__Vestel_8h.html#ac2f3175c25844414de2c2489595dd851',1,'ir_Vestel.h']]], + ['kvestelacfanautocool_2990',['kVestelAcFanAutoCool',['../ir__Vestel_8h.html#ab40dc2ebe05c77e701e2d5acf16b2658',1,'ir_Vestel.h']]], + ['kvestelacfanautohot_2991',['kVestelAcFanAutoHot',['../ir__Vestel_8h.html#a95dee8baacedb7aa62edbdecf766cdc1',1,'ir_Vestel.h']]], + ['kvestelacfanhigh_2992',['kVestelAcFanHigh',['../ir__Vestel_8h.html#acae63d91ee2a2b448fe1a68b2472e4a3',1,'ir_Vestel.h']]], + ['kvestelacfanlow_2993',['kVestelAcFanLow',['../ir__Vestel_8h.html#a21ce5e539ecb764be8dbad33914f4b87',1,'ir_Vestel.h']]], + ['kvestelacfanmed_2994',['kVestelAcFanMed',['../ir__Vestel_8h.html#a265fa70e0e38caefb45ed007eb25a430',1,'ir_Vestel.h']]], + ['kvestelacfanoffset_2995',['kVestelAcFanOffset',['../ir__Vestel_8h.html#af0f1c1989322f256b7b1b5dba613feba',1,'ir_Vestel.h']]], + ['kvestelacfansize_2996',['kVestelAcFanSize',['../ir__Vestel_8h.html#ae61e23edfb71206e736497ab479c08ad',1,'ir_Vestel.h']]], + ['kvestelachdrmark_2997',['kVestelAcHdrMark',['../ir__Vestel_8h.html#a32871ab992bfee13918a50f04508a95a',1,'ir_Vestel.h']]], + ['kvestelachdrspace_2998',['kVestelAcHdrSpace',['../ir__Vestel_8h.html#a2389409048e409b411ea8416829c06ef',1,'ir_Vestel.h']]], + ['kvestelacheat_2999',['kVestelAcHeat',['../ir__Vestel_8h.html#a33d36614992862c41f5e48548b0a45f1',1,'ir_Vestel.h']]], + ['kvestelachouroffset_3000',['kVestelAcHourOffset',['../ir__Vestel_8h.html#af4c3729a4b9df092e01d74109f539cca',1,'ir_Vestel.h']]], + ['kvestelachoursize_3001',['kVestelAcHourSize',['../ir__Vestel_8h.html#a2c0fd442d92620ca062637d01258bacf',1,'ir_Vestel.h']]], + ['kvestelacion_3002',['kVestelAcIon',['../ir__Vestel_8h.html#a6a661c914fd67e261e2148d797789339',1,'ir_Vestel.h']]], + ['kvestelacionoffset_3003',['kVestelAcIonOffset',['../ir__Vestel_8h.html#a9b1cd19c4b0037714f1c47ba031edd0b',1,'ir_Vestel.h']]], + ['kvestelacmaxtemp_3004',['kVestelAcMaxTemp',['../ir__Vestel_8h.html#a4e49902b2e4fe049fd5969b4532cc7b4',1,'ir_Vestel.h']]], + ['kvestelacmintempc_3005',['kVestelAcMinTempC',['../ir__Vestel_8h.html#ae597f05d0886a5a2aa8c43db187a657b',1,'ir_Vestel.h']]], + ['kvestelacmintemph_3006',['kVestelAcMinTempH',['../ir__Vestel_8h.html#a06977d297c84adac7927c80c7b0e7297',1,'ir_Vestel.h']]], + ['kvestelacminuteoffset_3007',['kVestelAcMinuteOffset',['../ir__Vestel_8h.html#a7c5f318a30e86394af19265e73b68034',1,'ir_Vestel.h']]], + ['kvestelacminutesize_3008',['kVestelAcMinuteSize',['../ir__Vestel_8h.html#a8abd51cd0d0404ae8bb139690bf55eb0',1,'ir_Vestel.h']]], + ['kvestelacmodeoffset_3009',['kVestelAcModeOffset',['../ir__Vestel_8h.html#a5334689cb0fbeaee67133f1f86bdce58',1,'ir_Vestel.h']]], + ['kvestelacnormal_3010',['kVestelAcNormal',['../ir__Vestel_8h.html#afa4c0fafcc806cd22dfb45475631d754',1,'ir_Vestel.h']]], + ['kvestelacofftimeoffset_3011',['kVestelAcOffTimeOffset',['../ir__Vestel_8h.html#a64ce11367a28d6481801ac3ac641df4b',1,'ir_Vestel.h']]], + ['kvestelacofftimerflagoffset_3012',['kVestelAcOffTimerFlagOffset',['../ir__Vestel_8h.html#ab36bed197f2c2b65599667b4cdf8225b',1,'ir_Vestel.h']]], + ['kvestelaconespace_3013',['kVestelAcOneSpace',['../ir__Vestel_8h.html#a507a849ef5e031f40ecc0e5db6ac8dd6',1,'ir_Vestel.h']]], + ['kvestelacontimeoffset_3014',['kVestelAcOnTimeOffset',['../ir__Vestel_8h.html#a51e257abca02cb1c97de4a5418fb7e61',1,'ir_Vestel.h']]], + ['kvestelacontimerflagoffset_3015',['kVestelAcOnTimerFlagOffset',['../ir__Vestel_8h.html#a8aa66163683538129fbdaf21746a9144',1,'ir_Vestel.h']]], + ['kvestelacpoweroffset_3016',['kVestelAcPowerOffset',['../ir__Vestel_8h.html#ab1c5709fa37fc711929688bd72c300be',1,'ir_Vestel.h']]], + ['kvestelacpowersize_3017',['kVestelAcPowerSize',['../ir__Vestel_8h.html#a884236b7213902c5e7d79327effc8f97',1,'ir_Vestel.h']]], + ['kvestelacsleep_3018',['kVestelAcSleep',['../ir__Vestel_8h.html#abc4701f0a44ed48a139d192f86a7169b',1,'ir_Vestel.h']]], + ['kvestelacstatedefault_3019',['kVestelAcStateDefault',['../ir__Vestel_8h.html#a4207797ae1043280ec6364de5981a791',1,'ir_Vestel.h']]], + ['kvestelacswing_3020',['kVestelAcSwing',['../ir__Vestel_8h.html#aeb764aa28cb134348e64fde5cb4d40f0',1,'ir_Vestel.h']]], + ['kvestelacswingoffset_3021',['kVestelAcSwingOffset',['../ir__Vestel_8h.html#ad3249b7c42070013c7c81d3feb0b1a43',1,'ir_Vestel.h']]], + ['kvestelactempoffset_3022',['kVestelAcTempOffset',['../ir__Vestel_8h.html#a9cf24276d722ee54a17c8beaf2b415cd',1,'ir_Vestel.h']]], + ['kvestelactimerflagoffset_3023',['kVestelAcTimerFlagOffset',['../ir__Vestel_8h.html#a0e53cb471d133b13cfa8fd3204d70776',1,'ir_Vestel.h']]], + ['kvestelactimerhoursize_3024',['kVestelAcTimerHourSize',['../ir__Vestel_8h.html#ad52ad7c6b1efb7eee74a276dbca330e3',1,'ir_Vestel.h']]], + ['kvestelactimerminssize_3025',['kVestelAcTimerMinsSize',['../ir__Vestel_8h.html#a7696fac000df0fd5136b7cbd96393b9e',1,'ir_Vestel.h']]], + ['kvestelactimersize_3026',['kVestelAcTimerSize',['../ir__Vestel_8h.html#a43f134a4db94790c671380be29fb8e2c',1,'ir_Vestel.h']]], + ['kvestelactimestatedefault_3027',['kVestelAcTimeStateDefault',['../ir__Vestel_8h.html#aaf4d9b6a41269ede2101d45cc1549794',1,'ir_Vestel.h']]], + ['kvestelactolerance_3028',['kVestelAcTolerance',['../ir__Vestel_8h.html#a4abe236ac8a801aa03ab843c3e418711',1,'ir_Vestel.h']]], + ['kvestelacturbo_3029',['kVestelAcTurbo',['../ir__Vestel_8h.html#a85b8b744f201b1666f9608f693a61059',1,'ir_Vestel.h']]], + ['kvestelacturbosleepoffset_3030',['kVestelAcTurboSleepOffset',['../ir__Vestel_8h.html#a97c21dc060558aa4f543f2d05385f674',1,'ir_Vestel.h']]], + ['kvestelaczerospace_3031',['kVestelAcZeroSpace',['../ir__Vestel_8h.html#a2094b0ff279fb1696b51e57d657efd13',1,'ir_Vestel.h']]], + ['kwallstr_3032',['kWallStr',['../IRtext_8cpp.html#a860a71561b888c82318daad9f2c34592',1,'kWallStr(): IRtext.cpp'],['../IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29',1,'kWallStr(): IRtext.cpp']]], + ['kweeklytimerstr_3033',['kWeeklyTimerStr',['../IRtext_8cpp.html#aaf0b7bf26b4710a4c032cec9e55c545a',1,'kWeeklyTimerStr(): IRtext.cpp'],['../IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa',1,'kWeeklyTimerStr(): IRtext.cpp']]], + ['kwhirlpoolacalttempoffset_3034',['kWhirlpoolAcAltTempOffset',['../ir__Whirlpool_8h.html#a5cdc8be18d6489572d7c16dbbcc0c838',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacalttemppos_3035',['kWhirlpoolAcAltTempPos',['../ir__Whirlpool_8h.html#a019206ce06ef164cc3abb586183d0789',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacauto_3036',['kWhirlpoolAcAuto',['../ir__Whirlpool_8h.html#a2f3cc5447f8042e9c2eae0c2e0dc1b80',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacautotemp_3037',['kWhirlpoolAcAutoTemp',['../ir__Whirlpool_8h.html#a314b66dc86a7f622d73d3973d9dca86d',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacbitmark_3038',['kWhirlpoolAcBitMark',['../ir__Whirlpool_8cpp.html#a5c076ca2e18927f8b0594cb74a7de1ff',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacbits_3039',['kWhirlpoolAcBits',['../IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3',1,'IRremoteESP8266.h']]], + ['kwhirlpoolacchecksumbyte1_3040',['kWhirlpoolAcChecksumByte1',['../ir__Whirlpool_8h.html#ab199c13354730c715debbeed63182cbd',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacchecksumbyte2_3041',['kWhirlpoolAcChecksumByte2',['../ir__Whirlpool_8h.html#a37d1a2fd814ccf83062325225bddb9be',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacclockpos_3042',['kWhirlpoolAcClockPos',['../ir__Whirlpool_8h.html#ad624453fc485adaaa156bfde374208a4',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommand6thsense_3043',['kWhirlpoolAcCommand6thSense',['../ir__Whirlpool_8h.html#a48b1309aab30dd871ce047881680efa2',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandfanspeed_3044',['kWhirlpoolAcCommandFanSpeed',['../ir__Whirlpool_8h.html#a4712f7dd6c5631f6aa692eeb99fa3963',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandifeel_3045',['kWhirlpoolAcCommandIFeel',['../ir__Whirlpool_8h.html#a5cb95c379d033d7f5b0c81755f1d376f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandlight_3046',['kWhirlpoolAcCommandLight',['../ir__Whirlpool_8h.html#af6ae6f50d9dbfa610b7033181e4f7eb1',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandmode_3047',['kWhirlpoolAcCommandMode',['../ir__Whirlpool_8h.html#ab03770a941b7277a66fe65003497e183',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandofftimer_3048',['kWhirlpoolAcCommandOffTimer',['../ir__Whirlpool_8h.html#a072883e3780aa0970183ab330db26118',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandontimer_3049',['kWhirlpoolAcCommandOnTimer',['../ir__Whirlpool_8h.html#a54cbadf2ded73e66d6d12b6622249bdc',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandpos_3050',['kWhirlpoolAcCommandPos',['../ir__Whirlpool_8h.html#a1a3bc2210991ccfd418a5137dc7e0aa8',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandpower_3051',['kWhirlpoolAcCommandPower',['../ir__Whirlpool_8h.html#ac215c2827ebfe25a896d53e576b643d1',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandsleep_3052',['kWhirlpoolAcCommandSleep',['../ir__Whirlpool_8h.html#a695c9d69953ad2663512ede38e619b09',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandsuper_3053',['kWhirlpoolAcCommandSuper',['../ir__Whirlpool_8h.html#a4da2162e70a7257c5f4149e8556816d4',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandswing_3054',['kWhirlpoolAcCommandSwing',['../ir__Whirlpool_8h.html#a320e57c0727a74f049883c77233647a9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandtemp_3055',['kWhirlpoolAcCommandTemp',['../ir__Whirlpool_8h.html#a6e567d58af9bc3fb246e3d47a09fb065',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccool_3056',['kWhirlpoolAcCool',['../ir__Whirlpool_8h.html#a9574c0a604ffee1df43222344f649db8',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacdefaultrepeat_3057',['kWhirlpoolAcDefaultRepeat',['../IRremoteESP8266_8h.html#a3b41358898f69d96bdeece17ead13ee0',1,'IRremoteESP8266.h']]], + ['kwhirlpoolacdry_3058',['kWhirlpoolAcDry',['../ir__Whirlpool_8h.html#ab7433a4e3e8ad7ee665ab234df43e45f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfan_3059',['kWhirlpoolAcFan',['../ir__Whirlpool_8h.html#a91ecddbde81174268fdde3679565daeb',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanauto_3060',['kWhirlpoolAcFanAuto',['../ir__Whirlpool_8h.html#a133a436db244935a812beba78a1a9d05',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanhigh_3061',['kWhirlpoolAcFanHigh',['../ir__Whirlpool_8h.html#a93affe2700e13830ff09ee16801be56d',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanlow_3062',['kWhirlpoolAcFanLow',['../ir__Whirlpool_8h.html#abdbd00636661a234d9e30521144d76e1',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanmedium_3063',['kWhirlpoolAcFanMedium',['../ir__Whirlpool_8h.html#acf1ae9526d2fd3f49d484608730f607d',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanoffset_3064',['kWhirlpoolAcFanOffset',['../ir__Whirlpool_8h.html#a2cbca4b466aab8816efa70d1653bc895',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanpos_3065',['kWhirlpoolAcFanPos',['../ir__Whirlpool_8h.html#a02d5f4fe0837c9f9738cfb46f83c2ed9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfansize_3066',['kWhirlpoolAcFanSize',['../ir__Whirlpool_8h.html#ae26fab46c0f06c04f4d51b61e623873c',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacgap_3067',['kWhirlpoolAcGap',['../ir__Whirlpool_8cpp.html#a5946b0c81f68442645f795f4f6518972',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolachdrmark_3068',['kWhirlpoolAcHdrMark',['../ir__Whirlpool_8cpp.html#ad2f759eb7426cfe5fb3421f101c926bb',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolachdrspace_3069',['kWhirlpoolAcHdrSpace',['../ir__Whirlpool_8cpp.html#a7a83a305cc6ebb7be7163bd1c3fb679d',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacheat_3070',['kWhirlpoolAcHeat',['../ir__Whirlpool_8h.html#a1e9290ec94cca537b5c44d2e4326b59c',1,'ir_Whirlpool.h']]], + ['kwhirlpoolachouroffset_3071',['kWhirlpoolAcHourOffset',['../ir__Whirlpool_8h.html#a8940e79b0e5b9f4bcf2a3e518cc59432',1,'ir_Whirlpool.h']]], + ['kwhirlpoolachoursize_3072',['kWhirlpoolAcHourSize',['../ir__Whirlpool_8h.html#ac50066e7e496cb7af6ecdb21cee7f2c9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaclightoffset_3073',['kWhirlpoolAcLightOffset',['../ir__Whirlpool_8h.html#a5a5fbcfa7f383fb72f96c414adea8966',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmaxtemp_3074',['kWhirlpoolAcMaxTemp',['../ir__Whirlpool_8h.html#a08171b333f214963e21a0c574783299f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmingap_3075',['kWhirlpoolAcMinGap',['../ir__Whirlpool_8cpp.html#aa6e5e114daf18d77914a08f831c37c7d',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacmintemp_3076',['kWhirlpoolAcMinTemp',['../ir__Whirlpool_8h.html#aeffef97e3247609d5731b525692f1e7b',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacminuteoffset_3077',['kWhirlpoolAcMinuteOffset',['../ir__Whirlpool_8h.html#ae22595d5d1ffdc4c6b02080cd38d14d7',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacminutesize_3078',['kWhirlpoolAcMinuteSize',['../ir__Whirlpool_8h.html#a3a5cecc4480a1cb3da19f246902ab1d9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmodeoffset_3079',['kWhirlpoolAcModeOffset',['../ir__Whirlpool_8h.html#a662d0ab4b5f2b40bc2427e2b8d18351e',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmodepos_3080',['kWhirlpoolAcModePos',['../ir__Whirlpool_8h.html#a6a7e8449c00a260c1ef740ebc4a08d50',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacofftimerpos_3081',['kWhirlpoolAcOffTimerPos',['../ir__Whirlpool_8h.html#a48a18046ded6bae11cd87d41d615d05f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaconespace_3082',['kWhirlpoolAcOneSpace',['../ir__Whirlpool_8cpp.html#a7680ed11a0bc6b2f9340e3557681a470',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacontimerpos_3083',['kWhirlpoolAcOnTimerPos',['../ir__Whirlpool_8h.html#ad10d9924f4d57547f7dc8ea085e1666f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacpowertoggleoffset_3084',['kWhirlpoolAcPowerToggleOffset',['../ir__Whirlpool_8h.html#a1db76f65f3f10e73a0fdee65850934a2',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacpowertogglepos_3085',['kWhirlpoolAcPowerTogglePos',['../ir__Whirlpool_8h.html#a353f4f6101a152fdcfe7f13b8f8764d8',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacsections_3086',['kWhirlpoolAcSections',['../ir__Whirlpool_8cpp.html#a75ebed07d288ac32a0138035279b41c7',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacsleepoffset_3087',['kWhirlpoolAcSleepOffset',['../ir__Whirlpool_8h.html#a83961870cfae146cbb519560ff609fc3',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacsleeppos_3088',['kWhirlpoolAcSleepPos',['../ir__Whirlpool_8h.html#a739f14122bce3a130d441bb0a47b4666',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacstatelength_3089',['kWhirlpoolAcStateLength',['../IRremoteESP8266_8h.html#a0fff60a43f776fb999d0f1f91d88154f',1,'IRremoteESP8266.h']]], + ['kwhirlpoolacsupermask_3090',['kWhirlpoolAcSuperMask',['../ir__Whirlpool_8h.html#a1946501e50abd9e1c0a3e07007a98c24',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacsuperpos_3091',['kWhirlpoolAcSuperPos',['../ir__Whirlpool_8h.html#a68e051a102449fc6712f709b166a99b9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacswing1offset_3092',['kWhirlpoolAcSwing1Offset',['../ir__Whirlpool_8h.html#adeba9b215f8044e64df2bf805eecaa3b',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacswing2offset_3093',['kWhirlpoolAcSwing2Offset',['../ir__Whirlpool_8h.html#a3290f0b70f3eafdd885d4a08c6d5d5a3',1,'ir_Whirlpool.h']]], + ['kwhirlpoolactemppos_3094',['kWhirlpoolAcTempPos',['../ir__Whirlpool_8h.html#a15a3ef7abed2fca2881d4f5ccc969522',1,'ir_Whirlpool.h']]], + ['kwhirlpoolactimerenableoffset_3095',['kWhirlpoolAcTimerEnableOffset',['../ir__Whirlpool_8h.html#ab4694ec5e153e41f6cf56920e2291970',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaczerospace_3096',['kWhirlpoolAcZeroSpace',['../ir__Whirlpool_8cpp.html#af03c9ee4d432bbce7d2ee214dd5ca095',1,'ir_Whirlpool.cpp']]], + ['kwhynterbitmark_3097',['kWhynterBitMark',['../ir__Whynter_8cpp.html#a032043e058989b6402d8af99d2c20552',1,'ir_Whynter.cpp']]], + ['kwhynterbitmarkticks_3098',['kWhynterBitMarkTicks',['../ir__Whynter_8cpp.html#acfd8f04e0453ec1b9cd85837053a47e2',1,'ir_Whynter.cpp']]], + ['kwhynterbits_3099',['kWhynterBits',['../IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98',1,'IRremoteESP8266.h']]], + ['kwhynterhdrmark_3100',['kWhynterHdrMark',['../ir__Whynter_8cpp.html#a7d62b0e658fe6f697d41d6932e4e6662',1,'ir_Whynter.cpp']]], + ['kwhynterhdrmarkticks_3101',['kWhynterHdrMarkTicks',['../ir__Whynter_8cpp.html#a34da808cebff09fc038589c035f2d2fe',1,'ir_Whynter.cpp']]], + ['kwhynterhdrspace_3102',['kWhynterHdrSpace',['../ir__Whynter_8cpp.html#ad20c874e642238e299a44ead2ea592f1',1,'ir_Whynter.cpp']]], + ['kwhynterhdrspaceticks_3103',['kWhynterHdrSpaceTicks',['../ir__Whynter_8cpp.html#a8090f73380ea212e904402555156364d',1,'ir_Whynter.cpp']]], + ['kwhyntermincommandlength_3104',['kWhynterMinCommandLength',['../ir__Whynter_8cpp.html#a5e584a8d6aa8a146c9c8e74839b28e8f',1,'ir_Whynter.cpp']]], + ['kwhyntermincommandlengthticks_3105',['kWhynterMinCommandLengthTicks',['../ir__Whynter_8cpp.html#a65e8195824053403967573b7603059e7',1,'ir_Whynter.cpp']]], + ['kwhyntermingap_3106',['kWhynterMinGap',['../ir__Whynter_8cpp.html#ad09957f4c9c76d76ab55a74f440dad5f',1,'ir_Whynter.cpp']]], + ['kwhyntermingapticks_3107',['kWhynterMinGapTicks',['../ir__Whynter_8cpp.html#a89af5f0ab7af456f58052bf9256620a2',1,'ir_Whynter.cpp']]], + ['kwhynteronespace_3108',['kWhynterOneSpace',['../ir__Whynter_8cpp.html#a78993c22d94b107a37f61cddad728003',1,'ir_Whynter.cpp']]], + ['kwhynteronespaceticks_3109',['kWhynterOneSpaceTicks',['../ir__Whynter_8cpp.html#a95a5903a8f057df2b6587a331fec6f18',1,'ir_Whynter.cpp']]], + ['kwhyntertick_3110',['kWhynterTick',['../ir__Whynter_8cpp.html#a8f704cdf6cfd11455101919d7a772389',1,'ir_Whynter.cpp']]], + ['kwhynterzerospace_3111',['kWhynterZeroSpace',['../ir__Whynter_8cpp.html#a426deb9a35a1a6afdcbcfa58c6943490',1,'ir_Whynter.cpp']]], + ['kwhynterzerospaceticks_3112',['kWhynterZeroSpaceTicks',['../ir__Whynter_8cpp.html#ae38da416cd065b561287ebd2fe0257f0',1,'ir_Whynter.cpp']]], + ['kwide_3113',['kWide',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a9934dc3d02540583d5f13be6716739cd',1,'stdAc']]], + ['kwidestr_3114',['kWideStr',['../IRtext_8cpp.html#a19875c78e68ba6fdd78df3526f82969c',1,'kWideStr(): IRtext.cpp'],['../IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b',1,'kWideStr(): IRtext.cpp']]], + ['kwifistr_3115',['kWifiStr',['../IRtext_8cpp.html#a3f2dddbcbc03e31ed6f1081fce001ea4',1,'kWifiStr(): IRtext.cpp'],['../IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d',1,'kWifiStr(): IRtext.cpp']]], + ['kxfanstr_3116',['kXFanStr',['../IRtext_8cpp.html#ada36ab4b7555d38a76c4477971736cb7',1,'kXFanStr(): IRtext.cpp'],['../IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571',1,'kXFanStr(): IRtext.cpp']]], + ['kyesstr_3117',['kYesStr',['../IRtext_8cpp.html#a96492aa94d18702db41a639ae2a45423',1,'kYesStr(): IRtext.cpp'],['../IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae',1,'kYesStr(): IRtext.cpp']]], + ['kzepealbits_3118',['kZepealBits',['../IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296',1,'IRremoteESP8266.h']]], + ['kzepealcommandoffon_3119',['kZepealCommandOffOn',['../ir__Zepeal_8cpp.html#a37af9800da3144c218d422e54066e837',1,'ir_Zepeal.cpp']]], + ['kzepealcommandofftimer_3120',['kZepealCommandOffTimer',['../ir__Zepeal_8cpp.html#a87b136a95af4437182530d6f7cbc69ee',1,'ir_Zepeal.cpp']]], + ['kzepealcommandontimer_3121',['kZepealCommandOnTimer',['../ir__Zepeal_8cpp.html#aed4491019bb6575c113404a095e8b116',1,'ir_Zepeal.cpp']]], + ['kzepealcommandrhythm_3122',['kZepealCommandRhythm',['../ir__Zepeal_8cpp.html#aa3960b3bdaa77c060543881bdf71e46c',1,'ir_Zepeal.cpp']]], + ['kzepealcommandspeed_3123',['kZepealCommandSpeed',['../ir__Zepeal_8cpp.html#a1189a81901daaf4b8b45e8f45caf0f49',1,'ir_Zepeal.cpp']]], + ['kzepealfootermark_3124',['kZepealFooterMark',['../ir__Zepeal_8cpp.html#a83167e93978d9cec8cf2dfac980582ba',1,'ir_Zepeal.cpp']]], + ['kzepealgap_3125',['kZepealGap',['../ir__Zepeal_8cpp.html#ab5bea0fe08e14fa3d1812bea018f44f0',1,'ir_Zepeal.cpp']]], + ['kzepealhdrmark_3126',['kZepealHdrMark',['../ir__Zepeal_8cpp.html#abee2a1537cfff9481d3060fba94a4b04',1,'ir_Zepeal.cpp']]], + ['kzepealhdrspace_3127',['kZepealHdrSpace',['../ir__Zepeal_8cpp.html#ad49be13d3dd108a18e4e641a40ff0408',1,'ir_Zepeal.cpp']]], + ['kzepealminrepeat_3128',['kZepealMinRepeat',['../IRremoteESP8266_8h.html#afb5c734e808d8f108f976f0556bf6e58',1,'IRremoteESP8266.h']]], + ['kzepealonemark_3129',['kZepealOneMark',['../ir__Zepeal_8cpp.html#a4d9919883561086dd3e3060e93983480',1,'ir_Zepeal.cpp']]], + ['kzepealonespace_3130',['kZepealOneSpace',['../ir__Zepeal_8cpp.html#a88702dbff33a9dddcfd4b255637460a0',1,'ir_Zepeal.cpp']]], + ['kzepealsignature_3131',['kZepealSignature',['../ir__Zepeal_8cpp.html#a7994e564096ac01b77d9ebe3a753167d',1,'ir_Zepeal.cpp']]], + ['kzepealtolerance_3132',['kZepealTolerance',['../ir__Zepeal_8cpp.html#ab35f666ef98b24b8b4bacdf462a9fbe6',1,'ir_Zepeal.cpp']]], + ['kzepealzeromark_3133',['kZepealZeroMark',['../ir__Zepeal_8cpp.html#a94eac58ef78ea4e39687f54e381c3a00',1,'ir_Zepeal.cpp']]], + ['kzepealzerospace_3134',['kZepealZeroSpace',['../ir__Zepeal_8cpp.html#a1af802b587e8f0a88ae87ab964fde690',1,'ir_Zepeal.cpp']]], + ['kzonefollowstr_3135',['kZoneFollowStr',['../IRtext_8cpp.html#a9a112fb47e39e35d096fe09266d37db1',1,'kZoneFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f',1,'kZoneFollowStr(): IRtext.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.html new file mode 100644 index 000000000..da60ab8d5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.js new file mode 100644 index 000000000..4d332bcdd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_c.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['lasertag_3136',['LASERTAG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada92eadf4fa6dd16da5b79a2fcbf729894',1,'IRremoteESP8266.h']]], + ['ledflag_3137',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], + ['ledoff_3138',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], + ['ledon_3139',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], + ['legopf_3140',['LEGOPF',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9a31bf5555b17ea7b115a5c2550fc1de',1,'IRremoteESP8266.h']]], + ['lg_3141',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac::lg()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf6c249ac7d923229f9e623eff9a61f4',1,'LG(): IRremoteESP8266.h']]], + ['lg2_3142',['LG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8402547ec0b99b9b0efe97dec65badf9',1,'IRremoteESP8266.h']]], + ['lg_5fac_5fremote_5fmodel_5ft_3143',['lg_ac_remote_model_t',['../IRsend_8h.html#a50c54713e16502d280723334879dc83b',1,'IRsend.h']]], + ['light_3144',['light',['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t']]], + ['llword_3145',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], + ['lutron_3146',['LUTRON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada76cc459b9e26d82ed82cf120272fd8cb',1,'IRremoteESP8266.h']]], + ['lword_3147',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.html new file mode 100644 index 000000000..bc376fec3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.js new file mode 100644 index 000000000..d968b1b91 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_d.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['magiquest_3148',['magiquest',['../unionmagiquest.html',1,'magiquest'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3be750ce1687bc1a92fee05b0c511100',1,'MAGIQUEST(): IRremoteESP8266.h']]], + ['magnitude_3149',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]], + ['mark_3150',['mark',['../classIRsend.html#a7399389d40bfe24bc062ffca88fc3780',1,'IRsend']]], + ['markassent_3151',['markAsSent',['../classIRac.html#ad0e45b13f477e29823b8c138704536c4',1,'IRac']]], + ['match_3152',['match',['../classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa',1,'IRrecv']]], + ['match_5fresult_5ft_3153',['match_result_t',['../structmatch__result__t.html',1,'']]], + ['matchatleast_3154',['matchAtLeast',['../classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a',1,'IRrecv']]], + ['matchbytes_3155',['matchBytes',['../classIRrecv.html#adc2c9bc4c4e5741cfac7468126bf8ca6',1,'IRrecv']]], + ['matchdata_3156',['matchData',['../classIRrecv.html#a5361439cb69b1069553544e486502d2e',1,'IRrecv']]], + ['matchgeneric_3157',['matchGeneric',['../classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd',1,'IRrecv::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)'],['../classIRrecv.html#a4448c1658383962d735353352987c9aa',1,'IRrecv::matchGeneric(volatile uint16_t *data_ptr, uint8_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)']]], + ['matchgenericconstbittime_3158',['matchGenericConstBitTime',['../classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0',1,'IRrecv']]], + ['matchmanchester_3159',['matchManchester',['../classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728',1,'IRrecv']]], + ['matchmanchesterdata_3160',['matchManchesterData',['../classIRrecv.html#ab44403411a217eb8ea75271575f8ab83',1,'IRrecv']]], + ['matchmark_3161',['matchMark',['../classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d',1,'IRrecv']]], + ['matchspace_3162',['matchSpace',['../classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc',1,'IRrecv']]], + ['midea_3163',['midea',['../classIRac.html#a5b9c72198497eca0121945b557691309',1,'IRac::midea()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1571f3cf72caf1cf23481802b450382a',1,'MIDEA(): IRremoteESP8266.h']]], + ['midea24_3164',['MIDEA24',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada59b5ac5c1d354e50932dc0208d9b0b43',1,'IRremoteESP8266.h']]], + ['minrepeats_3165',['minRepeats',['../classIRsend.html#ae02772f34180163861b7e4eb3520db2a',1,'IRsend']]], + ['minstostring_3166',['minsToString',['../namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f',1,'irutils']]], + ['mitsubishi_3167',['mitsubishi',['../classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3',1,'IRac::mitsubishi()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab98915357fe1cb91de0536136be20d07',1,'MITSUBISHI(): IRremoteESP8266.h']]], + ['mitsubishi112_3168',['mitsubishi112',['../classIRac.html#a2438b6e4403d5952adb299083e038e10',1,'IRac::mitsubishi112()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab8e5875a5959b72ca7ff17bccff97c4d',1,'MITSUBISHI112(): IRremoteESP8266.h']]], + ['mitsubishi136_3169',['mitsubishi136',['../classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e',1,'IRac::mitsubishi136()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3c73724a654627a04cc96e280b9630fe',1,'MITSUBISHI136(): IRremoteESP8266.h']]], + ['mitsubishi2_3170',['MITSUBISHI2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66368850d567cbeb3b2c2233cae34cd0',1,'IRremoteESP8266.h']]], + ['mitsubishi_5fac_3171',['MITSUBISHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada45198cb83bbf76b320eaa91d09c44b38',1,'IRremoteESP8266.h']]], + ['mitsubishi_5fheavy_5f152_3172',['MITSUBISHI_HEAVY_152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada15c8d1d51d5f9e42fd03638cbdfb7cbf',1,'IRremoteESP8266.h']]], + ['mitsubishi_5fheavy_5f88_3173',['MITSUBISHI_HEAVY_88',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad303f6c0494d33354cb7c11af258f663',1,'IRremoteESP8266.h']]], + ['mitsubishiheavy152_3174',['mitsubishiHeavy152',['../classIRac.html#a635b89320d878c1e3f270d7146cb9b00',1,'IRac']]], + ['mitsubishiheavy88_3175',['mitsubishiHeavy88',['../classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e',1,'IRac']]], + ['mode_3176',['mode',['../structstdAc_1_1state__t.html#ae5e4b17fac2ea36300f796670337d7a7',1,'stdAc::state_t']]], + ['mode_5fstate_3177',['mode_state',['../classIRToshibaAC.html#a5bb8b6cef598bb8273369b3fa7ade1b0',1,'IRToshibaAC']]], + ['model_3178',['model',['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t']]], + ['modeltostr_3179',['modelToStr',['../namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd',1,'irutils']]], + ['modulation_3180',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]], + ['mstostring_3181',['msToString',['../namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a',1,'irutils']]], + ['multibrackets_3182',['MULTIBRACKETS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaebb72f3ad9ff2a706d8041763de6e49',1,'IRremoteESP8266.h']]], + ['mwm_3183',['MWM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a6938c955212e1fb81fb511437cbe56',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.html new file mode 100644 index 000000000..2e3c74dc6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.js new file mode 100644 index 000000000..55dcd37aa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['nec_3184',['NEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0811f93a25b0873e21979d569eeac05e',1,'IRremoteESP8266.h']]], + ['nec_5flike_3185',['NEC_LIKE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada97acfde550d201fa0abc3120098fb471',1,'IRremoteESP8266.h']]], + ['neoclima_3186',['neoclima',['../classIRac.html#a0e468b705922e58308c5e340499f2391',1,'IRac::neoclima()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac698e0c030768ed91207b0e63910c3e7',1,'NEOCLIMA(): IRremoteESP8266.h']]], + ['next_3187',['next',['../classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe',1,'IRac']]], + ['nikai_3188',['NIKAI',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0bc180c4ab5e68798451f4799f7f9377',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.html new file mode 100644 index 000000000..246f8ab12 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.js new file mode 100644 index 000000000..5a8f7d74d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/all_f.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['off_3189',['off',['../classIRAmcorAc.html#a5c67c2acde4964bf863d5ae73555ea1a',1,'IRAmcorAc::off()'],['../classIRArgoAC.html#ab5ab7cc22bbce59bb02ca60431dca3fb',1,'IRArgoAC::off()'],['../classIRCarrierAc64.html#ac7a262d768626f01dac94f5e2891c98e',1,'IRCarrierAc64::off()'],['../classIRCoolixAC.html#a7538665a38e193ecd3a0bed41e9f1417',1,'IRCoolixAC::off()'],['../classIRCoronaAc.html#a3744c68ec90d89999be4db5bd6ffe2a3',1,'IRCoronaAc::off()'],['../classIRDaikinESP.html#a5d1d22f45d877660719916ca546bd3af',1,'IRDaikinESP::off()'],['../classIRDaikin2.html#a84a48dfceb4d7137eb485e6897ccceac',1,'IRDaikin2::off()'],['../classIRDaikin216.html#a086d8cea2d6dd0f74c5cbece79d91567',1,'IRDaikin216::off()'],['../classIRDaikin160.html#a95f8c71bbf861d3c884656364e04b02a',1,'IRDaikin160::off()'],['../classIRDaikin176.html#a4ad81df1fe4921abee3634bf19b0d0f7',1,'IRDaikin176::off()'],['../classIRDaikin152.html#a035588ad676a54d2b6ada8cefe10e114',1,'IRDaikin152::off()'],['../classIRDelonghiAc.html#aa2f8f1d5da390bd5e5b36102dd40f5c8',1,'IRDelonghiAc::off()'],['../classIRElectraAc.html#afe3a9b789eafbef19d015cdebf71dc0d',1,'IRElectraAc::off()'],['../classIRFujitsuAC.html#ae7a320c2d2b8afbd9a04251053831cdd',1,'IRFujitsuAC::off()'],['../classIRGoodweatherAc.html#ad6863d837140951fcc0faf629025d48e',1,'IRGoodweatherAc::off()'],['../classIRGreeAC.html#a4cce897175ed731ab62402133089ed4f',1,'IRGreeAC::off()'],['../classIRHaierACYRW02.html#a9837ba26574f8bd452d616173819a9a4',1,'IRHaierACYRW02::off()'],['../classIRHitachiAc.html#a62be5ca181c8c9d11b65b38b1ed178b5',1,'IRHitachiAc::off()'],['../classIRHitachiAc1.html#a646b554980706d0dd2ac762be8458cdb',1,'IRHitachiAc1::off()'],['../classIRHitachiAc424.html#a0815a09fc49449bac03d996c63040a5f',1,'IRHitachiAc424::off()'],['../classIRKelvinatorAC.html#a4a759df902d1465c9520da7c7c595abc',1,'IRKelvinatorAC::off()'],['../classIRLgAc.html#a6d3d50b34575fecb93ed8bd5897c3f7c',1,'IRLgAc::off()'],['../classIRMideaAC.html#a29fbafcf47dc41475d009c4c92b2917b',1,'IRMideaAC::off()'],['../classIRMitsubishiAC.html#ac204620341200994c28411f53d5aa046',1,'IRMitsubishiAC::off()'],['../classIRMitsubishi136.html#a4122014509e9e755881920650f19baf3',1,'IRMitsubishi136::off()'],['../classIRMitsubishi112.html#ab5b6370edf2626da2e9f124a218678a8',1,'IRMitsubishi112::off()'],['../classIRMitsubishiHeavy152Ac.html#a93b603cc37d2dc7e3e7005ce21a0b2d7',1,'IRMitsubishiHeavy152Ac::off()'],['../classIRMitsubishiHeavy88Ac.html#a45c56c0454755d704a3df1f1f3647130',1,'IRMitsubishiHeavy88Ac::off()'],['../classIRNeoclimaAc.html#a9a277308bf8d8b0cd06a28964e7cbafb',1,'IRNeoclimaAc::off()'],['../classIRPanasonicAc.html#a03b706293c1c5b348bba536e6d8d33f5',1,'IRPanasonicAc::off()'],['../classIRSamsungAc.html#a34cb19bb4902441a2b9f10892eb17d83',1,'IRSamsungAc::off()'],['../classIRSharpAc.html#a178925a1d7ca01aae5c107fab5b32e93',1,'IRSharpAc::off()'],['../classIRTcl112Ac.html#ab2e39430629fcada55a584cff66d2749',1,'IRTcl112Ac::off()'],['../classIRTecoAc.html#ade1b1541bf2de053c78657af1ebcd001',1,'IRTecoAc::off()'],['../classIRToshibaAC.html#a70b145f7b9c46790e4e5da812bb66e58',1,'IRToshibaAC::off()'],['../classIRTrotecESP.html#a8f300ddaf255de1cdfee10b76b1f08e0',1,'IRTrotecESP::off()'],['../classIRVestelAc.html#a59e90e51e3518ef26bb382903ce67357',1,'IRVestelAc::off()']]], + ['offtimeperiod_3190',['offTimePeriod',['../classIRsend.html#a9e45c9e4f54db86c1f3e506cd72fe4c1',1,'IRsend']]], + ['on_3191',['on',['../classIRAmcorAc.html#adff3f4b9f57815a4062443f3e4dab78c',1,'IRAmcorAc::on()'],['../classIRArgoAC.html#a70497752f7afd8e3274cf4d8b1e22628',1,'IRArgoAC::on()'],['../classIRCarrierAc64.html#a39c13b713e36fbf94605f251b36bdfae',1,'IRCarrierAc64::on()'],['../classIRCoolixAC.html#a59c414fe0e951cd50083ab1fc45286ed',1,'IRCoolixAC::on()'],['../classIRCoronaAc.html#a7fe14d62eaccdc2db8db168c90a3cd87',1,'IRCoronaAc::on()'],['../classIRDaikinESP.html#a502e9dea10605d52e291d49af26b07eb',1,'IRDaikinESP::on()'],['../classIRDaikin2.html#a009ac70fd8b8695f3d931a42667fdb66',1,'IRDaikin2::on()'],['../classIRDaikin216.html#a09f54bb4ed1d553b4bbf6ffe6992a755',1,'IRDaikin216::on()'],['../classIRDaikin160.html#a2b6c282ad5cb2a702857532ab020110b',1,'IRDaikin160::on()'],['../classIRDaikin176.html#a3ca59ccdad4b7958fc4dc1a4b0593f38',1,'IRDaikin176::on()'],['../classIRDaikin152.html#a10ee74aa43e3940d657ac88cb03b9138',1,'IRDaikin152::on()'],['../classIRDelonghiAc.html#ab21d64ace3107a8f3359b3828bc2cab5',1,'IRDelonghiAc::on()'],['../classIRElectraAc.html#a99e29f982435b01c726d0234a433cfa6',1,'IRElectraAc::on()'],['../classIRFujitsuAC.html#adcb24818d088c879beb7d76ada332f43',1,'IRFujitsuAC::on()'],['../classIRGoodweatherAc.html#a1e3c2a9f47376062ab66318d6af4324b',1,'IRGoodweatherAc::on()'],['../classIRGreeAC.html#a69e399e411a19e5669e752d52ae66f15',1,'IRGreeAC::on()'],['../classIRHaierACYRW02.html#aaeb257d68235278be272e521fdec7331',1,'IRHaierACYRW02::on()'],['../classIRHitachiAc.html#a855e95d55d4ebfb3958b9d80a7b42c6f',1,'IRHitachiAc::on()'],['../classIRHitachiAc1.html#aea4fe1fddb56c8df31077b301e9c6473',1,'IRHitachiAc1::on()'],['../classIRHitachiAc424.html#ad414bca642af40ed81a6cbf93a0bf40b',1,'IRHitachiAc424::on()'],['../classIRKelvinatorAC.html#a714d0e70f2996694e2c46afdd9996341',1,'IRKelvinatorAC::on()'],['../classIRLgAc.html#a171358340c1ba8f90fef0c5454f2aa41',1,'IRLgAc::on()'],['../classIRMideaAC.html#af8dde03cb641a5af4f2ef0dcf70f1ca0',1,'IRMideaAC::on()'],['../classIRMitsubishiAC.html#a2946d1b3b641d7b991c0d296d5c5e77e',1,'IRMitsubishiAC::on()'],['../classIRMitsubishi136.html#a74180e99a5f4f1f4b740b442a1b74a06',1,'IRMitsubishi136::on()'],['../classIRMitsubishi112.html#accd250f130b4d0cd61593982b84b9138',1,'IRMitsubishi112::on()'],['../classIRMitsubishiHeavy152Ac.html#a5c7aec50b53fdc3af591e077a4a268e4',1,'IRMitsubishiHeavy152Ac::on()'],['../classIRMitsubishiHeavy88Ac.html#a44ce2c4f03b8b8973922f5bf59a19d2c',1,'IRMitsubishiHeavy88Ac::on()'],['../classIRNeoclimaAc.html#ab4a23cefef02351883dc4088dec51071',1,'IRNeoclimaAc::on()'],['../classIRPanasonicAc.html#a88e6b0f607b17266567306576e623a0c',1,'IRPanasonicAc::on()'],['../classIRSamsungAc.html#a68cf52997489a1c835662c7cdf23463c',1,'IRSamsungAc::on()'],['../classIRSharpAc.html#a5c8dad46c2965fc0d87780a8bd8b98f4',1,'IRSharpAc::on()'],['../classIRTcl112Ac.html#a0bbf7f0b9753b516fda0544c17b15b8a',1,'IRTcl112Ac::on()'],['../classIRTecoAc.html#af26015e5c663c346cf7db6d8af3f8c60',1,'IRTecoAc::on()'],['../classIRToshibaAC.html#abdc35338e4a18132d56bf6b46ddea590',1,'IRToshibaAC::on()'],['../classIRTrotecESP.html#a86c050edab8409a9b38d28f311f19404',1,'IRTrotecESP::on()'],['../classIRVestelAc.html#a4ed05fb5cbdfa5677ca238616bf03922',1,'IRVestelAc::on()']]], + ['ontimeperiod_3192',['onTimePeriod',['../classIRsend.html#aaaa65f31dbea033f8130e847b0366d94',1,'IRsend']]], + ['opmode_5ft_3193',['opmode_t',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f',1,'stdAc']]], + ['opmodetostring_3194',['opmodeToString',['../classIRac.html#a6dd1b87f2477bc3721d207b1fed482b8',1,'IRac']]], + ['outputoff_3195',['outputOff',['../classIRsend.html#a5e80df8b2ee534dbd6ddc30a852a2791',1,'IRsend']]], + ['outputon_3196',['outputOn',['../classIRsend.html#a4acfc45b339e724e2dbdff24762dfa7d',1,'IRsend']]], + ['overflow_3197',['overflow',['../structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58',1,'irparams_t::overflow()'],['../classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3',1,'decode_results::overflow()']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.html new file mode 100644 index 000000000..f7e4c14e1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.js new file mode 100644 index 000000000..1e99ee58b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['decode_5fresults_3525',['decode_results',['../classdecode__results.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.html new file mode 100644 index 000000000..c7ff4b311 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.js new file mode 100644 index 000000000..49407fd27 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_1.js @@ -0,0 +1,51 @@ +var searchData= +[ + ['irac_3526',['IRac',['../classIRac.html',1,'']]], + ['iramcorac_3527',['IRAmcorAc',['../classIRAmcorAc.html',1,'']]], + ['irargoac_3528',['IRArgoAC',['../classIRArgoAC.html',1,'']]], + ['ircarrierac64_3529',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'']]], + ['ircoolixac_3530',['IRCoolixAC',['../classIRCoolixAC.html',1,'']]], + ['ircoronaac_3531',['IRCoronaAc',['../classIRCoronaAc.html',1,'']]], + ['irdaikin128_3532',['IRDaikin128',['../classIRDaikin128.html',1,'']]], + ['irdaikin152_3533',['IRDaikin152',['../classIRDaikin152.html',1,'']]], + ['irdaikin160_3534',['IRDaikin160',['../classIRDaikin160.html',1,'']]], + ['irdaikin176_3535',['IRDaikin176',['../classIRDaikin176.html',1,'']]], + ['irdaikin2_3536',['IRDaikin2',['../classIRDaikin2.html',1,'']]], + ['irdaikin216_3537',['IRDaikin216',['../classIRDaikin216.html',1,'']]], + ['irdaikin64_3538',['IRDaikin64',['../classIRDaikin64.html',1,'']]], + ['irdaikinesp_3539',['IRDaikinESP',['../classIRDaikinESP.html',1,'']]], + ['irdelonghiac_3540',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'']]], + ['irelectraac_3541',['IRElectraAc',['../classIRElectraAc.html',1,'']]], + ['irfujitsuac_3542',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'']]], + ['irgoodweatherac_3543',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'']]], + ['irgreeac_3544',['IRGreeAC',['../classIRGreeAC.html',1,'']]], + ['irhaierac_3545',['IRHaierAC',['../classIRHaierAC.html',1,'']]], + ['irhaieracyrw02_3546',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'']]], + ['irhitachiac_3547',['IRHitachiAc',['../classIRHitachiAc.html',1,'']]], + ['irhitachiac1_3548',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'']]], + ['irhitachiac3_3549',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'']]], + ['irhitachiac344_3550',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'']]], + ['irhitachiac424_3551',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'']]], + ['irkelvinatorac_3552',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'']]], + ['irlgac_3553',['IRLgAc',['../classIRLgAc.html',1,'']]], + ['irmideaac_3554',['IRMideaAC',['../classIRMideaAC.html',1,'']]], + ['irmitsubishi112_3555',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'']]], + ['irmitsubishi136_3556',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'']]], + ['irmitsubishiac_3557',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'']]], + ['irmitsubishiheavy152ac_3558',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'']]], + ['irmitsubishiheavy88ac_3559',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'']]], + ['irneoclimaac_3560',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'']]], + ['irpanasonicac_3561',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'']]], + ['irparams_5ft_3562',['irparams_t',['../structirparams__t.html',1,'']]], + ['irrecv_3563',['IRrecv',['../classIRrecv.html',1,'']]], + ['irsamsungac_3564',['IRSamsungAc',['../classIRSamsungAc.html',1,'']]], + ['irsend_3565',['IRsend',['../classIRsend.html',1,'']]], + ['irsharpac_3566',['IRSharpAc',['../classIRSharpAc.html',1,'']]], + ['irtcl112ac_3567',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'']]], + ['irtecoac_3568',['IRTecoAc',['../classIRTecoAc.html',1,'']]], + ['irtimer_3569',['IRtimer',['../classIRtimer.html',1,'']]], + ['irtoshibaac_3570',['IRToshibaAC',['../classIRToshibaAC.html',1,'']]], + ['irtrotecesp_3571',['IRTrotecESP',['../classIRTrotecESP.html',1,'']]], + ['irvestelac_3572',['IRVestelAc',['../classIRVestelAc.html',1,'']]], + ['irwhirlpoolac_3573',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.html new file mode 100644 index 000000000..0d1e8a0cd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.js new file mode 100644 index 000000000..6b48c0d25 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['magiquest_3574',['magiquest',['../unionmagiquest.html',1,'']]], + ['match_5fresult_5ft_3575',['match_result_t',['../structmatch__result__t.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.html new file mode 100644 index 000000000..21025456b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.js new file mode 100644 index 000000000..5c2121b37 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['state_5ft_3576',['state_t',['../structstdAc_1_1state__t.html',1,'stdAc']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.html new file mode 100644 index 000000000..095ab5952 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.js new file mode 100644 index 000000000..a4b18ce82 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['timerms_3577',['TimerMs',['../classTimerMs.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/close.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.html new file mode 100644 index 000000000..9669700af --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.js new file mode 100644 index 000000000..f1f1a5972 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['decode_5ftype_5ft_6976',['decode_type_t',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.html new file mode 100644 index 000000000..dfec174d1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.js new file mode 100644 index 000000000..6f4ff342e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fanspeed_5ft_6977',['fanspeed_t',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383',1,'stdAc']]], + ['fujitsu_5fac_5fremote_5fmodel_5ft_6978',['fujitsu_ac_remote_model_t',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.html new file mode 100644 index 000000000..db70c3668 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.js new file mode 100644 index 000000000..a09539dd4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gree_5fac_5fremote_5fmodel_5ft_6979',['gree_ac_remote_model_t',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.html new file mode 100644 index 000000000..fb7ec1764 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.js new file mode 100644 index 000000000..22a2e8dcd --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hitachi_5fac1_5fremote_5fmodel_5ft_6980',['hitachi_ac1_remote_model_t',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.html new file mode 100644 index 000000000..b8b51ef8f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.js new file mode 100644 index 000000000..9f8fd8ed4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lg_5fac_5fremote_5fmodel_5ft_6981',['lg_ac_remote_model_t',['../IRsend_8h.html#a50c54713e16502d280723334879dc83b',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.html new file mode 100644 index 000000000..d39b033aa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.js new file mode 100644 index 000000000..575ca6e52 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['opmode_5ft_6982',['opmode_t',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f',1,'stdAc']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.html new file mode 100644 index 000000000..7dd141e97 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.js new file mode 100644 index 000000000..b72fde82b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['panasonic_5fac_5fremote_5fmodel_5ft_6983',['panasonic_ac_remote_model_t',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.html new file mode 100644 index 000000000..2836f52ee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.js new file mode 100644 index 000000000..02ccbf16b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['swingh_5ft_6984',['swingh_t',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147',1,'stdAc']]], + ['swingv_5ft_6985',['swingv_t',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43',1,'stdAc']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.html new file mode 100644 index 000000000..cf04f764b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.js new file mode 100644 index 000000000..2f78a824e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enums_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['whirlpool_5fac_5fremote_5fmodel_5ft_6986',['whirlpool_ac_remote_model_t',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.html new file mode 100644 index 000000000..928624899 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.js new file mode 100644 index 000000000..c19cd973e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_0.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['airwell_6987',['AIRWELL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0cd75c2edaa4c674d679dbb39635990a',1,'IRremoteESP8266.h']]], + ['aiwa_5frc_5ft501_6988',['AIWA_RC_T501',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7dc14b2c4769ef9de663c2e2165d8f75',1,'IRremoteESP8266.h']]], + ['akb75215403_6989',['AKB75215403',['../IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a',1,'IRsend.h']]], + ['amcor_6990',['AMCOR',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1325ba25674d7a99562f15a1b392086b',1,'IRremoteESP8266.h']]], + ['ardb1_6991',['ARDB1',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b',1,'IRsend.h']]], + ['argo_6992',['ARGO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac9ff1fa84905b54238b16d31197efb72',1,'IRremoteESP8266.h']]], + ['arjw2_6993',['ARJW2',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4',1,'IRsend.h']]], + ['arrah2e_6994',['ARRAH2E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b',1,'IRsend.h']]], + ['arreb1e_6995',['ARREB1E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a',1,'IRsend.h']]], + ['arry4_6996',['ARRY4',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.html new file mode 100644 index 000000000..e22a79fb9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.js new file mode 100644 index 000000000..62123eb2c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['carrier_5fac_6997',['CARRIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4d7328071e0a48bc828fccb02f969c20',1,'IRremoteESP8266.h']]], + ['carrier_5fac40_6998',['CARRIER_AC40',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1340c578f7986b0ed126744127af3907',1,'IRremoteESP8266.h']]], + ['carrier_5fac64_6999',['CARRIER_AC64',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4122973f5d8ce282457d348857ba0af0',1,'IRremoteESP8266.h']]], + ['coolix_7000',['COOLIX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae561d1d82d90c1b54a1a502431749873',1,'IRremoteESP8266.h']]], + ['corona_5fac_7001',['CORONA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf61f2c360f487309cfa466a44fcae106',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.html new file mode 100644 index 000000000..7107c3d7d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.js new file mode 100644 index 000000000..c5c4d155a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_10.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['tcl112ac_7109',['TCL112AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac4a6ebe702365620ed65ac6f484afda6',1,'IRremoteESP8266.h']]], + ['teco_7110',['TECO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3a15ee4466478d484508acc3d4d7a050',1,'IRremoteESP8266.h']]], + ['toshiba_5fac_7111',['TOSHIBA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66de3fced9e8f97d1919bcf4d5726f3e',1,'IRremoteESP8266.h']]], + ['trotec_7112',['TROTEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d0f8056d221b37f68f80bace2b794b9',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.html new file mode 100644 index 000000000..aab485d35 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.js new file mode 100644 index 000000000..4bd54ec38 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unknown_7113',['UNKNOWN',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada6ce26a62afab55d7606ad4e92428b30c',1,'IRremoteESP8266.h']]], + ['unused_7114',['UNUSED',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa09b651ef326a9d8efcee5cc5b720ab4',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.html new file mode 100644 index 000000000..9d9425504 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.js new file mode 100644 index 000000000..47989297d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vestel_5fac_7115',['VESTEL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada165413c6395bde985757b5b446f76569',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.html new file mode 100644 index 000000000..f7dea3e56 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.js new file mode 100644 index 000000000..7380f07ea --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['whirlpool_5fac_7116',['WHIRLPOOL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9faf927323d110269541b356f079b85a',1,'IRremoteESP8266.h']]], + ['whynter_7117',['WHYNTER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada458cdd7fa2b29dc8617c694696580c0c',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.html new file mode 100644 index 000000000..6a7874ada --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.js new file mode 100644 index 000000000..8e1d3c7ff --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['yaw1f_7118',['YAW1F',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a6b29d752ac8bafc8fedabc1282fccfb6',1,'IRsend.h']]], + ['ybofb_7119',['YBOFB',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a5d6dadebb4f337aa20ea06a87ae9b34a',1,'IRsend.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.html new file mode 100644 index 000000000..1e778765b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.js new file mode 100644 index 000000000..7ae142fc9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zepeal_7120',['ZEPEAL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1622e3d0835b4d47add716811c7bf797',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.html new file mode 100644 index 000000000..01a77bf7a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.js new file mode 100644 index 000000000..164f437b3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_2.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['daikin_7002',['DAIKIN',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8dc0597fd237d7098246334f3b5f37e',1,'IRremoteESP8266.h']]], + ['daikin128_7003',['DAIKIN128',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4b26fb376f6375dd6d1d4be186438f88',1,'IRremoteESP8266.h']]], + ['daikin152_7004',['DAIKIN152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad3f5f7ca39aee5fdab671a1b0d647ae4',1,'IRremoteESP8266.h']]], + ['daikin160_7005',['DAIKIN160',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4db6a848df3aed4289801e1b2bbbf6aa',1,'IRremoteESP8266.h']]], + ['daikin176_7006',['DAIKIN176',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada57f78a3b04d904f19d10bac13483deab',1,'IRremoteESP8266.h']]], + ['daikin2_7007',['DAIKIN2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab37b344f84d575ec78a92ca55e153586',1,'IRremoteESP8266.h']]], + ['daikin216_7008',['DAIKIN216',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa833fa3a20c3cbb7e6206dac4da30ffb',1,'IRremoteESP8266.h']]], + ['daikin64_7009',['DAIKIN64',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada70581853ce4883b747d22fdfd74409c4',1,'IRremoteESP8266.h']]], + ['delonghi_5fac_7010',['DELONGHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada149190c9dec98e9c3f4a2bd530b154a3',1,'IRremoteESP8266.h']]], + ['denon_7011',['DENON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2bda37b76abb290d1675c3e027e3c2e1',1,'IRremoteESP8266.h']]], + ['dg11j13a_7012',['DG11J13A',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9',1,'IRsend.h']]], + ['dg11j191_7013',['DG11J191',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c',1,'IRsend.h']]], + ['dish_7014',['DISH',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac27c6ac38ba872593af8e46ac2fdc85a',1,'IRremoteESP8266.h']]], + ['doshisha_7015',['DOSHISHA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab4566b260773b60c85450f40fa5b4341',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.html new file mode 100644 index 000000000..4e761d602 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.js new file mode 100644 index 000000000..7794084e0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['electra_5fac_7016',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]], + ['epson_7017',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.html new file mode 100644 index 000000000..e2977a05c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.js new file mode 100644 index 000000000..a1b41ed5e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fujitsu_5fac_7018',['FUJITSU_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8cf99a3a8776d644b78313306a2108c',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.html new file mode 100644 index 000000000..eabdd4be2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.js new file mode 100644 index 000000000..3a9434783 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ge6711ar2853m_7019',['GE6711AR2853M',['../IRsend_8h.html#a50c54713e16502d280723334879dc83bada534bddbb58907faa6c7eae385ec790',1,'IRsend.h']]], + ['gicable_7020',['GICABLE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac8f9010b746a07a7a6329d1b336b68cf',1,'IRremoteESP8266.h']]], + ['globalcache_7021',['GLOBALCACHE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf8c11b983768907fdb625ff9fb3729d2',1,'IRremoteESP8266.h']]], + ['goodweather_7022',['GOODWEATHER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9e8d893590b745f6b1b5ffcb556d9cba',1,'IRremoteESP8266.h']]], + ['gree_7023',['GREE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae3a5e7c315f6f88b34a4c856f280ed83',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.html new file mode 100644 index 000000000..24764919a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.js new file mode 100644 index 000000000..ddc065eb8 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['haier_5fac_7024',['HAIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1f232bcdf330ec2e353196941b9f1628',1,'IRremoteESP8266.h']]], + ['haier_5fac_5fyrw02_7025',['HAIER_AC_YRW02',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaacda5821835865551f6df46c76282fa4',1,'IRremoteESP8266.h']]], + ['hitachi_5fac_7026',['HITACHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9020fb54ac69d8aec0185f7e80c962ca',1,'IRremoteESP8266.h']]], + ['hitachi_5fac1_7027',['HITACHI_AC1',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d9a74161d95e62bece3c0e48900cb35',1,'IRremoteESP8266.h']]], + ['hitachi_5fac2_7028',['HITACHI_AC2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab5a44068d519506efa8a3113aa44c9c0',1,'IRremoteESP8266.h']]], + ['hitachi_5fac3_7029',['HITACHI_AC3',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3487c47b14da6af922f5b27992b30f3',1,'IRremoteESP8266.h']]], + ['hitachi_5fac344_7030',['HITACHI_AC344',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1e147eb39adc40e4181940cc2357f070',1,'IRremoteESP8266.h']]], + ['hitachi_5fac424_7031',['HITACHI_AC424',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada85af068f8964d4359512265d8cc27a31',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.html new file mode 100644 index 000000000..5d5ce7ee6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.js new file mode 100644 index 000000000..32f72ebfa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['inax_7032',['INAX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafc566aab3afb8face6d8965ca4d0eab7',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.html new file mode 100644 index 000000000..be088de03 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.js new file mode 100644 index 000000000..b6c589bc7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jvc_7033',['JVC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b6f507fb4bbd70ee70be4e2e0b0371d',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.html new file mode 100644 index 000000000..b521e0972 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.js new file mode 100644 index 000000000..c79d90305 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_9.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['kauto_7034',['kAuto',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()']]], + ['kcool_7035',['kCool',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fab9480fe865ab6bbfb66c8308068a06c2',1,'stdAc']]], + ['kdry_7036',['kDry',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa0d254f21cc940f41cf7cc1c8ff46ce1f',1,'stdAc']]], + ['kelvinator_7037',['KELVINATOR',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab3a52797572065c912c34c976c08c542',1,'IRremoteESP8266.h']]], + ['kfan_7038',['kFan',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa03b7310c6ec7018a07ee9e3ffb95a34b',1,'stdAc']]], + ['kheat_7039',['kHeat',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faece059b52386d38cd6da9729cca08b4e',1,'stdAc']]], + ['khigh_7040',['kHigh',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()']]], + ['khighest_7041',['kHighest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a24d8e31603e486f788826bc24e3a2e1d',1,'stdAc']]], + ['klastdecodetype_7042',['kLastDecodeType',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab09881b84bf9d61af99e62a85cce0b59',1,'IRremoteESP8266.h']]], + ['klastfanspeedenum_7043',['kLastFanspeedEnum',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383ab2d2a6993491fd666f1fa0afff5913ad',1,'stdAc']]], + ['klastopmodeenum_7044',['kLastOpmodeEnum',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa8dd00ffd575f66172d594e78860aad9f',1,'stdAc']]], + ['klastswinghenum_7045',['kLastSwinghEnum',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ac5bc5e605db47897c114283926ba7fe4',1,'stdAc']]], + ['klastswingvenum_7046',['kLastSwingvEnum',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a4127912afc084d51c71c4ea0c7dd7b30',1,'stdAc']]], + ['kleft_7047',['kLeft',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2d5fde1d924910a2a01ecd8e70a87c28',1,'stdAc']]], + ['kleftmax_7048',['kLeftMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a375fe2e8ea70186052eeb2983baa1d7d',1,'stdAc']]], + ['klow_7049',['kLow',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()']]], + ['klowest_7050',['kLowest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a334c684494b7f19d765cf062ae94a314',1,'stdAc']]], + ['kmax_7051',['kMax',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa0b1ac8aae6b1cfbbe89085c642b3b4b',1,'stdAc']]], + ['kmedium_7052',['kMedium',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a3ce9d817402b59f65fb01ea044bb1ee9',1,'stdAc']]], + ['kmiddle_7053',['kMiddle',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()']]], + ['kmin_7054',['kMin',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a8fbc2f6c44a6d70550df79903eb57d48',1,'stdAc']]], + ['koff_7055',['kOff',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444facc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()']]], + ['kpanasonicckp_7056',['kPanasonicCkp',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa537e8c640473597d2a1cb832498f9cb0',1,'IRsend.h']]], + ['kpanasonicdke_7057',['kPanasonicDke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fac8df2e0cfd553b0103f4c06a0fd573fd',1,'IRsend.h']]], + ['kpanasonicjke_7058',['kPanasonicJke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fabf39cff180c071fbc44601eeded236c4',1,'IRsend.h']]], + ['kpanasoniclke_7059',['kPanasonicLke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa71ceb4b576a03a47f0d945323b896cd6',1,'IRsend.h']]], + ['kpanasonicnke_7060',['kPanasonicNke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6faf70fc847e204f60ab1dc5ecb330fc790',1,'IRsend.h']]], + ['kpanasonicrkr_7061',['kPanasonicRkr',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fab809a062f38eb61589cf5aa2db5789db',1,'IRsend.h']]], + ['kpanasonicunknown_7062',['kPanasonicUnknown',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa3b23623c9580717d0ade5137200ae2a4',1,'IRsend.h']]], + ['kright_7063',['kRight',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2dd2b017192f8a09367d48c7648213c9',1,'stdAc']]], + ['krightmax_7064',['kRightMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a856bf9929ade459f451be17c97db4b32',1,'stdAc']]], + ['kwide_7065',['kWide',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a9934dc3d02540583d5f13be6716739cd',1,'stdAc']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.html new file mode 100644 index 000000000..ea342169a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.js new file mode 100644 index 000000000..c9b03ff30 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['lasertag_7066',['LASERTAG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada92eadf4fa6dd16da5b79a2fcbf729894',1,'IRremoteESP8266.h']]], + ['legopf_7067',['LEGOPF',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9a31bf5555b17ea7b115a5c2550fc1de',1,'IRremoteESP8266.h']]], + ['lg_7068',['LG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf6c249ac7d923229f9e623eff9a61f4',1,'IRremoteESP8266.h']]], + ['lg2_7069',['LG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8402547ec0b99b9b0efe97dec65badf9',1,'IRremoteESP8266.h']]], + ['lutron_7070',['LUTRON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada76cc459b9e26d82ed82cf120272fd8cb',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.html new file mode 100644 index 000000000..0bb27ce3b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.js new file mode 100644 index 000000000..c4d23b604 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_b.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['magiquest_7071',['MAGIQUEST',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3be750ce1687bc1a92fee05b0c511100',1,'IRremoteESP8266.h']]], + ['midea_7072',['MIDEA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1571f3cf72caf1cf23481802b450382a',1,'IRremoteESP8266.h']]], + ['midea24_7073',['MIDEA24',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada59b5ac5c1d354e50932dc0208d9b0b43',1,'IRremoteESP8266.h']]], + ['mitsubishi_7074',['MITSUBISHI',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab98915357fe1cb91de0536136be20d07',1,'IRremoteESP8266.h']]], + ['mitsubishi112_7075',['MITSUBISHI112',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab8e5875a5959b72ca7ff17bccff97c4d',1,'IRremoteESP8266.h']]], + ['mitsubishi136_7076',['MITSUBISHI136',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3c73724a654627a04cc96e280b9630fe',1,'IRremoteESP8266.h']]], + ['mitsubishi2_7077',['MITSUBISHI2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66368850d567cbeb3b2c2233cae34cd0',1,'IRremoteESP8266.h']]], + ['mitsubishi_5fac_7078',['MITSUBISHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada45198cb83bbf76b320eaa91d09c44b38',1,'IRremoteESP8266.h']]], + ['mitsubishi_5fheavy_5f152_7079',['MITSUBISHI_HEAVY_152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada15c8d1d51d5f9e42fd03638cbdfb7cbf',1,'IRremoteESP8266.h']]], + ['mitsubishi_5fheavy_5f88_7080',['MITSUBISHI_HEAVY_88',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad303f6c0494d33354cb7c11af258f663',1,'IRremoteESP8266.h']]], + ['multibrackets_7081',['MULTIBRACKETS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaebb72f3ad9ff2a706d8041763de6e49',1,'IRremoteESP8266.h']]], + ['mwm_7082',['MWM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a6938c955212e1fb81fb511437cbe56',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.html new file mode 100644 index 000000000..1ee90d91d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.js new file mode 100644 index 000000000..c1f6db3ae --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['nec_7083',['NEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0811f93a25b0873e21979d569eeac05e',1,'IRremoteESP8266.h']]], + ['nec_5flike_7084',['NEC_LIKE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada97acfde550d201fa0abc3120098fb471',1,'IRremoteESP8266.h']]], + ['neoclima_7085',['NEOCLIMA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac698e0c030768ed91207b0e63910c3e7',1,'IRremoteESP8266.h']]], + ['nikai_7086',['NIKAI',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0bc180c4ab5e68798451f4799f7f9377',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.html new file mode 100644 index 000000000..e1b3b48a0 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.js new file mode 100644 index 000000000..2495af799 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['panasonic_7087',['PANASONIC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'IRremoteESP8266.h']]], + ['panasonic_5fac_7088',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]], + ['pioneer_7089',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]], + ['pronto_7090',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.html new file mode 100644 index 000000000..c5d31975c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.js new file mode 100644 index 000000000..f1be901f7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_e.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['r_5flt0541_5fhta_5fa_7091',['R_LT0541_HTA_A',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8',1,'IRsend.h']]], + ['r_5flt0541_5fhta_5fb_7092',['R_LT0541_HTA_B',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f',1,'IRsend.h']]], + ['raw_7093',['RAW',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadabdeded99fe7d3f2773014a9a2cfb73d7',1,'IRremoteESP8266.h']]], + ['rc5_7094',['RC5',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3c0a3883a1488209bcd91730ece33b2',1,'IRremoteESP8266.h']]], + ['rc5x_7095',['RC5X',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a3ac4419806a34ba566bfcbbb0e4f1d',1,'IRremoteESP8266.h']]], + ['rc6_7096',['RC6',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7f7247f15587eb3812846f424b941abe',1,'IRremoteESP8266.h']]], + ['rcmm_7097',['RCMM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada79204b7ae26be334cebf3ea8268c34ab',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.html new file mode 100644 index 000000000..5de961d49 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.js new file mode 100644 index 000000000..9af6f712f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/enumvalues_f.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['samsung_7098',['SAMSUNG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2b451b6e7bebbf070d0913ec77d5d438',1,'IRremoteESP8266.h']]], + ['samsung36_7099',['SAMSUNG36',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa0d1be0c368e3594bc546c241d031fd4',1,'IRremoteESP8266.h']]], + ['samsung_5fac_7100',['SAMSUNG_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada39f991023009d760432489e7ad7ad4df',1,'IRremoteESP8266.h']]], + ['sanyo_7101',['SANYO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac1cf5078ebfd7ff83c70e8ec8522b288',1,'IRremoteESP8266.h']]], + ['sanyo_5flc7461_7102',['SANYO_LC7461',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada558721044a11b1d4b491343f02267e1d',1,'IRremoteESP8266.h']]], + ['sharp_7103',['SHARP',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaad63db67a2284cd7e3ffe382b6d6ea82',1,'IRremoteESP8266.h']]], + ['sharp_5fac_7104',['SHARP_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada353a9d71906702ae10aa4f803a04ca68',1,'IRremoteESP8266.h']]], + ['sherwood_7105',['SHERWOOD',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1412522651b0c8f1a35e1db3807466bb',1,'IRremoteESP8266.h']]], + ['sony_7106',['SONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada72d58193d4d25517202d22b7e57a65c3',1,'IRremoteESP8266.h']]], + ['sony_5f38k_7107',['SONY_38K',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0027bcfbb78c0c2b951dfff1102a027b',1,'IRremoteESP8266.h']]], + ['symphony_7108',['SYMPHONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada44c4a84d776e02328ef3b169e743e5ec',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.html new file mode 100644 index 000000000..737608e10 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.js new file mode 100644 index 000000000..b09800636 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['de_2dch_2eh_3581',['de-CH.h',['../de-CH_8h.html',1,'']]], + ['de_2dde_2eh_3582',['de-DE.h',['../de-DE_8h.html',1,'']]], + ['defaults_2eh_3583',['defaults.h',['../defaults_8h.html',1,'']]], + ['doxygen_5findex_2emd_3584',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.html new file mode 100644 index 000000000..f27a62dee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.js new file mode 100644 index 000000000..cf4d29ee1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['en_2dau_2eh_3585',['en-AU.h',['../en-AU_8h.html',1,'']]], + ['en_2die_2eh_3586',['en-IE.h',['../en-IE_8h.html',1,'']]], + ['en_2duk_2eh_3587',['en-UK.h',['../en-UK_8h.html',1,'']]], + ['en_2dus_2eh_3588',['en-US.h',['../en-US_8h.html',1,'']]], + ['es_2des_2eh_3589',['es-ES.h',['../es-ES_8h.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.html new file mode 100644 index 000000000..a45066e93 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.js new file mode 100644 index 000000000..67cf50118 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fr_2dfr_2eh_3590',['fr-FR.h',['../fr-FR_8h.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.html new file mode 100644 index 000000000..1076bc5a1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.js new file mode 100644 index 000000000..77fc9aa49 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_3.js @@ -0,0 +1,104 @@ +var searchData= +[ + ['i18n_2eh_3591',['i18n.h',['../i18n_8h.html',1,'']]], + ['ir_5fairwell_2ecpp_3592',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], + ['ir_5faiwa_2ecpp_3593',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], + ['ir_5famcor_2ecpp_3594',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], + ['ir_5famcor_2eh_3595',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], + ['ir_5fargo_2ecpp_3596',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], + ['ir_5fargo_2eh_3597',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], + ['ir_5fcarrier_2ecpp_3598',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], + ['ir_5fcarrier_2eh_3599',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], + ['ir_5fcoolix_2ecpp_3600',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], + ['ir_5fcoolix_2eh_3601',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], + ['ir_5fcorona_2ecpp_3602',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], + ['ir_5fcorona_2eh_3603',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], + ['ir_5fdaikin_2ecpp_3604',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], + ['ir_5fdaikin_2eh_3605',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], + ['ir_5fdelonghi_2ecpp_3606',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], + ['ir_5fdelonghi_2eh_3607',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], + ['ir_5fdenon_2ecpp_3608',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], + ['ir_5fdish_2ecpp_3609',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], + ['ir_5fdoshisha_2ecpp_3610',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], + ['ir_5felectra_2ecpp_3611',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], + ['ir_5felectra_2eh_3612',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], + ['ir_5fepson_2ecpp_3613',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], + ['ir_5ffujitsu_2ecpp_3614',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], + ['ir_5ffujitsu_2eh_3615',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], + ['ir_5fgicable_2ecpp_3616',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], + ['ir_5fglobalcache_2ecpp_3617',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], + ['ir_5fgoodweather_2ecpp_3618',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], + ['ir_5fgoodweather_2eh_3619',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], + ['ir_5fgree_2ecpp_3620',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], + ['ir_5fgree_2eh_3621',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], + ['ir_5fhaier_2ecpp_3622',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], + ['ir_5fhaier_2eh_3623',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], + ['ir_5fhitachi_2ecpp_3624',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], + ['ir_5fhitachi_2eh_3625',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], + ['ir_5finax_2ecpp_3626',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], + ['ir_5fjvc_2ecpp_3627',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], + ['ir_5fkelvinator_2ecpp_3628',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], + ['ir_5fkelvinator_2eh_3629',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], + ['ir_5flasertag_2ecpp_3630',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], + ['ir_5flego_2ecpp_3631',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], + ['ir_5flg_2ecpp_3632',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], + ['ir_5flg_2eh_3633',['ir_LG.h',['../ir__LG_8h.html',1,'']]], + ['ir_5flutron_2ecpp_3634',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], + ['ir_5fmagiquest_2ecpp_3635',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], + ['ir_5fmagiquest_2eh_3636',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], + ['ir_5fmidea_2ecpp_3637',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], + ['ir_5fmidea_2eh_3638',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], + ['ir_5fmitsubishi_2ecpp_3639',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], + ['ir_5fmitsubishi_2eh_3640',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], + ['ir_5fmitsubishiheavy_2ecpp_3641',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], + ['ir_5fmitsubishiheavy_2eh_3642',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], + ['ir_5fmultibrackets_2ecpp_3643',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], + ['ir_5fmwm_2ecpp_3644',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], + ['ir_5fnec_2ecpp_3645',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], + ['ir_5fnec_2eh_3646',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], + ['ir_5fneoclima_2ecpp_3647',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], + ['ir_5fneoclima_2eh_3648',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], + ['ir_5fnikai_2ecpp_3649',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], + ['ir_5fpanasonic_2ecpp_3650',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], + ['ir_5fpanasonic_2eh_3651',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], + ['ir_5fpioneer_2ecpp_3652',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], + ['ir_5fpronto_2ecpp_3653',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], + ['ir_5frc5_5frc6_2ecpp_3654',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], + ['ir_5frcmm_2ecpp_3655',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], + ['ir_5fsamsung_2ecpp_3656',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], + ['ir_5fsamsung_2eh_3657',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], + ['ir_5fsanyo_2ecpp_3658',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], + ['ir_5fsharp_2ecpp_3659',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], + ['ir_5fsharp_2eh_3660',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], + ['ir_5fsherwood_2ecpp_3661',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], + ['ir_5fsony_2ecpp_3662',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], + ['ir_5fsymphony_2ecpp_3663',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], + ['ir_5ftcl_2ecpp_3664',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], + ['ir_5ftcl_2eh_3665',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], + ['ir_5fteco_2ecpp_3666',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], + ['ir_5fteco_2eh_3667',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], + ['ir_5ftoshiba_2ecpp_3668',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], + ['ir_5ftoshiba_2eh_3669',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], + ['ir_5ftrotec_2ecpp_3670',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], + ['ir_5ftrotec_2eh_3671',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], + ['ir_5fvestel_2ecpp_3672',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], + ['ir_5fvestel_2eh_3673',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], + ['ir_5fwhirlpool_2ecpp_3674',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], + ['ir_5fwhirlpool_2eh_3675',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], + ['ir_5fwhynter_2ecpp_3676',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], + ['ir_5fzepeal_2ecpp_3677',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], + ['irac_2ecpp_3678',['IRac.cpp',['../IRac_8cpp.html',1,'']]], + ['irac_2eh_3679',['IRac.h',['../IRac_8h.html',1,'']]], + ['irrecv_2ecpp_3680',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], + ['irrecv_2eh_3681',['IRrecv.h',['../IRrecv_8h.html',1,'']]], + ['irremoteesp8266_2eh_3682',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], + ['irsend_2ecpp_3683',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], + ['irsend_2eh_3684',['IRsend.h',['../IRsend_8h.html',1,'']]], + ['irtext_2ecpp_3685',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], + ['irtext_2eh_3686',['IRtext.h',['../IRtext_8h.html',1,'']]], + ['irtimer_2ecpp_3687',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], + ['irtimer_2eh_3688',['IRtimer.h',['../IRtimer_8h.html',1,'']]], + ['irutils_2ecpp_3689',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], + ['irutils_2eh_3690',['IRutils.h',['../IRutils_8h.html',1,'']]], + ['it_2dit_2eh_3691',['it-IT.h',['../it-IT_8h.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.html new file mode 100644 index 000000000..e5cd7f43a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.js new file mode 100644 index 000000000..7ac14309d --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd_3692',['README.md',['../README_8md.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.html new file mode 100644 index 000000000..2cc480f29 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.js new file mode 100644 index 000000000..8fcced443 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zh_2dcn_2eh_3693',['zh-CN.h',['../zh-CN_8h.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.html new file mode 100644 index 000000000..e17c71111 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.js new file mode 100644 index 000000000..597eca1db --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_0.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['_5fcancelofftimer_3694',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]], + ['_5fcancelontimer_3695',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]], + ['_5fdelaymicroseconds_3696',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]], + ['_5fgettime_3697',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]], + ['_5fgettimer_3698',['_getTimer',['../classIRCoronaAc.html#a419053fbf9ef27e937db0ff7519927bd',1,'IRCoronaAc::_getTimer()'],['../classIRVestelAc.html#ad3f095d248ad3c84a777ed9f2d3b001e',1,'IRVestelAc::_getTimer()']]], + ['_5fmatchgeneric_3699',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]], + ['_5fsendsony_3700',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]], + ['_5fsetmode_3701',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]], + ['_5fsetpower_3702',['_setPower',['../classIRCoronaAc.html#a4b05b7e34e0f2e66f59ff279c6970478',1,'IRCoronaAc']]], + ['_5fsettemp_3703',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]], + ['_5fsettime_3704',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]], + ['_5fsettimer_3705',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc::_setTimer()'],['../classIRVestelAc.html#a726178a16458c84d031aec07355d0dd2',1,'IRVestelAc::_setTimer()']]], + ['_5ftostring_3706',['_toString',['../classIRHitachiAc424.html#af7ab654c4eecf770a70399f6b9959db3',1,'IRHitachiAc424']]], + ['_5fvalidtolerance_3707',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.html new file mode 100644 index 000000000..0ddac0a4f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.js new file mode 100644 index 000000000..37bfc00b2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_1.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['add_3708',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], + ['addbooltostring_3709',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], + ['adddaytostring_3710',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], + ['addfantostring_3711',['addFanToString',['../namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4',1,'irutils']]], + ['addinttostring_3712',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], + ['addlabeledstring_3713',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], + ['addmodeltostring_3714',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], + ['addmodetostring_3715',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], + ['addtemptostring_3716',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], + ['amcor_3717',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac']]], + ['argo_3718',['argo',['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.html new file mode 100644 index 000000000..09422e1e5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.js new file mode 100644 index 000000000..9f5b65adc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['recoversavedstate_4090',['recoverSavedState',['../classIRCoolixAC.html#a134cb36681c3fab53074b402bba0a45c',1,'IRCoolixAC']]], + ['reset_4091',['reset',['../classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a',1,'IRtimer::reset()'],['../classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b',1,'TimerMs::reset()']]], + ['resultactostring_4092',['resultAcToString',['../namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3',1,'IRAcUtils']]], + ['resulttohexidecimal_4093',['resultToHexidecimal',['../IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp'],['../IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp']]], + ['resulttohumanreadablebasic_4094',['resultToHumanReadableBasic',['../IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp']]], + ['resulttorawarray_4095',['resultToRawArray',['../IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp'],['../IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp']]], + ['resulttosourcecode_4096',['resultToSourceCode',['../IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp']]], + ['resulttotiminginfo_4097',['resultToTimingInfo',['../IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp']]], + ['resume_4098',['resume',['../classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e',1,'IRrecv']]], + ['reversebits_4099',['reverseBits',['../IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.html new file mode 100644 index 000000000..1cde7b49e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.js new file mode 100644 index 000000000..a8ba75f82 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_11.js @@ -0,0 +1,218 @@ +var searchData= +[ + ['samsung_4100',['samsung',['../classIRac.html#a619c659a11c258ea9623eaa37689ba4c',1,'IRac']]], + ['send_4101',['send',['../classIRAmcorAc.html#a4fa894c01a8baabfeadb39634a850fd9',1,'IRAmcorAc::send()'],['../classIRArgoAC.html#a0e4793a4f6fc537ec1450f5a42206dae',1,'IRArgoAC::send()'],['../classIRCarrierAc64.html#aace8aa2d125c6e80bcdd6d96eac722c2',1,'IRCarrierAc64::send()'],['../classIRCoolixAC.html#aaaa681d6cfcf04d110b913e8bb27a53c',1,'IRCoolixAC::send()'],['../classIRCoronaAc.html#aa0c8a1ef4473a3c7d02e1a04c7678fa6',1,'IRCoronaAc::send()'],['../classIRDaikinESP.html#a9f0d2641b54e97da943fceb0ba3f67eb',1,'IRDaikinESP::send()'],['../classIRDaikin2.html#aae2db88038d8d02617f16588e6a82b64',1,'IRDaikin2::send()'],['../classIRDaikin216.html#ab1061620f838cf7774c16c593b4ada8c',1,'IRDaikin216::send()'],['../classIRDaikin160.html#a0e1c74070c03be02e40fdd05ed56465c',1,'IRDaikin160::send()'],['../classIRDaikin176.html#affd71592fa8ed05816d94edbf94d2c0a',1,'IRDaikin176::send()'],['../classIRDaikin128.html#aae7fec91ad2265e8b0378c6b99379e89',1,'IRDaikin128::send()'],['../classIRDaikin152.html#a205de6821effc077f51d941d369791e4',1,'IRDaikin152::send()'],['../classIRDaikin64.html#a904eec38045d9ddc8a97ab33c8a2ac4d',1,'IRDaikin64::send()'],['../classIRDelonghiAc.html#afba831b6884771b84bab684732e0f4f5',1,'IRDelonghiAc::send()'],['../classIRElectraAc.html#a30170a65de1161e26daeddf694f8afdb',1,'IRElectraAc::send()'],['../classIRFujitsuAC.html#a1f1aa593cc4503d14c0fbea5cd9823a1',1,'IRFujitsuAC::send()'],['../classIRGoodweatherAc.html#abcc3c9d9b0912b09d3c0b0c1affb8cc8',1,'IRGoodweatherAc::send()'],['../classIRGreeAC.html#a9823578040c2d15e2b3e8e3a17a9e220',1,'IRGreeAC::send()'],['../classIRHaierAC.html#a9fe53d04965efca6daf234f20d20eb5a',1,'IRHaierAC::send()'],['../classIRHaierACYRW02.html#a65a5d5840dddac505b009e899a0dada7',1,'IRHaierACYRW02::send()'],['../classIRHitachiAc.html#afc53e562370bbaba8b5dda26a62de427',1,'IRHitachiAc::send()'],['../classIRHitachiAc1.html#aafad51c226066b8697cf00661ef38d99',1,'IRHitachiAc1::send()'],['../classIRHitachiAc424.html#adf15121bb329e1bb061f9e5efb848764',1,'IRHitachiAc424::send()'],['../classIRHitachiAc3.html#ab95fd527a4841c44d6e91c8b4afee8b4',1,'IRHitachiAc3::send()'],['../classIRHitachiAc344.html#ae9b33c0adfc1506b1d9ede1e3285c3e3',1,'IRHitachiAc344::send()'],['../classIRKelvinatorAC.html#aa55fbfefbaca1acf5bc9ba796bea8464',1,'IRKelvinatorAC::send()'],['../classIRLgAc.html#aea85c840161b48f2e8d31e7e6e7da532',1,'IRLgAc::send()'],['../classIRMideaAC.html#af66b9f76ad794450a0a7eace4bb59300',1,'IRMideaAC::send()'],['../classIRMitsubishiAC.html#a2467ad33d88af8f6244e7cd0620e012e',1,'IRMitsubishiAC::send()'],['../classIRMitsubishi136.html#a41295e551acf428e76b9b404af2381ad',1,'IRMitsubishi136::send()'],['../classIRMitsubishi112.html#a8f813da813b1a281654147ada2e63eba',1,'IRMitsubishi112::send()'],['../classIRMitsubishiHeavy152Ac.html#acc53c5c136c6987c420d48bddcf9b2da',1,'IRMitsubishiHeavy152Ac::send()'],['../classIRMitsubishiHeavy88Ac.html#a707cb3ec3e3c18bedeb12205580d5048',1,'IRMitsubishiHeavy88Ac::send()'],['../classIRNeoclimaAc.html#a2220bbb1d928b8f6490cd43b702ef430',1,'IRNeoclimaAc::send()'],['../classIRPanasonicAc.html#a778420ebe52aa6422ba5633ce91676df',1,'IRPanasonicAc::send()'],['../classIRSamsungAc.html#a8128429fcb1828a049784d832cafc9fe',1,'IRSamsungAc::send()'],['../classIRSharpAc.html#a829872744bf9fef51dccd89584ddffe6',1,'IRSharpAc::send()'],['../classIRTcl112Ac.html#a9aa8c67e167a3d241157306d0668ff15',1,'IRTcl112Ac::send()'],['../classIRTecoAc.html#ad5785e93e8c0c95a8618b0e371adaa79',1,'IRTecoAc::send()'],['../classIRToshibaAC.html#a14b155d3a20fb9c127eb7f3fe1fd16cd',1,'IRToshibaAC::send()'],['../classIRTrotecESP.html#add228d50195d7b9b43346a90bf959512',1,'IRTrotecESP::send()'],['../classIRVestelAc.html#a606497754b381e70d13ddef5643c9d0b',1,'IRVestelAc::send()'],['../classIRWhirlpoolAc.html#a0c043b3d7cc993940941351e6c63b5cc',1,'IRWhirlpoolAc::send()'],['../classIRsend.html#a204eedc3ad182fb2f40c42ef58f78cfc',1,'IRsend::send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)'],['../classIRsend.html#ac684c209ea8722f0a377070752df0040',1,'IRsend::send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes)']]], + ['sendac_4102',['sendAc',['../classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130',1,'IRac::sendAc(void)'],['../classIRac.html#aa33c42968acafc5cf479574483f94ea9',1,'IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)'],['../classIRac.html#ad60fbe1488efe2d02307d81b090b3b72',1,'IRac::sendAc(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=-1, const int16_t clock=-1)']]], + ['sendairwell_4103',['sendAirwell',['../classIRsend.html#a5b180d3845b45af38a19b72e6fa8e0c0',1,'IRsend']]], + ['sendaiwarct501_4104',['sendAiwaRCT501',['../classIRsend.html#ad39a4b13ad2e8500c95db49265e7c771',1,'IRsend']]], + ['sendamcor_4105',['sendAmcor',['../classIRsend.html#acd64b100eb155f90451d467188a83e92',1,'IRsend']]], + ['sendargo_4106',['sendArgo',['../classIRsend.html#a59668b767e4ad4966fe0bc259c3bd34f',1,'IRsend']]], + ['sendcarrierac_4107',['sendCarrierAC',['../classIRsend.html#a9e859a8b5eaea2e64978c8f93b78d159',1,'IRsend']]], + ['sendcarrierac40_4108',['sendCarrierAC40',['../classIRsend.html#a4342b775777d2ff9371f48aa39ad9b69',1,'IRsend']]], + ['sendcarrierac64_4109',['sendCarrierAC64',['../classIRsend.html#abf755688d87fcef5aee86c6a2c89e7c4',1,'IRsend']]], + ['sendcoolix_4110',['sendCOOLIX',['../classIRsend.html#a088af5f0d76965c61fe5716f7b8f2b61',1,'IRsend']]], + ['sendcoronaac_4111',['sendCoronaAc',['../classIRsend.html#a81f82b8248b324799a48a7685d62aaa5',1,'IRsend']]], + ['senddaikin_4112',['sendDaikin',['../classIRsend.html#a3010546144b5ca3b3c94f5881050dbd0',1,'IRsend']]], + ['senddaikin128_4113',['sendDaikin128',['../classIRsend.html#a72a41a704d48750c144c6467ae9a1430',1,'IRsend']]], + ['senddaikin152_4114',['sendDaikin152',['../classIRsend.html#a4ad420eb86e0ae38b12e983f7eaa912c',1,'IRsend']]], + ['senddaikin160_4115',['sendDaikin160',['../classIRsend.html#ab144a86def38f9f5c98701742683c004',1,'IRsend']]], + ['senddaikin176_4116',['sendDaikin176',['../classIRsend.html#ac4b5bcb95d3aff70b2f84074177e9e92',1,'IRsend']]], + ['senddaikin2_4117',['sendDaikin2',['../classIRsend.html#a34262e579cbb6634459bc09c5b15dfa0',1,'IRsend']]], + ['senddaikin216_4118',['sendDaikin216',['../classIRsend.html#aa99bfdaa71ff5bf088faaa17d304f45d',1,'IRsend']]], + ['senddaikin64_4119',['sendDaikin64',['../classIRsend.html#aa403d2192a6eb57910e6f84695475b27',1,'IRsend']]], + ['senddata_4120',['sendData',['../classIRsend.html#a4f8cd77dab7ce6c406029fe87674858f',1,'IRsend']]], + ['senddelonghiac_4121',['sendDelonghiAc',['../classIRsend.html#a35dc18f9abbffa8da40816a8a9df1093',1,'IRsend']]], + ['senddenon_4122',['sendDenon',['../classIRsend.html#a2618e000bf91cf1585329308a078653a',1,'IRsend']]], + ['senddish_4123',['sendDISH',['../classIRsend.html#ac7a72d61af219d983409911bdc1769b8',1,'IRsend']]], + ['senddoshisha_4124',['sendDoshisha',['../classIRsend.html#a3a9a8247e470975137b37f474bb97639',1,'IRsend']]], + ['sendelectraac_4125',['sendElectraAC',['../classIRsend.html#a52526c4e7bc4402e57ecf81e0047d49c',1,'IRsend']]], + ['sendepson_4126',['sendEpson',['../classIRsend.html#a063168fd82f6a88cca7253b42b9c0b28',1,'IRsend']]], + ['sendextended_4127',['sendExtended',['../classIRSamsungAc.html#a16a8dbd8f3fd34a6e681125b276acfd9',1,'IRSamsungAc']]], + ['sendfujitsuac_4128',['sendFujitsuAC',['../classIRsend.html#a1a3d3f83d0b7a59ff5510b038f658eb6',1,'IRsend']]], + ['sendgc_4129',['sendGC',['../classIRsend.html#acf987a501326d9c945cd8dbeb0806e17',1,'IRsend']]], + ['sendgeneric_4130',['sendGeneric',['../classIRsend.html#a5215fd797dfd490816f31bb99b38c273',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#aaace48306af9c020c18848db1a05e641',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#a4f5ad649827692b4b42d15b45c7f684b',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)']]], + ['sendgicable_4131',['sendGICable',['../classIRsend.html#a61dd16bc150473bbfd998dada72b205f',1,'IRsend']]], + ['sendgoodweather_4132',['sendGoodweather',['../classIRsend.html#a8e2d98ae5c39ee07a61f08facecbaa1e',1,'IRsend']]], + ['sendgree_4133',['sendGree',['../classIRsend.html#aca81ea348ceb6b0c9e62073b57bc0b17',1,'IRsend::sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)'],['../classIRsend.html#af788e7d9a2ad2483313434f9b5196753',1,'IRsend::sendGree(const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)']]], + ['sendhaierac_4134',['sendHaierAC',['../classIRsend.html#a6b4b9144d56dda302f5b321f1c5017ff',1,'IRsend']]], + ['sendhaieracyrw02_4135',['sendHaierACYRW02',['../classIRsend.html#a6aa1c1a6880872c87a46e4e0ead5d9b0',1,'IRsend']]], + ['sendhitachiac_4136',['sendHitachiAC',['../classIRsend.html#a8e6079b8b1b69ad7d7f8d05c492becbe',1,'IRsend']]], + ['sendhitachiac1_4137',['sendHitachiAC1',['../classIRsend.html#a5be9a87ce052e4f056766919247e0b22',1,'IRsend']]], + ['sendhitachiac2_4138',['sendHitachiAC2',['../classIRsend.html#a451b1913608a4ba8c26d9af8c85d16f1',1,'IRsend']]], + ['sendhitachiac3_4139',['sendHitachiAc3',['../classIRsend.html#aec7e67f4292622521b5a0a8cfdd21d84',1,'IRsend']]], + ['sendhitachiac344_4140',['sendHitachiAc344',['../classIRsend.html#a5fb28d54f2832651d992450673d05c01',1,'IRsend']]], + ['sendhitachiac424_4141',['sendHitachiAc424',['../classIRsend.html#a2a9676de30bb868b313cc9c30025f790',1,'IRsend']]], + ['sendinax_4142',['sendInax',['../classIRsend.html#a5fa5ff62276d9d680fb1255cc8b99eec',1,'IRsend']]], + ['sendjvc_4143',['sendJVC',['../classIRsend.html#aaa10c899768a5b4cdb1a7913d06141ca',1,'IRsend']]], + ['sendkelvinator_4144',['sendKelvinator',['../classIRsend.html#a8cba9df982fc91f895196d61d2e65b0e',1,'IRsend']]], + ['sendlasertag_4145',['sendLasertag',['../classIRsend.html#a55a79f9727590044751f291a4df83892',1,'IRsend']]], + ['sendlegopf_4146',['sendLegoPf',['../classIRsend.html#a4e38273aeacf01873a013c02d41a44e4',1,'IRsend']]], + ['sendlg_4147',['sendLG',['../classIRsend.html#a079a84c82f360d6d55fde5c27634f51c',1,'IRsend']]], + ['sendlg2_4148',['sendLG2',['../classIRsend.html#a5b6be1ceac8a4bc4ef55dc12eb060531',1,'IRsend']]], + ['sendlutron_4149',['sendLutron',['../classIRsend.html#a85f2a98255d3af7b7407c082ea7b7c16',1,'IRsend']]], + ['sendmagiquest_4150',['sendMagiQuest',['../classIRsend.html#af1d0e9ec0f735fc5fb9011d4f4cb8327',1,'IRsend']]], + ['sendmanchester_4151',['sendManchester',['../classIRsend.html#a7862231cbb1d50f42996c25e2f05b93e',1,'IRsend']]], + ['sendmanchesterdata_4152',['sendManchesterData',['../classIRsend.html#aa76aa33785827c1278eb57d1c15236f8',1,'IRsend']]], + ['sendmidea_4153',['sendMidea',['../classIRsend.html#a37d91b3a77b36509abdc53e2fec20a67',1,'IRsend']]], + ['sendmidea24_4154',['sendMidea24',['../classIRsend.html#a103d79e8df7954e9ab6284fa9f3daf02',1,'IRsend']]], + ['sendmitsubishi_4155',['sendMitsubishi',['../classIRsend.html#a59e8941a25c5c0bbc839fba5b1a22813',1,'IRsend']]], + ['sendmitsubishi112_4156',['sendMitsubishi112',['../classIRsend.html#a0a55e688c6aad015494168f25eb337b5',1,'IRsend']]], + ['sendmitsubishi136_4157',['sendMitsubishi136',['../classIRsend.html#a988a8b7dda3563977d537d6ac448ebc8',1,'IRsend']]], + ['sendmitsubishi2_4158',['sendMitsubishi2',['../classIRsend.html#ac54e50a6819f5c39e060891f1f6ea0f2',1,'IRsend']]], + ['sendmitsubishiac_4159',['sendMitsubishiAC',['../classIRsend.html#a3600527a82f9f22387c9f16ae51fb06f',1,'IRsend']]], + ['sendmitsubishiheavy152_4160',['sendMitsubishiHeavy152',['../classIRsend.html#ae1cffc4882c63f192c231397d19a4032',1,'IRsend']]], + ['sendmitsubishiheavy88_4161',['sendMitsubishiHeavy88',['../classIRsend.html#afaf4fd0c3dabd1bd6f8fe421294c5063',1,'IRsend']]], + ['sendmultibrackets_4162',['sendMultibrackets',['../classIRsend.html#a9026d42480b85270e560e122b8be3b6c',1,'IRsend']]], + ['sendmwm_4163',['sendMWM',['../classIRsend.html#a98301801daf929ec8ce022987ae394f2',1,'IRsend']]], + ['sendnec_4164',['sendNEC',['../classIRsend.html#a324c9e455c0bae51ebe9bc07e915c043',1,'IRsend']]], + ['sendneoclima_4165',['sendNeoclima',['../classIRsend.html#a71e1b5e780851210465bbf061b9c095b',1,'IRsend']]], + ['sendnikai_4166',['sendNikai',['../classIRsend.html#a693e6616b81509cf27d1345c140acc96',1,'IRsend']]], + ['sendoff_4167',['sendOff',['../classIRSamsungAc.html#a96e2ae87f3ffcf1ad812f256f31e4898',1,'IRSamsungAc']]], + ['sendon_4168',['sendOn',['../classIRSamsungAc.html#a7e6980c829dfd143d4d19abaf5d65678',1,'IRSamsungAc']]], + ['sendpanasonic_4169',['sendPanasonic',['../classIRsend.html#a92192475f89b19cfdf7fd0416a263145',1,'IRsend']]], + ['sendpanasonic64_4170',['sendPanasonic64',['../classIRsend.html#adc4fd287f3546f7ff0b67e177a42b560',1,'IRsend']]], + ['sendpanasonicac_4171',['sendPanasonicAC',['../classIRsend.html#a10a3c387a328dbb11733a251f4db7614',1,'IRsend']]], + ['sendpioneer_4172',['sendPioneer',['../classIRsend.html#a11f099f3768a659d1f996589cea8a313',1,'IRsend']]], + ['sendpronto_4173',['sendPronto',['../classIRsend.html#a0b349351e2ba19f87e6b01cde7e67c49',1,'IRsend']]], + ['sendraw_4174',['sendRaw',['../classIRsend.html#a2b9b84f828918f933bd1764d113b53f8',1,'IRsend']]], + ['sendrc5_4175',['sendRC5',['../classIRsend.html#a2bd2ccb27ecd57e14b36f76d82af308a',1,'IRsend']]], + ['sendrc6_4176',['sendRC6',['../classIRsend.html#a2192a95e0d162f9b1775fc2a47f65c37',1,'IRsend']]], + ['sendrcmm_4177',['sendRCMM',['../classIRsend.html#a3cafe475a58234a0d3aa655a2464be75',1,'IRsend']]], + ['sendsamsung_4178',['sendSAMSUNG',['../classIRsend.html#a5252dd159aad713c099de6728ac56d81',1,'IRsend']]], + ['sendsamsung36_4179',['sendSamsung36',['../classIRsend.html#ab5dcd4ec5ddb0b0351870ddf54e5ba66',1,'IRsend']]], + ['sendsamsungac_4180',['sendSamsungAC',['../classIRsend.html#a2773d251da1d35b964810c8cc4cb438b',1,'IRsend']]], + ['sendsanyolc7461_4181',['sendSanyoLC7461',['../classIRsend.html#aa23e51a97a0ec1907d22623fed6dd223',1,'IRsend']]], + ['sendsharp_4182',['sendSharp',['../classIRsend.html#a801ae78ac5a72116c566c4ac5f99c6bd',1,'IRsend']]], + ['sendsharpac_4183',['sendSharpAc',['../classIRsend.html#a438e4c9d50e62da7d772d8d638728213',1,'IRsend']]], + ['sendsharpraw_4184',['sendSharpRaw',['../classIRsend.html#aa1f12fd537ca8c21c183ee41d17a3afc',1,'IRsend']]], + ['sendsherwood_4185',['sendSherwood',['../classIRsend.html#afb3a89acfb868c92a997a3000e70c6e8',1,'IRsend']]], + ['sendsony_4186',['sendSony',['../classIRsend.html#a02bb64503474a0841c51664cf4668d85',1,'IRsend']]], + ['sendsony38_4187',['sendSony38',['../classIRsend.html#a558442f49b32453f0fb987c29e1ec6d3',1,'IRsend']]], + ['sendsymphony_4188',['sendSymphony',['../classIRsend.html#a1f1d5a30660ab0061f64d559d4916d4e',1,'IRsend']]], + ['sendtcl112ac_4189',['sendTcl112Ac',['../classIRsend.html#a2dedce2841e4a6445a98f03393fce823',1,'IRsend']]], + ['sendteco_4190',['sendTeco',['../classIRsend.html#ac6300f977fe94119813481ba682ce33f',1,'IRsend']]], + ['sendtoshibaac_4191',['sendToshibaAC',['../classIRsend.html#a4ef8e028135536dc1f5a63be85ef7d49',1,'IRsend']]], + ['sendtrotec_4192',['sendTrotec',['../classIRsend.html#a135796327b5db127473f4d198e663c00',1,'IRsend']]], + ['sendvestelac_4193',['sendVestelAc',['../classIRsend.html#a129a40f9d344cb0fadfd4cca53ca6b44',1,'IRsend']]], + ['sendwhirlpoolac_4194',['sendWhirlpoolAC',['../classIRsend.html#aa440a50000a259072f93ad6c0e42ec22',1,'IRsend']]], + ['sendwhynter_4195',['sendWhynter',['../classIRsend.html#a07188366deed3dd902cba80a711cf220',1,'IRsend']]], + ['sendzepeal_4196',['sendZepeal',['../classIRsend.html#a9bcba8bbac41d679b5b930e67d3e1b7f',1,'IRsend']]], + ['serialprintuint64_4197',['serialPrintUint64',['../IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433',1,'serialPrintUint64(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243',1,'serialPrintUint64(uint64_t input, uint8_t base=10): IRutils.cpp']]], + ['set3d_4198',['set3D',['../classIRMitsubishiHeavy152Ac.html#ab22654d492a4b0e82efcd0c96fc9bbe3',1,'IRMitsubishiHeavy152Ac::set3D()'],['../classIRMitsubishiHeavy88Ac.html#ae0b7eac743a8de6852722f067e010ba7',1,'IRMitsubishiHeavy88Ac::set3D()']]], + ['set8cheat_4199',['set8CHeat',['../classIRNeoclimaAc.html#a3176c5fe3251bd6a31a3a0ddc2c294be',1,'IRNeoclimaAc']]], + ['setauto_4200',['setAuto',['../classIRVestelAc.html#a2509eed2e0d7b23595bbe6dd7df17d74',1,'IRVestelAc']]], + ['setbeep_4201',['setBeep',['../classIRDaikin2.html#a4c0588887a45403a0a9f2cf95f847889',1,'IRDaikin2::setBeep()'],['../classIRSamsungAc.html#a092ccbea031dd4be747076530117649d',1,'IRSamsungAc::setBeep()']]], + ['setbit_4202',['setBit',['../namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b',1,'irutils::setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size)'],['../namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c',1,'irutils::setBit(const uint8_t data, const uint8_t position, const bool on)'],['../namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220',1,'irutils::setBit(uint8_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b',1,'irutils::setBit(uint32_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487',1,'irutils::setBit(uint64_t *const data, const uint8_t position, const bool on)']]], + ['setbits_4203',['setBits',['../namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78',1,'irutils::setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)'],['../namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e',1,'irutils::setBits(uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)'],['../namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c',1,'irutils::setBits(uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)']]], + ['setboost_4204',['setBoost',['../classIRDelonghiAc.html#a827d1e43e9252657147226aa3f8e4eb8',1,'IRDelonghiAc']]], + ['setbreeze_4205',['setBreeze',['../classIRSamsungAc.html#a310a73f15a0274fbaf15b981abaae592',1,'IRSamsungAc']]], + ['setbutton_4206',['setButton',['../classIRHaierACYRW02.html#aa0f1561e2446f6231f722581f5bae34d',1,'IRHaierACYRW02::setButton()'],['../classIRHitachiAc424.html#af4ded7ea8aa94271d5135eebd3bb80a8',1,'IRHitachiAc424::setButton()'],['../classIRNeoclimaAc.html#a7e2e6e646411b4f5ea3c1ce1e944581c',1,'IRNeoclimaAc::setButton()']]], + ['setclean_4207',['setClean',['../classIRCoolixAC.html#a0087ac58749ef946632fbb5a8b41fe0d',1,'IRCoolixAC::setClean()'],['../classIRDaikin2.html#a21e09b867710a225d5cf53006f723326',1,'IRDaikin2::setClean()'],['../classIRElectraAc.html#a4aa44fc40196067469dfa8a722e33115',1,'IRElectraAc::setClean()'],['../classIRFujitsuAC.html#a7f6f18ea39bf28717cb65ff348b1b2f5',1,'IRFujitsuAC::setClean()'],['../classIRMitsubishiHeavy152Ac.html#a11678e7eb906414770938f6efce266f1',1,'IRMitsubishiHeavy152Ac::setClean()'],['../classIRMitsubishiHeavy88Ac.html#a65968304e4aaf025dfefc49d5d777cbd',1,'IRMitsubishiHeavy88Ac::setClean()'],['../classIRSamsungAc.html#a911ca57dfb0e6787cba330e8d49b2496',1,'IRSamsungAc::setClean()'],['../classIRSharpAc.html#ace6e7b98496a594031809fe8a535c429',1,'IRSharpAc::setClean()']]], + ['setclock_4208',['setClock',['../classIRDaikin128.html#aa9928ac010ec79ddab4f551eedf2f5d9',1,'IRDaikin128::setClock()'],['../classIRDaikin64.html#a655f1cec5e28f79e5718573678c535ec',1,'IRDaikin64::setClock()'],['../classIRMitsubishiAC.html#a7abe34adf36bdd1a65a17f56ee8af1f6',1,'IRMitsubishiAC::setClock()'],['../classIRPanasonicAc.html#a3f76c6aca94f52c227c2e259512fd101',1,'IRPanasonicAc::setClock()'],['../classIRWhirlpoolAc.html#aab09aae7de733414bf480c3df22b83f8',1,'IRWhirlpoolAc::setClock()']]], + ['setcmd_4209',['setCmd',['../classIRFujitsuAC.html#a7579944c11b3d31bb069303926307617',1,'IRFujitsuAC']]], + ['setcomfort_4210',['setComfort',['../classIRDaikinESP.html#aaa15c0be7ffb8e845a03d193583a58d1',1,'IRDaikinESP::setComfort()'],['../classIRDaikin152.html#a95de2dc0a90fe4212cb60973b9430486',1,'IRDaikin152::setComfort()']]], + ['setcommand_4211',['setCommand',['../classIRGoodweatherAc.html#a4e266f42b7a82c49208e2acc7813e07b',1,'IRGoodweatherAc::setCommand()'],['../classIRHaierAC.html#ade34c951e72a794c2ff7fa0d1595d68f',1,'IRHaierAC::setCommand()'],['../classIRWhirlpoolAc.html#aaea26b1388489dff70a98fde1e6185be',1,'IRWhirlpoolAc::setCommand()']]], + ['setcurrentday_4212',['setCurrentDay',['../classIRDaikinESP.html#a5465b9857fd73b82362f766368717d16',1,'IRDaikinESP']]], + ['setcurrenttime_4213',['setCurrentTime',['../classIRDaikinESP.html#ae6559268982ae0968358a885c7dbba6e',1,'IRDaikinESP::setCurrentTime()'],['../classIRDaikin2.html#a8b32b1b9a87c9b671af6aeedb709d520',1,'IRDaikin2::setCurrentTime()']]], + ['setcurrtime_4214',['setCurrTime',['../classIRHaierAC.html#a53500ebdec058d27396e5906a572fe15',1,'IRHaierAC']]], + ['setdisplay_4215',['setDisplay',['../classIRSamsungAc.html#ad20199bed3a01208ec694b9d4eb7ef98',1,'IRSamsungAc']]], + ['setdisplaytempsource_4216',['setDisplayTempSource',['../classIRGreeAC.html#a1d073c31ea169d0e5cf33c8592982035',1,'IRGreeAC']]], + ['setecono_4217',['setEcono',['../classIRCoronaAc.html#abb5624317fff60674bed410be3a3fa52',1,'IRCoronaAc::setEcono()'],['../classIRDaikinESP.html#a12129aedd6320522a9b6e811e347089c',1,'IRDaikinESP::setEcono()'],['../classIRDaikin2.html#a42a44a6cefa6bf6f45148d39c216ebc0',1,'IRDaikin2::setEcono()'],['../classIRDaikin128.html#a07fb5289ee476e0335fec4845254b7ce',1,'IRDaikin128::setEcono()'],['../classIRDaikin152.html#a8062d16f7aefb7586e3d3bdfea8755b4',1,'IRDaikin152::setEcono()'],['../classIRMitsubishiHeavy152Ac.html#ab3964219ee3c0c5112bb38c892a01784',1,'IRMitsubishiHeavy152Ac::setEcono()'],['../classIRMitsubishiHeavy88Ac.html#a7612448f1cceaa6aeee1697f51adaf43',1,'IRMitsubishiHeavy88Ac::setEcono()'],['../classIRTcl112Ac.html#a48ac7acfa8fed8e9da39907282f4f377',1,'IRTcl112Ac::setEcono()']]], + ['seteconotoggle_4218',['setEconoToggle',['../classIRSharpAc.html#ae3495676b8bffecba5c56fbf1ab9ee4d',1,'IRSharpAc']]], + ['seteye_4219',['setEye',['../classIRDaikin2.html#a5ba8e5d5dd4aba45a90de1d450a7a88b',1,'IRDaikin2::setEye()'],['../classIRNeoclimaAc.html#aaf433cab785db382c55a420e68e7d7ec',1,'IRNeoclimaAc::setEye()']]], + ['seteyeauto_4220',['setEyeAuto',['../classIRDaikin2.html#a975c2fdb261d6d2b6c8e196fbd074899',1,'IRDaikin2']]], + ['setfan_4221',['setFan',['../classIRAmcorAc.html#acf26fc65363e2734e4dc6eb562812553',1,'IRAmcorAc::setFan()'],['../classIRArgoAC.html#a8144f003628e128ec6630aef49ed5cb5',1,'IRArgoAC::setFan()'],['../classIRCarrierAc64.html#a312027468b508e9d38dd9e23ee99f9e4',1,'IRCarrierAc64::setFan()'],['../classIRCoolixAC.html#aff4189cb1000c6db7d88624fbadbe0cb',1,'IRCoolixAC::setFan()'],['../classIRCoronaAc.html#aa4da12502bf85438846bdde56391ee5c',1,'IRCoronaAc::setFan()'],['../classIRDaikinESP.html#a1f191f45e473482a86aad9a1c879e083',1,'IRDaikinESP::setFan()'],['../classIRDaikin2.html#af9f3ddbdd1f1d5d99c84846b73c5daa1',1,'IRDaikin2::setFan()'],['../classIRDaikin216.html#a8fadfb1e61deca74a2d1b9c1d5ae62e1',1,'IRDaikin216::setFan()'],['../classIRDaikin160.html#a7f507c64dc7a9fa1e9391e9e8473af1b',1,'IRDaikin160::setFan()'],['../classIRDaikin176.html#a050a9943dc7d8289472e6b9dbdcb06c1',1,'IRDaikin176::setFan()'],['../classIRDaikin128.html#a0495834250e97e7831e9906ab548fe44',1,'IRDaikin128::setFan()'],['../classIRDaikin152.html#a385a4f65dfccd0a9e94be06ae60c5343',1,'IRDaikin152::setFan()'],['../classIRDaikin64.html#af39206f90b99fd5ee340923b196368b8',1,'IRDaikin64::setFan()'],['../classIRDelonghiAc.html#a440f1e0efa18c6b1a8e18e0a97fbfb79',1,'IRDelonghiAc::setFan()'],['../classIRElectraAc.html#aa338ce18cafaf9c7b9aa3385e681bbe7',1,'IRElectraAc::setFan()'],['../classIRGoodweatherAc.html#af8cf9ba59af548677e586cd59e8a6cc2',1,'IRGoodweatherAc::setFan()'],['../classIRGreeAC.html#a9bb570e71df5002298505d49473e6bac',1,'IRGreeAC::setFan()'],['../classIRHaierAC.html#a42ee1c5889f07bf7615c8f853bca2261',1,'IRHaierAC::setFan()'],['../classIRHaierACYRW02.html#ae9c3a7bffc08d9d5204616823f709889',1,'IRHaierACYRW02::setFan()'],['../classIRHitachiAc.html#a0760b07502b976880ee8499dc6fa61ff',1,'IRHitachiAc::setFan()'],['../classIRHitachiAc1.html#a7294dc1324877d4a64f7b4373d97d745',1,'IRHitachiAc1::setFan()'],['../classIRHitachiAc424.html#afd69bcff56224f39af92fc2d334b67bb',1,'IRHitachiAc424::setFan()'],['../classIRKelvinatorAC.html#af08e94be9699983c0087c9b059aad319',1,'IRKelvinatorAC::setFan()'],['../classIRLgAc.html#a0f1901a21ffb93641d3481417d74bb4e',1,'IRLgAc::setFan()'],['../classIRMideaAC.html#a546eeca4eea015899a5ad9f5d1c6fafb',1,'IRMideaAC::setFan()'],['../classIRMitsubishiAC.html#a4e88e50b2eddd0233aade5c1bf7819f1',1,'IRMitsubishiAC::setFan()'],['../classIRMitsubishi136.html#a2aa62126614f734ec3d1b7b3cb653e9e',1,'IRMitsubishi136::setFan()'],['../classIRMitsubishi112.html#ab681e78572c869a8c57079a660fe1505',1,'IRMitsubishi112::setFan()'],['../classIRMitsubishiHeavy152Ac.html#ac8d8eceba935aa626cb229d1c41081bb',1,'IRMitsubishiHeavy152Ac::setFan()'],['../classIRMitsubishiHeavy88Ac.html#a4f8c934a82091547c36da512329e76d7',1,'IRMitsubishiHeavy88Ac::setFan()'],['../classIRNeoclimaAc.html#a8db9d2d446e8614b2fc4583a454d7cee',1,'IRNeoclimaAc::setFan()'],['../classIRPanasonicAc.html#a8d77292226f55601c30ee53252ba83cd',1,'IRPanasonicAc::setFan()'],['../classIRSamsungAc.html#a6c7571e14fe6629348273a2b49a0a824',1,'IRSamsungAc::setFan()'],['../classIRSharpAc.html#a5138068f8ba4c51939ff3bb14f0aae45',1,'IRSharpAc::setFan()'],['../classIRTcl112Ac.html#a0dab8ad6675c4ec122d0d7e28a557cba',1,'IRTcl112Ac::setFan()'],['../classIRTecoAc.html#afda9a33ca450568f968217bedc9ad7f2',1,'IRTecoAc::setFan()'],['../classIRToshibaAC.html#a020ba3e95c607f52ce091193fc5825fc',1,'IRToshibaAC::setFan()'],['../classIRVestelAc.html#af53dfd0a0372c878b6ba2ca1cfc21ccd',1,'IRVestelAc::setFan()'],['../classIRWhirlpoolAc.html#a8da28ee25fdc91d55a9f6ab5dab3af81',1,'IRWhirlpoolAc::setFan()']]], + ['setfanspeed_4222',['setFanSpeed',['../classIRFujitsuAC.html#af0fc10ec0a606434477cb41c60eb49e5',1,'IRFujitsuAC']]], + ['setfilter_4223',['setFilter',['../classIRFujitsuAC.html#aec0048efe87f60406c76ad6bc3ffbc61',1,'IRFujitsuAC::setFilter()'],['../classIRMitsubishiHeavy152Ac.html#aaf76ac48228d3a7b8490e684407e65b1',1,'IRMitsubishiHeavy152Ac::setFilter()']]], + ['setflap_4224',['setFlap',['../classIRArgoAC.html#a55a6402ffc3fe7fb59775050901416ca',1,'IRArgoAC']]], + ['setfresh_4225',['setFresh',['../classIRNeoclimaAc.html#a6354d8b902ffc1e7c044a61185504404',1,'IRNeoclimaAc']]], + ['setfreshair_4226',['setFreshAir',['../classIRDaikin2.html#a6e0596c7b9f9b43b8d241340ae08e886',1,'IRDaikin2']]], + ['setfreshairhigh_4227',['setFreshAirHigh',['../classIRDaikin2.html#a044471f2298a1942bcc2f859f9459924',1,'IRDaikin2']]], + ['sethealth_4228',['setHealth',['../classIRHaierAC.html#a48c9ae91809d63156eeb3889f2e908f4',1,'IRHaierAC::setHealth()'],['../classIRHaierACYRW02.html#a79673650a2285f029a35ab69edeb0e74',1,'IRHaierACYRW02::setHealth()'],['../classIRTcl112Ac.html#a28ed509977d8642174bc6c9aa97ae1c3',1,'IRTcl112Ac::setHealth()']]], + ['sethold_4229',['setHold',['../classIRNeoclimaAc.html#a2eb4e0a2ff39ceb1b6b571998d91b31e',1,'IRNeoclimaAc']]], + ['sethumid_4230',['setHumid',['../classIRTecoAc.html#a4ab07a7c95f34d3b292926c719aeb303',1,'IRTecoAc']]], + ['setifeel_4231',['setIFeel',['../classIRGreeAC.html#a68a670156a5e0a91a8a3cf9225263e0b',1,'IRGreeAC::setIFeel()'],['../classIRArgoAC.html#ae59f903855961441b676b7f662602554',1,'IRArgoAC::setiFeel()']]], + ['setinvertedstates_4232',['setInvertedStates',['../classIRHitachiAc424.html#ad18528cf83e863b98cb1609eec970ac5',1,'IRHitachiAc424::setInvertedStates()'],['../classIRHitachiAc3.html#af37c710449cd32df4753509749e31cad',1,'IRHitachiAc3::setInvertedStates()']]], + ['setion_4233',['setIon',['../classIRNeoclimaAc.html#a504fc5e371746fda8e7eb7cc0abf137a',1,'IRNeoclimaAc::setIon()'],['../classIRPanasonicAc.html#a5a1c4f5b9eb7a3a1a81a6acd0491c3cd',1,'IRPanasonicAc::setIon()'],['../classIRSamsungAc.html#aeee65ca6d2100635a517077f01053bed',1,'IRSamsungAc::setIon()'],['../classIRSharpAc.html#af6a390362bc5b40eecc6564b16b3379b',1,'IRSharpAc::setIon()'],['../classIRVestelAc.html#acf860da68a15d463dab437a808c9c8c6',1,'IRVestelAc::setIon()']]], + ['setionfilter_4234',['setIonFilter',['../classIRKelvinatorAC.html#a6a219c481ddc21d93028f5c799c25883',1,'IRKelvinatorAC']]], + ['setled_4235',['setLed',['../classIRCoolixAC.html#a3132f99cffa108129dff64a0b68bd614',1,'IRCoolixAC']]], + ['setlight_4236',['setLight',['../classIRDaikin2.html#a7ecadb3335e9b22729a89b4c41456242',1,'IRDaikin2::setLight()'],['../classIRGoodweatherAc.html#a3f149ff426b236ba9f90659a6daf4a9c',1,'IRGoodweatherAc::setLight()'],['../classIRGreeAC.html#a702bbba38e11bb8f3428ee707fc82311',1,'IRGreeAC::setLight()'],['../classIRKelvinatorAC.html#a870890c2bc8510f8f7351ca21db8d855',1,'IRKelvinatorAC::setLight()'],['../classIRNeoclimaAc.html#a1d7a6ec6d319544bee907a23a1d14084',1,'IRNeoclimaAc::setLight()'],['../classIRTcl112Ac.html#a7dec5b0559f996df8a4fc259ab6012e9',1,'IRTcl112Ac::setLight()'],['../classIRTecoAc.html#a25d97c1e7be31d80a4ffad0026e633d7',1,'IRTecoAc::setLight()'],['../classIRWhirlpoolAc.html#a70b4c0467a7747f9cf9e106af1025771',1,'IRWhirlpoolAc::setLight()']]], + ['setlighttoggle_4237',['setLightToggle',['../classIRDaikin128.html#a6361c789141ccecb729c104e71ddcc41',1,'IRDaikin128::setLightToggle()'],['../classIRElectraAc.html#a15373982641e36f4b68258368700be7d',1,'IRElectraAc::setLightToggle()']]], + ['setmax_4238',['setMax',['../classIRAmcorAc.html#a1250c6b106378286d9db013296c9b16f',1,'IRAmcorAc::setMax()'],['../classIRArgoAC.html#a909c1f74e9452d0e19fc3ffd28b1b81b',1,'IRArgoAC::setMax()']]], + ['setmode_4239',['setMode',['../classIRAmcorAc.html#afa9c2d080ed5c4c7bc64eb13a07eab68',1,'IRAmcorAc::setMode()'],['../classIRArgoAC.html#a8575f0ef967b09308ed6a453857e65c7',1,'IRArgoAC::setMode()'],['../classIRCarrierAc64.html#ae462eeec49ff91358f1b9921750ee36d',1,'IRCarrierAc64::setMode()'],['../classIRCoolixAC.html#a5c0094d32aca6a5323f4dc72a03f02e9',1,'IRCoolixAC::setMode()'],['../classIRCoronaAc.html#aedeeedd176c89e5b7b650a4311e712be',1,'IRCoronaAc::setMode()'],['../classIRDaikinESP.html#af0f463201c877d33fa8680053dda7551',1,'IRDaikinESP::setMode()'],['../classIRDaikin2.html#a24ef3b53f22fe3557ed2dbc98a5bc6d2',1,'IRDaikin2::setMode()'],['../classIRDaikin216.html#a1d0dfce75ac95df9125b2cfe7c955080',1,'IRDaikin216::setMode()'],['../classIRDaikin160.html#a48e6fff63fd8b894c649fb495a467faa',1,'IRDaikin160::setMode()'],['../classIRDaikin176.html#a7ce82479f5ae2721baae8119b711c112',1,'IRDaikin176::setMode()'],['../classIRDaikin128.html#a9693e9931449f39253ca9102ac5cbfe9',1,'IRDaikin128::setMode()'],['../classIRDaikin152.html#aad0a46c751b73792282d6614103f57d8',1,'IRDaikin152::setMode()'],['../classIRDaikin64.html#a04dff0d273457a7bc3f3e0e1af4f7cd9',1,'IRDaikin64::setMode()'],['../classIRDelonghiAc.html#a62392c26321f038a84d99d54039bcfae',1,'IRDelonghiAc::setMode()'],['../classIRElectraAc.html#a911b7410fd2f29464c1505e183c04c5d',1,'IRElectraAc::setMode()'],['../classIRFujitsuAC.html#ac125c320f9794aae931bc59ba332a4a8',1,'IRFujitsuAC::setMode()'],['../classIRGoodweatherAc.html#a8eed6b70b7b1c2e8a9620db7462e1fb5',1,'IRGoodweatherAc::setMode()'],['../classIRGreeAC.html#a9d9dbd416e3dc270fcfda620b3bb4fe2',1,'IRGreeAC::setMode()'],['../classIRHaierAC.html#a3ad0317f2fd4f57d8ce61353ab3e48c7',1,'IRHaierAC::setMode()'],['../classIRHaierACYRW02.html#ae762c5f5422b4af612fa00f7c26452ed',1,'IRHaierACYRW02::setMode()'],['../classIRHitachiAc.html#a208f73a42484a1555145b41849e8c51f',1,'IRHitachiAc::setMode()'],['../classIRHitachiAc1.html#a1f3ced601e1131b70f840820ecb3feaa',1,'IRHitachiAc1::setMode()'],['../classIRHitachiAc424.html#a373a51d207674e35e00762b057f73cd5',1,'IRHitachiAc424::setMode()'],['../classIRKelvinatorAC.html#af55cc77892bc960587037c337b90d1bc',1,'IRKelvinatorAC::setMode()'],['../classIRLgAc.html#a5e1b21d9121c6bf6507f615f470b5890',1,'IRLgAc::setMode()'],['../classIRMideaAC.html#a3b92f25a82741ae404e8f9af8dbca3a8',1,'IRMideaAC::setMode()'],['../classIRMitsubishiAC.html#a2b4e2f00ee5a385172b13e8d9858ac0b',1,'IRMitsubishiAC::setMode()'],['../classIRMitsubishi136.html#aaef2ed81bdeb183995e2342c2ca17a8b',1,'IRMitsubishi136::setMode()'],['../classIRMitsubishi112.html#a0c1434e1d8dd513007400042324e868e',1,'IRMitsubishi112::setMode()'],['../classIRMitsubishiHeavy152Ac.html#a5a68388f337d7ba80289359903a1d01d',1,'IRMitsubishiHeavy152Ac::setMode()'],['../classIRMitsubishiHeavy88Ac.html#a1802cc8a382d6161b83f8947137d941d',1,'IRMitsubishiHeavy88Ac::setMode()'],['../classIRNeoclimaAc.html#adabd715c4a2ec34dd88330b97a1f0ecd',1,'IRNeoclimaAc::setMode()'],['../classIRPanasonicAc.html#add025b64e736d5120abeb2564a2849a4',1,'IRPanasonicAc::setMode()'],['../classIRSamsungAc.html#a708d9c6c91d774d6eeadbc0bd7f350af',1,'IRSamsungAc::setMode()'],['../classIRSharpAc.html#ab51c207de90391cb7190e3ec95adc16e',1,'IRSharpAc::setMode()'],['../classIRTcl112Ac.html#a1a050c9b238691ba6d4764beeb788778',1,'IRTcl112Ac::setMode()'],['../classIRTecoAc.html#aba404540b723fa4687a4fda954221130',1,'IRTecoAc::setMode()'],['../classIRToshibaAC.html#aa001cddc464d6cbcc342e5e4c7af13ff',1,'IRToshibaAC::setMode()'],['../classIRTrotecESP.html#a5d34e8d1e1be765e51cbfb6874482997',1,'IRTrotecESP::setMode()'],['../classIRVestelAc.html#a470e14ab5623386c0fa2b02fd15ea1d8',1,'IRVestelAc::setMode()'],['../classIRWhirlpoolAc.html#ab09869929f5cc1fd0cc5dede93bba1c5',1,'IRWhirlpoolAc::setMode()']]], + ['setmodel_4240',['setModel',['../classIRFujitsuAC.html#a5393698000d8becf33ff332b32b97c73',1,'IRFujitsuAC::setModel()'],['../classIRGreeAC.html#a1075a08c30a2de97892e0842cb30e451',1,'IRGreeAC::setModel()'],['../classIRHitachiAc1.html#abb8c2c87e87f9d538f171e842c9d309a',1,'IRHitachiAc1::setModel()'],['../classIRLgAc.html#ae4b8758ecf10bd7e25ed401593692821',1,'IRLgAc::setModel()'],['../classIRPanasonicAc.html#a342531bfea3b05484de84e537bde390c',1,'IRPanasonicAc::setModel()'],['../classIRWhirlpoolAc.html#accfa1660ed792acc3cf48ff60d9570f0',1,'IRWhirlpoolAc::setModel()']]], + ['setmold_4241',['setMold',['../classIRDaikinESP.html#a1616d08c8fd3c628fc45a76c32743ac9',1,'IRDaikinESP::setMold()'],['../classIRDaikin2.html#ad53e046e545f3b6c5418dfbaf58653ca',1,'IRDaikin2::setMold()']]], + ['setnight_4242',['setNight',['../classIRArgoAC.html#a769dd3b538653940e41883848bc1e19c',1,'IRArgoAC::setNight()'],['../classIRMitsubishiHeavy152Ac.html#a6920a1aad327e2f347b09da12f11cf8c',1,'IRMitsubishiHeavy152Ac::setNight()']]], + ['setofftime_4243',['setOffTime',['../classIRDaikin64.html#a46a0b1e2438087ba557494b0b4fce4a5',1,'IRDaikin64']]], + ['setofftimeenabled_4244',['setOffTimeEnabled',['../classIRDaikin64.html#aea59ae39ddd0fc33a6941d0affceae9a',1,'IRDaikin64']]], + ['setofftimer_4245',['setOffTimer',['../classIRCarrierAc64.html#a92b1066e783db1bdffabfdc57699deef',1,'IRCarrierAc64::setOffTimer()'],['../classIRCoronaAc.html#a00f269b6389bf65d1816e80b835aa9b0',1,'IRCoronaAc::setOffTimer()'],['../classIRDaikin128.html#a30ca067676dfde963986e25c84616368',1,'IRDaikin128::setOffTimer()'],['../classIRDelonghiAc.html#a9602c652b10b06c6eeae0e6158c42c68',1,'IRDelonghiAc::setOffTimer()'],['../classIRHaierAC.html#aa16b36aa7ef07628343dbd2dfe5157a2',1,'IRHaierAC::setOffTimer()'],['../classIRHitachiAc1.html#a62e9c7b68e63d1791d79805f2bce99df',1,'IRHitachiAc1::setOffTimer()'],['../classIRPanasonicAc.html#a08e097f40cee6c614ec1a8de716222cf',1,'IRPanasonicAc::setOffTimer()'],['../classIRVestelAc.html#acc61cd785d2f668a86ecefb243d63549',1,'IRVestelAc::setOffTimer()'],['../classIRWhirlpoolAc.html#a69f3555c9b27f3cfd9167ed3239804b8',1,'IRWhirlpoolAc::setOffTimer()']]], + ['setofftimeractive_4246',['setOffTimerActive',['../classIRVestelAc.html#a8a023f5594b446f0c20f66c4ee584d8e',1,'IRVestelAc']]], + ['setofftimerenabled_4247',['setOffTimerEnabled',['../classIRDaikin128.html#aac8a178bdaf7de7a183991e710a9a9d8',1,'IRDaikin128::setOffTimerEnabled()'],['../classIRDelonghiAc.html#a5cf81c9864f3c3728d4dd65e4d9c49c8',1,'IRDelonghiAc::setOffTimerEnabled()']]], + ['setontime_4248',['setOnTime',['../classIRDaikin64.html#aaada482820a90492a933f368fafaebb7',1,'IRDaikin64']]], + ['setontimeenabled_4249',['setOnTimeEnabled',['../classIRDaikin64.html#a8e7a7c1f775f8ddf9d48a96915751c7a',1,'IRDaikin64']]], + ['setontimer_4250',['setOnTimer',['../classIRCarrierAc64.html#a9049a8d91200b878cc2a1b9b80a280ea',1,'IRCarrierAc64::setOnTimer()'],['../classIRCoronaAc.html#aae4142f45cc9c2b3e392b72cb404a2d8',1,'IRCoronaAc::setOnTimer()'],['../classIRDaikin128.html#a21773493eafae741b5716ac569eaf0a8',1,'IRDaikin128::setOnTimer()'],['../classIRDelonghiAc.html#a9a478f463a632893be7c4f5223c188ad',1,'IRDelonghiAc::setOnTimer()'],['../classIRHaierAC.html#aa5e95aa05749f6d35dd31b021fea2f5b',1,'IRHaierAC::setOnTimer()'],['../classIRHitachiAc1.html#a51ed6155f228628942ba08ea2ff5c547',1,'IRHitachiAc1::setOnTimer()'],['../classIRPanasonicAc.html#a51fdaa11e4e3f77189a94007a5acbec2',1,'IRPanasonicAc::setOnTimer()'],['../classIRVestelAc.html#af19bb7704326eb5688f2a2fa08e10ee2',1,'IRVestelAc::setOnTimer()'],['../classIRWhirlpoolAc.html#a1cb0e346e6f40b65b98a768df7fdace8',1,'IRWhirlpoolAc::setOnTimer()']]], + ['setontimeractive_4251',['setOnTimerActive',['../classIRVestelAc.html#a16ef4ecb7c76bef89b6e0ca36746d606',1,'IRVestelAc']]], + ['setontimerenabled_4252',['setOnTimerEnabled',['../classIRDaikin128.html#a07f693fac3de101c91c190e5e70edb57',1,'IRDaikin128::setOnTimerEnabled()'],['../classIRDelonghiAc.html#af6b956c273284e287093260039003362',1,'IRDelonghiAc::setOnTimerEnabled()']]], + ['setoutsidequiet_4253',['setOutsideQuiet',['../classIRFujitsuAC.html#a9a0533cba18739e52014307bf4b1ad07',1,'IRFujitsuAC']]], + ['setpower_4254',['setPower',['../classIRAmcorAc.html#a2ccfb2c2f0feb8a8cea9e10e30035988',1,'IRAmcorAc::setPower()'],['../classIRArgoAC.html#a991f73d84952c1d8ac86c579d1b01785',1,'IRArgoAC::setPower()'],['../classIRCarrierAc64.html#a8acf59cbf3b02381b5188324030b7727',1,'IRCarrierAc64::setPower()'],['../classIRCoolixAC.html#a41dc75b29e7a05eff5f16161cb9b3eeb',1,'IRCoolixAC::setPower()'],['../classIRCoronaAc.html#adc636402b51e0c78c4797aea5f80915d',1,'IRCoronaAc::setPower()'],['../classIRDaikinESP.html#aa0fb65d01bb203d17d923504ddd60984',1,'IRDaikinESP::setPower()'],['../classIRDaikin2.html#a3adfe1a80a702b7098ccd0e18225396e',1,'IRDaikin2::setPower()'],['../classIRDaikin216.html#a130a98bb2422a228977dea8a4e068ace',1,'IRDaikin216::setPower()'],['../classIRDaikin160.html#af1a800ef7494c49a868d01039f5c37e4',1,'IRDaikin160::setPower()'],['../classIRDaikin176.html#a58c755ba53d1f14a51b0c64ff4ef0669',1,'IRDaikin176::setPower()'],['../classIRDaikin152.html#a887f7340b9c3e7933f5d06bc5f59ee91',1,'IRDaikin152::setPower()'],['../classIRDelonghiAc.html#aa1ebbf63aa2331b87b95df9c5bdb41dc',1,'IRDelonghiAc::setPower()'],['../classIRElectraAc.html#abd04ffe9a77a97d4fafbcecd3a7949a4',1,'IRElectraAc::setPower()'],['../classIRFujitsuAC.html#a8d8211f20c8ec299e1fcb588a0846ac2',1,'IRFujitsuAC::setPower()'],['../classIRGoodweatherAc.html#ac49e30082777b10fe9edf6ec7bd76ea5',1,'IRGoodweatherAc::setPower()'],['../classIRGreeAC.html#a16b8c6af038752cd2b416cdcf9e2fb51',1,'IRGreeAC::setPower()'],['../classIRHaierACYRW02.html#a32e4a52cf31b43ad96ff3d8f0f390620',1,'IRHaierACYRW02::setPower()'],['../classIRHitachiAc.html#ad78a7176ded93735a296eefbf75cbc06',1,'IRHitachiAc::setPower()'],['../classIRHitachiAc1.html#a4dd034793018ea58d0cc32e7a47e8f35',1,'IRHitachiAc1::setPower()'],['../classIRHitachiAc424.html#a7b0b2e2c631d1bce2dd4677bb71e79b4',1,'IRHitachiAc424::setPower()'],['../classIRKelvinatorAC.html#a517a0193a9236a28a20d1760d7401efd',1,'IRKelvinatorAC::setPower()'],['../classIRLgAc.html#a175e6482fd1565d43906c527f911b59e',1,'IRLgAc::setPower()'],['../classIRMideaAC.html#ab8341f8d3d553d8b0ed9270cc15fc8ec',1,'IRMideaAC::setPower()'],['../classIRMitsubishiAC.html#a13f26de3c35b01470176b6fd9efda566',1,'IRMitsubishiAC::setPower()'],['../classIRMitsubishi136.html#a4bf52b3784faaca95ff97a09b8be322a',1,'IRMitsubishi136::setPower()'],['../classIRMitsubishi112.html#a0545da32a5048bc9d857ffb05767d3a6',1,'IRMitsubishi112::setPower()'],['../classIRMitsubishiHeavy152Ac.html#a08202752226ff3295eb8ccd637b0158b',1,'IRMitsubishiHeavy152Ac::setPower()'],['../classIRMitsubishiHeavy88Ac.html#ac2ee9dd82e84a3735e8a0c69e64cb02e',1,'IRMitsubishiHeavy88Ac::setPower()'],['../classIRNeoclimaAc.html#ac19bea3b79cdfc868bd137b0a70c0718',1,'IRNeoclimaAc::setPower()'],['../classIRPanasonicAc.html#ad60bf8a88d041f8e8ab3d728831ee8f3',1,'IRPanasonicAc::setPower()'],['../classIRSamsungAc.html#a4af21fa0dcbf5595386f67db676a443c',1,'IRSamsungAc::setPower()'],['../classIRSharpAc.html#a6b57a66878f125f86d2aed8bd7545000',1,'IRSharpAc::setPower()'],['../classIRTcl112Ac.html#ad2367d2481f94f14b9c4f7b378711b7e',1,'IRTcl112Ac::setPower()'],['../classIRTecoAc.html#a989e48a889b36ec36386a532c81872d9',1,'IRTecoAc::setPower()'],['../classIRToshibaAC.html#a100f01c014582e162f9fd287beb91dff',1,'IRToshibaAC::setPower()'],['../classIRTrotecESP.html#a0f3f5f5db367cb5a9adb936fada94fd5',1,'IRTrotecESP::setPower()'],['../classIRVestelAc.html#a01e06ff3916d4a14f9ca49f22918a47b',1,'IRVestelAc::setPower()']]], + ['setpowerbutton_4255',['setPowerButton',['../classIRCoronaAc.html#a518471d42a62863953c97334cad348be',1,'IRCoronaAc']]], + ['setpowerful_4256',['setPowerful',['../classIRDaikinESP.html#a4c0da54ee1639a3bf813cb3f3afee064',1,'IRDaikinESP::setPowerful()'],['../classIRDaikin2.html#a6538104cdcf1b55e480aaddd51116d9a',1,'IRDaikin2::setPowerful()'],['../classIRDaikin216.html#a5cb6e958f3b9789828738defe4d12c7b',1,'IRDaikin216::setPowerful()'],['../classIRDaikin128.html#aeb3aa5013b1746ed714146ca7f233119',1,'IRDaikin128::setPowerful()'],['../classIRDaikin152.html#a6477111b5662146e937c10cf02423e10',1,'IRDaikin152::setPowerful()'],['../classIRPanasonicAc.html#a6357688bc9cca92ab222343ee045f4f4',1,'IRPanasonicAc::setPowerful()'],['../classIRSamsungAc.html#ab657b79740e0f84c09611ea3b10d06f0',1,'IRSamsungAc::setPowerful()']]], + ['setpowerspecial_4257',['setPowerSpecial',['../classIRSharpAc.html#af7dd64c6d82a8502d2ee176f7b0f5abb',1,'IRSharpAc']]], + ['setpowertoggle_4258',['setPowerToggle',['../classIRDaikin128.html#a5d7edaa44f0c9ca55ef1040dd42e42e3',1,'IRDaikin128::setPowerToggle()'],['../classIRDaikin64.html#ac7f673619842d217d4eda893da2f35fd',1,'IRDaikin64::setPowerToggle()'],['../classIRHitachiAc1.html#ae30430edd92ec4b848c8a105a78e8068',1,'IRHitachiAc1::setPowerToggle()'],['../classIRWhirlpoolAc.html#a61bec25edce5bc244acb41f79df561e7',1,'IRWhirlpoolAc::setPowerToggle()']]], + ['setpurify_4259',['setPurify',['../classIRDaikin2.html#accd4430e998a8c9be80b5a708be9337e',1,'IRDaikin2']]], + ['setquiet_4260',['setQuiet',['../classIRDaikinESP.html#a4927eb8b2db2540efa90b37f4c3cc733',1,'IRDaikinESP::setQuiet()'],['../classIRDaikin2.html#a61ca7e72f850d0f9600fa9d8a336a8ef',1,'IRDaikin2::setQuiet()'],['../classIRDaikin216.html#a062528f54412cd3d2339c7bf82305ebb',1,'IRDaikin216::setQuiet()'],['../classIRDaikin128.html#a89c49332006831debbabbfcb5ec30249',1,'IRDaikin128::setQuiet()'],['../classIRDaikin152.html#a3aadf5f0ae11c5c6c53f351dd6b9c1a4',1,'IRDaikin152::setQuiet()'],['../classIRDaikin64.html#a7e3fb8debcefb76e76dda5612e28f377',1,'IRDaikin64::setQuiet()'],['../classIRKelvinatorAC.html#a2a3ca238649c55cd4f6f92f48eddf9ac',1,'IRKelvinatorAC::setQuiet()'],['../classIRMitsubishi136.html#a70c8a44f93e90ba025a8909c004c3a7b',1,'IRMitsubishi136::setQuiet()'],['../classIRMitsubishi112.html#a9fbbfb7bb1f6cccfcdcfbc4dcc335169',1,'IRMitsubishi112::setQuiet()'],['../classIRPanasonicAc.html#a51b6ae49cb490f697adeaf7f9f466518',1,'IRPanasonicAc::setQuiet()'],['../classIRSamsungAc.html#a6b3dd7d83c613a06f3499f1c8b26a67b',1,'IRSamsungAc::setQuiet()']]], + ['setraw_4261',['setRaw',['../classIRAmcorAc.html#ac0520033d7a59c817ca8ec08462fe39b',1,'IRAmcorAc::setRaw()'],['../classIRArgoAC.html#a98db56256eb71bf2e8da419007145e2b',1,'IRArgoAC::setRaw()'],['../classIRCarrierAc64.html#af49cf0b53bf8ff946a63bae94be0251d',1,'IRCarrierAc64::setRaw()'],['../classIRCoolixAC.html#aed28d08743c529a5715331255a8d5507',1,'IRCoolixAC::setRaw()'],['../classIRCoronaAc.html#a9ccf78675a3c175209c8d0ef08e2e671',1,'IRCoronaAc::setRaw()'],['../classIRDaikinESP.html#a7c69fc77ead837e5b4f1ececd9f43ca9',1,'IRDaikinESP::setRaw()'],['../classIRDaikin2.html#a132001e73eb5744a3a174c5517c9bbda',1,'IRDaikin2::setRaw()'],['../classIRDaikin216.html#a49f6a2ffc2e76ec4ff020e773bd70160',1,'IRDaikin216::setRaw()'],['../classIRDaikin160.html#a22e8a1600f612dd4326b2f9722d3a269',1,'IRDaikin160::setRaw()'],['../classIRDaikin176.html#a51e5f74b532eca958c09998727064e8d',1,'IRDaikin176::setRaw()'],['../classIRDaikin128.html#a25db29e01def45e8850ac9da68aa7ea7',1,'IRDaikin128::setRaw()'],['../classIRDaikin152.html#aab10e030ebe66e44607e9f35af1eb4cb',1,'IRDaikin152::setRaw()'],['../classIRDaikin64.html#a5f081026aca2bccc6fdeef8199e80779',1,'IRDaikin64::setRaw()'],['../classIRDelonghiAc.html#a219bafa7839f10acca33526cf585152a',1,'IRDelonghiAc::setRaw()'],['../classIRElectraAc.html#ae57c51cd3f5d1ebfb2fe7b926d149dd6',1,'IRElectraAc::setRaw()'],['../classIRFujitsuAC.html#a9b89d756948affa7029eeeed51916cbb',1,'IRFujitsuAC::setRaw()'],['../classIRGoodweatherAc.html#a2eae4bbdb14fea9e3004d656f852df59',1,'IRGoodweatherAc::setRaw()'],['../classIRGreeAC.html#a588f526f2f5500c7c2933ca91ccaf865',1,'IRGreeAC::setRaw()'],['../classIRHaierAC.html#a152961e20b5a5bed2ea03cbc65d65ce9',1,'IRHaierAC::setRaw()'],['../classIRHaierACYRW02.html#a389e711e128533c409731d2c87868c85',1,'IRHaierACYRW02::setRaw()'],['../classIRHitachiAc.html#a3b67215c162ef508c68c49b621c5199b',1,'IRHitachiAc::setRaw()'],['../classIRHitachiAc1.html#ae2d40bc477e30ee574f5c5e2ba4e09c2',1,'IRHitachiAc1::setRaw()'],['../classIRHitachiAc424.html#adc24b8b984ff20cebdf81f65843bb283',1,'IRHitachiAc424::setRaw()'],['../classIRHitachiAc3.html#acff4faf79a30df7b7e7c183dec4153a7',1,'IRHitachiAc3::setRaw()'],['../classIRHitachiAc344.html#a31c8984cfea8364734da6f32fe9a2337',1,'IRHitachiAc344::setRaw()'],['../classIRKelvinatorAC.html#a4a32bbf1a7ee8a089ea1e4e7c750433b',1,'IRKelvinatorAC::setRaw()'],['../classIRLgAc.html#a0da8ea4946826736f526386dc4d115cc',1,'IRLgAc::setRaw()'],['../classIRMideaAC.html#ab24da22531f5b2823551501642ec1b94',1,'IRMideaAC::setRaw()'],['../classIRMitsubishiAC.html#ac7bb79f91d5a9296c2b2b74aae1bfb53',1,'IRMitsubishiAC::setRaw()'],['../classIRMitsubishi136.html#abf0487a6fb163bf896e09b2cae6ee939',1,'IRMitsubishi136::setRaw()'],['../classIRMitsubishi112.html#a5c82f92d4a1ba1477ae7738ed5ade368',1,'IRMitsubishi112::setRaw()'],['../classIRMitsubishiHeavy152Ac.html#a8d42a2d87bf889ab4b233ea0c239f4c2',1,'IRMitsubishiHeavy152Ac::setRaw()'],['../classIRMitsubishiHeavy88Ac.html#abf01e448da9ec6e3b4512f58c3020299',1,'IRMitsubishiHeavy88Ac::setRaw()'],['../classIRNeoclimaAc.html#a607ea7df35572578ef86da7f505ab407',1,'IRNeoclimaAc::setRaw()'],['../classIRPanasonicAc.html#a63308883e8447aa5cdf7d29107be220f',1,'IRPanasonicAc::setRaw()'],['../classIRSamsungAc.html#a95377e8c73b51e73e78b51a2b2fa16d4',1,'IRSamsungAc::setRaw()'],['../classIRSharpAc.html#a89b18c4ee29afa56ebed5fa32e578df7',1,'IRSharpAc::setRaw()'],['../classIRTcl112Ac.html#a5b0994f37df6846137b564eeb322f21b',1,'IRTcl112Ac::setRaw()'],['../classIRTecoAc.html#a1ef3423214f55a2e2695cc1180f94bcc',1,'IRTecoAc::setRaw()'],['../classIRToshibaAC.html#ae74ff9241303eb4c7f3593f73e781c73',1,'IRToshibaAC::setRaw()'],['../classIRTrotecESP.html#a4ffe5ee2559828a61af710bb7d892b6c',1,'IRTrotecESP::setRaw()'],['../classIRVestelAc.html#a617bf1f4b5596d5ad005237e8445c12e',1,'IRVestelAc::setRaw(const uint8_t *newState)'],['../classIRVestelAc.html#a5cc86216d33f228c0648d6c66526b0eb',1,'IRVestelAc::setRaw(const uint64_t newState)'],['../classIRWhirlpoolAc.html#afa9c66ea36c970f80c88a0489448ab5b',1,'IRWhirlpoolAc::setRaw()']]], + ['setroomtemp_4262',['setRoomTemp',['../classIRArgoAC.html#aec5a2edc6f414aab201a18defaa78c5b',1,'IRArgoAC']]], + ['setsave_4263',['setSave',['../classIRTecoAc.html#a0f7d203d44d4040be3a4b28fcd5dd34c',1,'IRTecoAc']]], + ['setsensor_4264',['setSensor',['../classIRDaikinESP.html#ae1c95533934fffb29eed3e9a27e8f636',1,'IRDaikinESP::setSensor()'],['../classIRDaikin152.html#af418dbf2bb79dab0193801167dfb5b78',1,'IRDaikin152::setSensor()']]], + ['setsensortemp_4265',['setSensorTemp',['../classIRCoolixAC.html#a05e660b2b61b9a312e29688289f4bf3e',1,'IRCoolixAC']]], + ['setsensortempraw_4266',['setSensorTempRaw',['../classIRCoolixAC.html#a425c3f5fb26330266156c133fb9104eb',1,'IRCoolixAC']]], + ['setsilent_4267',['setSilent',['../classIRMitsubishiHeavy152Ac.html#ab398b9ea2965f059903137ab088791c0',1,'IRMitsubishiHeavy152Ac']]], + ['setsleep_4268',['setSleep',['../classIRCarrierAc64.html#aa729dbef39afeeed8e83f26b927d3b21',1,'IRCarrierAc64::setSleep()'],['../classIRCoolixAC.html#a4ee44167eca3fc88115fef3e845a3768',1,'IRCoolixAC::setSleep()'],['../classIRDaikin128.html#ac43854ae557ec5582f2bfd9150fd57f2',1,'IRDaikin128::setSleep()'],['../classIRDaikin64.html#a7faf8e018179fed2b091a78d0d69a9b8',1,'IRDaikin64::setSleep()'],['../classIRDelonghiAc.html#aa74806e520b2b01a5b0c87ee32ce427e',1,'IRDelonghiAc::setSleep()'],['../classIRGoodweatherAc.html#a30987629a159c5112649f0973895c9c1',1,'IRGoodweatherAc::setSleep()'],['../classIRGreeAC.html#ac9c11817d15bc5c82732a901cd95e07c',1,'IRGreeAC::setSleep()'],['../classIRHaierAC.html#acb72b89fa53b565f9d32db4d8960f988',1,'IRHaierAC::setSleep()'],['../classIRHaierACYRW02.html#ad63834eb1a91ed974af988c385570457',1,'IRHaierACYRW02::setSleep()'],['../classIRHitachiAc1.html#a2ddb6a5d446b379884828e81df0806ee',1,'IRHitachiAc1::setSleep()'],['../classIRMideaAC.html#a1e008ff673450060bf39a65f1cb926e6',1,'IRMideaAC::setSleep()'],['../classIRNeoclimaAc.html#ad01a62fb369c6894333adb2fe0f52b79',1,'IRNeoclimaAc::setSleep()'],['../classIRTecoAc.html#a1e989a4fbd21c507ba13014b1e336ce2',1,'IRTecoAc::setSleep()'],['../classIRTrotecESP.html#a41c558c6937e61e77269139f96135420',1,'IRTrotecESP::setSleep()'],['../classIRVestelAc.html#a4b93d5585b7fb9d509e7fcf84e2b4abc',1,'IRVestelAc::setSleep()'],['../classIRWhirlpoolAc.html#a6eaa24abc9eac64d9cbe79205a239474',1,'IRWhirlpoolAc::setSleep()']]], + ['setspecial_4269',['setSpecial',['../classIRSharpAc.html#ad7d2eca8b863569a1b17fdca4930d84f',1,'IRSharpAc']]], + ['setspeed_4270',['setSpeed',['../classIRTrotecESP.html#a268146141ce0358c2353c0ff59cfbad3',1,'IRTrotecESP']]], + ['setstartclock_4271',['setStartClock',['../classIRMitsubishiAC.html#a22d8c0dfd8098cb274d915476ed4caae',1,'IRMitsubishiAC']]], + ['setstopclock_4272',['setStopClock',['../classIRMitsubishiAC.html#a228dafbf1ea3e9c3487506a5ca2ea274',1,'IRMitsubishiAC']]], + ['setsuper_4273',['setSuper',['../classIRWhirlpoolAc.html#a19a14674b0bae79d3aee81b8d48aacc7',1,'IRWhirlpoolAc']]], + ['setswing_4274',['setSwing',['../classIRCoolixAC.html#a57e3641e20f072df238b305045e74246',1,'IRCoolixAC::setSwing()'],['../classIRFujitsuAC.html#a60ab8f21b5561e94a322b72a606468b9',1,'IRFujitsuAC::setSwing()'],['../classIRGoodweatherAc.html#a4d11a6885a5e7851e7c941b559159c35',1,'IRGoodweatherAc::setSwing()'],['../classIRHaierAC.html#a28c8bf6e0f45e074bf5eb13c25805627',1,'IRHaierAC::setSwing()'],['../classIRHaierACYRW02.html#ab9152dd09dec2db522dd96778f3b1556',1,'IRHaierACYRW02::setSwing()'],['../classIRSamsungAc.html#aaa7aaca1134e1565f527fcaa96a2fa6e',1,'IRSamsungAc::setSwing()'],['../classIRTecoAc.html#aaaeb10176c0b73e72fdb63b53fdcd5d0',1,'IRTecoAc::setSwing()'],['../classIRVestelAc.html#a6c98427df6e5e8081a6dcbfcd436ff0d',1,'IRVestelAc::setSwing()'],['../classIRWhirlpoolAc.html#a6fec80710ba87599840e576f37e0c944',1,'IRWhirlpoolAc::setSwing()']]], + ['setswingh_4275',['setSwingH',['../classIRElectraAc.html#afcd40681003d57b4f1b652175fc276a8',1,'IRElectraAc::setSwingH()'],['../classIRHitachiAc1.html#af6cc42d52dfed89e23d3d180e7b69af9',1,'IRHitachiAc1::setSwingH()'],['../classIRHitachiAc344.html#a5651cb90ba9b87ef841f8987bad267d4',1,'IRHitachiAc344::setSwingH()'],['../classIRMitsubishi112.html#a99f97b04ac22a7942ea371f470faaf49',1,'IRMitsubishi112::setSwingH()'],['../classIRNeoclimaAc.html#a1aeebc60d7bbd0fb801ad88f639cb6a0',1,'IRNeoclimaAc::setSwingH()']]], + ['setswinghorizontal_4276',['setSwingHorizontal',['../classIRDaikinESP.html#a5a7ec7b00811138879c636b03ae58606',1,'IRDaikinESP::setSwingHorizontal()'],['../classIRDaikin2.html#a75b6d6fb5bab0a9c951ad35e3e1d07c5',1,'IRDaikin2::setSwingHorizontal()'],['../classIRDaikin216.html#af8a1525cbe8d813c419d17ee6776a7d9',1,'IRDaikin216::setSwingHorizontal()'],['../classIRDaikin176.html#a9e63cf22410ffad45f6b308674079ee8',1,'IRDaikin176::setSwingHorizontal()'],['../classIRHitachiAc.html#ae70600f4a6f9fd7579221b11cd73062f',1,'IRHitachiAc::setSwingHorizontal()'],['../classIRKelvinatorAC.html#a2f1731f71bc74fb7ad6fec1210ecb1c7',1,'IRKelvinatorAC::setSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#a8713144e057424809292494a663dcd22',1,'IRMitsubishiHeavy152Ac::setSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#aaceffdd4e631fb2d4c404de0c8ff8cdb',1,'IRMitsubishiHeavy88Ac::setSwingHorizontal()'],['../classIRPanasonicAc.html#a32f3f07813165a39359887485dd87254',1,'IRPanasonicAc::setSwingHorizontal()'],['../classIRTcl112Ac.html#aedc63c59a924d64048bc034a752ce7ed',1,'IRTcl112Ac::setSwingHorizontal()']]], + ['setswingtoggle_4277',['setSwingToggle',['../classIRHitachiAc1.html#a24ec128b6bb27cfc4be4dda9ece003d6',1,'IRHitachiAc1::setSwingToggle()'],['../classIRSharpAc.html#a0d397009ecf213111207fcebb12b95fb',1,'IRSharpAc::setSwingToggle()']]], + ['setswingv_4278',['setSwingV',['../classIRCarrierAc64.html#a61a3f9f29cabc0634a9a74fc2227d8c5',1,'IRCarrierAc64::setSwingV()'],['../classIRDaikin152.html#ad151bb85529d46f7e3e3e65dbf446ff0',1,'IRDaikin152::setSwingV()'],['../classIRElectraAc.html#ae5b33942670e0033cbb9b9c7a1524e93',1,'IRElectraAc::setSwingV()'],['../classIRHitachiAc1.html#a1bcc61a9a33a3ddec41d44d52e7df0d3',1,'IRHitachiAc1::setSwingV()'],['../classIRHitachiAc344.html#a3982f110de8ff9881cf4070902294285',1,'IRHitachiAc344::setSwingV()'],['../classIRMitsubishi136.html#a0d54bc6dd55da18b05f723a1b61e575e',1,'IRMitsubishi136::setSwingV()'],['../classIRMitsubishi112.html#ae33b469f1b67616f101f4a3df874fb78',1,'IRMitsubishi112::setSwingV()'],['../classIRNeoclimaAc.html#aa6e5f6f092f52c5c289642c9576c8bc0',1,'IRNeoclimaAc::setSwingV()']]], + ['setswingvertical_4279',['setSwingVertical',['../classIRDaikinESP.html#a9200ef5751df5d488d7e08b138ec6356',1,'IRDaikinESP::setSwingVertical()'],['../classIRDaikin2.html#a35e72dc8e7967ee8ca8e84a6344468f3',1,'IRDaikin2::setSwingVertical()'],['../classIRDaikin216.html#a851484d5a37ceb1b0fc32e2e4bc2bcbb',1,'IRDaikin216::setSwingVertical()'],['../classIRDaikin160.html#a1683a255393f233d3e5b46d186d62881',1,'IRDaikin160::setSwingVertical()'],['../classIRDaikin128.html#a961aceb41145001003a50c5988f04c4d',1,'IRDaikin128::setSwingVertical()'],['../classIRDaikin64.html#afca186067111fa7181916a218c2800ec',1,'IRDaikin64::setSwingVertical()'],['../classIRGreeAC.html#a1b571dea8a5bf553554e45074f3a01c0',1,'IRGreeAC::setSwingVertical()'],['../classIRHitachiAc.html#a7e3ee78e4835fe402095b544c1e52f9f',1,'IRHitachiAc::setSwingVertical()'],['../classIRKelvinatorAC.html#a7334fbf8f2a67b33562ecea6b6e66f0e',1,'IRKelvinatorAC::setSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#aea3ac937feff058feef321bfe7357145',1,'IRMitsubishiHeavy152Ac::setSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#a9406e1890483703afb7b383e1363f8ec',1,'IRMitsubishiHeavy88Ac::setSwingVertical()'],['../classIRPanasonicAc.html#a48f31b1f85c92fac22f85a1aa8074c6e',1,'IRPanasonicAc::setSwingVertical()'],['../classIRTcl112Ac.html#a53f702dcc66de81f6e7e03d538a6946d',1,'IRTcl112Ac::setSwingVertical()']]], + ['setswingvtoggle_4280',['setSwingVToggle',['../classIRCoronaAc.html#a7cb31da86353ec637239cb747890bd7b',1,'IRCoronaAc::setSwingVToggle()'],['../classIRHitachiAc424.html#a220fd85bd213dd13ee9c609d4d7d20c1',1,'IRHitachiAc424::setSwingVToggle()'],['../classIRMideaAC.html#a7fce182bff4f5bc2c6679b20f344837b',1,'IRMideaAC::setSwingVToggle()']]], + ['settemp_4281',['setTemp',['../classIRAmcorAc.html#af4b2c476b76534687f14e9be963e9522',1,'IRAmcorAc::setTemp()'],['../classIRArgoAC.html#abad424a3cf1894715baa03780fa9b53b',1,'IRArgoAC::setTemp()'],['../classIRCarrierAc64.html#a79e193514ac6d07be537a78887426311',1,'IRCarrierAc64::setTemp()'],['../classIRCoolixAC.html#a1d4b4fb810b9f3835ee585b2aa66088f',1,'IRCoolixAC::setTemp()'],['../classIRCoronaAc.html#a9b1d5223cbb6ae6ba07f32871b27d9c6',1,'IRCoronaAc::setTemp()'],['../classIRDaikinESP.html#a631db8830684b745711667aed73a6433',1,'IRDaikinESP::setTemp()'],['../classIRDaikin2.html#a7f752c785fe180d5038e35bb07ff965a',1,'IRDaikin2::setTemp()'],['../classIRDaikin216.html#a8735732d3264eec119127d4353990669',1,'IRDaikin216::setTemp()'],['../classIRDaikin160.html#abedd99ed838478a7ef856537c6fabb82',1,'IRDaikin160::setTemp()'],['../classIRDaikin176.html#acb3b296f4c87a5a37258c666ef886ff3',1,'IRDaikin176::setTemp()'],['../classIRDaikin128.html#aba143a1b80e6de7d1c7b987eeda6b0db',1,'IRDaikin128::setTemp()'],['../classIRDaikin152.html#a97567ade1c0262b3f95f23f171936d8c',1,'IRDaikin152::setTemp()'],['../classIRDaikin64.html#adb1eb657998c05a143365755da0a1e81',1,'IRDaikin64::setTemp()'],['../classIRDelonghiAc.html#a08cc3e32c50277e3f986ed2c3945ce0d',1,'IRDelonghiAc::setTemp()'],['../classIRElectraAc.html#a5f986d9a376b6d5348fcb021d66d235b',1,'IRElectraAc::setTemp()'],['../classIRFujitsuAC.html#ab56c02fc0311ee7f28e780948cbc6a75',1,'IRFujitsuAC::setTemp()'],['../classIRGoodweatherAc.html#a8b1c90f69a3a2e412020d07809d180cc',1,'IRGoodweatherAc::setTemp()'],['../classIRGreeAC.html#a1890c6d134183beb89b791ec565623bb',1,'IRGreeAC::setTemp()'],['../classIRHaierAC.html#a9fb2a375cc1b8692fe4d5dcdd765cc46',1,'IRHaierAC::setTemp()'],['../classIRHaierACYRW02.html#a80170879e7bd391e360d41f18f6fa52b',1,'IRHaierACYRW02::setTemp()'],['../classIRHitachiAc.html#a9f416886ae341cdb6d449572e4d168a9',1,'IRHitachiAc::setTemp()'],['../classIRHitachiAc1.html#a10ba2dcbe447e505cbaa1a9b63f4823c',1,'IRHitachiAc1::setTemp()'],['../classIRHitachiAc424.html#a5cca8f31d07ce87b6e4a0ff0c22b1be8',1,'IRHitachiAc424::setTemp()'],['../classIRKelvinatorAC.html#ab098a376c7393d377abcc6c1f504d372',1,'IRKelvinatorAC::setTemp()'],['../classIRLgAc.html#ad9924a8bc9737ec6007d76ec47b34142',1,'IRLgAc::setTemp()'],['../classIRMideaAC.html#a42f79e73f418d5267eed7ba5b0e266f5',1,'IRMideaAC::setTemp()'],['../classIRMitsubishiAC.html#afd629013630747400e005fab8407d711',1,'IRMitsubishiAC::setTemp()'],['../classIRMitsubishi136.html#ac19c9234a5f65cae50b64d56c4bebb8f',1,'IRMitsubishi136::setTemp()'],['../classIRMitsubishi112.html#a03ba44a6d2f152b7afade423f12c8726',1,'IRMitsubishi112::setTemp()'],['../classIRMitsubishiHeavy152Ac.html#ad4f9ae94b8ab1fff8fc99b8d7818a8fe',1,'IRMitsubishiHeavy152Ac::setTemp()'],['../classIRMitsubishiHeavy88Ac.html#aa4a92e5334aebdca5d2b26b642e9b9e8',1,'IRMitsubishiHeavy88Ac::setTemp()'],['../classIRNeoclimaAc.html#a59e27fa001f9ab674b69eb2c41b6393c',1,'IRNeoclimaAc::setTemp()'],['../classIRPanasonicAc.html#a58376c311177e701333f4915515d49f1',1,'IRPanasonicAc::setTemp()'],['../classIRSamsungAc.html#a94a71e82321343220836aa614b231bd0',1,'IRSamsungAc::setTemp()'],['../classIRSharpAc.html#a151f88799cdab6fda4cfef83b30e5917',1,'IRSharpAc::setTemp()'],['../classIRTcl112Ac.html#a110bae0201b63db0409c352dd8d62786',1,'IRTcl112Ac::setTemp()'],['../classIRTecoAc.html#a405106cb572dac338d79da48fe7a7cb3',1,'IRTecoAc::setTemp()'],['../classIRToshibaAC.html#a923fad1f637e1851a77a063978994604',1,'IRToshibaAC::setTemp()'],['../classIRTrotecESP.html#ad467e7fe9ff61fec4ec10b367c0f9279',1,'IRTrotecESP::setTemp()'],['../classIRVestelAc.html#a8c4eddfba4edfa16e317e12677736756',1,'IRVestelAc::setTemp()'],['../classIRWhirlpoolAc.html#afff1ae75ffa362abb791c97c20023755',1,'IRWhirlpoolAc::setTemp()']]], + ['settempraw_4282',['setTempRaw',['../classIRCoolixAC.html#ae9371280e92daa8e1441523026f1ef0a',1,'IRCoolixAC']]], + ['settempunit_4283',['setTempUnit',['../classIRDelonghiAc.html#a4e3681e49065ba232577ca05157a5ef2',1,'IRDelonghiAc']]], + ['settime_4284',['setTime',['../classIRArgoAC.html#ae285801cde19da82e128098097624852',1,'IRArgoAC::setTime()'],['../classIRHaierAC.html#a81ca00cf5b49308c2609b717d34958ad',1,'IRHaierAC::setTime()'],['../classIRVestelAc.html#afc5dedf83855a8fea8b29494bfb07d64',1,'IRVestelAc::setTime()'],['../classIRWhirlpoolAc.html#a40289737223c14c8a1e723e7a28bad13',1,'IRWhirlpoolAc::setTime()']]], + ['settimer_4285',['setTimer',['../classIRDaikin128.html#a8498de57fc1bdb2f71a678f7877d3125',1,'IRDaikin128::setTimer()'],['../classIRGreeAC.html#a84debd45d2f2ba221f825257e0bc6294',1,'IRGreeAC::setTimer()'],['../classIRMitsubishiAC.html#acb56c91ef0db6ace7782d356af2dcd4d',1,'IRMitsubishiAC::setTimer()'],['../classIRSharpAc.html#a8782543c33e48af0a09e548276eb6413',1,'IRSharpAc::setTimer()'],['../classIRTecoAc.html#a88a84e22d53a204da754c04210fadd04',1,'IRTecoAc::setTimer()'],['../classIRTrotecESP.html#a92bfed0f247b21c77737b720151dbb88',1,'IRTrotecESP::setTimer()'],['../classIRVestelAc.html#a7c66e1ec13c827714eaa2233f50f072b',1,'IRVestelAc::setTimer()']]], + ['settimeractive_4286',['setTimerActive',['../classIRVestelAc.html#a77f78e534b19a8dca776b17aa06739aa',1,'IRVestelAc']]], + ['settimerenabled_4287',['setTimerEnabled',['../classIRGreeAC.html#a1002d6dfe409076fa7ef252589d5043c',1,'IRGreeAC']]], + ['settolerance_4288',['setTolerance',['../classIRrecv.html#aa091c449db70c65fd0221669df7438ea',1,'IRrecv']]], + ['setturbo_4289',['setTurbo',['../classIRCoolixAC.html#a65a04ec9028025155792be5ba0f81927',1,'IRCoolixAC::setTurbo()'],['../classIRDaikin64.html#a734cc23f79a4de4099a4ceb1aff14762',1,'IRDaikin64::setTurbo()'],['../classIRElectraAc.html#adb40e95465788b03e4cb845bd481f7ed',1,'IRElectraAc::setTurbo()'],['../classIRGoodweatherAc.html#a7827fc5a8f85b284c0121727dba34f11',1,'IRGoodweatherAc::setTurbo()'],['../classIRGreeAC.html#ae873023ad81f7dcb12ee5b061e160bea',1,'IRGreeAC::setTurbo()'],['../classIRHaierACYRW02.html#aba5f028ee1ebf7be2d4de5a66237f01b',1,'IRHaierACYRW02::setTurbo()'],['../classIRKelvinatorAC.html#a7d9c44970e85f23c83723f27e96260ee',1,'IRKelvinatorAC::setTurbo()'],['../classIRMitsubishiHeavy152Ac.html#a275e8ae44e2018a848b3e8f0893c8023',1,'IRMitsubishiHeavy152Ac::setTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a39ac892d349180327cce92c6f82bea30',1,'IRMitsubishiHeavy88Ac::setTurbo()'],['../classIRNeoclimaAc.html#aa2a9563d9e3c5c95dfa512c0bb87e16f',1,'IRNeoclimaAc::setTurbo()'],['../classIRSharpAc.html#a8a184ae8eeb07704b9b69849421e3172',1,'IRSharpAc::setTurbo()'],['../classIRTcl112Ac.html#a99e3b3e2f0cc627b6d872d04b35d6230',1,'IRTcl112Ac::setTurbo()'],['../classIRVestelAc.html#afa762d0fa63ecc7444c1c107f8f07cdb',1,'IRVestelAc::setTurbo()']]], + ['setunknownthreshold_4290',['setUnknownThreshold',['../classIRrecv.html#a02693553aad1decd67bdae60402e48bf',1,'IRrecv']]], + ['setusecelsius_4291',['setUseCelsius',['../classIRMideaAC.html#a1eeb72ddd2b9867c2f9c392080b9c1ed',1,'IRMideaAC']]], + ['setusefahrenheit_4292',['setUseFahrenheit',['../classIRGreeAC.html#af559afaa9da5fd27cdb516355da67bd6',1,'IRGreeAC']]], + ['setvane_4293',['setVane',['../classIRMitsubishiAC.html#abb247f1dca5cf23a7b8a16852dcf32f1',1,'IRMitsubishiAC']]], + ['setweeklytimerenable_4294',['setWeeklyTimerEnable',['../classIRDaikinESP.html#a0db67d46b13acfad9b94c7e4691777b8',1,'IRDaikinESP']]], + ['setwidevane_4295',['setWideVane',['../classIRMitsubishiAC.html#a02b2b3d7456e6123c60dca70de346c25',1,'IRMitsubishiAC']]], + ['setwifi_4296',['setWiFi',['../classIRGreeAC.html#afde745ceaa97f9608195b2ba9fce6c5c',1,'IRGreeAC']]], + ['setxfan_4297',['setXFan',['../classIRGreeAC.html#af465c607222fa433f54c2ce56ced2474',1,'IRGreeAC::setXFan()'],['../classIRKelvinatorAC.html#af02da81109109cf1cb44057fd1a40164',1,'IRKelvinatorAC::setXFan()']]], + ['setzonefollow_4298',['setZoneFollow',['../classIRCoolixAC.html#a0c0f39d8e2e79d8259000695263ec3fa',1,'IRCoolixAC']]], + ['sharp_4299',['sharp',['../classIRac.html#a7b6d8b4e554a89f339f896fe4233ed15',1,'IRac']]], + ['space_4300',['space',['../classIRsend.html#a0417b10d4e16718a87f8b2062a7d04a1',1,'IRsend']]], + ['statereset_4301',['stateReset',['../classIRAmcorAc.html#a018ab4ca4d738d848d3388ea1300b83b',1,'IRAmcorAc::stateReset()'],['../classIRArgoAC.html#af34a99bc37c4496c9fd68856aa065a13',1,'IRArgoAC::stateReset()'],['../classIRCarrierAc64.html#abe58c8f97ab4c34fd0cf198b07589694',1,'IRCarrierAc64::stateReset()'],['../classIRCoolixAC.html#a88a44b7ba5ac7d5654de4592bd41c207',1,'IRCoolixAC::stateReset()'],['../classIRCoronaAc.html#a47726d4ff93528bd8a5a6f1b47ba7141',1,'IRCoronaAc::stateReset()'],['../classIRDaikinESP.html#a49f6b90336225f7e94b8aefd066e1993',1,'IRDaikinESP::stateReset()'],['../classIRDaikin2.html#a9b49e90604bf6b1abb93581eecfc6c88',1,'IRDaikin2::stateReset()'],['../classIRDaikin216.html#adbc856e6531b38963db5680d279a4767',1,'IRDaikin216::stateReset()'],['../classIRDaikin160.html#ade56e55c8a0c81f0803dec2cda4625b0',1,'IRDaikin160::stateReset()'],['../classIRDaikin176.html#ab86a1b458a1be5d7fe5fcb7e287ef1d3',1,'IRDaikin176::stateReset()'],['../classIRDaikin128.html#ab604a7594c3b0131c5d977e3fc3b3565',1,'IRDaikin128::stateReset()'],['../classIRDaikin152.html#a278291def7d0e14552e7fbe9a56346bd',1,'IRDaikin152::stateReset()'],['../classIRDaikin64.html#af5a691404b8026cf1da45502f1c019f4',1,'IRDaikin64::stateReset()'],['../classIRDelonghiAc.html#aac444790a16678a1e88f1adef02829ba',1,'IRDelonghiAc::stateReset()'],['../classIRElectraAc.html#ab8035c14158fcf3758f46f6976b814f7',1,'IRElectraAc::stateReset()'],['../classIRFujitsuAC.html#a603a0e1870f406e4e746a7bb4c37fb70',1,'IRFujitsuAC::stateReset()'],['../classIRGoodweatherAc.html#ae7f8873ad58e553dc89307220628bebf',1,'IRGoodweatherAc::stateReset()'],['../classIRGreeAC.html#a61356a0dfb4656ac438c3629c591b165',1,'IRGreeAC::stateReset()'],['../classIRHaierAC.html#a62fbae1d2bac01ac3a2194274aa839d9',1,'IRHaierAC::stateReset()'],['../classIRHaierACYRW02.html#a106e7ffa0d69cdf976087c6e190d03ea',1,'IRHaierACYRW02::stateReset()'],['../classIRHitachiAc.html#a0564c00c60e64e57e20f3c1a4bd3d894',1,'IRHitachiAc::stateReset()'],['../classIRHitachiAc1.html#a9764b329d982d018b15098b3044f9596',1,'IRHitachiAc1::stateReset()'],['../classIRHitachiAc424.html#afd8d5b21086b34cdc07b498157240f8f',1,'IRHitachiAc424::stateReset()'],['../classIRHitachiAc3.html#a7bdcddf9c7f85b7cb43a92198e422549',1,'IRHitachiAc3::stateReset()'],['../classIRHitachiAc344.html#ab0174472d44790a5516b8f4377a89f22',1,'IRHitachiAc344::stateReset()'],['../classIRKelvinatorAC.html#ad6fefe85023c3fc318b0e45924874f9f',1,'IRKelvinatorAC::stateReset()'],['../classIRLgAc.html#a5959000c9f0b2cf64742d6a2f1c4c9b9',1,'IRLgAc::stateReset()'],['../classIRMideaAC.html#acc584e07406e1811acfb26f6cd5383cd',1,'IRMideaAC::stateReset()'],['../classIRMitsubishiAC.html#a8da4be360c8e2fd3a5a40cb4049b5d84',1,'IRMitsubishiAC::stateReset()'],['../classIRMitsubishi136.html#a67556dab7ed42c68a274f4f24ecc35bb',1,'IRMitsubishi136::stateReset()'],['../classIRMitsubishi112.html#a9c601ba34e10d5c63886c2c5b405d9ae',1,'IRMitsubishi112::stateReset()'],['../classIRMitsubishiHeavy152Ac.html#a0b239cacd3a8a96f2e3d7047f26119da',1,'IRMitsubishiHeavy152Ac::stateReset()'],['../classIRMitsubishiHeavy88Ac.html#a1cf118f435c99372c89a140a79c67f1f',1,'IRMitsubishiHeavy88Ac::stateReset()'],['../classIRNeoclimaAc.html#a5ce32a6e6195b246696cb609994f3762',1,'IRNeoclimaAc::stateReset()'],['../classIRPanasonicAc.html#a9a9fbf531f04c486edf913c382351b2b',1,'IRPanasonicAc::stateReset()'],['../classIRSamsungAc.html#a52186401655966b3103d3d73fb77e7f0',1,'IRSamsungAc::stateReset()'],['../classIRSharpAc.html#aa151c704ba4f5690a7cfadaf90c4b60d',1,'IRSharpAc::stateReset()'],['../classIRTcl112Ac.html#a049f475c1af7b62b9f3482dcf9e66d4a',1,'IRTcl112Ac::stateReset()'],['../classIRTecoAc.html#ad53e6f3d3693ee6efb419326a3d4c492',1,'IRTecoAc::stateReset()'],['../classIRToshibaAC.html#a3d3c3df261b4db7a9d831c94cc206e8a',1,'IRToshibaAC::stateReset()'],['../classIRTrotecESP.html#a86c3415d8c1880c325bc22c2c4ca44e0',1,'IRTrotecESP::stateReset()'],['../classIRVestelAc.html#a921100234f5751f8b94d9673a5d217f9',1,'IRVestelAc::stateReset()'],['../classIRWhirlpoolAc.html#a371a6f48a2f4f66e4243dacbbf4471be',1,'IRWhirlpoolAc::stateReset()']]], + ['stephoriz_4302',['stepHoriz',['../classIRFujitsuAC.html#a53c48bc1f32c849263a3aa86ff06b1d4',1,'IRFujitsuAC']]], + ['stepvert_4303',['stepVert',['../classIRFujitsuAC.html#a942f106c27ce04094b5b615f2e174022',1,'IRFujitsuAC']]], + ['strtobool_4304',['strToBool',['../classIRac.html#a3dba736fe25bd3a3a47b9ec7dae51728',1,'IRac']]], + ['strtodecodetype_4305',['strToDecodeType',['../IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff',1,'strToDecodeType(const char *const str): IRutils.cpp'],['../IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e',1,'strToDecodeType(const char *str): IRutils.cpp']]], + ['strtofanspeed_4306',['strToFanspeed',['../classIRac.html#a7173b12c155d04dd1db07a055f4ecb03',1,'IRac']]], + ['strtomodel_4307',['strToModel',['../classIRac.html#a7036fbbb918d644a98b5efa16374a256',1,'IRac']]], + ['strtoopmode_4308',['strToOpmode',['../classIRac.html#a251fa76ddacc84d2655bac723b7dea28',1,'IRac']]], + ['strtoswingh_4309',['strToSwingH',['../classIRac.html#a294d6040909519f465945245df56e56d',1,'IRac']]], + ['strtoswingv_4310',['strToSwingV',['../classIRac.html#a538c861d79afabb11fb8becedd3962f8',1,'IRac']]], + ['sumbytes_4311',['sumBytes',['../IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]], + ['sumnibbles_4312',['sumNibbles',['../namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343',1,'irutils::sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init)'],['../namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2',1,'irutils::sumNibbles(const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)']]], + ['swinghtostring_4313',['swinghToString',['../classIRac.html#a21c9d71bbf229fd8369480e50a7c3689',1,'IRac']]], + ['swingvtostring_4314',['swingvToString',['../classIRac.html#a641b59e48183a8f6d9b739ce7210f142',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.html new file mode 100644 index 000000000..48e591559 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.js new file mode 100644 index 000000000..9efc7ec0e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_12.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['tcl112_4315',['tcl112',['../classIRac.html#a3028bd9e83956d57b592bb96638b3f59',1,'IRac']]], + ['teco_4316',['teco',['../classIRac.html#a9e612e04e270dd5710e8a63a64b56064',1,'IRac']]], + ['tickshigh_4317',['ticksHigh',['../classIRrecv.html#a573dbb20695f2ffc808623df8c36280c',1,'IRrecv']]], + ['tickslow_4318',['ticksLow',['../classIRrecv.html#ac08e50c5eec10c0095157f4bdd4051c8',1,'IRrecv']]], + ['timerms_4319',['TimerMs',['../classTimerMs.html#a7bf7f8d2fcf76b27b34ea4705810eef5',1,'TimerMs']]], + ['tocommon_4320',['toCommon',['../classIRAmcorAc.html#aac4ae204cf0c393c18e5de96c4ba44ab',1,'IRAmcorAc::toCommon()'],['../classIRArgoAC.html#a4b1fda530b50c30cb863a3c146f4c81b',1,'IRArgoAC::toCommon()'],['../classIRCarrierAc64.html#a7c4a84d0d9f1e78ba611e118ddb90635',1,'IRCarrierAc64::toCommon()'],['../classIRCoolixAC.html#acadeabae7017e49c944eb22528297b3a',1,'IRCoolixAC::toCommon()'],['../classIRCoronaAc.html#a78dee47464e312d57e660b34c10bb13c',1,'IRCoronaAc::toCommon()'],['../classIRDaikinESP.html#a6bc97a753db054ce2ed59809845e23f1',1,'IRDaikinESP::toCommon()'],['../classIRDaikin2.html#a090407aff4ef81714e31ef28ac41d8e2',1,'IRDaikin2::toCommon()'],['../classIRDaikin216.html#ac477511261d7f135ee4f909eb5512f9a',1,'IRDaikin216::toCommon()'],['../classIRDaikin160.html#a0641f2e7f86412a36dcbe98b9049d322',1,'IRDaikin160::toCommon()'],['../classIRDaikin176.html#ac99fcb66d866196b51ad11384154f8ae',1,'IRDaikin176::toCommon()'],['../classIRDaikin128.html#a54de8ff37216f7a3a2cc744d97c2e1c6',1,'IRDaikin128::toCommon()'],['../classIRDaikin152.html#a96fee4c7cee70cc9249c556b277b2f74',1,'IRDaikin152::toCommon()'],['../classIRDaikin64.html#ad57748fa03e79a277508aa42b08c8f83',1,'IRDaikin64::toCommon()'],['../classIRDelonghiAc.html#a2cdcd20dffb763a5f9ff7bd264c1d3e8',1,'IRDelonghiAc::toCommon()'],['../classIRElectraAc.html#ad10aba2fa72f4b839538fc5a99c696ad',1,'IRElectraAc::toCommon()'],['../classIRFujitsuAC.html#adfd6ff9d4449eae7a5268b26058a483f',1,'IRFujitsuAC::toCommon()'],['../classIRGoodweatherAc.html#ae616e9fc03406ec88b5c5ddcde5f2f2c',1,'IRGoodweatherAc::toCommon()'],['../classIRGreeAC.html#ac28c640aa4b5dd0dbbca42b056f877f7',1,'IRGreeAC::toCommon()'],['../classIRHaierAC.html#a1e74862d6ab7e65108a7b1a3b7af7e91',1,'IRHaierAC::toCommon()'],['../classIRHaierACYRW02.html#aff86d2e3e1d357f0eecf6322964e7c16',1,'IRHaierACYRW02::toCommon()'],['../classIRHitachiAc.html#aa1ec8cc4b5025272c72dc69c6d6486a3',1,'IRHitachiAc::toCommon()'],['../classIRHitachiAc1.html#aef93034682210a6c564fbea4461ab47e',1,'IRHitachiAc1::toCommon()'],['../classIRHitachiAc424.html#a36711772ebdf385e0a95564f8a552634',1,'IRHitachiAc424::toCommon()'],['../classIRHitachiAc344.html#a146203ad02a3df4037b97c0416ba828e',1,'IRHitachiAc344::toCommon()'],['../classIRKelvinatorAC.html#a1e900aa29dad75f74de2bb797d475b20',1,'IRKelvinatorAC::toCommon()'],['../classIRLgAc.html#a75c52ef31270f25651521ae2be558faa',1,'IRLgAc::toCommon()'],['../classIRMideaAC.html#a62086b58f71908b75e28a61bd4f6bf15',1,'IRMideaAC::toCommon()'],['../classIRMitsubishiAC.html#a42338266a34940e657e5226c81f2fd06',1,'IRMitsubishiAC::toCommon()'],['../classIRMitsubishi136.html#a938360f488ec923e138744b6f80477bb',1,'IRMitsubishi136::toCommon()'],['../classIRMitsubishi112.html#aadde5055371b418fd733a2e93d12b478',1,'IRMitsubishi112::toCommon()'],['../classIRMitsubishiHeavy152Ac.html#af9cbfb13cd48d5d503756c50df8fc7b7',1,'IRMitsubishiHeavy152Ac::toCommon()'],['../classIRMitsubishiHeavy88Ac.html#a3f80427169359dc72367e6ee4e52c42f',1,'IRMitsubishiHeavy88Ac::toCommon()'],['../classIRNeoclimaAc.html#a455397211c7cb8074f6b7358dc6a5b9e',1,'IRNeoclimaAc::toCommon()'],['../classIRPanasonicAc.html#af2218f117db06424ced00ba6c0cc3234',1,'IRPanasonicAc::toCommon()'],['../classIRSamsungAc.html#a01e9279d541f64ebfa433c35a3651796',1,'IRSamsungAc::toCommon()'],['../classIRSharpAc.html#aaade155b2128ba11c2e91bba676c72d9',1,'IRSharpAc::toCommon()'],['../classIRTcl112Ac.html#af5813975bfe55a76d202f8c7f48df82d',1,'IRTcl112Ac::toCommon()'],['../classIRTecoAc.html#af3953289854dabf105c6612f14ef5da0',1,'IRTecoAc::toCommon()'],['../classIRToshibaAC.html#acda90e0171043c3a673ffac52ef9b4b5',1,'IRToshibaAC::toCommon()'],['../classIRTrotecESP.html#ac224a0a18a64ce9802c3f25fafa20a04',1,'IRTrotecESP::toCommon()'],['../classIRVestelAc.html#adb7ab58e91f13b999b62559fc7add91a',1,'IRVestelAc::toCommon()'],['../classIRWhirlpoolAc.html#a961da338e344fd975934f9f69d97f5b5',1,'IRWhirlpoolAc::toCommon()']]], + ['tocommonfanspeed_4321',['toCommonFanSpeed',['../classIRAmcorAc.html#a951aa81d98c66138f61069431e13f35a',1,'IRAmcorAc::toCommonFanSpeed()'],['../classIRArgoAC.html#a334afe3ce6536089bc2832985067f029',1,'IRArgoAC::toCommonFanSpeed()'],['../classIRCarrierAc64.html#a5a9149acc82fcc22a5be8dcbe791ab77',1,'IRCarrierAc64::toCommonFanSpeed()'],['../classIRCoolixAC.html#a6a0e7219c667eb06897b47a7c36f5fbc',1,'IRCoolixAC::toCommonFanSpeed()'],['../classIRCoronaAc.html#a6d5d0015f01acc97badff7edda964485',1,'IRCoronaAc::toCommonFanSpeed()'],['../classIRDaikinESP.html#a6855a423f10a2230953646d478400574',1,'IRDaikinESP::toCommonFanSpeed()'],['../classIRDaikin176.html#a6f9b7dddcf98c7a42495c900dddf505d',1,'IRDaikin176::toCommonFanSpeed()'],['../classIRDaikin128.html#a1c53a27678731229308e355eb94ec762',1,'IRDaikin128::toCommonFanSpeed()'],['../classIRDaikin64.html#acd24c4932e2bfd6bffbb9a90da2028a6',1,'IRDaikin64::toCommonFanSpeed()'],['../classIRDelonghiAc.html#a231e26843e3616e7455fd020dbb8807b',1,'IRDelonghiAc::toCommonFanSpeed()'],['../classIRElectraAc.html#a5d53fb85582344cfdbfa33da6acbdb7d',1,'IRElectraAc::toCommonFanSpeed()'],['../classIRFujitsuAC.html#a93a35e42d887b5ca6414b295a4a91526',1,'IRFujitsuAC::toCommonFanSpeed()'],['../classIRGoodweatherAc.html#aff899c76d5b808ee35c9f88c116b5dc4',1,'IRGoodweatherAc::toCommonFanSpeed()'],['../classIRGreeAC.html#ade6cb54e99b6dab1df708cbf25fc5967',1,'IRGreeAC::toCommonFanSpeed()'],['../classIRHaierAC.html#ad67ee0b7299d041aad77382dde893229',1,'IRHaierAC::toCommonFanSpeed()'],['../classIRHaierACYRW02.html#a15402e3ba2a9875d5b49f6dab3e85034',1,'IRHaierACYRW02::toCommonFanSpeed()'],['../classIRHitachiAc.html#afba02d48c4a023ed800abf38d5314c7e',1,'IRHitachiAc::toCommonFanSpeed()'],['../classIRHitachiAc1.html#a99f205391deb75d23d08d63e1feff0d4',1,'IRHitachiAc1::toCommonFanSpeed()'],['../classIRHitachiAc424.html#a16abdf55ea3ae4b06e2a23dad3496738',1,'IRHitachiAc424::toCommonFanSpeed()'],['../classIRKelvinatorAC.html#a0ebd262c554c5c843bc3f710570e1401',1,'IRKelvinatorAC::toCommonFanSpeed()'],['../classIRLgAc.html#af47317ba139a4b1e5961b9a45db974df',1,'IRLgAc::toCommonFanSpeed()'],['../classIRMideaAC.html#acd89d4864a46b146ac4f648c4406ded5',1,'IRMideaAC::toCommonFanSpeed()'],['../classIRMitsubishiAC.html#aa7dd30cde520b14575d7fcd992c3bbf1',1,'IRMitsubishiAC::toCommonFanSpeed()'],['../classIRMitsubishi136.html#aaf9f9f17f3ac59ef325b57b9110faa34',1,'IRMitsubishi136::toCommonFanSpeed()'],['../classIRMitsubishi112.html#aaeee082d9adbf7b0d91316c703571f1a',1,'IRMitsubishi112::toCommonFanSpeed()'],['../classIRMitsubishiHeavy152Ac.html#a5e26c3121aceb944fc688e6f641dd5b1',1,'IRMitsubishiHeavy152Ac::toCommonFanSpeed()'],['../classIRMitsubishiHeavy88Ac.html#aa5dae03951ba9a9aeac62184c27f9439',1,'IRMitsubishiHeavy88Ac::toCommonFanSpeed()'],['../classIRNeoclimaAc.html#a5d87285928bd8bfa2abad92fbdf384b5',1,'IRNeoclimaAc::toCommonFanSpeed()'],['../classIRPanasonicAc.html#a1eff8e4d670abc303a02d8baeeb58f8c',1,'IRPanasonicAc::toCommonFanSpeed()'],['../classIRSamsungAc.html#a2905b33c273d2be6cabfc3b16b51a5b4',1,'IRSamsungAc::toCommonFanSpeed()'],['../classIRSharpAc.html#a520666e591965b3b3b2421e06260976a',1,'IRSharpAc::toCommonFanSpeed()'],['../classIRTcl112Ac.html#a66843ee5b53ce9be1aef3774b8df5c84',1,'IRTcl112Ac::toCommonFanSpeed()'],['../classIRTecoAc.html#ac3ad2828770440695969d696ca6ff46d',1,'IRTecoAc::toCommonFanSpeed()'],['../classIRToshibaAC.html#a6c77121c9aba3928e676394f88e88dee',1,'IRToshibaAC::toCommonFanSpeed()'],['../classIRTrotecESP.html#a4aaf17993757533370290fffb728befc',1,'IRTrotecESP::toCommonFanSpeed()'],['../classIRVestelAc.html#a6dfd46f56f2d6b15344722cde0741500',1,'IRVestelAc::toCommonFanSpeed()'],['../classIRWhirlpoolAc.html#a61ef6661a985763540b7c2273b8b1b9c',1,'IRWhirlpoolAc::toCommonFanSpeed()']]], + ['tocommonmode_4322',['toCommonMode',['../classIRAmcorAc.html#a6da2f34f1e044f815e94ede578f4c26f',1,'IRAmcorAc::toCommonMode()'],['../classIRArgoAC.html#a8ccd3f5398f50548fda3a9e0172fb5fa',1,'IRArgoAC::toCommonMode()'],['../classIRCarrierAc64.html#ab17b24d0306b8983886d15175898909e',1,'IRCarrierAc64::toCommonMode()'],['../classIRCoolixAC.html#a789fb5d5eab2e78d392c8e0b9a194b18',1,'IRCoolixAC::toCommonMode()'],['../classIRCoronaAc.html#a04ca6532beb099893eb1dd5d01bb4d31',1,'IRCoronaAc::toCommonMode()'],['../classIRDaikinESP.html#a3a7543204520da36547c163a96e30deb',1,'IRDaikinESP::toCommonMode()'],['../classIRDaikin176.html#aa0b9c96d3bf08400a5110bcfa9f1ec9d',1,'IRDaikin176::toCommonMode()'],['../classIRDaikin128.html#a105a4fc511feba96afc956bb36d2dc50',1,'IRDaikin128::toCommonMode()'],['../classIRDaikin64.html#a80b9dd0fbf935bed5035463af2ad0102',1,'IRDaikin64::toCommonMode()'],['../classIRDelonghiAc.html#a5a3eef369009836a629369cf835741c4',1,'IRDelonghiAc::toCommonMode()'],['../classIRElectraAc.html#a01bd399c3b8908083b95f31d97ddb26f',1,'IRElectraAc::toCommonMode()'],['../classIRFujitsuAC.html#a96140e74d31631581003064f70041d02',1,'IRFujitsuAC::toCommonMode()'],['../classIRGoodweatherAc.html#ab3bcd1354b715179f67499c28fb219fb',1,'IRGoodweatherAc::toCommonMode()'],['../classIRGreeAC.html#a3f393071163fd1577c772a8515e2b5a9',1,'IRGreeAC::toCommonMode()'],['../classIRHaierAC.html#a4d73f75516afff0ef18bdbb7ed9c26ed',1,'IRHaierAC::toCommonMode()'],['../classIRHaierACYRW02.html#a24007a5be360c93ec157b95c8cc06493',1,'IRHaierACYRW02::toCommonMode()'],['../classIRHitachiAc.html#ab7edc0f5571100e1778779081e1c1114',1,'IRHitachiAc::toCommonMode()'],['../classIRHitachiAc1.html#a5cbca62775089593fe2447a77d84b3d5',1,'IRHitachiAc1::toCommonMode()'],['../classIRHitachiAc424.html#a2a725d8dc2178975c977a7496792e667',1,'IRHitachiAc424::toCommonMode()'],['../classIRKelvinatorAC.html#ae2683d38ae72b99e6843e37d36f96db2',1,'IRKelvinatorAC::toCommonMode()'],['../classIRLgAc.html#ac3436968a4445f0210403c353d766b73',1,'IRLgAc::toCommonMode()'],['../classIRMideaAC.html#ac2e0ff374678aadd7fea80194aef8bca',1,'IRMideaAC::toCommonMode()'],['../classIRMitsubishiAC.html#a7eae5da584faf41139be597d6a5e7210',1,'IRMitsubishiAC::toCommonMode()'],['../classIRMitsubishi136.html#a2771fd09b2e953b037c0c65c4e4029ee',1,'IRMitsubishi136::toCommonMode()'],['../classIRMitsubishi112.html#a6da77ebe6e03cfc09aa35e531c292ed1',1,'IRMitsubishi112::toCommonMode()'],['../classIRMitsubishiHeavy152Ac.html#a9faaff371ad3ec33de5646a1afd1992a',1,'IRMitsubishiHeavy152Ac::toCommonMode()'],['../classIRNeoclimaAc.html#a2a220b673c96e54e675d8296aa8b2303',1,'IRNeoclimaAc::toCommonMode()'],['../classIRPanasonicAc.html#a1ace0180b9ac3f4bd17357a03c64792e',1,'IRPanasonicAc::toCommonMode()'],['../classIRSamsungAc.html#a39820a05a9650e9da8a44109234a8d87',1,'IRSamsungAc::toCommonMode()'],['../classIRSharpAc.html#a5e8fca86bcf138bb7c1fd1b4e4384b5f',1,'IRSharpAc::toCommonMode()'],['../classIRTcl112Ac.html#a230a8d768089d869efdea6589b0a9e37',1,'IRTcl112Ac::toCommonMode()'],['../classIRTecoAc.html#ac6c7011b31208887de6d15edbffb211a',1,'IRTecoAc::toCommonMode()'],['../classIRToshibaAC.html#a77871a927ee67460b7bdcb8f204297bc',1,'IRToshibaAC::toCommonMode()'],['../classIRTrotecESP.html#a2b28b06bd25234427d90172b27d57092',1,'IRTrotecESP::toCommonMode()'],['../classIRVestelAc.html#add602c0f052c8ada3b3b5748dda50a58',1,'IRVestelAc::toCommonMode()'],['../classIRWhirlpoolAc.html#a748caa4e22f2f1f47e6334b1a031c4d8',1,'IRWhirlpoolAc::toCommonMode()']]], + ['tocommonswingh_4323',['toCommonSwingH',['../classIRDaikin2.html#a85bb152a4bdcc2798270ee58a3cfe2ae',1,'IRDaikin2::toCommonSwingH()'],['../classIRDaikin176.html#a6a3b66c9777992ed9fcab4e26c1d74dc',1,'IRDaikin176::toCommonSwingH()'],['../classIRHitachiAc344.html#a31562e32ccdf179032e75334b16279f0',1,'IRHitachiAc344::toCommonSwingH()'],['../classIRMitsubishiAC.html#ad7446e0a4ea8d349004c2b4224e69cd9',1,'IRMitsubishiAC::toCommonSwingH()'],['../classIRMitsubishi112.html#a17cfee6dc9ddc38465539ca46f29b263',1,'IRMitsubishi112::toCommonSwingH()'],['../classIRMitsubishiHeavy152Ac.html#afb9e039776c77e898928e9139a21a2b8',1,'IRMitsubishiHeavy152Ac::toCommonSwingH()'],['../classIRMitsubishiHeavy88Ac.html#aead69a01407729240055bd64e583b51b',1,'IRMitsubishiHeavy88Ac::toCommonSwingH()'],['../classIRPanasonicAc.html#aa4241990c350ca936c73b8391c2a11fc',1,'IRPanasonicAc::toCommonSwingH()']]], + ['tocommonswingv_4324',['toCommonSwingV',['../classIRDaikin2.html#a1f3e17757bd4beb0330d75ec3df9788b',1,'IRDaikin2::toCommonSwingV()'],['../classIRDaikin160.html#afae9b50e59c0efa46b96eef9f05a95b7',1,'IRDaikin160::toCommonSwingV()'],['../classIRGreeAC.html#a537d17801a90e22ad2baba7145b038cb',1,'IRGreeAC::toCommonSwingV()'],['../classIRHaierAC.html#aac354e2e4ad72d91667509398078b309',1,'IRHaierAC::toCommonSwingV()'],['../classIRHaierACYRW02.html#a0e426a3479fd80bb3816f016fac22f19',1,'IRHaierACYRW02::toCommonSwingV()'],['../classIRMitsubishiAC.html#a173e3c22f4173f235e7213e41925fdd9',1,'IRMitsubishiAC::toCommonSwingV()'],['../classIRMitsubishi136.html#aca5e6ac2d886083c8c56e2949f9d11e9',1,'IRMitsubishi136::toCommonSwingV()'],['../classIRMitsubishi112.html#a0e577d8554a090d7f2ac2a9ddd3bf15c',1,'IRMitsubishi112::toCommonSwingV()'],['../classIRMitsubishiHeavy152Ac.html#ae4dd9b8f0b5b4becb07618e859a09a51',1,'IRMitsubishiHeavy152Ac::toCommonSwingV()'],['../classIRMitsubishiHeavy88Ac.html#a0597303839e79c97b0fafe6c9ddbcf9a',1,'IRMitsubishiHeavy88Ac::toCommonSwingV()'],['../classIRPanasonicAc.html#adae801e0a2641c196a59d65c26404a13',1,'IRPanasonicAc::toCommonSwingV()']]], + ['togglerc5_4325',['toggleRC5',['../classIRsend.html#a42a78d4a3ef0f88b54bee488320344da',1,'IRsend']]], + ['togglerc6_4326',['toggleRC6',['../classIRsend.html#a5a0e8778394021ea12a8b8c2daf0add6',1,'IRsend']]], + ['toggleswinghoriz_4327',['toggleSwingHoriz',['../classIRFujitsuAC.html#aeba829bb9a9934ad9246a5ba4f4c03fc',1,'IRFujitsuAC']]], + ['toggleswingvert_4328',['toggleSwingVert',['../classIRFujitsuAC.html#a6dc9cc4bda83215fa97896c41b01e584',1,'IRFujitsuAC']]], + ['toshiba_4329',['toshiba',['../classIRac.html#a384e62cc56ebbdd790ebcd500ce56fc5',1,'IRac']]], + ['tostring_4330',['toString',['../classIRAmcorAc.html#a2435fd76c642e4a64c7e2330236dcaa6',1,'IRAmcorAc::toString()'],['../classIRArgoAC.html#ad9f52d54687754c0b8d676cb75a3b1bf',1,'IRArgoAC::toString()'],['../classIRCarrierAc64.html#acede081614a80ae46345d4ae45e39ab2',1,'IRCarrierAc64::toString()'],['../classIRCoolixAC.html#ad1282b4071f003ab35d2a97287ba6d2d',1,'IRCoolixAC::toString()'],['../classIRCoronaAc.html#a13e87d763ffd0d25a9d09010828c2124',1,'IRCoronaAc::toString()'],['../classIRDaikinESP.html#a38e705d3ed5128e400efd971e50518d5',1,'IRDaikinESP::toString()'],['../classIRDaikin2.html#a5804ef19f37ee7b8a525bc8db5146c73',1,'IRDaikin2::toString()'],['../classIRDaikin216.html#a5b9ea30424aa3abd9fdee95c78ba9e40',1,'IRDaikin216::toString()'],['../classIRDaikin160.html#a5d9ff2f09b95023c595e9c4794cb29b8',1,'IRDaikin160::toString()'],['../classIRDaikin176.html#a5ff8d589c7e97bd48b50e0ae01356783',1,'IRDaikin176::toString()'],['../classIRDaikin128.html#a48fc2a4080400f83260d2c861c831a28',1,'IRDaikin128::toString()'],['../classIRDaikin152.html#abb9253e8fe7e9bdf786246ce7ab8c54b',1,'IRDaikin152::toString()'],['../classIRDaikin64.html#aa19ba82f1dd405633f078eaf5cb915b8',1,'IRDaikin64::toString()'],['../classIRDelonghiAc.html#a386fb70137a7c2100d05f3202c224887',1,'IRDelonghiAc::toString()'],['../classIRElectraAc.html#a2b1f49b99ec17e211c6cc63d4f72f6a4',1,'IRElectraAc::toString()'],['../classIRFujitsuAC.html#ad779b8b86849ab4c6fe3cfc4afe2c7b8',1,'IRFujitsuAC::toString()'],['../classIRGoodweatherAc.html#a8c298ad0ab98789aa4eb419ed134ee03',1,'IRGoodweatherAc::toString()'],['../classIRGreeAC.html#a1f18b275e0e3d10fbc952d1da9613074',1,'IRGreeAC::toString()'],['../classIRHaierAC.html#a7effff64e7c9c20b7d9e6c2c10e0ffbc',1,'IRHaierAC::toString()'],['../classIRHaierACYRW02.html#a3858dd619f4ea4071b248bb5fb64fb08',1,'IRHaierACYRW02::toString()'],['../classIRHitachiAc.html#a9d927f191807b52fbd4f5d411e0c6519',1,'IRHitachiAc::toString()'],['../classIRHitachiAc1.html#ac70d5ed48897559d7e2ff0f843c79ddc',1,'IRHitachiAc1::toString()'],['../classIRHitachiAc424.html#abc1c122c68d62b582a7e38cdaf9febe7',1,'IRHitachiAc424::toString()'],['../classIRHitachiAc344.html#a5286ffe0ad72f82f66ad19bd6c3bdacc',1,'IRHitachiAc344::toString()'],['../classIRKelvinatorAC.html#a2cc438f41b6f4ed2f9df42acc1ffccfe',1,'IRKelvinatorAC::toString()'],['../classIRLgAc.html#a4546e2e0f63aac0bb9bd54f4f93c5f6c',1,'IRLgAc::toString()'],['../classIRMideaAC.html#a4980fbb52145e1d12a6fa5601f75018a',1,'IRMideaAC::toString()'],['../classIRMitsubishiAC.html#a28cfd4bb4d3372fb983f737c7e86b530',1,'IRMitsubishiAC::toString()'],['../classIRMitsubishi136.html#a8e49c540665a724c895674edef31d980',1,'IRMitsubishi136::toString()'],['../classIRMitsubishi112.html#ab99894eb185d13c5bd097c287fdbddeb',1,'IRMitsubishi112::toString()'],['../classIRMitsubishiHeavy152Ac.html#a9082e1498220f7b641f5f265d1131c0a',1,'IRMitsubishiHeavy152Ac::toString()'],['../classIRMitsubishiHeavy88Ac.html#a7c77e68371e70eb5fd565d8ac815950e',1,'IRMitsubishiHeavy88Ac::toString()'],['../classIRNeoclimaAc.html#a9e6a036411583bad6daf1ef2e60e013c',1,'IRNeoclimaAc::toString()'],['../classIRPanasonicAc.html#ada0b3e2bf11123d0a2f5df8692ae73ad',1,'IRPanasonicAc::toString()'],['../classIRSamsungAc.html#a82de7f9c7b4984f002ea3849b4e95ff2',1,'IRSamsungAc::toString()'],['../classIRSharpAc.html#afee9b0acec54d1683404b7af66c73046',1,'IRSharpAc::toString()'],['../classIRTcl112Ac.html#a381c019f805973000ac5ddb6c70e2773',1,'IRTcl112Ac::toString()'],['../classIRTecoAc.html#a7f085b545dac637927ae58fca13e5c5f',1,'IRTecoAc::toString()'],['../classIRToshibaAC.html#a5bbf6a725f496ac40ec2fac8f9a0dc1c',1,'IRToshibaAC::toString()'],['../classIRTrotecESP.html#a06783a7571b684be20ee5485f30ceb3c',1,'IRTrotecESP::toString()'],['../classIRVestelAc.html#a5fd0630ad7c1d5da3b1bfc5aefc443ec',1,'IRVestelAc::toString()'],['../classIRWhirlpoolAc.html#ad599025e8413f23d13a9783ff4c1fe93',1,'IRWhirlpoolAc::toString()']]], + ['trotec_4331',['trotec',['../classIRac.html#aed1a012c0546c2b1d53e86871a42ba1a',1,'IRac']]], + ['typetostring_4332',['typeToString',['../IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1',1,'typeToString(const decode_type_t protocol, const bool isRepeat): IRutils.cpp'],['../IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c',1,'typeToString(const decode_type_t protocol, const bool isRepeat=false): IRutils.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.html new file mode 100644 index 000000000..f1fc553fe --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.js new file mode 100644 index 000000000..dab397642 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_13.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['uint64tostring_4333',['uint64ToString',['../IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420',1,'uint64ToString(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a781650451d38303e80da677539f574ee',1,'uint64ToString(uint64_t input, uint8_t base=10): IRutils.cpp']]], + ['uint8tobcd_4334',['uint8ToBcd',['../namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1',1,'irutils']]], + ['updatesavedstate_4335',['updateSavedState',['../classIRCoolixAC.html#a1f39630b328939307bb08c18e56e9ad3',1,'IRCoolixAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.html new file mode 100644 index 000000000..0302cd989 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.js new file mode 100644 index 000000000..dd25196f9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_14.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['validchecksum_4336',['validChecksum',['../classIRAmcorAc.html#a1ad297a62ac3152c9d957cef38757d28',1,'IRAmcorAc::validChecksum()'],['../classIRArgoAC.html#acfa5a9df8273123e6f4c48684ef60006',1,'IRArgoAC::validChecksum()'],['../classIRCarrierAc64.html#affa23f178e079cd3a6c933240759fe80',1,'IRCarrierAc64::validChecksum()'],['../classIRDaikinESP.html#ad766e60827f80b96a66449bddc621d87',1,'IRDaikinESP::validChecksum()'],['../classIRDaikin2.html#ade5c0dbfe38d9ac0c4bc009c897af04d',1,'IRDaikin2::validChecksum()'],['../classIRDaikin216.html#a663c11977545ba01b34715a61a26ab88',1,'IRDaikin216::validChecksum()'],['../classIRDaikin160.html#a0d9f3af404e3b6c116e8c27e938f8479',1,'IRDaikin160::validChecksum()'],['../classIRDaikin176.html#abc97abc68f535f7ad801b393e0a795d5',1,'IRDaikin176::validChecksum()'],['../classIRDaikin128.html#ad0b16e48bff00c5cdeffa1419c003946',1,'IRDaikin128::validChecksum()'],['../classIRDaikin152.html#ade1c641eecea63857115fc20f1811fe7',1,'IRDaikin152::validChecksum()'],['../classIRDaikin64.html#ab04287881112ff21d1ea541c0f21b507',1,'IRDaikin64::validChecksum()'],['../classIRDelonghiAc.html#ae39b20bcea2b7090ac2e29d8cd28e5f6',1,'IRDelonghiAc::validChecksum()'],['../classIRElectraAc.html#a60034a18e7574844fb59a03e7789f419',1,'IRElectraAc::validChecksum()'],['../classIRFujitsuAC.html#a26153c647d127356e47d35a7456c6235',1,'IRFujitsuAC::validChecksum()'],['../classIRGreeAC.html#a74e7df0634f0a60110db8c033d9d5b1d',1,'IRGreeAC::validChecksum()'],['../classIRHaierAC.html#ad7aae554b8f0a76493efc2a43ac0f780',1,'IRHaierAC::validChecksum()'],['../classIRHaierACYRW02.html#a3f6d071d215b0316cccc2e94c4786954',1,'IRHaierACYRW02::validChecksum()'],['../classIRHitachiAc.html#a2549c1fd2e8a603eb8924fbba8b26e87',1,'IRHitachiAc::validChecksum()'],['../classIRHitachiAc1.html#aa6b7ab76567ee15aa08b1594c67bd29d',1,'IRHitachiAc1::validChecksum()'],['../classIRKelvinatorAC.html#aaa915fa5eb3f7e5c7a3dc143b6fda826',1,'IRKelvinatorAC::validChecksum()'],['../classIRLgAc.html#a51748fa24de24049a2fafb4590e84176',1,'IRLgAc::validChecksum()'],['../classIRMideaAC.html#a971ab4af0267bb732834e7e1f7b8e354',1,'IRMideaAC::validChecksum()'],['../classIRMitsubishiAC.html#ad74885e17434aa9038dc19ad74de4cd0',1,'IRMitsubishiAC::validChecksum()'],['../classIRMitsubishi136.html#a666d1268a93e96b50ac9012c09320de9',1,'IRMitsubishi136::validChecksum()'],['../classIRMitsubishiHeavy152Ac.html#abef94200719da0c14e211315ffc8bede',1,'IRMitsubishiHeavy152Ac::validChecksum()'],['../classIRMitsubishiHeavy88Ac.html#aabd9d8f81108f20f1d7adff3ac6c2fd4',1,'IRMitsubishiHeavy88Ac::validChecksum()'],['../classIRNeoclimaAc.html#a32e4b4444e0a97b6da4447e977f74f94',1,'IRNeoclimaAc::validChecksum()'],['../classIRPanasonicAc.html#a6a084754596f7840dd308041d11a822d',1,'IRPanasonicAc::validChecksum()'],['../classIRSamsungAc.html#a4f7339bce78ce2b656fc597b4c88db22',1,'IRSamsungAc::validChecksum()'],['../classIRSharpAc.html#acb7fb0ac19e09da02d36cb73c808420d',1,'IRSharpAc::validChecksum()'],['../classIRTcl112Ac.html#a204bc37ffadf72ed31b305197c4803f4',1,'IRTcl112Ac::validChecksum()'],['../classIRToshibaAC.html#adc7c1eee14e4de896121ad06e88b61eb',1,'IRToshibaAC::validChecksum()'],['../classIRTrotecESP.html#ae08748e33ed12c536b18f6d0dc4da1c7',1,'IRTrotecESP::validChecksum()'],['../classIRVestelAc.html#ad3bcc08fb4242af7dcc65e534816a219',1,'IRVestelAc::validChecksum()'],['../classIRWhirlpoolAc.html#a2d891069ebdecc62b03e8c92befa15c6',1,'IRWhirlpoolAc::validChecksum()']]], + ['validsection_4337',['validSection',['../classIRCoronaAc.html#af36894d88e7fb45affc883ba0b077862',1,'IRCoronaAc']]], + ['vestel_4338',['vestel',['../classIRac.html#a9b1cd1a4d44bc56e62128b9dbc178bba',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.html new file mode 100644 index 000000000..18cf76b24 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.js new file mode 100644 index 000000000..21b364b8b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['whirlpool_4339',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.html new file mode 100644 index 000000000..9182391d2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.js new file mode 100644 index 000000000..a9612ad4b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xorbytes_4340',['xorBytes',['../IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.html new file mode 100644 index 000000000..807950604 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.js new file mode 100644 index 000000000..4d4a5aec2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_17.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7eirrecv_4341',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.html new file mode 100644 index 000000000..2737c5ac1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.js new file mode 100644 index 000000000..42aa9fc12 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['bcdtouint8_3719',['bcdToUint8',['../namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7',1,'irutils']]], + ['begin_3720',['begin',['../classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654',1,'IRAmcorAc::begin()'],['../classIRArgoAC.html#aca61a63c37797699540c180354809bd8',1,'IRArgoAC::begin()'],['../classIRCarrierAc64.html#a7d9800edffad8a529971535ada5c00ad',1,'IRCarrierAc64::begin()'],['../classIRCoolixAC.html#a506a5ab28865d0243d75ebb7fe62e4ea',1,'IRCoolixAC::begin()'],['../classIRCoronaAc.html#a7db1a8eb9c3c7f76091b2707458e54a9',1,'IRCoronaAc::begin()'],['../classIRDaikinESP.html#accd087c48f246a71898cc6fd7afc2cc7',1,'IRDaikinESP::begin()'],['../classIRDaikin2.html#a6a7b5c28feec523ee81e99a9c32da26e',1,'IRDaikin2::begin()'],['../classIRDaikin216.html#a95be01fb6e672ebd12f2ebca0406ba15',1,'IRDaikin216::begin()'],['../classIRDaikin160.html#a62bb5f66cd99711e388eaa1be9faf617',1,'IRDaikin160::begin()'],['../classIRDaikin176.html#aa742f7d9ae3c9e57cae0e471d7fe59d1',1,'IRDaikin176::begin()'],['../classIRDaikin128.html#af86dba9e085b771c8c3caaebb9f8ee84',1,'IRDaikin128::begin()'],['../classIRDaikin152.html#a2746854350ca7d3a71699439f9843381',1,'IRDaikin152::begin()'],['../classIRDaikin64.html#a291d5f702b4ce763507c731db08b48f2',1,'IRDaikin64::begin()'],['../classIRDelonghiAc.html#a8d5e4f95e929c2365b2be47f42c6328c',1,'IRDelonghiAc::begin()'],['../classIRElectraAc.html#afff519ff9e81ec4aa03ff337f8efef13',1,'IRElectraAc::begin()'],['../classIRFujitsuAC.html#af0dc3fffdafae5970bc367f31029464b',1,'IRFujitsuAC::begin()'],['../classIRGoodweatherAc.html#abace3c8b25d4737a83fe33f94fc741d9',1,'IRGoodweatherAc::begin()'],['../classIRGreeAC.html#a44cf8f0e09248741094af4b35321ab1c',1,'IRGreeAC::begin()'],['../classIRHaierAC.html#ab92fd48ccb5707cb6d14e9d46ce42e17',1,'IRHaierAC::begin()'],['../classIRHaierACYRW02.html#addc01e60e8c4045fab6f22c852eb620f',1,'IRHaierACYRW02::begin()'],['../classIRHitachiAc.html#a62817c840f352bb01a394c37fc95f0f0',1,'IRHitachiAc::begin()'],['../classIRHitachiAc1.html#a28d5d351003d3e0bc1506b06cac8b3d6',1,'IRHitachiAc1::begin()'],['../classIRHitachiAc424.html#a11866bba49e9b976eb22b1039787ecae',1,'IRHitachiAc424::begin()'],['../classIRHitachiAc3.html#a6d79ac7b8ce977e8059019349d6991a7',1,'IRHitachiAc3::begin()'],['../classIRKelvinatorAC.html#a4591bf4e8131aa2a228cbc611156e7f4',1,'IRKelvinatorAC::begin()'],['../classIRLgAc.html#ac08ada1c67ace5ee2ebe4d325aa8c25d',1,'IRLgAc::begin()'],['../classIRMideaAC.html#ac36b6aa76b6b98ab186cd1d5ad9246b4',1,'IRMideaAC::begin()'],['../classIRMitsubishiAC.html#aa6e58080fd811f5b6d0f90c4ef5917df',1,'IRMitsubishiAC::begin()'],['../classIRMitsubishi136.html#abbcd8307862beee2899d2b9900537520',1,'IRMitsubishi136::begin()'],['../classIRMitsubishi112.html#a1d00958556872286b1818d0dbf02e112',1,'IRMitsubishi112::begin()'],['../classIRMitsubishiHeavy152Ac.html#afd649a53d9f7d9b31b7a5732d6cd0857',1,'IRMitsubishiHeavy152Ac::begin()'],['../classIRMitsubishiHeavy88Ac.html#a9bcf18c942ad4df4856bd319215a2002',1,'IRMitsubishiHeavy88Ac::begin()'],['../classIRNeoclimaAc.html#a8f82159b94d86cc4e3d4719441bfa96e',1,'IRNeoclimaAc::begin()'],['../classIRPanasonicAc.html#af48075dc4eb84fcc7f718375d4b0e00a',1,'IRPanasonicAc::begin()'],['../classIRSamsungAc.html#a89f1f902042cd6c6ba9d0f0c6d2cc581',1,'IRSamsungAc::begin()'],['../classIRSharpAc.html#ab87e5b599b7e8fc387fff25b5e13e34f',1,'IRSharpAc::begin()'],['../classIRTcl112Ac.html#a5b9983ab4027951679f0dc31b33cbadf',1,'IRTcl112Ac::begin()'],['../classIRTecoAc.html#a3b23a8556686c83b146101fc31b0dff3',1,'IRTecoAc::begin()'],['../classIRToshibaAC.html#a41e847f399e42c91b0f4aa2ef5d36cba',1,'IRToshibaAC::begin()'],['../classIRTrotecESP.html#a093b874287adb8ef2cc60c832765ff58',1,'IRTrotecESP::begin()'],['../classIRVestelAc.html#a794808d49eb6ce1521ff800b2b15a580',1,'IRVestelAc::begin()'],['../classIRWhirlpoolAc.html#a21db8b31504d416efb2511a33bdc2209',1,'IRWhirlpoolAc::begin()'],['../classIRsend.html#a386f026bf739b0718efde4cffa6ce129',1,'IRsend::begin()']]], + ['booltostring_3721',['boolToString',['../classIRac.html#a9bbd9e6b72e82a752df56e8c489668cf',1,'IRac']]], + ['buildfromstate_3722',['buildFromState',['../classIRFujitsuAC.html#a6fc8d7d0f649185e0858974394636a8d',1,'IRFujitsuAC']]], + ['buildstate_3723',['buildState',['../classIRFujitsuAC.html#ac885c7952253fcee9bf5b4a889b54da9',1,'IRFujitsuAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.html new file mode 100644 index 000000000..6da86e7da --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.js new file mode 100644 index 000000000..0498304c7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_3.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['calcblockchecksum_3724',['calcBlockChecksum',['../classIRKelvinatorAC.html#a22f561397c526ed6cc3f69a5d527d8d6',1,'IRKelvinatorAC']]], + ['calcchecksum_3725',['calcChecksum',['../classIRAmcorAc.html#aec764cf4d88bb3fcbe3f36d24780f6a9',1,'IRAmcorAc::calcChecksum()'],['../classIRArgoAC.html#acab2fe3b9f77f57f0e99da0bec0d7392',1,'IRArgoAC::calcChecksum()'],['../classIRCarrierAc64.html#a20676dcf4b0a6510cc3bce282fbf8504',1,'IRCarrierAc64::calcChecksum()'],['../classIRDaikin64.html#ac29c18fde1b0cd98991e68c0f672d0e9',1,'IRDaikin64::calcChecksum()'],['../classIRDelonghiAc.html#a14d7629bb888deb02e83886191f44c2d',1,'IRDelonghiAc::calcChecksum()'],['../classIRElectraAc.html#aa8063d07e41ca2cc0fd27093a2e67bb2',1,'IRElectraAc::calcChecksum()'],['../classIRHitachiAc.html#a6e5da77c12ad105439eb159b6a58104a',1,'IRHitachiAc::calcChecksum()'],['../classIRHitachiAc1.html#a6995513d5b59cd7b14cfff39c8843e8d',1,'IRHitachiAc1::calcChecksum()'],['../classIRLgAc.html#a96024e736cf87e65b4e2db7c4c269520',1,'IRLgAc::calcChecksum()'],['../classIRMideaAC.html#ac8733348b311ecf8eed87021cdf4ee31',1,'IRMideaAC::calcChecksum()'],['../classIRNeoclimaAc.html#ac75f316cd1813cdb4e8a6d45d10ddd57',1,'IRNeoclimaAc::calcChecksum()'],['../classIRPanasonicAc.html#a0e38b0f3c54e49cdb59f92279e19840f',1,'IRPanasonicAc::calcChecksum()'],['../classIRSamsungAc.html#a00f9b2a1480d2ed45bdea5d236c77d0f',1,'IRSamsungAc::calcChecksum()'],['../classIRSharpAc.html#af3655c9c394b1391572e8ffab70881ff',1,'IRSharpAc::calcChecksum()'],['../classIRTcl112Ac.html#a0973a1c8a53661ee7720ecb5d08e6dcc',1,'IRTcl112Ac::calcChecksum()'],['../classIRToshibaAC.html#a0d91d32d0d9d722f750eb423d88509f4',1,'IRToshibaAC::calcChecksum()'],['../classIRTrotecESP.html#ac1fdbcbbb8dd1ca50ccf2b55c7281c89',1,'IRTrotecESP::calcChecksum()'],['../classIRVestelAc.html#ac0ba3de4de70350c5325b3d5e0b39e58',1,'IRVestelAc::calcChecksum()']]], + ['calcfirstchecksum_3726',['calcFirstChecksum',['../classIRDaikin128.html#a25b25f6b73bb5f1fd17a16080179d4bc',1,'IRDaikin128']]], + ['calcsecondchecksum_3727',['calcSecondChecksum',['../classIRDaikin128.html#aea8da64300afe0d62ddf3082a72251f2',1,'IRDaikin128']]], + ['calculatechecksum_3728',['calculateChecksum',['../classIRMitsubishiAC.html#aaadefc5880dcd48e3fb2f12b59101f71',1,'IRMitsubishiAC']]], + ['calcusecperiod_3729',['calcUSecPeriod',['../classIRsend.html#ae9e68c0ed22e27c8f7ff82cec7ca3e33',1,'IRsend']]], + ['calibrate_3730',['calibrate',['../classIRAmcorAc.html#a6206e866e859bc4690cb014c49c1ff80',1,'IRAmcorAc::calibrate()'],['../classIRArgoAC.html#a63cd2f350a7f249c020439543ef3c6d5',1,'IRArgoAC::calibrate()'],['../classIRCarrierAc64.html#a0718376156750e66f98ea0549c75b21b',1,'IRCarrierAc64::calibrate()'],['../classIRCoolixAC.html#a9e39ce5050888210d6ba9b79ae3763e3',1,'IRCoolixAC::calibrate()'],['../classIRCoronaAc.html#a5b10141e4a6e3d8511fb7f9f46d00a96',1,'IRCoronaAc::calibrate()'],['../classIRDaikinESP.html#a638a49f49275a2ab0affb09088794e1b',1,'IRDaikinESP::calibrate()'],['../classIRDaikin2.html#a96c62125bddf113c6524960062d05a57',1,'IRDaikin2::calibrate()'],['../classIRDaikin216.html#a49d7501966528c0a690cfb505f163e26',1,'IRDaikin216::calibrate()'],['../classIRDaikin160.html#a608b5556f316c31e3a8aa73684e4e10d',1,'IRDaikin160::calibrate()'],['../classIRDaikin176.html#a1f5989110782c18aa18e3757c50f4a31',1,'IRDaikin176::calibrate()'],['../classIRDaikin128.html#a281396f4c632899648694e3139c3acd0',1,'IRDaikin128::calibrate()'],['../classIRDaikin152.html#a82fa8bfb3384ed09473345b6e194c3ba',1,'IRDaikin152::calibrate()'],['../classIRDaikin64.html#a12a1e21ba1b06f9b3ffac56691ff2206',1,'IRDaikin64::calibrate()'],['../classIRDelonghiAc.html#aab8f78adcd7fcbea0be753a4fc7696e0',1,'IRDelonghiAc::calibrate()'],['../classIRElectraAc.html#af333e90117ab035ff92389d4eefb3649',1,'IRElectraAc::calibrate()'],['../classIRFujitsuAC.html#a8bb6d8456561dfb04ccac95e0e489558',1,'IRFujitsuAC::calibrate()'],['../classIRGoodweatherAc.html#a8a747144587cf38d64bb32a7f86432b3',1,'IRGoodweatherAc::calibrate()'],['../classIRGreeAC.html#a8069d00a16ed04fd6fa10d84b364bca7',1,'IRGreeAC::calibrate()'],['../classIRHaierAC.html#a448b1d5db05f7722db4758e968ea3171',1,'IRHaierAC::calibrate()'],['../classIRHaierACYRW02.html#a2081b29d0526e339a6b94fc41c854197',1,'IRHaierACYRW02::calibrate()'],['../classIRHitachiAc.html#aaabd743da491ef5d73c4b8c46f11241a',1,'IRHitachiAc::calibrate()'],['../classIRHitachiAc1.html#a847a26df2e19668b147cba2eef595a21',1,'IRHitachiAc1::calibrate()'],['../classIRHitachiAc424.html#aae5e5c13767f335331c5fab8d8ba55d6',1,'IRHitachiAc424::calibrate()'],['../classIRHitachiAc3.html#a02e065c08f9ec4a3d9e6f71432087595',1,'IRHitachiAc3::calibrate()'],['../classIRKelvinatorAC.html#aee8863c1678b09432618bb4ca734db95',1,'IRKelvinatorAC::calibrate()'],['../classIRLgAc.html#a4fd11e935c781319b29f606f2f4b2570',1,'IRLgAc::calibrate()'],['../classIRMideaAC.html#a4077604c2af56783f95a0a64eda7148b',1,'IRMideaAC::calibrate()'],['../classIRMitsubishiAC.html#a973c876e34942776ac98f27de96c5228',1,'IRMitsubishiAC::calibrate()'],['../classIRMitsubishi136.html#a76133542efc3763cb7edc9809ad8d93c',1,'IRMitsubishi136::calibrate()'],['../classIRMitsubishi112.html#ad148250070a3f4ac57ed6cb957ffdefb',1,'IRMitsubishi112::calibrate()'],['../classIRMitsubishiHeavy152Ac.html#a5d4c4ce0e69ed33a2f1db2af127c13c5',1,'IRMitsubishiHeavy152Ac::calibrate()'],['../classIRMitsubishiHeavy88Ac.html#a027423ffbee92ef65b02423f7cbaeca8',1,'IRMitsubishiHeavy88Ac::calibrate()'],['../classIRNeoclimaAc.html#a636dd97ca22c847f966eca8112c8eede',1,'IRNeoclimaAc::calibrate()'],['../classIRPanasonicAc.html#a3f850333f2aa7ce40856c99ef85ffd79',1,'IRPanasonicAc::calibrate()'],['../classIRSamsungAc.html#a5cc7486ae41f61cbe0bb053dd7c9e9e3',1,'IRSamsungAc::calibrate()'],['../classIRSharpAc.html#ac37b1a5679ce90e84f6f95c5df1526bb',1,'IRSharpAc::calibrate()'],['../classIRTcl112Ac.html#a435744e4c6ef31b362d15523ce0584f5',1,'IRTcl112Ac::calibrate()'],['../classIRTecoAc.html#ad700578cbae74857483372597a399ff3',1,'IRTecoAc::calibrate()'],['../classIRToshibaAC.html#a74c66bba288cb3cbb43008edb7b376bf',1,'IRToshibaAC::calibrate()'],['../classIRTrotecESP.html#a56de318a27011e0bddb40738c18dbcf2',1,'IRTrotecESP::calibrate()'],['../classIRVestelAc.html#aae91667d96d86de824a20c256c311f15',1,'IRVestelAc::calibrate()'],['../classIRWhirlpoolAc.html#a006c59c1c84c62fccd3730bec30ef5e8',1,'IRWhirlpoolAc::calibrate()'],['../classIRsend.html#ad1776aa6c699f9eeca1eef9bb4fe355b',1,'IRsend::calibrate()']]], + ['cancelofftimer_3731',['cancelOffTimer',['../classIRPanasonicAc.html#a6d202284320c59205cb0d02cb613cada',1,'IRPanasonicAc']]], + ['cancelontimer_3732',['cancelOnTimer',['../classIRPanasonicAc.html#a102e7c029a923e121e40326859f2e4a3',1,'IRPanasonicAc']]], + ['canceltimers_3733',['cancelTimers',['../classIRHaierAC.html#a1cccc733f74232751f95c32e47795638',1,'IRHaierAC']]], + ['carrier64_3734',['carrier64',['../classIRac.html#a8090f2d79a31b81a0342b2e9efb9d555',1,'IRac']]], + ['celsiustofahrenheit_3735',['celsiusToFahrenheit',['../IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp'],['../IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp']]], + ['checksum_3736',['checksum',['../classIRAmcorAc.html#a67244a75731be6a3bd96ecc0384d0113',1,'IRAmcorAc::checksum()'],['../classIRArgoAC.html#ab0fe4e42d1c1201a92f5c4738b869763',1,'IRArgoAC::checksum()'],['../classIRCarrierAc64.html#a005fab56acf94fe97db7fa92651b2882',1,'IRCarrierAc64::checksum()'],['../classIRCoronaAc.html#ae0257fdafacf7fd2e7ac6ca3f8ae3168',1,'IRCoronaAc::checksum()'],['../classIRDaikinESP.html#ac8ac2a0674dc5cfaf514d319b51b20ab',1,'IRDaikinESP::checksum()'],['../classIRDaikin2.html#abb8e4ad1f8c3ada4211541e5a6e23e64',1,'IRDaikin2::checksum()'],['../classIRDaikin216.html#af2c951901b3b9db9f285a4e9b563ea5e',1,'IRDaikin216::checksum()'],['../classIRDaikin160.html#a34090a598e2b25ee4688c8fbac933638',1,'IRDaikin160::checksum()'],['../classIRDaikin176.html#a4cfe2c4ca95adbf66e149b322d58a843',1,'IRDaikin176::checksum()'],['../classIRDaikin128.html#a747c906808c269581de6cf9b02e5c0a7',1,'IRDaikin128::checksum()'],['../classIRDaikin152.html#a0e208d3e1938abcb320665fffd6ed0e3',1,'IRDaikin152::checksum()'],['../classIRDaikin64.html#a27e2f82b2f13f1e63e981af8f1d3912a',1,'IRDaikin64::checksum()'],['../classIRDelonghiAc.html#ae4c4e7140a763eee159991f5c8afc54f',1,'IRDelonghiAc::checksum()'],['../classIRElectraAc.html#a73dc5b9a038669cc1f00f5b64ad458d1',1,'IRElectraAc::checksum()'],['../classIRGreeAC.html#aaa6b2702d79a7a3db454b99d71064679',1,'IRGreeAC::checksum()'],['../classIRHaierAC.html#ab7faae274ff7f30bf7df3c58d6e7e210',1,'IRHaierAC::checksum()'],['../classIRHaierACYRW02.html#a18045defdd5641ae13c7c75dda0cf23a',1,'IRHaierACYRW02::checksum()'],['../classIRHitachiAc.html#a3b65ccbd6de6b5dcb5a794b471e363f5',1,'IRHitachiAc::checksum()'],['../classIRHitachiAc1.html#aa6687d6282b134d508d6534e8446b341',1,'IRHitachiAc1::checksum()'],['../classIRKelvinatorAC.html#a09acf66b92d3fde6692ec02ff8e62dab',1,'IRKelvinatorAC::checksum()'],['../classIRLgAc.html#a438cbbb77668205c3f2b59b8f28585cd',1,'IRLgAc::checksum()'],['../classIRMideaAC.html#a418b7cbb4b388dba732176d891bb499d',1,'IRMideaAC::checksum()'],['../classIRMitsubishiAC.html#a7c5b1e5c53d99f1564d8a0424f626adb',1,'IRMitsubishiAC::checksum()'],['../classIRMitsubishi136.html#aa2c6fe9b28462052cf6627960126a783',1,'IRMitsubishi136::checksum()'],['../classIRMitsubishi112.html#a65ee232bfc09d05724b8ec5ada538ccf',1,'IRMitsubishi112::checksum()'],['../classIRMitsubishiHeavy152Ac.html#a14cdcaeefef283f707d0fae5108d65f4',1,'IRMitsubishiHeavy152Ac::checksum()'],['../classIRMitsubishiHeavy88Ac.html#acb03ef0da10d3fec14c71bfa087a02b8',1,'IRMitsubishiHeavy88Ac::checksum()'],['../classIRNeoclimaAc.html#acba18ea35a59f6f1ccbcfd75e7979feb',1,'IRNeoclimaAc::checksum()'],['../classIRSamsungAc.html#a75c5886916dd3ef3aa6f96f04934048d',1,'IRSamsungAc::checksum()'],['../classIRSharpAc.html#ad87f46ad9220213d77022dc34920d802',1,'IRSharpAc::checksum()'],['../classIRTcl112Ac.html#a2486f46c7db6a3dfbe3af9c842ff37fa',1,'IRTcl112Ac::checksum()'],['../classIRToshibaAC.html#a5aa2c6fc3b07830f872f98906df7e9ec',1,'IRToshibaAC::checksum()'],['../classIRTrotecESP.html#a5e416e083653ab365f65b3f645f60e8c',1,'IRTrotecESP::checksum()'],['../classIRVestelAc.html#a7a9046e7b5ff57864862bf5f7ad23c4d',1,'IRVestelAc::checksum()'],['../classIRWhirlpoolAc.html#a7790be3df6c4609e5c08c17c5ee52047',1,'IRWhirlpoolAc::checksum()']]], + ['checkzjssig_3737',['checkZjsSig',['../classIRMitsubishiHeavy88Ac.html#a6aaf8ae4c9b52d73229b20414099f309',1,'IRMitsubishiHeavy88Ac']]], + ['checkzmssig_3738',['checkZmsSig',['../classIRMitsubishiHeavy152Ac.html#a3d1c9d2c98945d21eb1ce82fac1771d2',1,'IRMitsubishiHeavy152Ac']]], + ['cleanstate_3739',['cleanState',['../classIRac.html#aad988dc123495012758307213a933f37',1,'IRac']]], + ['clearontimerflag_3740',['clearOnTimerFlag',['../classIRDaikin2.html#a3587ce954ba94e347d08d73974b50d72',1,'IRDaikin2::clearOnTimerFlag()'],['../classIRDaikin128.html#a8f0bd823535a5bf8b2642eed698b9a71',1,'IRDaikin128::clearOnTimerFlag()']]], + ['clearpowerspecial_3741',['clearPowerSpecial',['../classIRSharpAc.html#a3c98c96a66dff560941e461a70efdb1a',1,'IRSharpAc']]], + ['clearsensortemp_3742',['clearSensorTemp',['../classIRCoolixAC.html#a5deca09ced33931f089f5cd3c07eac4a',1,'IRCoolixAC']]], + ['clearsleeptimerflag_3743',['clearSleepTimerFlag',['../classIRDaikin2.html#a0c165ff91a712e61910ef25e9728e066',1,'IRDaikin2::clearSleepTimerFlag()'],['../classIRDaikin128.html#a5517a481892dd55f4528103037a0d408',1,'IRDaikin128::clearSleepTimerFlag()']]], + ['cmpstates_3744',['cmpStates',['../classIRac.html#a3ba4eee08650dfcdd6d492a67c86f016',1,'IRac']]], + ['compare_3745',['compare',['../classIRrecv.html#ad7347c72b14d9f2f20f65bcf235ab3dc',1,'IRrecv']]], + ['convertfan_3746',['convertFan',['../classIRAmcorAc.html#ad0f8b7cdf5942c3680639d410f53d18c',1,'IRAmcorAc::convertFan()'],['../classIRArgoAC.html#acd147993fb998a0e7015173b9514d4a2',1,'IRArgoAC::convertFan()'],['../classIRCarrierAc64.html#a255e6679397434877f1c6c9ac70fff50',1,'IRCarrierAc64::convertFan()'],['../classIRCoolixAC.html#a7ffa1cfcf82bd905b0f607401200c895',1,'IRCoolixAC::convertFan()'],['../classIRCoronaAc.html#a6826036fcabbb45e7369f42912fae02f',1,'IRCoronaAc::convertFan()'],['../classIRDaikinESP.html#ab58be19636d41d60b9c62d658ca18cae',1,'IRDaikinESP::convertFan()'],['../classIRDaikin2.html#ad147ea14695c9498bb091862e172dc81',1,'IRDaikin2::convertFan()'],['../classIRDaikin216.html#a520cc65161290f15022b4108f7049a83',1,'IRDaikin216::convertFan()'],['../classIRDaikin160.html#a32658c0f24d0b0c398d54ef648d717a9',1,'IRDaikin160::convertFan()'],['../classIRDaikin176.html#ae3dda9a55f851b5253d0677835a2c3dd',1,'IRDaikin176::convertFan()'],['../classIRDaikin128.html#a983c13bc608fbfa32d7ea2c36dc84116',1,'IRDaikin128::convertFan()'],['../classIRDaikin152.html#a5e2e79252602ca3493baf00cf3fe7787',1,'IRDaikin152::convertFan()'],['../classIRDaikin64.html#a109ff0c33b0a7dfd763683538915c811',1,'IRDaikin64::convertFan()'],['../classIRDelonghiAc.html#aeff2970b20963ae59b99464ae683113f',1,'IRDelonghiAc::convertFan()'],['../classIRElectraAc.html#afcf3ef62d69e370cb88dd2036e5a1357',1,'IRElectraAc::convertFan()'],['../classIRFujitsuAC.html#a111060b7c93e77fdbd1dc96fc8a6c10f',1,'IRFujitsuAC::convertFan()'],['../classIRGoodweatherAc.html#abb443826453a65e87f6dedddf2dd74d5',1,'IRGoodweatherAc::convertFan()'],['../classIRGreeAC.html#a39aa0e4759330aef39382813d3aa96a4',1,'IRGreeAC::convertFan()'],['../classIRHaierAC.html#a58628dd19a7247fc5358c0dc8c30baba',1,'IRHaierAC::convertFan()'],['../classIRHaierACYRW02.html#a66e42d018f3d86b136624a347d333401',1,'IRHaierACYRW02::convertFan()'],['../classIRHitachiAc.html#a5c632c9efc42d9378fdefe608c9bb771',1,'IRHitachiAc::convertFan()'],['../classIRHitachiAc1.html#a96c22fddcd7dfcc5b8f205cc5c7efdef',1,'IRHitachiAc1::convertFan()'],['../classIRHitachiAc424.html#a4f502b779f9fe4aca3a2f649c4cfbda3',1,'IRHitachiAc424::convertFan()'],['../classIRLgAc.html#a71ce8d1be4222ecae26fcea3b71a1ba6',1,'IRLgAc::convertFan()'],['../classIRMideaAC.html#a08a8e49986ce808fd7edd8aee7399a64',1,'IRMideaAC::convertFan()'],['../classIRMitsubishiAC.html#a58ce95e1ae198a9855ee5e81335570cf',1,'IRMitsubishiAC::convertFan()'],['../classIRMitsubishi136.html#a81e691b386950859d1ad0a3c7faf7e49',1,'IRMitsubishi136::convertFan()'],['../classIRMitsubishi112.html#a4194e5b076687b79153bc8cd50c9bc86',1,'IRMitsubishi112::convertFan()'],['../classIRMitsubishiHeavy152Ac.html#ae11040290301b5fe66dfe79e8ea9512b',1,'IRMitsubishiHeavy152Ac::convertFan()'],['../classIRMitsubishiHeavy88Ac.html#acd69c45dbc3f5a150e17b82b5eae7b3f',1,'IRMitsubishiHeavy88Ac::convertFan()'],['../classIRNeoclimaAc.html#a8c3ac622428f118b28d53a3a82740993',1,'IRNeoclimaAc::convertFan()'],['../classIRPanasonicAc.html#aeada51b2d1ff51ff81dfc5c996b416df',1,'IRPanasonicAc::convertFan()'],['../classIRSamsungAc.html#a6be52cc6980ad0bf80261c2a48eb3c87',1,'IRSamsungAc::convertFan()'],['../classIRSharpAc.html#a9b58f12bc44639694a8422a2b9b78a88',1,'IRSharpAc::convertFan()'],['../classIRTcl112Ac.html#a3f8178f8f646ed9892eefa40bbff4fb1',1,'IRTcl112Ac::convertFan()'],['../classIRTecoAc.html#a262aead12607ff962dd97c73e6dea078',1,'IRTecoAc::convertFan()'],['../classIRToshibaAC.html#aeef5cfb840f3058629b486232b7efb22',1,'IRToshibaAC::convertFan()'],['../classIRTrotecESP.html#a905d4d5bd298db8c2e1a9b004fd541e8',1,'IRTrotecESP::convertFan()'],['../classIRVestelAc.html#aa7702b0e50b6c8073cd7740a630b19dd',1,'IRVestelAc::convertFan()'],['../classIRWhirlpoolAc.html#a3004feef0ec5fe327d6a43d68d029377',1,'IRWhirlpoolAc::convertFan()']]], + ['convertmode_3747',['convertMode',['../classIRAmcorAc.html#ab57117e1072b5265ac9ab5be6d58bccc',1,'IRAmcorAc::convertMode()'],['../classIRArgoAC.html#ad242e7b18dea9768b9fad6b1e0e12f65',1,'IRArgoAC::convertMode()'],['../classIRCarrierAc64.html#a8e94b1526b26cec55f1e700c86aaf74e',1,'IRCarrierAc64::convertMode()'],['../classIRCoolixAC.html#acfb0d2c20322cb4d3cd681a3a54b30fe',1,'IRCoolixAC::convertMode()'],['../classIRCoronaAc.html#a9f9cf8e38285cb2f3caf79e14516bda1',1,'IRCoronaAc::convertMode()'],['../classIRDaikinESP.html#aa96f52596148cab1f806faf190a0aa0a',1,'IRDaikinESP::convertMode()'],['../classIRDaikin2.html#a10aae6ec9783eac9d89ff98b947767dd',1,'IRDaikin2::convertMode()'],['../classIRDaikin216.html#a4fa9eca71ee6ad66b3fffd8b779f5fb0',1,'IRDaikin216::convertMode()'],['../classIRDaikin160.html#ac69861fdbde341fc75d90a5e4918aa56',1,'IRDaikin160::convertMode()'],['../classIRDaikin176.html#ab07fd6eab0ac6132625a291dae8cfc78',1,'IRDaikin176::convertMode()'],['../classIRDaikin128.html#a0bad4830267887299b2773075a16b283',1,'IRDaikin128::convertMode()'],['../classIRDaikin152.html#a25592419c95c0271d8a0c4203a2919c3',1,'IRDaikin152::convertMode()'],['../classIRDaikin64.html#a595d91c0294c9482aa453f077eebf882',1,'IRDaikin64::convertMode()'],['../classIRDelonghiAc.html#a51a6eab431f81fa448a48c0ec071e706',1,'IRDelonghiAc::convertMode()'],['../classIRElectraAc.html#a0026a1981e713ce1f6916203717e0a00',1,'IRElectraAc::convertMode()'],['../classIRFujitsuAC.html#a242504a5b97c19ff7e369efcadd3916e',1,'IRFujitsuAC::convertMode()'],['../classIRGoodweatherAc.html#aef14e2b6c220e556300d286922da1f54',1,'IRGoodweatherAc::convertMode()'],['../classIRGreeAC.html#a609e87ad4926f150b44426caf79fd38e',1,'IRGreeAC::convertMode()'],['../classIRHaierAC.html#af6188dbed5cae022b4fd1eef358f594c',1,'IRHaierAC::convertMode()'],['../classIRHaierACYRW02.html#a9a51f3d4b4c60ed7d99f9836a57bb3e5',1,'IRHaierACYRW02::convertMode()'],['../classIRHitachiAc.html#af1bdc5e22e5e24218421bd3bbb436301',1,'IRHitachiAc::convertMode()'],['../classIRHitachiAc1.html#a6211c96f463353791e5d922d9939f23c',1,'IRHitachiAc1::convertMode()'],['../classIRHitachiAc424.html#a974bf3ada7117e463b8c23e2158902be',1,'IRHitachiAc424::convertMode()'],['../classIRKelvinatorAC.html#acc9d70a94dd3813005ca0381b80a35e4',1,'IRKelvinatorAC::convertMode()'],['../classIRLgAc.html#a114eca216b7c9c7be33d4527f848311e',1,'IRLgAc::convertMode()'],['../classIRMideaAC.html#a0ca16c8bc2232be467baba8ea69b40d4',1,'IRMideaAC::convertMode()'],['../classIRMitsubishiAC.html#a86d069e406d247bafbefbdd09b22894f',1,'IRMitsubishiAC::convertMode()'],['../classIRMitsubishi136.html#a43b8ff1083d09563a5d3a25b24e480ea',1,'IRMitsubishi136::convertMode()'],['../classIRMitsubishi112.html#aa41d6ec8bc6dc91891aaddbd996f6040',1,'IRMitsubishi112::convertMode()'],['../classIRMitsubishiHeavy152Ac.html#a067ca776edc19a577e8bcda5013e1d0f',1,'IRMitsubishiHeavy152Ac::convertMode()'],['../classIRMitsubishiHeavy88Ac.html#ad0419d176d70935fc535cdcc47ffba02',1,'IRMitsubishiHeavy88Ac::convertMode()'],['../classIRNeoclimaAc.html#a61335773816ecbbeb949e5da78d07e50',1,'IRNeoclimaAc::convertMode()'],['../classIRPanasonicAc.html#a3f3bc3e4b73338351f33f26c635075bb',1,'IRPanasonicAc::convertMode()'],['../classIRSamsungAc.html#a76f7fed436bdfcd9c9a9da8dd99cb9f7',1,'IRSamsungAc::convertMode()'],['../classIRSharpAc.html#a340d60b4b24c10479b3fed4409e0834b',1,'IRSharpAc::convertMode()'],['../classIRTcl112Ac.html#ac063653636319a9451590b08abbfecdc',1,'IRTcl112Ac::convertMode()'],['../classIRTecoAc.html#a5f95c5aacd8fc312acd0f36fd9dc33f2',1,'IRTecoAc::convertMode()'],['../classIRToshibaAC.html#a1cdcb695e128d57c721623cfdc9a8e8d',1,'IRToshibaAC::convertMode()'],['../classIRTrotecESP.html#a114a7022f0382275a55a2775d3d8e894',1,'IRTrotecESP::convertMode()'],['../classIRVestelAc.html#a5bb967d4972374254dad2c0a6fac7ed2',1,'IRVestelAc::convertMode()'],['../classIRWhirlpoolAc.html#afbf2f473c98f480d68c8bb28e1202d56',1,'IRWhirlpoolAc::convertMode()']]], + ['convertswingh_3748',['convertSwingH',['../classIRDaikin2.html#a79a989ad0221157c4dd8d992cc2863dc',1,'IRDaikin2::convertSwingH()'],['../classIRDaikin176.html#a2387b8dff2a9c9cd164034977b03f192',1,'IRDaikin176::convertSwingH()'],['../classIRHitachiAc344.html#a34d0fa5b522b51dac46f33cbb0a0a389',1,'IRHitachiAc344::convertSwingH()'],['../classIRMitsubishiAC.html#a8235a527a178486bb58ce62749aaf2fb',1,'IRMitsubishiAC::convertSwingH()'],['../classIRMitsubishi112.html#ab17598ce693475ef167525b8408e2da4',1,'IRMitsubishi112::convertSwingH()'],['../classIRMitsubishiHeavy152Ac.html#a0183cf4fcefb60ac61060dde698efbd1',1,'IRMitsubishiHeavy152Ac::convertSwingH()'],['../classIRMitsubishiHeavy88Ac.html#a8b995256a6651822731da7a912c01f19',1,'IRMitsubishiHeavy88Ac::convertSwingH()'],['../classIRPanasonicAc.html#abb17db3452ae347101dc6eaa8e84433b',1,'IRPanasonicAc::convertSwingH()']]], + ['convertswingv_3749',['convertSwingV',['../classIRArgoAC.html#ac23ff32b45c3fc5402e7e303ad9b5d54',1,'IRArgoAC::convertSwingV()'],['../classIRDaikin2.html#aa3de8468b869989ec52a5f9f57ff4a77',1,'IRDaikin2::convertSwingV()'],['../classIRDaikin160.html#a615f599f3bc3e8dec5e5ef92512a2301',1,'IRDaikin160::convertSwingV()'],['../classIRGoodweatherAc.html#a3b37c04fd9b60b63052d93374fc15d4f',1,'IRGoodweatherAc::convertSwingV()'],['../classIRGreeAC.html#ae3717400d1dc0336bcc5fa17c1397a9b',1,'IRGreeAC::convertSwingV()'],['../classIRHaierAC.html#a34053c32ba50ff3b81b208d068efe2a4',1,'IRHaierAC::convertSwingV()'],['../classIRHaierACYRW02.html#a1f7dffe29fbe67989b2f425d629850db',1,'IRHaierACYRW02::convertSwingV()'],['../classIRMitsubishiAC.html#ab561f6421b2f3e0d92d9fab685da639a',1,'IRMitsubishiAC::convertSwingV()'],['../classIRMitsubishi136.html#a59dee0c57d3ca2bdf4c7839142d23059',1,'IRMitsubishi136::convertSwingV()'],['../classIRMitsubishi112.html#a95c545497e0acc6f78ec229a2ada9de0',1,'IRMitsubishi112::convertSwingV()'],['../classIRMitsubishiHeavy152Ac.html#a93f2678fce3b35cfe3e31221d3355291',1,'IRMitsubishiHeavy152Ac::convertSwingV()'],['../classIRMitsubishiHeavy88Ac.html#abeba5346e1fc2223838fbc5d3ed03f23',1,'IRMitsubishiHeavy88Ac::convertSwingV()'],['../classIRPanasonicAc.html#a024e64fe32848e9b0b72e9c04db0fd98',1,'IRPanasonicAc::convertSwingV()']]], + ['coolix_3750',['coolix',['../classIRac.html#a4750db3b06db51f5a23c22538c41b7b3',1,'IRac']]], + ['copyirparams_3751',['copyIrParams',['../classIRrecv.html#ab017a0f9256954bb7d943e3c6b7e31bf',1,'IRrecv']]], + ['corona_3752',['corona',['../classIRac.html#adcf2bdb1ef6dc057532ae7d188557dac',1,'IRac']]], + ['countbits_3753',['countBits',['../IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8cpp.html#aae8042367bb94df81672603270fa7342',1,'countBits(const uint64_t data, const uint8_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp'],['../IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365',1,'countBits(const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp']]], + ['crudenoisefilter_3754',['crudeNoiseFilter',['../classIRrecv.html#ae833bdb8fccc676043fc4ccae432fab1',1,'IRrecv']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.html new file mode 100644 index 000000000..911304e60 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.js new file mode 100644 index 000000000..25bed5a59 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_4.js @@ -0,0 +1,95 @@ +var searchData= +[ + ['daikin_3755',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac']]], + ['daikin128_3756',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac']]], + ['daikin152_3757',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac']]], + ['daikin160_3758',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac']]], + ['daikin176_3759',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac']]], + ['daikin2_3760',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac']]], + ['daikin216_3761',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac']]], + ['daikin64_3762',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac']]], + ['decode_3763',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], + ['decodeairwell_3764',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], + ['decodeaiwarct501_3765',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], + ['decodeamcor_3766',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], + ['decodeargo_3767',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], + ['decodecarrierac_3768',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], + ['decodecarrierac40_3769',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], + ['decodecarrierac64_3770',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], + ['decodecoolix_3771',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], + ['decodecoronaac_3772',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], + ['decodedaikin_3773',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], + ['decodedaikin128_3774',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], + ['decodedaikin152_3775',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], + ['decodedaikin160_3776',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], + ['decodedaikin176_3777',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], + ['decodedaikin2_3778',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], + ['decodedaikin216_3779',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], + ['decodedaikin64_3780',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], + ['decodedelonghiac_3781',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], + ['decodedenon_3782',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], + ['decodedish_3783',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], + ['decodedoshisha_3784',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], + ['decodeelectraac_3785',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], + ['decodeepson_3786',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], + ['decodefujitsuac_3787',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], + ['decodegicable_3788',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], + ['decodegoodweather_3789',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], + ['decodegree_3790',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], + ['decodehaierac_3791',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], + ['decodehaieracyrw02_3792',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], + ['decodehash_3793',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], + ['decodehitachiac_3794',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], + ['decodehitachiac1_3795',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], + ['decodehitachiac3_3796',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], + ['decodehitachiac424_3797',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], + ['decodeinax_3798',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], + ['decodejvc_3799',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], + ['decodekelvinator_3800',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], + ['decodelasertag_3801',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], + ['decodelegopf_3802',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], + ['decodelg_3803',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], + ['decodelutron_3804',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], + ['decodemagiquest_3805',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], + ['decodemidea_3806',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], + ['decodemidea24_3807',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], + ['decodemitsubishi_3808',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], + ['decodemitsubishi112_3809',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], + ['decodemitsubishi136_3810',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], + ['decodemitsubishi2_3811',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], + ['decodemitsubishiac_3812',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], + ['decodemitsubishiheavy_3813',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], + ['decodemultibrackets_3814',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], + ['decodemwm_3815',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], + ['decodenec_3816',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], + ['decodeneoclima_3817',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], + ['decodenikai_3818',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], + ['decodepanasonic_3819',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], + ['decodepanasonicac_3820',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], + ['decodepioneer_3821',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], + ['decoderc5_3822',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], + ['decoderc6_3823',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], + ['decodercmm_3824',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], + ['decodesamsung_3825',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], + ['decodesamsung36_3826',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], + ['decodesamsungac_3827',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], + ['decodesanyolc7461_3828',['decodeSanyoLC7461',['../classIRrecv.html#a201a5a78f43c2ac216fae4a2ba4d14ec',1,'IRrecv']]], + ['decodesharp_3829',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], + ['decodesharpac_3830',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], + ['decodesony_3831',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], + ['decodesymphony_3832',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], + ['decodeteco_3833',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], + ['decodetoshibaac_3834',['decodeToshibaAC',['../classIRrecv.html#a01228e51ede905beac689967bb14b538',1,'IRrecv']]], + ['decodetostate_3835',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], + ['decodetrotec_3836',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], + ['decodevestelac_3837',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], + ['decodewhirlpoolac_3838',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], + ['decodewhynter_3839',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], + ['decodezepeal_3840',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], + ['defaultbits_3841',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], + ['delonghiac_3842',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], + ['disableirin_3843',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], + ['disableofftimer_3844',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a6c8ad4c34713d61942c80b6052e6283a',1,'IRDaikin2::disableOffTimer()']]], + ['disableontimer_3845',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#ab0e77969a86af9637cb9aa4b4befd4aa',1,'IRDaikin2::disableOnTimer()']]], + ['disablesleeptimer_3846',['disableSleepTimer',['../classIRDaikin2.html#a5461cf51967d3fe67489384c82daac47',1,'IRDaikin2']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.html new file mode 100644 index 000000000..61b920db6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.js new file mode 100644 index 000000000..17a079595 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_5.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['elapsed_3847',['elapsed',['../classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1',1,'IRtimer::elapsed()'],['../classTimerMs.html#ad4aa759c58727393f69863b3461dfc09',1,'TimerMs::elapsed()']]], + ['electra_3848',['electra',['../classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de',1,'IRac']]], + ['enableirin_3849',['enableIRIn',['../classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d',1,'IRrecv']]], + ['enableirout_3850',['enableIROut',['../classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d',1,'IRsend']]], + ['enableofftimer_3851',['enableOffTimer',['../classIRDaikinESP.html#a8a5686066bfc86f1d7cc454e793d3357',1,'IRDaikinESP::enableOffTimer()'],['../classIRDaikin2.html#afc7ba7d7de2976e010a72778091d633a',1,'IRDaikin2::enableOffTimer()'],['../classIRWhirlpoolAc.html#abb1c3685d90d81b44e72050cd0e042f6',1,'IRWhirlpoolAc::enableOffTimer()']]], + ['enableontimer_3852',['enableOnTimer',['../classIRDaikinESP.html#aac4d0f5f60c9f4c41d3bb1e0f24bc4bc',1,'IRDaikinESP::enableOnTimer()'],['../classIRDaikin2.html#a91ec5f7c67cb87102a5eb030e0763b50',1,'IRDaikin2::enableOnTimer()'],['../classIRWhirlpoolAc.html#aa3edd58882cf4fc65172e490c9e0bb2e',1,'IRWhirlpoolAc::enableOnTimer()']]], + ['enablesleeptimer_3853',['enableSleepTimer',['../classIRDaikin2.html#a9c86782a98a54818ae92419eec5a060b',1,'IRDaikin2']]], + ['enabletimer_3854',['enableTimer',['../classIRWhirlpoolAc.html#ad07804318721bc5dd60f7322e02c9696',1,'IRWhirlpoolAc']]], + ['encodedoshisha_3855',['encodeDoshisha',['../classIRsend.html#a0522a2256e8358df715065530be6317d',1,'IRsend']]], + ['encodejvc_3856',['encodeJVC',['../classIRsend.html#a6303b991c0545443e7ccf63ba89dbf18',1,'IRsend']]], + ['encodelg_3857',['encodeLG',['../classIRsend.html#a109b67a68e7a33900cb5c5017ed4578b',1,'IRsend']]], + ['encodemagiquest_3858',['encodeMagiQuest',['../classIRsend.html#a4ee40126279dbde8bb02888115577563',1,'IRsend']]], + ['encodenec_3859',['encodeNEC',['../classIRsend.html#ab2e1ce918e4e06b955c3d2a089ce189c',1,'IRsend']]], + ['encodepanasonic_3860',['encodePanasonic',['../classIRsend.html#a8340497ae75f00c844e53dfc73700d9c',1,'IRsend']]], + ['encodepioneer_3861',['encodePioneer',['../classIRsend.html#ae0686829eba31587b71034a1c0495971',1,'IRsend']]], + ['encoderc5_3862',['encodeRC5',['../classIRsend.html#a88457fd4cc01d6e8097e04c022ede74a',1,'IRsend']]], + ['encoderc5x_3863',['encodeRC5X',['../classIRsend.html#ae760ef1be11f25f7a61237f96a8871d9',1,'IRsend']]], + ['encoderc6_3864',['encodeRC6',['../classIRsend.html#ac0e341462426ea146b944502a6d3fde0',1,'IRsend']]], + ['encodesamsung_3865',['encodeSAMSUNG',['../classIRsend.html#a4ab0579bd854306b2667de19207e4ffb',1,'IRsend']]], + ['encodesanyolc7461_3866',['encodeSanyoLC7461',['../classIRsend.html#a864bef0dc48f6af4b59057362906cf5d',1,'IRsend']]], + ['encodesharp_3867',['encodeSharp',['../classIRsend.html#a8f4c7a36380ba31155eba5ff8f5f631e',1,'IRsend']]], + ['encodesony_3868',['encodeSony',['../classIRsend.html#aa0aea2cb04f0a7ee9056f15fecfc08c3',1,'IRsend']]], + ['encodetime_3869',['encodeTime',['../classIRPanasonicAc.html#a0eee4ad6105d35ee6c34c4666174b04b',1,'IRPanasonicAc']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.html new file mode 100644 index 000000000..dc70a4a07 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.js new file mode 100644 index 000000000..5cf543885 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['fahrenheittocelsius_3870',['fahrenheitToCelsius',['../IRutils_8cpp.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp'],['../IRutils_8h.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp']]], + ['fanspeedtostring_3871',['fanspeedToString',['../classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6',1,'IRac']]], + ['fixchecksum_3872',['fixChecksum',['../classIRPanasonicAc.html#aa40bef35000ddf6d14e286b3f2044897',1,'IRPanasonicAc']]], + ['fixup_3873',['fixup',['../classIRGreeAC.html#a5bbdcc83f9d49e32379cd27cad0ba130',1,'IRGreeAC::fixup()'],['../classIRKelvinatorAC.html#a389af589003c39794ae5d4bd572fa485',1,'IRKelvinatorAC::fixup()']]], + ['fujitsu_3874',['fujitsu',['../classIRac.html#a23cf80270562ca28ae1f1da2bbb559e7',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.html new file mode 100644 index 000000000..7de310677 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.js new file mode 100644 index 000000000..e0bde456f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_7.js @@ -0,0 +1,114 @@ +var searchData= +[ + ['get3d_3875',['get3D',['../classIRMitsubishiHeavy152Ac.html#ab55c9e587d472baf6a6d9cb61c733b08',1,'IRMitsubishiHeavy152Ac::get3D()'],['../classIRMitsubishiHeavy88Ac.html#ad5171595fef2360f50d7991897c40632',1,'IRMitsubishiHeavy88Ac::get3D()']]], + ['get8cheat_3876',['get8CHeat',['../classIRNeoclimaAc.html#aee5b855ce2decb455eaaceb6b4913368',1,'IRNeoclimaAc']]], + ['getbeep_3877',['getBeep',['../classIRDaikin2.html#ab6cc9737950ac0ab476bb240897902ec',1,'IRDaikin2::getBeep()'],['../classIRSamsungAc.html#ab13b10f80e8e1169f0b01239f357b3ba',1,'IRSamsungAc::getBeep()']]], + ['getbit_3878',['getBit',['../namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6',1,'irutils::getBit(const uint64_t data, const uint8_t position, const uint8_t size)'],['../namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee',1,'irutils::getBit(const uint8_t data, const uint8_t position)']]], + ['getboost_3879',['getBoost',['../classIRDelonghiAc.html#abf9fd996c60573eca50b5e165cbcbf63',1,'IRDelonghiAc']]], + ['getbreeze_3880',['getBreeze',['../classIRSamsungAc.html#ad46fed65fb1375bf3a3940aa2cb311d5',1,'IRSamsungAc']]], + ['getbufsize_3881',['getBufSize',['../classIRrecv.html#a69ab02ea6823ccf18d1f6be87ca1b92e',1,'IRrecv']]], + ['getbutton_3882',['getButton',['../classIRHaierACYRW02.html#af4df303e5662aa63cba715ff49e09b75',1,'IRHaierACYRW02::getButton()'],['../classIRHitachiAc424.html#a32fa646e61cbaca805f33995344732cc',1,'IRHitachiAc424::getButton()'],['../classIRNeoclimaAc.html#a747fec9ea02220e6cf7465f5f9bb800a',1,'IRNeoclimaAc::getButton()']]], + ['getclean_3883',['getClean',['../classIRCoolixAC.html#a272f94ef641041835a650dd4fbdda7bf',1,'IRCoolixAC::getClean()'],['../classIRDaikin2.html#a7930bbca261f07ef1c129cd6a2c848b4',1,'IRDaikin2::getClean()'],['../classIRElectraAc.html#aa06b1246aaa3f25b239b50e395258b7a',1,'IRElectraAc::getClean()'],['../classIRFujitsuAC.html#a4bf872038fc175d1496eae25e9fcdce3',1,'IRFujitsuAC::getClean()'],['../classIRMitsubishiHeavy152Ac.html#a8e7c2759efe24e580d5886600f513648',1,'IRMitsubishiHeavy152Ac::getClean()'],['../classIRMitsubishiHeavy88Ac.html#a54eafb2474559371393c3ec3ba560d3a',1,'IRMitsubishiHeavy88Ac::getClean()'],['../classIRSamsungAc.html#a789edd6c6b0cb291753204d1e9c78fc8',1,'IRSamsungAc::getClean()'],['../classIRSharpAc.html#a599032d1101f15b98ffa9aa3039bc7d6',1,'IRSharpAc::getClean()']]], + ['getclock_3884',['getClock',['../classIRDaikin128.html#a6ef4d58f53b35619e8cc44fae6125490',1,'IRDaikin128::getClock()'],['../classIRDaikin64.html#a676ecda2ad53f78ef5cbf470f524918e',1,'IRDaikin64::getClock()'],['../classIRMitsubishiAC.html#a8918c5b8a72d58282b160c8fde9866ad',1,'IRMitsubishiAC::getClock()'],['../classIRPanasonicAc.html#a084479e8f23f7dbb8f155209b36efb3b',1,'IRPanasonicAc::getClock()'],['../classIRWhirlpoolAc.html#a329e06f4c44fa9aef42952f2d123b7a8',1,'IRWhirlpoolAc::getClock()']]], + ['getcmd_3885',['getCmd',['../classIRFujitsuAC.html#a758d209fd0e07cb200b2d4a232b6b0a2',1,'IRFujitsuAC']]], + ['getcomfort_3886',['getComfort',['../classIRDaikinESP.html#a4377e48a16a6ed1cb4fb2b711e672b16',1,'IRDaikinESP::getComfort()'],['../classIRDaikin152.html#a22cc2073fd7d4a609c335172ff6720cf',1,'IRDaikin152::getComfort()']]], + ['getcommand_3887',['getCommand',['../classIRGoodweatherAc.html#aa2a24e8c783cb5b463a95fa05779456e',1,'IRGoodweatherAc::getCommand()'],['../classIRHaierAC.html#a3a291fccea5f4b32f83da2605d2a82e0',1,'IRHaierAC::getCommand()'],['../classIRWhirlpoolAc.html#ab1c34a9498bc2c8da8e4bdcfe4bf011a',1,'IRWhirlpoolAc::getCommand()']]], + ['getcorrectedrawlength_3888',['getCorrectedRawLength',['../IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp']]], + ['getcurrentday_3889',['getCurrentDay',['../classIRDaikinESP.html#ad0ecc69b2ab3e7678c8e4e8d64949077',1,'IRDaikinESP']]], + ['getcurrenttime_3890',['getCurrentTime',['../classIRDaikinESP.html#a724c204890e6810d150ed54794c9a505',1,'IRDaikinESP::getCurrentTime()'],['../classIRDaikin2.html#a94dc89b80dfdee2afa718314ec522b53',1,'IRDaikin2::getCurrentTime()']]], + ['getcurrtime_3891',['getCurrTime',['../classIRHaierAC.html#aa0e05983088035f6d85c520843922c25',1,'IRHaierAC']]], + ['getdisplay_3892',['getDisplay',['../classIRSamsungAc.html#a890aa3cab0918fda56daf0bf84ecc5c1',1,'IRSamsungAc']]], + ['getdisplaytempsource_3893',['getDisplayTempSource',['../classIRGreeAC.html#adea5a2d2b3a9d699c722e7a93784809e',1,'IRGreeAC']]], + ['getecono_3894',['getEcono',['../classIRCoronaAc.html#a0b8413e2a7aeecc5c0c55049c1705c38',1,'IRCoronaAc::getEcono()'],['../classIRDaikinESP.html#a84337719e737ea4dc1e1fb10f6f7df92',1,'IRDaikinESP::getEcono()'],['../classIRDaikin2.html#ad8098fa67e8808eebfad7611b6fc7881',1,'IRDaikin2::getEcono()'],['../classIRDaikin128.html#a0c05f4c6f996d56d56075e20a46f2c2c',1,'IRDaikin128::getEcono()'],['../classIRDaikin152.html#a9946c73f0c5906fbb2f39119e00531e5',1,'IRDaikin152::getEcono()'],['../classIRMitsubishiHeavy152Ac.html#aa7814232c84ff918f1d05ec105abf851',1,'IRMitsubishiHeavy152Ac::getEcono()'],['../classIRMitsubishiHeavy88Ac.html#af3accae413215cdd45a180f22bbe443e',1,'IRMitsubishiHeavy88Ac::getEcono()'],['../classIRTcl112Ac.html#afabe458a354d822f3ff929a461b6e046',1,'IRTcl112Ac::getEcono()']]], + ['geteconotoggle_3895',['getEconoToggle',['../classIRSharpAc.html#a701542019d3a823ba203f0db3cfce353',1,'IRSharpAc']]], + ['geteye_3896',['getEye',['../classIRDaikin2.html#a02fbd472d3c79b2391fc11da692c8998',1,'IRDaikin2::getEye()'],['../classIRNeoclimaAc.html#a15b91e2c854537d94cbabd7cd9bd30e4',1,'IRNeoclimaAc::getEye()']]], + ['geteyeauto_3897',['getEyeAuto',['../classIRDaikin2.html#a0cae45648292bdee8092a30338975ed0',1,'IRDaikin2']]], + ['getfan_3898',['getFan',['../classIRAmcorAc.html#a8ba84d83fc426ee5b75e0be27fd22d9c',1,'IRAmcorAc::getFan()'],['../classIRArgoAC.html#a413e60e09f1abcf231a173e1374e51e0',1,'IRArgoAC::getFan()'],['../classIRCarrierAc64.html#a93bb27688657af434d57f0dd9a159566',1,'IRCarrierAc64::getFan()'],['../classIRCoolixAC.html#a937c0084f79eaef2a160331993dfb881',1,'IRCoolixAC::getFan()'],['../classIRCoronaAc.html#aa51ccd3684009d5a56bbde73eab7ccfa',1,'IRCoronaAc::getFan()'],['../classIRDaikinESP.html#addad5838bb00885df8af258a61fa4131',1,'IRDaikinESP::getFan()'],['../classIRDaikin2.html#aafe89842b356c288dd38d256f9eb050c',1,'IRDaikin2::getFan()'],['../classIRDaikin216.html#a0905e04fc3d21249b057aa79721c1614',1,'IRDaikin216::getFan()'],['../classIRDaikin160.html#a2eb3987f87d19e1ab01dac111ae2d16b',1,'IRDaikin160::getFan()'],['../classIRDaikin176.html#a59c3d23a5e1b7c69c05690cf7984dab8',1,'IRDaikin176::getFan()'],['../classIRDaikin128.html#a68a7bdb134ea62913f51844f976beab1',1,'IRDaikin128::getFan()'],['../classIRDaikin152.html#a64eacdc63547026477b5f861e7da62ea',1,'IRDaikin152::getFan()'],['../classIRDaikin64.html#abdd4bc3d5464b5297b4f2fd0e7a831e1',1,'IRDaikin64::getFan()'],['../classIRDelonghiAc.html#afd2ed0ec70e3912335a9174bca7e7f5e',1,'IRDelonghiAc::getFan()'],['../classIRElectraAc.html#a6e8b30452671c26777ba2bc556bc8dce',1,'IRElectraAc::getFan()'],['../classIRGoodweatherAc.html#ac1ac922370ad09a80dd4e7158b279b9f',1,'IRGoodweatherAc::getFan()'],['../classIRGreeAC.html#a0bf5a552490c7500f0584affacac13d0',1,'IRGreeAC::getFan()'],['../classIRHaierAC.html#a5b15678e94acc14a0bb86bff61230e93',1,'IRHaierAC::getFan()'],['../classIRHaierACYRW02.html#a6de2fb6111049720913eb28bf6f64a00',1,'IRHaierACYRW02::getFan()'],['../classIRHitachiAc.html#a6a5f5b9544e93e842f76a2f4994c1665',1,'IRHitachiAc::getFan()'],['../classIRHitachiAc1.html#af1c6acc2ff9946af7091695b616c2cac',1,'IRHitachiAc1::getFan()'],['../classIRHitachiAc424.html#ab3ecfb8b6fb503ba3eed023609f2fe7b',1,'IRHitachiAc424::getFan()'],['../classIRKelvinatorAC.html#a64ce2ccf879217410269230218e0c76b',1,'IRKelvinatorAC::getFan()'],['../classIRLgAc.html#a10d666ca13c99696a53dca7f5773d7de',1,'IRLgAc::getFan()'],['../classIRMideaAC.html#ab793e409c666e001242623a2607786e7',1,'IRMideaAC::getFan()'],['../classIRMitsubishiAC.html#a06cb4179b92af1b1d3c167659c30db95',1,'IRMitsubishiAC::getFan()'],['../classIRMitsubishi136.html#a61b0a21a32eb1211cab201587de6f7ce',1,'IRMitsubishi136::getFan()'],['../classIRMitsubishi112.html#a00446fe1fdf27012acd41303b711e575',1,'IRMitsubishi112::getFan()'],['../classIRMitsubishiHeavy152Ac.html#a957abe79b7966da644db091ffe75d73b',1,'IRMitsubishiHeavy152Ac::getFan()'],['../classIRMitsubishiHeavy88Ac.html#ac00255061012eef8d62f44e478839d7e',1,'IRMitsubishiHeavy88Ac::getFan()'],['../classIRNeoclimaAc.html#a8690eda2de7b00029f70304131388890',1,'IRNeoclimaAc::getFan()'],['../classIRPanasonicAc.html#a302ba64400c820a5a0d822315516564a',1,'IRPanasonicAc::getFan()'],['../classIRSamsungAc.html#a6461c72b2598d1bdc14263552b5b0c98',1,'IRSamsungAc::getFan()'],['../classIRSharpAc.html#abae439959603f62b0fe5aea8ec93afb5',1,'IRSharpAc::getFan()'],['../classIRTcl112Ac.html#af59bcc28ac97869595a5ad928300908b',1,'IRTcl112Ac::getFan()'],['../classIRTecoAc.html#a420b209010276b30c9bc322b7393b3be',1,'IRTecoAc::getFan()'],['../classIRToshibaAC.html#afd2000b62b79afde107ebc8a513724ab',1,'IRToshibaAC::getFan()'],['../classIRVestelAc.html#a492abc867ad5b766715eaa301c71f3c8',1,'IRVestelAc::getFan()'],['../classIRWhirlpoolAc.html#a80fedb2ddec4a3dbb2c96b5a76a26e1a',1,'IRWhirlpoolAc::getFan()']]], + ['getfanspeed_3899',['getFanSpeed',['../classIRFujitsuAC.html#aacb180bb884b80c1f8bbbed7e2dd23d5',1,'IRFujitsuAC']]], + ['getfilter_3900',['getFilter',['../classIRFujitsuAC.html#a430ed6a4b946d1b4527741b42e12a25c',1,'IRFujitsuAC::getFilter()'],['../classIRMitsubishiHeavy152Ac.html#aaf2864f7187acd1b75d9daad2d504c13',1,'IRMitsubishiHeavy152Ac::getFilter()']]], + ['getflap_3901',['getFlap',['../classIRArgoAC.html#a2285908626731c2feaa85635f3ce1ff1',1,'IRArgoAC']]], + ['getfollow_3902',['getFollow',['../classIRNeoclimaAc.html#af4ed34fe7b151bcc5ff6922a54427da0',1,'IRNeoclimaAc']]], + ['getfresh_3903',['getFresh',['../classIRNeoclimaAc.html#a2c411cf55667339ff8e3664a6d0ee843',1,'IRNeoclimaAc']]], + ['getfreshair_3904',['getFreshAir',['../classIRDaikin2.html#aad50061042e14f665e5ecbd85ac48741',1,'IRDaikin2']]], + ['getfreshairhigh_3905',['getFreshAirHigh',['../classIRDaikin2.html#a72c8d47c2e6664eb0e40efe6933e4ac1',1,'IRDaikin2']]], + ['gethealth_3906',['getHealth',['../classIRHaierAC.html#a5c69955fe18f4ddb0286084f3fb39228',1,'IRHaierAC::getHealth()'],['../classIRHaierACYRW02.html#a97fc67cddf50a51b0db6c4e22fcaafa1',1,'IRHaierACYRW02::getHealth()'],['../classIRTcl112Ac.html#adf484b6a4097dd8834c202c81fea0ad4',1,'IRTcl112Ac::getHealth()']]], + ['gethold_3907',['getHold',['../classIRNeoclimaAc.html#a63045d768858265ed1bbc4c337de79eb',1,'IRNeoclimaAc']]], + ['gethumid_3908',['getHumid',['../classIRTecoAc.html#a30012508c6ba93ad07185a13795c5909',1,'IRTecoAc']]], + ['getifeel_3909',['getiFeel',['../classIRArgoAC.html#abc802d8ab9dbd9f918bc2aa36d2ea414',1,'IRArgoAC::getiFeel()'],['../classIRGreeAC.html#ae1f8352fc32fa773bb33243cc32657a2',1,'IRGreeAC::getIFeel()']]], + ['getion_3910',['getIon',['../classIRNeoclimaAc.html#a908a65189ba6eb8141d50da000feec0a',1,'IRNeoclimaAc::getIon()'],['../classIRPanasonicAc.html#a6d6909b7b96815c227f0009dcbd3ce8c',1,'IRPanasonicAc::getIon()'],['../classIRSamsungAc.html#aab1ebb523ca45431a0127b82cb4ce36f',1,'IRSamsungAc::getIon()'],['../classIRSharpAc.html#a1de89912129d0a1fffbd51625a1eeab7',1,'IRSharpAc::getIon()'],['../classIRVestelAc.html#a835f194f14479c25a3d651f324e6436c',1,'IRVestelAc::getIon()']]], + ['getionfilter_3911',['getIonFilter',['../classIRKelvinatorAC.html#a81127edca40e504c432b2079030f84a5',1,'IRKelvinatorAC']]], + ['getled_3912',['getLed',['../classIRCoolixAC.html#aa7712ebbf103c4d61dc645cb42dcf3f0',1,'IRCoolixAC']]], + ['getlight_3913',['getLight',['../classIRDaikin2.html#ada92da390d8b4247a014057c3d6fa296',1,'IRDaikin2::getLight()'],['../classIRGoodweatherAc.html#a90454990d7f9cde54ab5a11170d5e97d',1,'IRGoodweatherAc::getLight()'],['../classIRGreeAC.html#ae63281a9caf850429857cc3fa99ccf05',1,'IRGreeAC::getLight()'],['../classIRKelvinatorAC.html#a85e77c7a1b763373b0732d125923f53f',1,'IRKelvinatorAC::getLight()'],['../classIRNeoclimaAc.html#ad87fc87e34c3de56c4bbe35443e92226',1,'IRNeoclimaAc::getLight()'],['../classIRTcl112Ac.html#ae711a585331ffab24f96b0bb0f3960ed',1,'IRTcl112Ac::getLight()'],['../classIRTecoAc.html#a12a2bb7a5d3c90139dba85d54a535b8f',1,'IRTecoAc::getLight()'],['../classIRWhirlpoolAc.html#a87f2274da6101e1c2e78eb4e68aadff0',1,'IRWhirlpoolAc::getLight()']]], + ['getlighttoggle_3914',['getLightToggle',['../classIRDaikin128.html#a3e279e67bbafc0dc74dbd847e2e8ad75',1,'IRDaikin128::getLightToggle()'],['../classIRElectraAc.html#a63bc44235b18e11531479dc2f633f94b',1,'IRElectraAc::getLightToggle()']]], + ['getmax_3915',['getMax',['../classIRAmcorAc.html#a61659b6b54d652713efdf408a09db087',1,'IRAmcorAc::getMax()'],['../classIRArgoAC.html#aff24da9d975bf1f6df0a83be2ad7a913',1,'IRArgoAC::getMax()']]], + ['getmode_3916',['getMode',['../classIRAmcorAc.html#a30fd2a228e63e6b9a1544c3c1ec910f7',1,'IRAmcorAc::getMode()'],['../classIRArgoAC.html#a532a313f22c716b60cee070d9ba0839d',1,'IRArgoAC::getMode()'],['../classIRCarrierAc64.html#a4f8e0435a086ec934b10e9bd66f2ae85',1,'IRCarrierAc64::getMode()'],['../classIRCoolixAC.html#a16772a297404e2c54f951c49bfc608de',1,'IRCoolixAC::getMode()'],['../classIRCoronaAc.html#aa6ccd147a1da55d5e9596159008d40de',1,'IRCoronaAc::getMode()'],['../classIRDaikinESP.html#a164452703a7a6d46766acc85aab63898',1,'IRDaikinESP::getMode()'],['../classIRDaikin2.html#a681279a765159550ac1ec84895fff4d2',1,'IRDaikin2::getMode()'],['../classIRDaikin216.html#a21b3e93f98ac55e743efe38c20617d6a',1,'IRDaikin216::getMode()'],['../classIRDaikin160.html#a2b890fe446db67acd828fefd4afef84f',1,'IRDaikin160::getMode()'],['../classIRDaikin176.html#a1fc59660d77eb9dc3a8361d7d4698cd9',1,'IRDaikin176::getMode()'],['../classIRDaikin128.html#aa3d96e14663c498a6e0938ba04a02f87',1,'IRDaikin128::getMode()'],['../classIRDaikin152.html#af4c6c468f3075ffa83694a0da15a707b',1,'IRDaikin152::getMode()'],['../classIRDaikin64.html#a96624667a4494087074792562090b552',1,'IRDaikin64::getMode()'],['../classIRDelonghiAc.html#a89d9fa5b2c4a59b46cac111418232090',1,'IRDelonghiAc::getMode()'],['../classIRElectraAc.html#a473a794960bc07837e407830a3ea528b',1,'IRElectraAc::getMode()'],['../classIRFujitsuAC.html#a5f9630d81acffc74434ce852b9523d17',1,'IRFujitsuAC::getMode()'],['../classIRGoodweatherAc.html#a622e11c7b236fa127008f990819eca75',1,'IRGoodweatherAc::getMode()'],['../classIRGreeAC.html#abb5c4a29000c8b22b25e150e7ef5a6c3',1,'IRGreeAC::getMode()'],['../classIRHaierAC.html#aa180c60030d9972807238cceba886ff5',1,'IRHaierAC::getMode()'],['../classIRHaierACYRW02.html#aec7359fb8c796fc45577a40370f874c9',1,'IRHaierACYRW02::getMode()'],['../classIRHitachiAc.html#a414a4083e15deb1890a1eab4827d78ac',1,'IRHitachiAc::getMode()'],['../classIRHitachiAc1.html#afc4fdc94989297b73e08e9c82bd00733',1,'IRHitachiAc1::getMode()'],['../classIRHitachiAc424.html#ac1bf6df8277d50dcad8e389b21971e24',1,'IRHitachiAc424::getMode()'],['../classIRHitachiAc3.html#a511c9b731a0367fd05b32b42a69adec2',1,'IRHitachiAc3::getMode()'],['../classIRKelvinatorAC.html#a7a0f8f587fdda24db12db7aace478fd6',1,'IRKelvinatorAC::getMode()'],['../classIRLgAc.html#a19752b31eb74aad0cc9538a2f0af8b8c',1,'IRLgAc::getMode()'],['../classIRMideaAC.html#a1b5d19958e11a85d1af09b15631af124',1,'IRMideaAC::getMode()'],['../classIRMitsubishiAC.html#a069fd1d3bea102968e74b312fdf01548',1,'IRMitsubishiAC::getMode()'],['../classIRMitsubishi136.html#a3176aec8444f500bdea6e650cee2dbcc',1,'IRMitsubishi136::getMode()'],['../classIRMitsubishi112.html#ac2006f1e33f2a0cebcb6c23fcac389bb',1,'IRMitsubishi112::getMode()'],['../classIRMitsubishiHeavy152Ac.html#af0a51f8195492aac62bea483cb9a392c',1,'IRMitsubishiHeavy152Ac::getMode()'],['../classIRMitsubishiHeavy88Ac.html#ae8e1263a77b8fb04c2a4a5d6ce9805f9',1,'IRMitsubishiHeavy88Ac::getMode()'],['../classIRNeoclimaAc.html#ad2a43e0405a44787bb177bf13a324dde',1,'IRNeoclimaAc::getMode()'],['../classIRPanasonicAc.html#a5ffd59dd87b047e172ba74866267a9f3',1,'IRPanasonicAc::getMode()'],['../classIRSamsungAc.html#a740a874ee2c492027623943043a1ebf6',1,'IRSamsungAc::getMode()'],['../classIRSharpAc.html#adbccabd2ec614c8b921a02af8b529b4e',1,'IRSharpAc::getMode()'],['../classIRTcl112Ac.html#ad1b6538977bc464f1e6719b5cea89945',1,'IRTcl112Ac::getMode()'],['../classIRTecoAc.html#a4200081a4d42f2ec06935f71c4870e67',1,'IRTecoAc::getMode()'],['../classIRToshibaAC.html#aba5db1f6c8665443f26875ee9716302f',1,'IRToshibaAC::getMode()'],['../classIRTrotecESP.html#ab1b08911e9b76a06a08f4c7b8a2244c0',1,'IRTrotecESP::getMode()'],['../classIRVestelAc.html#ae5b3d9f1420f4d1951ba148399ccbd41',1,'IRVestelAc::getMode()'],['../classIRWhirlpoolAc.html#a4d2896e42e9c5ee1e8dc8f7e917618dc',1,'IRWhirlpoolAc::getMode()']]], + ['getmodel_3917',['getModel',['../classIRFujitsuAC.html#a35c6bfb730014f3a24676f94e8308163',1,'IRFujitsuAC::getModel()'],['../classIRGreeAC.html#a3780fc11488a2b40f3c1a50bb94783c7',1,'IRGreeAC::getModel()'],['../classIRHitachiAc1.html#a9ad677e1a2d7acba032701051538b08a',1,'IRHitachiAc1::getModel()'],['../classIRLgAc.html#aa49cde438a42a5415e127cc95da465ac',1,'IRLgAc::getModel()'],['../classIRPanasonicAc.html#a625be846baf3ec556a59379785e642e8',1,'IRPanasonicAc::getModel()'],['../classIRWhirlpoolAc.html#ac55e17fde1ef2acf6524d936732a0469',1,'IRWhirlpoolAc::getModel()']]], + ['getmold_3918',['getMold',['../classIRDaikinESP.html#ad593ac32c01752f56e9476af234cf813',1,'IRDaikinESP::getMold()'],['../classIRDaikin2.html#a330b3a8f25bd2d053dab318126b32569',1,'IRDaikin2::getMold()']]], + ['getnight_3919',['getNight',['../classIRArgoAC.html#adca87781240cf9c22e6bbaad9d59537c',1,'IRArgoAC::getNight()'],['../classIRMitsubishiHeavy152Ac.html#a659036b987991f39daa13fbd23b35f35',1,'IRMitsubishiHeavy152Ac::getNight()']]], + ['getnormalstate_3920',['getNormalState',['../classIRCoolixAC.html#a458618f926f8b57e4b9bdeae0d13a70d',1,'IRCoolixAC']]], + ['getofftime_3921',['getOffTime',['../classIRDaikinESP.html#a5213017d706cd6bce88cbfb65150bdb5',1,'IRDaikinESP::getOffTime()'],['../classIRDaikin2.html#af3a47c7b99cec3b108b5173cf1ae7da4',1,'IRDaikin2::getOffTime()'],['../classIRDaikin64.html#a7f163901c3b5065e393e3ae0e01d599a',1,'IRDaikin64::getOffTime()']]], + ['getofftimeenabled_3922',['getOffTimeEnabled',['../classIRDaikin64.html#a9ebf2deb196caece88c286d8c03bb69a',1,'IRDaikin64']]], + ['getofftimer_3923',['getOffTimer',['../classIRCarrierAc64.html#a6a28f83442d695385f76f13913c76542',1,'IRCarrierAc64::getOffTimer()'],['../classIRCoronaAc.html#a4602f36769e6b135fec8802a3b087adf',1,'IRCoronaAc::getOffTimer()'],['../classIRDaikin128.html#a6a18b029d75b006de5aeac2efb8e08e2',1,'IRDaikin128::getOffTimer()'],['../classIRDelonghiAc.html#acd32fa9acbc9782df9aa00325efea2a7',1,'IRDelonghiAc::getOffTimer()'],['../classIRHaierAC.html#a8b5c970b3204aa447d86dc2941dbd7b1',1,'IRHaierAC::getOffTimer()'],['../classIRHitachiAc1.html#ab99d73871d3510a830f988628dc5e33d',1,'IRHitachiAc1::getOffTimer()'],['../classIRPanasonicAc.html#a4bce377d32504f666662f1d93645761f',1,'IRPanasonicAc::getOffTimer()'],['../classIRVestelAc.html#a575ba7c6aee1d2377975ef0ef938775a',1,'IRVestelAc::getOffTimer()'],['../classIRWhirlpoolAc.html#a05e1308970e0169d6a081baf120efd9f',1,'IRWhirlpoolAc::getOffTimer()']]], + ['getofftimerenabled_3924',['getOffTimerEnabled',['../classIRDaikinESP.html#af6388cd6d2189f9067b708d46917a83a',1,'IRDaikinESP::getOffTimerEnabled()'],['../classIRDaikin2.html#a7a413002b64497a5fce7cdcdd6924e8f',1,'IRDaikin2::getOffTimerEnabled()'],['../classIRDaikin128.html#a4234e0e3ff261afa9d5ec6a8b92d8f53',1,'IRDaikin128::getOffTimerEnabled()'],['../classIRDelonghiAc.html#ac1b91f6d4bb5e41e43fc7e4b9a3187a3',1,'IRDelonghiAc::getOffTimerEnabled()']]], + ['getontime_3925',['getOnTime',['../classIRDaikinESP.html#a8a6730accc69647cbc12ebc99b2cfb77',1,'IRDaikinESP::getOnTime()'],['../classIRDaikin2.html#ad62f28698595be7717f0f29a5396853d',1,'IRDaikin2::getOnTime()'],['../classIRDaikin64.html#a9b316390ffc3e81d423d3e4b326be7d4',1,'IRDaikin64::getOnTime()']]], + ['getontimeenabled_3926',['getOnTimeEnabled',['../classIRDaikin64.html#a0b9795a5536566fe2f9b713aaff4b9ee',1,'IRDaikin64']]], + ['getontimer_3927',['getOnTimer',['../classIRCarrierAc64.html#a071ebd204e56e2cd771281b1c42b9cb5',1,'IRCarrierAc64::getOnTimer()'],['../classIRCoronaAc.html#a7beec38ab35dbebe955c4da188de25d5',1,'IRCoronaAc::getOnTimer()'],['../classIRDaikin128.html#a3b8a36d99a7cbf87bac8480f16c3d583',1,'IRDaikin128::getOnTimer()'],['../classIRDelonghiAc.html#a03f6d037d62d3c641b45ec97a1bff715',1,'IRDelonghiAc::getOnTimer()'],['../classIRHaierAC.html#a99d3339eb5ecdbf1c86e85408507af7b',1,'IRHaierAC::getOnTimer()'],['../classIRHitachiAc1.html#a9d5846c1efcc8fae1eeb6079a61cb18b',1,'IRHitachiAc1::getOnTimer()'],['../classIRPanasonicAc.html#a51d50a59e09f0911022c59ab60bf4889',1,'IRPanasonicAc::getOnTimer()'],['../classIRVestelAc.html#aa39e3047ea694ada9cc7e992e7b03e32',1,'IRVestelAc::getOnTimer()'],['../classIRWhirlpoolAc.html#a26c00db3316585e32d64428d6732fcd0',1,'IRWhirlpoolAc::getOnTimer()']]], + ['getontimerenabled_3928',['getOnTimerEnabled',['../classIRDaikinESP.html#a45e473403547c8ec95a50aeb1ed93607',1,'IRDaikinESP::getOnTimerEnabled()'],['../classIRDaikin2.html#a8921edb7885d728ee5294fa03cb13a87',1,'IRDaikin2::getOnTimerEnabled()'],['../classIRDaikin128.html#a450948bdbdc22da751c8f1abc2da642d',1,'IRDaikin128::getOnTimerEnabled()'],['../classIRDelonghiAc.html#a0911f40ee5838bfc6b7deb3193e6a62a',1,'IRDelonghiAc::getOnTimerEnabled()']]], + ['getoutsidequiet_3929',['getOutsideQuiet',['../classIRFujitsuAC.html#a404a06b5022899e622e629ec099864f5',1,'IRFujitsuAC']]], + ['getpower_3930',['getPower',['../classIRAmcorAc.html#a141e2af9eb4530b175a430dee31bc5ae',1,'IRAmcorAc::getPower()'],['../classIRArgoAC.html#a10812d30095c4adc24cb3eee25e2d246',1,'IRArgoAC::getPower()'],['../classIRCarrierAc64.html#ad50ebb44815e55cc0a99f4762939dc54',1,'IRCarrierAc64::getPower()'],['../classIRCoolixAC.html#a150e3b827d8002e77135955079c78704',1,'IRCoolixAC::getPower()'],['../classIRCoronaAc.html#a313c5489b53bba5747e871ec0a7af417',1,'IRCoronaAc::getPower()'],['../classIRDaikinESP.html#a1d72647db12276493d8e093a4feda44e',1,'IRDaikinESP::getPower()'],['../classIRDaikin2.html#a2f25c4ff097f82a91c062aacd5ebabfc',1,'IRDaikin2::getPower()'],['../classIRDaikin216.html#a2b1e1dd2a059466ab5e5c8ab7eb4f2b4',1,'IRDaikin216::getPower()'],['../classIRDaikin160.html#ad472f0d0680da6ab83a1b636bc00e271',1,'IRDaikin160::getPower()'],['../classIRDaikin176.html#ad564616fc1bf90c00c594c2d3cb5394d',1,'IRDaikin176::getPower()'],['../classIRDaikin152.html#a8581147072fecf6ebd0dd2da50a63f05',1,'IRDaikin152::getPower()'],['../classIRDelonghiAc.html#ae077f0e444fcf24b1e0343e93244b7e8',1,'IRDelonghiAc::getPower()'],['../classIRElectraAc.html#aed11407cd8be470baf5d4667e28e1273',1,'IRElectraAc::getPower()'],['../classIRFujitsuAC.html#a5d03a83db8bc2084ae2acea17c2c7ae2',1,'IRFujitsuAC::getPower()'],['../classIRGoodweatherAc.html#a6f7db9f499c4fea860976bb273ba15df',1,'IRGoodweatherAc::getPower()'],['../classIRGreeAC.html#ac2c97551e02c6cce1b9983cc902f5f1a',1,'IRGreeAC::getPower()'],['../classIRHaierACYRW02.html#a446ee5873e80fa474d322ca5ff598fb5',1,'IRHaierACYRW02::getPower()'],['../classIRHitachiAc.html#a3be8c7ded012c2ad5cab59ee6fe3c88e',1,'IRHitachiAc::getPower()'],['../classIRHitachiAc1.html#ab4756a44153997ff686e8a14369407c0',1,'IRHitachiAc1::getPower()'],['../classIRHitachiAc424.html#ae4d3370d89253ec0861a60b84b2d078c',1,'IRHitachiAc424::getPower()'],['../classIRKelvinatorAC.html#a3dc660afab763c9a4b0cfc5d8e14d220',1,'IRKelvinatorAC::getPower()'],['../classIRLgAc.html#ac09b8af7cc2d46881d3a710068acb5bd',1,'IRLgAc::getPower()'],['../classIRMideaAC.html#a2035653f3ac503a8d30563fded46cab2',1,'IRMideaAC::getPower()'],['../classIRMitsubishiAC.html#aa5fb3f328b6c8a553d25088ec9e858d7',1,'IRMitsubishiAC::getPower()'],['../classIRMitsubishi136.html#a371faf10c80560e1ad59c70d66147723',1,'IRMitsubishi136::getPower()'],['../classIRMitsubishi112.html#afb9ea09a7a9724410470944f6decaeed',1,'IRMitsubishi112::getPower()'],['../classIRMitsubishiHeavy152Ac.html#a1e1d742e255685d1b16935d6031b25fc',1,'IRMitsubishiHeavy152Ac::getPower()'],['../classIRMitsubishiHeavy88Ac.html#a05c50ad07ba7be443414792c7e585354',1,'IRMitsubishiHeavy88Ac::getPower()'],['../classIRNeoclimaAc.html#a635e81f673155eb123dab84a78ff86d5',1,'IRNeoclimaAc::getPower()'],['../classIRPanasonicAc.html#a2d50ed3994f6cc6e205d2c5fb6c0cc55',1,'IRPanasonicAc::getPower()'],['../classIRSamsungAc.html#a26fb214fdf3af4d39a898a1721583cf3',1,'IRSamsungAc::getPower()'],['../classIRSharpAc.html#a49c6c86c901a8d02d7a0d67bfcc397af',1,'IRSharpAc::getPower()'],['../classIRTcl112Ac.html#a36e3b74c79ec42a0922893a3ccd5d045',1,'IRTcl112Ac::getPower()'],['../classIRTecoAc.html#a66c39da54baa6d0c56418ff8027a12a6',1,'IRTecoAc::getPower()'],['../classIRToshibaAC.html#a6d69c147e786aa642906f24c9781bb0f',1,'IRToshibaAC::getPower()'],['../classIRTrotecESP.html#a2e303fe918f79281df98cffb9d2cd539',1,'IRTrotecESP::getPower()'],['../classIRVestelAc.html#a1d6cdc9ad13ebbf1e9a4a83f95244ced',1,'IRVestelAc::getPower()']]], + ['getpowerbutton_3931',['getPowerButton',['../classIRCoronaAc.html#ae38a9860cc3fe73909ba20260ad9a51a',1,'IRCoronaAc']]], + ['getpowerful_3932',['getPowerful',['../classIRDaikinESP.html#a827c3dc88027b043271a469bc41c4bb1',1,'IRDaikinESP::getPowerful()'],['../classIRDaikin2.html#abad28f7287f4d90d196eb0eb7f93ed43',1,'IRDaikin2::getPowerful()'],['../classIRDaikin216.html#acf94e292df8f45233e115324a95a5e83',1,'IRDaikin216::getPowerful()'],['../classIRDaikin128.html#a50f2de409b3e8966f8406b659aaaedac',1,'IRDaikin128::getPowerful()'],['../classIRDaikin152.html#a20ec24a0ef288cabb93080b4fa0f71fe',1,'IRDaikin152::getPowerful()'],['../classIRPanasonicAc.html#a736b77df0563705095d8f4241a80b1cb',1,'IRPanasonicAc::getPowerful()'],['../classIRSamsungAc.html#ac43367d5aec71e1dcb5b178427268412',1,'IRSamsungAc::getPowerful()']]], + ['getpowerspecial_3933',['getPowerSpecial',['../classIRSharpAc.html#aeb5d032c42863b6c3e2665c0719b9341',1,'IRSharpAc']]], + ['getpowertoggle_3934',['getPowerToggle',['../classIRDaikin128.html#a0b6b298a0287411f6fe34ec1a0032ff1',1,'IRDaikin128::getPowerToggle()'],['../classIRDaikin64.html#a7921b6a9e776a1802b98e25c0ac4d2dc',1,'IRDaikin64::getPowerToggle()'],['../classIRHitachiAc1.html#a384412f40bfde7a9934fbb7eb2813641',1,'IRHitachiAc1::getPowerToggle()'],['../classIRWhirlpoolAc.html#a08150bcdcf13f0dfb3a7608b2d354a1e',1,'IRWhirlpoolAc::getPowerToggle()']]], + ['getpurify_3935',['getPurify',['../classIRDaikin2.html#a3e2785832ae78bafa655aa61853a47bf',1,'IRDaikin2']]], + ['getquiet_3936',['getQuiet',['../classIRDaikinESP.html#a25dcfbeacce65f9a89d14a87f759c483',1,'IRDaikinESP::getQuiet()'],['../classIRDaikin2.html#a237eb163e3dd1bf8e45ae2324f0b7dcf',1,'IRDaikin2::getQuiet()'],['../classIRDaikin216.html#aaa0f1aa62f8afd3d489a33af1c1067bc',1,'IRDaikin216::getQuiet()'],['../classIRDaikin128.html#a685bbc2afeecdef69180229b64e1d54b',1,'IRDaikin128::getQuiet()'],['../classIRDaikin152.html#adc8878ec0f6ea2d4fc2fa756a2e9ef4e',1,'IRDaikin152::getQuiet()'],['../classIRDaikin64.html#a431e41baa2881f397b5bf8ee2b79fec9',1,'IRDaikin64::getQuiet()'],['../classIRKelvinatorAC.html#a467c0d63911a87bed8815a5b636d6d75',1,'IRKelvinatorAC::getQuiet()'],['../classIRMitsubishi136.html#afaf690f15d21fea1070b33b2720e98fa',1,'IRMitsubishi136::getQuiet()'],['../classIRMitsubishi112.html#a3b3b78ba5114d783ab7696f3e4687002',1,'IRMitsubishi112::getQuiet()'],['../classIRPanasonicAc.html#a8d7dfc9b5f7c7a4523c0bfa4e0bc415a',1,'IRPanasonicAc::getQuiet()'],['../classIRSamsungAc.html#a0baaf3d40419bb744204bdb30d4aa9b9',1,'IRSamsungAc::getQuiet()']]], + ['getraw_3937',['getRaw',['../classIRAmcorAc.html#aa2b99d815e499edf3ae53aebb35cbe9b',1,'IRAmcorAc::getRaw()'],['../classIRArgoAC.html#ac9e8b45dbbef453a54e3593d7e2927fb',1,'IRArgoAC::getRaw()'],['../classIRCarrierAc64.html#ad40279db2c9bd3d1abb5a6e028ec0d80',1,'IRCarrierAc64::getRaw()'],['../classIRCoolixAC.html#aa231938dfcff03325383205edc9c88d2',1,'IRCoolixAC::getRaw()'],['../classIRCoronaAc.html#ac2ba3b4bcefb801da345c9da5daa85fc',1,'IRCoronaAc::getRaw()'],['../classIRDaikinESP.html#ab100221dacc23402f486dee038df046d',1,'IRDaikinESP::getRaw()'],['../classIRDaikin2.html#aaf2ac0fc5924829a1209bd5e0b608b5f',1,'IRDaikin2::getRaw()'],['../classIRDaikin216.html#ac41b3de39ffc6ccd097085c727329531',1,'IRDaikin216::getRaw()'],['../classIRDaikin160.html#aeb68f80476362b0581fcb273b13cdf1e',1,'IRDaikin160::getRaw()'],['../classIRDaikin176.html#a86896be45037015683299004f2eb4d22',1,'IRDaikin176::getRaw()'],['../classIRDaikin128.html#a05669c2b1a6720b95d9a5fb898179a10',1,'IRDaikin128::getRaw()'],['../classIRDaikin152.html#a4af01f8a2459493762977f8ed260c4e6',1,'IRDaikin152::getRaw()'],['../classIRDaikin64.html#a1f8df45c67771ffca620f8c2f17af2e0',1,'IRDaikin64::getRaw()'],['../classIRDelonghiAc.html#a9e6934607f162df3d259d8fb95319d67',1,'IRDelonghiAc::getRaw()'],['../classIRElectraAc.html#a7674d29474ecbbb6366d96056794314c',1,'IRElectraAc::getRaw()'],['../classIRFujitsuAC.html#ae4dce44cab1f26756d63728cb8d55e65',1,'IRFujitsuAC::getRaw()'],['../classIRGoodweatherAc.html#a82d973e562b2425e8823fbc7332c06de',1,'IRGoodweatherAc::getRaw()'],['../classIRGreeAC.html#afa1595d4f69200b0076db1b9f8f2ea73',1,'IRGreeAC::getRaw()'],['../classIRHaierAC.html#abf72eed86c2c86c4f0f5f49f6a788b82',1,'IRHaierAC::getRaw()'],['../classIRHaierACYRW02.html#abca7bbe8c723551723f24f186343b764',1,'IRHaierACYRW02::getRaw()'],['../classIRHitachiAc.html#a8dafb9436f63cfc2d7e4f558fbd6e1ab',1,'IRHitachiAc::getRaw()'],['../classIRHitachiAc1.html#ad850b6364603880ccc444381e85af564',1,'IRHitachiAc1::getRaw()'],['../classIRHitachiAc424.html#acd8388f938feeaf6808ff65779435b5d',1,'IRHitachiAc424::getRaw()'],['../classIRHitachiAc3.html#a915605ca6d0bf3ff6fc9b376ddd394ae',1,'IRHitachiAc3::getRaw()'],['../classIRKelvinatorAC.html#a09149dd7bc45ca50b0c490b9c1f1e6f4',1,'IRKelvinatorAC::getRaw()'],['../classIRLgAc.html#afcb529d2f2c9016388264b80e6a99351',1,'IRLgAc::getRaw()'],['../classIRMideaAC.html#ae0b2c3a5a0a1d84eaeb462bbbe944d97',1,'IRMideaAC::getRaw()'],['../classIRMitsubishiAC.html#a1f2d0ea70bdeb71efab4c20ccd876aa9',1,'IRMitsubishiAC::getRaw()'],['../classIRMitsubishi136.html#a61cceec2bf241a75be1389391e8f3d9a',1,'IRMitsubishi136::getRaw()'],['../classIRMitsubishi112.html#a5e47e892921b8464652b55f41f42fd9a',1,'IRMitsubishi112::getRaw()'],['../classIRMitsubishiHeavy152Ac.html#a34ae73479c76b08512eaa87ed0662c0a',1,'IRMitsubishiHeavy152Ac::getRaw()'],['../classIRMitsubishiHeavy88Ac.html#af96915ac45861327ed7d55803dadd4fd',1,'IRMitsubishiHeavy88Ac::getRaw()'],['../classIRNeoclimaAc.html#a1f67329cad92d4252b0d33effce6380e',1,'IRNeoclimaAc::getRaw()'],['../classIRPanasonicAc.html#ad65c2bcdc3984a986f5ef2f03b5574d4',1,'IRPanasonicAc::getRaw()'],['../classIRSamsungAc.html#a96c6ac410053f0f2804160040d9fcf12',1,'IRSamsungAc::getRaw()'],['../classIRSharpAc.html#a9d680b0145c376060bd2d2e4c2630162',1,'IRSharpAc::getRaw()'],['../classIRTcl112Ac.html#a517375b764d1381aa5a7d4ec962346ec',1,'IRTcl112Ac::getRaw()'],['../classIRTecoAc.html#a7726e9d638cb81c7a4010112887a0ffe',1,'IRTecoAc::getRaw()'],['../classIRToshibaAC.html#a3572a06423851d2c4da5f85133a1a8ff',1,'IRToshibaAC::getRaw()'],['../classIRTrotecESP.html#a412dd2cf9dcb711003bcbb5b579cb2b8',1,'IRTrotecESP::getRaw()'],['../classIRVestelAc.html#afffd1dbcdec22ecca4efe9a996bf27e5',1,'IRVestelAc::getRaw()'],['../classIRWhirlpoolAc.html#a788a6a5373256e10200969cc5c73da63',1,'IRWhirlpoolAc::getRaw()']]], + ['getrclevel_3938',['getRClevel',['../classIRrecv.html#a8e32daaa903a8e42dad7faaf405b33dc',1,'IRrecv']]], + ['getroomtemp_3939',['getRoomTemp',['../classIRArgoAC.html#a5e4d8447c8851d2fce656abce6c4d368',1,'IRArgoAC']]], + ['getsave_3940',['getSave',['../classIRTecoAc.html#a0b4eea3d89f3aef649e32ee1b8bf65a3',1,'IRTecoAc']]], + ['getsectionbyte_3941',['getSectionByte',['../classIRCoronaAc.html#aed9181df842370739a5b4977b20769f9',1,'IRCoronaAc']]], + ['getsensor_3942',['getSensor',['../classIRDaikinESP.html#ac22369a04bb8f428a127b3625d9989fc',1,'IRDaikinESP::getSensor()'],['../classIRDaikin152.html#a88d4d0d41f33f71d4a846f6c2547f597',1,'IRDaikin152::getSensor()']]], + ['getsensortemp_3943',['getSensorTemp',['../classIRCoolixAC.html#aebbed796cab76248138e124aac1d535a',1,'IRCoolixAC']]], + ['getsilent_3944',['getSilent',['../classIRMitsubishiHeavy152Ac.html#a93aa735996a31d6f1928aa35d704bd24',1,'IRMitsubishiHeavy152Ac']]], + ['getsleep_3945',['getSleep',['../classIRCarrierAc64.html#a24f208b955af86f6927ac97b7f7066d5',1,'IRCarrierAc64::getSleep()'],['../classIRCoolixAC.html#a0b22f5427254c3f784f468d53909882c',1,'IRCoolixAC::getSleep()'],['../classIRDaikin128.html#a0cab507cdea112168757e1ab1a5a1dbe',1,'IRDaikin128::getSleep()'],['../classIRDaikin64.html#a32f4b90d4071cdbc4f37dd401e2d771f',1,'IRDaikin64::getSleep()'],['../classIRDelonghiAc.html#ab9baadd8f41c6dc7f89e71415e0e57b5',1,'IRDelonghiAc::getSleep()'],['../classIRGoodweatherAc.html#acf84e27fedc3c30a03c7d83e4843f8e0',1,'IRGoodweatherAc::getSleep()'],['../classIRGreeAC.html#abd106daa5324a454c5ced13e2fed2a1b',1,'IRGreeAC::getSleep()'],['../classIRHaierAC.html#a0ac7155d5ba294ce50b9436a35aa166b',1,'IRHaierAC::getSleep()'],['../classIRHaierACYRW02.html#acecf20cbe6065a4096ee5a353d2161c9',1,'IRHaierACYRW02::getSleep()'],['../classIRHitachiAc1.html#ab2e82cce1d9dc6e6ce66f2382ffcf4d4',1,'IRHitachiAc1::getSleep()'],['../classIRMideaAC.html#af4b76f42fd9be5eed9b546be7b0c34db',1,'IRMideaAC::getSleep()'],['../classIRNeoclimaAc.html#a8565f8f39127ed51eec7f7883319da61',1,'IRNeoclimaAc::getSleep()'],['../classIRTecoAc.html#a3eebb19e029aa882e161eb2bd6cfe333',1,'IRTecoAc::getSleep()'],['../classIRTrotecESP.html#a28558241d4dd18e191c6fab2c21f973e',1,'IRTrotecESP::getSleep()'],['../classIRVestelAc.html#a54f97dfe120c96b8c041550ed26d46f2',1,'IRVestelAc::getSleep()'],['../classIRWhirlpoolAc.html#a83c1b70e9c3b256b9e77ff6fb7fe0bde',1,'IRWhirlpoolAc::getSleep()']]], + ['getsleeptime_3946',['getSleepTime',['../classIRDaikin2.html#a31af96f9a05b3adea2e2ae84d3d242b9',1,'IRDaikin2']]], + ['getsleeptimerenabled_3947',['getSleepTimerEnabled',['../classIRDaikin2.html#ae4944acaa5c9d381a1875f4d0b16590a',1,'IRDaikin2']]], + ['getspecial_3948',['getSpecial',['../classIRSharpAc.html#a18fb9e6f965682e4faae3d1ecc2561cb',1,'IRSharpAc']]], + ['getspeed_3949',['getSpeed',['../classIRTrotecESP.html#ae57c9ab5bc2196f5028ea1af1bdb5428',1,'IRTrotecESP']]], + ['getstartclock_3950',['getStartClock',['../classIRMitsubishiAC.html#a0e0d8fa3bec35107929aaa9e9b4b5818',1,'IRMitsubishiAC']]], + ['getstate_3951',['getState',['../classIRac.html#af0122722691881b04c312bb30efcc3f2',1,'IRac']]], + ['getstatelength_3952',['getStateLength',['../classIRFujitsuAC.html#a02636372996211d464c7394329921ea0',1,'IRFujitsuAC']]], + ['getstateprev_3953',['getStatePrev',['../classIRac.html#adf582223eae0127491c7f1db38f101d3',1,'IRac']]], + ['getstopclock_3954',['getStopClock',['../classIRMitsubishiAC.html#a9b6266611d7cf75337557533a32796c2',1,'IRMitsubishiAC']]], + ['getsuper_3955',['getSuper',['../classIRWhirlpoolAc.html#a8bcf542e3499d05c4028157c803a0965',1,'IRWhirlpoolAc']]], + ['getswing_3956',['getSwing',['../classIRCoolixAC.html#a4846bb6a16802158dca3a8b1b7f5b6ff',1,'IRCoolixAC::getSwing()'],['../classIRFujitsuAC.html#af6f05f1375c3c4662d10026028fadbed',1,'IRFujitsuAC::getSwing()'],['../classIRGoodweatherAc.html#a96c844ec310323b62d9127ff250c3629',1,'IRGoodweatherAc::getSwing()'],['../classIRHaierAC.html#aa18839d213e4cd46405c683ec67fa23e',1,'IRHaierAC::getSwing()'],['../classIRHaierACYRW02.html#a88b15d20c007926ab5871b8e6a9fbe3f',1,'IRHaierACYRW02::getSwing()'],['../classIRSamsungAc.html#a5e6a7caccfdcb23cdb7d1341376c2343',1,'IRSamsungAc::getSwing()'],['../classIRTecoAc.html#a152fb025a2ba4410864637e8fdcef27a',1,'IRTecoAc::getSwing()'],['../classIRVestelAc.html#a991f8ca21319cb39b6c4cd358de4dbf4',1,'IRVestelAc::getSwing()'],['../classIRWhirlpoolAc.html#abac55fcea520ea4bbef3fa76223e2efc',1,'IRWhirlpoolAc::getSwing()']]], + ['getswingh_3957',['getSwingH',['../classIRElectraAc.html#a40e8f0ae2e57c3adf756b12524b36e6d',1,'IRElectraAc::getSwingH()'],['../classIRHitachiAc1.html#ac5bfde2c87281d3e7f427cb7ea601e85',1,'IRHitachiAc1::getSwingH()'],['../classIRHitachiAc344.html#a33ad0fe4939b2e2456a3d8a09da5a161',1,'IRHitachiAc344::getSwingH()'],['../classIRMitsubishi112.html#a05a343020c64f0ef95c365adcb337140',1,'IRMitsubishi112::getSwingH()'],['../classIRNeoclimaAc.html#a133fb28183fc33702bd8afb7c8886cb2',1,'IRNeoclimaAc::getSwingH()']]], + ['getswinghorizontal_3958',['getSwingHorizontal',['../classIRDaikinESP.html#a0a551cc1c22b5378015e8722919534aa',1,'IRDaikinESP::getSwingHorizontal()'],['../classIRDaikin2.html#a338a70b5d7f71da467a0f32b4a057f13',1,'IRDaikin2::getSwingHorizontal()'],['../classIRDaikin216.html#a4b5c648e6568bf1dd24932e108c560d9',1,'IRDaikin216::getSwingHorizontal()'],['../classIRDaikin176.html#aac0a1b9b5e618b31c651b9abc158a552',1,'IRDaikin176::getSwingHorizontal()'],['../classIRHitachiAc.html#a080f87358270eb1482d4a5d4b873f22c',1,'IRHitachiAc::getSwingHorizontal()'],['../classIRKelvinatorAC.html#abe27eb5ec7eb4c4b766a47b551422af3',1,'IRKelvinatorAC::getSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#a587eddf4684bdcb6c399b3f9c6cec684',1,'IRMitsubishiHeavy152Ac::getSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#ae538830313d02aa1ecc671188687dd35',1,'IRMitsubishiHeavy88Ac::getSwingHorizontal()'],['../classIRPanasonicAc.html#a37d9b268b3c8527be0939e0a24b02ef6',1,'IRPanasonicAc::getSwingHorizontal()'],['../classIRTcl112Ac.html#a7080def7f41498fc5af723e852c2e75c',1,'IRTcl112Ac::getSwingHorizontal()']]], + ['getswingtoggle_3959',['getSwingToggle',['../classIRHitachiAc1.html#ac4a5d4d5f9b4ae000d0acb232a1e2752',1,'IRHitachiAc1::getSwingToggle()'],['../classIRSharpAc.html#ae0327e90a68638c254706a99ed40f173',1,'IRSharpAc::getSwingToggle()']]], + ['getswingv_3960',['getSwingV',['../classIRCarrierAc64.html#a78aac688a4b040b2b6102fac8b028bde',1,'IRCarrierAc64::getSwingV()'],['../classIRDaikin152.html#a74ee60e666520513b33927178f15bc7e',1,'IRDaikin152::getSwingV()'],['../classIRElectraAc.html#a9cd2a7d7716f855dca6be12e3cdc3d24',1,'IRElectraAc::getSwingV()'],['../classIRHitachiAc1.html#a24216e1bc4cf9e9187e9031cee1684dc',1,'IRHitachiAc1::getSwingV()'],['../classIRHitachiAc344.html#a4e011e409f1bf97c8bd4043e2d069020',1,'IRHitachiAc344::getSwingV()'],['../classIRMitsubishi136.html#af2cacca74c4a6ade5f9689674bb707ea',1,'IRMitsubishi136::getSwingV()'],['../classIRMitsubishi112.html#a6d1e939169686978c83a2b26ebc3b8c2',1,'IRMitsubishi112::getSwingV()'],['../classIRNeoclimaAc.html#a3007ed9857bb212de05b7757ee0691e3',1,'IRNeoclimaAc::getSwingV()']]], + ['getswingvertical_3961',['getSwingVertical',['../classIRDaikinESP.html#a95f87fd97248e13c6339b71702a79e3a',1,'IRDaikinESP::getSwingVertical()'],['../classIRDaikin2.html#aa1d07be72001f06b6a8dfc279ffc40f5',1,'IRDaikin2::getSwingVertical()'],['../classIRDaikin216.html#ae72a3858a0023dac48fe755fd1bb1677',1,'IRDaikin216::getSwingVertical()'],['../classIRDaikin160.html#a5ed62940052f79587c92eaf92e30cf53',1,'IRDaikin160::getSwingVertical()'],['../classIRDaikin128.html#a60c21eaff6bf860ae25b974a0fd04e11',1,'IRDaikin128::getSwingVertical()'],['../classIRDaikin64.html#a7d538ad1ae23b92c1d82ae85ddd55ef1',1,'IRDaikin64::getSwingVertical()'],['../classIRHitachiAc.html#a9f507cc12bd3a5639777af0329a6dd5c',1,'IRHitachiAc::getSwingVertical()'],['../classIRKelvinatorAC.html#a69aaabc1f34e061272a76e4dc3c98bf1',1,'IRKelvinatorAC::getSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#a73c59d829a82306edf22acbd930650e0',1,'IRMitsubishiHeavy152Ac::getSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#ae836aee7dfb729f6b978b0b4ac8e9d3c',1,'IRMitsubishiHeavy88Ac::getSwingVertical()'],['../classIRPanasonicAc.html#a7a35303cd4fb4b23c0e5a25777d5819c',1,'IRPanasonicAc::getSwingVertical()'],['../classIRTcl112Ac.html#a0b75d06b14c1b7e2d2eb3a8779160ae5',1,'IRTcl112Ac::getSwingVertical()']]], + ['getswingverticalauto_3962',['getSwingVerticalAuto',['../classIRGreeAC.html#a4105bcde953896b12df050b12f1a45cc',1,'IRGreeAC']]], + ['getswingverticalposition_3963',['getSwingVerticalPosition',['../classIRGreeAC.html#a7b1b840483ef92102dd61fefd52ccd8b',1,'IRGreeAC']]], + ['getswingvtoggle_3964',['getSwingVToggle',['../classIRCoronaAc.html#ab10588a662031607ed4d01603a4471d6',1,'IRCoronaAc::getSwingVToggle()'],['../classIRHitachiAc424.html#ab697f595b6323288b6fd86f2a2911333',1,'IRHitachiAc424::getSwingVToggle()'],['../classIRMideaAC.html#a50b260d69bc0df8851bfccb003971dfe',1,'IRMideaAC::getSwingVToggle()']]], + ['gettemp_3965',['getTemp',['../classIRAmcorAc.html#a2f3e4765a3ae65ffda197f5a58070bf3',1,'IRAmcorAc::getTemp()'],['../classIRArgoAC.html#af5c4cfd3cac33f223e2807ec831df0a9',1,'IRArgoAC::getTemp()'],['../classIRCarrierAc64.html#a799edf21e766b8ae2638a9b1e1d18ac1',1,'IRCarrierAc64::getTemp()'],['../classIRCoolixAC.html#af90462598f294a75b35e20d986251942',1,'IRCoolixAC::getTemp()'],['../classIRCoronaAc.html#ac951434588fd9fa2de630db9ae844840',1,'IRCoronaAc::getTemp()'],['../classIRDaikinESP.html#a43c6675b688cad1ca714ecd726dbb411',1,'IRDaikinESP::getTemp()'],['../classIRDaikin2.html#aa1d39acc14bff5d55e918cb123c66e83',1,'IRDaikin2::getTemp()'],['../classIRDaikin216.html#a65b37310c01075c34cedd5ca1c8a2c37',1,'IRDaikin216::getTemp()'],['../classIRDaikin160.html#ae9cee15343fce5b0f32a4f2ff13a9dbe',1,'IRDaikin160::getTemp()'],['../classIRDaikin176.html#aa9015826e70e4ef1a319db4b2a3fba5f',1,'IRDaikin176::getTemp()'],['../classIRDaikin128.html#a0b5aa11a597bded38c067a9e9a01fd45',1,'IRDaikin128::getTemp()'],['../classIRDaikin152.html#af0a1f8bf9fe412186b53977d225032b2',1,'IRDaikin152::getTemp()'],['../classIRDaikin64.html#abeff1ec38e2d3c9fa12d59e506e7b699',1,'IRDaikin64::getTemp()'],['../classIRDelonghiAc.html#a5664302ab883fc88c23c8bb2aa020cb9',1,'IRDelonghiAc::getTemp()'],['../classIRElectraAc.html#ae92bd241a14058ece0e6d27332f9a3fa',1,'IRElectraAc::getTemp()'],['../classIRFujitsuAC.html#a9209df913f46821a66a390b8cff37acf',1,'IRFujitsuAC::getTemp()'],['../classIRGoodweatherAc.html#a796089c84e265cd7f1b2b82edc6b2367',1,'IRGoodweatherAc::getTemp()'],['../classIRGreeAC.html#a3e935c044cdccfb988a97d5fb0c4068b',1,'IRGreeAC::getTemp()'],['../classIRHaierAC.html#af137371c6766ee068a0200ff1facd8b0',1,'IRHaierAC::getTemp()'],['../classIRHaierACYRW02.html#a9cb0edcb5f36054e4e024c38ec3f26b9',1,'IRHaierACYRW02::getTemp()'],['../classIRHitachiAc.html#a85e0b2dfa45e894d1a89a2f862c6aa69',1,'IRHitachiAc::getTemp()'],['../classIRHitachiAc1.html#ac5c55a06a32134bb3e30b83cce2feeaa',1,'IRHitachiAc1::getTemp()'],['../classIRHitachiAc424.html#aa405408fd31795b714486af88a86112e',1,'IRHitachiAc424::getTemp()'],['../classIRKelvinatorAC.html#aabda77a2381526f4be86f05b311248db',1,'IRKelvinatorAC::getTemp()'],['../classIRLgAc.html#a029399c5926bd4f1ff0b26175bc4af79',1,'IRLgAc::getTemp()'],['../classIRMideaAC.html#a546ab6d3e317e6219ad371fd0825520d',1,'IRMideaAC::getTemp()'],['../classIRMitsubishiAC.html#a9881be01c53dce83bd1eae8a32f150f4',1,'IRMitsubishiAC::getTemp()'],['../classIRMitsubishi136.html#a34bc0e7666264a7e567e45405a57e3e0',1,'IRMitsubishi136::getTemp()'],['../classIRMitsubishi112.html#a4bfd306fecfcaa4c20589440ecfb35db',1,'IRMitsubishi112::getTemp()'],['../classIRMitsubishiHeavy152Ac.html#a7ec864271cf232cab7b8bd778bc36cb4',1,'IRMitsubishiHeavy152Ac::getTemp()'],['../classIRMitsubishiHeavy88Ac.html#afd629c9951a390b7809bc6ac4d3aeeb1',1,'IRMitsubishiHeavy88Ac::getTemp()'],['../classIRNeoclimaAc.html#aaa1a625af6cf094823b58f1fe43deb3a',1,'IRNeoclimaAc::getTemp()'],['../classIRPanasonicAc.html#af8a5607c317e541752fada6ca79ee80f',1,'IRPanasonicAc::getTemp()'],['../classIRSamsungAc.html#a11a6c86f2e4a918e1587ef564c63dddd',1,'IRSamsungAc::getTemp()'],['../classIRSharpAc.html#a1f75c17cc396162e776f3c6cd1848f50',1,'IRSharpAc::getTemp()'],['../classIRTcl112Ac.html#a61bf139cc737b99e5d68294c353eb353',1,'IRTcl112Ac::getTemp()'],['../classIRTecoAc.html#a40e717564222c5c1e4fdce13eba5efc3',1,'IRTecoAc::getTemp()'],['../classIRToshibaAC.html#ab2a9b47d49c5608c97a7c6968c43037d',1,'IRToshibaAC::getTemp()'],['../classIRTrotecESP.html#adcfae2ee1e58cd6a78805c72d7a8a942',1,'IRTrotecESP::getTemp()'],['../classIRVestelAc.html#a835ab977fa0dbf47776e5d618d59c819',1,'IRVestelAc::getTemp()'],['../classIRWhirlpoolAc.html#a4a73ee67cb2eb4407e78add1009cdd51',1,'IRWhirlpoolAc::getTemp()']]], + ['gettempoffset_3966',['getTempOffset',['../classIRWhirlpoolAc.html#a2d6111c9b97745d197f0b5d4d4610b3d',1,'IRWhirlpoolAc']]], + ['gettempraw_3967',['getTempRaw',['../classIRCoolixAC.html#a559634f3c6aee54683d4b6ccbbc7a884',1,'IRCoolixAC']]], + ['gettempunit_3968',['getTempUnit',['../classIRDelonghiAc.html#a8bbe27e1e87fbfc6b126c7f135886632',1,'IRDelonghiAc']]], + ['gettime_3969',['getTime',['../classIRHaierAC.html#a60e891775fbc3a77ee487cde26f650c5',1,'IRHaierAC::getTime()'],['../classIRVestelAc.html#a3542ec93c30ec3bc1bb4e242edcf1def',1,'IRVestelAc::getTime()'],['../classIRWhirlpoolAc.html#a27aba1f22b55aa6f72686e0a722682b0',1,'IRWhirlpoolAc::getTime()']]], + ['gettimer_3970',['getTimer',['../classIRDaikin128.html#ab35fa1fdd65db9d9cd7fbaffdd4ecd85',1,'IRDaikin128::getTimer()'],['../classIRGreeAC.html#a7a56024e2840306e071e03d1fae53ce9',1,'IRGreeAC::getTimer()'],['../classIRMitsubishiAC.html#a8bb8e92a00f8d9dfff31589d435c9ae5',1,'IRMitsubishiAC::getTimer()'],['../classIRTecoAc.html#a0bff25b2c686e397b62300ce5cad90f7',1,'IRTecoAc::getTimer()'],['../classIRTrotecESP.html#ae372b3120f0253c5a1607460817d36f6',1,'IRTrotecESP::getTimer()'],['../classIRVestelAc.html#aca4faedc9d82e357c8974fc6143b6e77',1,'IRVestelAc::getTimer()']]], + ['gettimerenabled_3971',['getTimerEnabled',['../classIRGreeAC.html#aeec03eb7f506a0ba62c28469b789b0da',1,'IRGreeAC::getTimerEnabled()'],['../classIRSharpAc.html#abd7c061b343b4f096019f42ad6162940',1,'IRSharpAc::getTimerEnabled()'],['../classIRTecoAc.html#a3524f149cd3076e757a1b3228bdf12f2',1,'IRTecoAc::getTimerEnabled()']]], + ['gettimertime_3972',['getTimerTime',['../classIRSharpAc.html#a72044d8afb1349a29cd8adcc8644c7ac',1,'IRSharpAc']]], + ['gettimertype_3973',['getTimerType',['../classIRSharpAc.html#a9357c50c356b29cc444bf9aafb7df146',1,'IRSharpAc']]], + ['gettolerance_3974',['getTolerance',['../classIRrecv.html#a144f64da3b44708394c06b0fbefb6347',1,'IRrecv']]], + ['getturbo_3975',['getTurbo',['../classIRCoolixAC.html#ab5f87216fb91bbb437c0899b0742a63f',1,'IRCoolixAC::getTurbo()'],['../classIRDaikin64.html#ade80a5ea137c32bdedd794d64925a2d3',1,'IRDaikin64::getTurbo()'],['../classIRElectraAc.html#a75cae6845498eec84109374a2fefcced',1,'IRElectraAc::getTurbo()'],['../classIRGoodweatherAc.html#a983eca3c2ec1233184939702f43557eb',1,'IRGoodweatherAc::getTurbo()'],['../classIRGreeAC.html#a6e319c8584d0cb82223fd190fa4bde29',1,'IRGreeAC::getTurbo()'],['../classIRHaierACYRW02.html#a4ccd26dad24915b81ae5fb94d18fb85a',1,'IRHaierACYRW02::getTurbo()'],['../classIRKelvinatorAC.html#aff32ab0524f4afeb9b53aa65b8df8e36',1,'IRKelvinatorAC::getTurbo()'],['../classIRMitsubishiHeavy152Ac.html#acf2a73ccddb87bd66c39670bd1d3caba',1,'IRMitsubishiHeavy152Ac::getTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a179ecc619e9eea4adb601309421e5fc0',1,'IRMitsubishiHeavy88Ac::getTurbo()'],['../classIRNeoclimaAc.html#a6cf241f0392744a91b703475ee88bfa1',1,'IRNeoclimaAc::getTurbo()'],['../classIRSharpAc.html#aad2ec46f8da6fd84bc0523f40d6bd57d',1,'IRSharpAc::getTurbo()'],['../classIRTcl112Ac.html#a0de33a2175eada44030d3640d940b697',1,'IRTcl112Ac::getTurbo()'],['../classIRVestelAc.html#a9ce168cc9422e54d631aed571cfe66be',1,'IRVestelAc::getTurbo()']]], + ['getusecelsius_3976',['getUseCelsius',['../classIRMideaAC.html#aa88de606a914e33e8beb75a069137b52',1,'IRMideaAC']]], + ['getusefahrenheit_3977',['getUseFahrenheit',['../classIRGreeAC.html#aad6acfb8a697aba851bb34b14bc94ac1',1,'IRGreeAC']]], + ['getvane_3978',['getVane',['../classIRMitsubishiAC.html#acd98301535e7e161f8fdf42877f3e482',1,'IRMitsubishiAC']]], + ['getweeklytimerenable_3979',['getWeeklyTimerEnable',['../classIRDaikinESP.html#a9ee2013c069496884c62b6e9a58d01db',1,'IRDaikinESP']]], + ['getwidevane_3980',['getWideVane',['../classIRMitsubishiAC.html#a217dba9f9dcc6f75d466b0b7beca3aea',1,'IRMitsubishiAC']]], + ['getwifi_3981',['getWiFi',['../classIRGreeAC.html#a967afbe980bae858ce0e4daea6628c37',1,'IRGreeAC']]], + ['getxfan_3982',['getXFan',['../classIRGreeAC.html#acb677dde02be1a3461a7c8bc2406194f',1,'IRGreeAC::getXFan()'],['../classIRKelvinatorAC.html#a2e511ca0a8876928412c2db9214e7fe2',1,'IRKelvinatorAC::getXFan()']]], + ['getzonefollow_3983',['getZoneFollow',['../classIRCoolixAC.html#a647a41d63301e3d95460323d1fe0ce4a',1,'IRCoolixAC']]], + ['goodweather_3984',['goodweather',['../classIRac.html#ac47ff5c6faf41e6fb37df258a8bafc08',1,'IRac']]], + ['gree_3985',['gree',['../classIRac.html#ab66e48b039c9990bf97cd8c2512a6c70',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.html new file mode 100644 index 000000000..7422be245 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.js new file mode 100644 index 000000000..60ae567c3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_8.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['haier_3986',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]], + ['haieryrwo2_3987',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]], + ['handlespecialstate_3988',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC']]], + ['handletoggles_3989',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]], + ['hasacstate_3990',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp']]], + ['hasinvertedstates_3991',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]], + ['hasstatechanged_3992',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]], + ['hitachi_3993',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]], + ['hitachi1_3994',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]], + ['hitachi344_3995',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]], + ['hitachi424_3996',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]], + ['htmlescape_3997',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.html new file mode 100644 index 000000000..befd4faaa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.js new file mode 100644 index 000000000..97c6d2069 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_9.js @@ -0,0 +1,64 @@ +var searchData= +[ + ['initstate_3998',['initState',['../classIRac.html#af1c4ae70e61298c0be8d350d67e7c342',1,'IRac::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)'],['../classIRac.html#a165b7fdb9b3a02b1fb5ff2c2c3747958',1,'IRac::initState(stdAc::state_t *state)']]], + ['invertbits_3999',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp']]], + ['irac_4000',['IRac',['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac']]], + ['iramcorac_4001',['IRAmcorAc',['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc']]], + ['irargoac_4002',['IRArgoAC',['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC']]], + ['ircarrierac64_4003',['IRCarrierAc64',['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64']]], + ['ircoolixac_4004',['IRCoolixAC',['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC']]], + ['ircoronaac_4005',['IRCoronaAc',['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc']]], + ['irdaikin128_4006',['IRDaikin128',['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128']]], + ['irdaikin152_4007',['IRDaikin152',['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152']]], + ['irdaikin160_4008',['IRDaikin160',['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160']]], + ['irdaikin176_4009',['IRDaikin176',['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176']]], + ['irdaikin2_4010',['IRDaikin2',['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2']]], + ['irdaikin216_4011',['IRDaikin216',['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216']]], + ['irdaikin64_4012',['IRDaikin64',['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64']]], + ['irdaikinesp_4013',['IRDaikinESP',['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP']]], + ['irdelonghiac_4014',['IRDelonghiAc',['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc']]], + ['irelectraac_4015',['IRElectraAc',['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc']]], + ['irfujitsuac_4016',['IRFujitsuAC',['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC']]], + ['irgoodweatherac_4017',['IRGoodweatherAc',['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc']]], + ['irgreeac_4018',['IRGreeAC',['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC']]], + ['irhaierac_4019',['IRHaierAC',['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC']]], + ['irhaieracyrw02_4020',['IRHaierACYRW02',['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02']]], + ['irhitachiac_4021',['IRHitachiAc',['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc']]], + ['irhitachiac1_4022',['IRHitachiAc1',['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1']]], + ['irhitachiac3_4023',['IRHitachiAc3',['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3']]], + ['irhitachiac344_4024',['IRHitachiAc344',['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344']]], + ['irhitachiac424_4025',['IRHitachiAc424',['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424']]], + ['irkelvinatorac_4026',['IRKelvinatorAC',['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC']]], + ['irlgac_4027',['IRLgAc',['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc']]], + ['irmideaac_4028',['IRMideaAC',['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC']]], + ['irmitsubishi112_4029',['IRMitsubishi112',['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112']]], + ['irmitsubishi136_4030',['IRMitsubishi136',['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136']]], + ['irmitsubishiac_4031',['IRMitsubishiAC',['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC']]], + ['irmitsubishiheavy152ac_4032',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac']]], + ['irmitsubishiheavy88ac_4033',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac']]], + ['irneoclimaac_4034',['IRNeoclimaAc',['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc']]], + ['irpanasonicac_4035',['IRPanasonicAc',['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc']]], + ['irrecv_4036',['IRrecv',['../classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)'],['../classIRrecv.html#a3bb1bcc1c1a3184294dd35c8f6f758b1',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)']]], + ['irsamsungac_4037',['IRSamsungAc',['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc']]], + ['irsend_4038',['IRsend',['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend']]], + ['irsharpac_4039',['IRSharpAc',['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc']]], + ['irtcl112ac_4040',['IRTcl112Ac',['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac']]], + ['irtecoac_4041',['IRTecoAc',['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc']]], + ['irtimer_4042',['IRtimer',['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer']]], + ['irtoshibaac_4043',['IRToshibaAC',['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC']]], + ['irtrotecesp_4044',['IRTrotecESP',['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP']]], + ['irvestelac_4045',['IRVestelAc',['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc']]], + ['irwhirlpoolac_4046',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc']]], + ['isofftimeractive_4047',['isOffTimerActive',['../classIRVestelAc.html#aa756171e82ed1b43593b81aa3a63b812',1,'IRVestelAc']]], + ['isofftimerenabled_4048',['isOffTimerEnabled',['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a1bc1366524cf3c7fb426e908a166801f',1,'IRWhirlpoolAc::isOffTimerEnabled()']]], + ['isontimeractive_4049',['isOnTimerActive',['../classIRVestelAc.html#a67f0e970af50fcf6e01e4cac85c5862a',1,'IRVestelAc']]], + ['isontimerenabled_4050',['isOnTimerEnabled',['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#aff1b8c2d063b376725a5a77745f6be3a',1,'IRWhirlpoolAc::isOnTimerEnabled()']]], + ['ispowerspecial_4051',['isPowerSpecial',['../classIRSharpAc.html#a57072f2458897ffb9184769aca10b944',1,'IRSharpAc']]], + ['isprotocolsupported_4052',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]], + ['isspecialstate_4053',['isSpecialState',['../classIRCoolixAC.html#a51bde954328ca5887a8353ba5562b3db',1,'IRCoolixAC']]], + ['isswingvtoggle_4054',['isSwingVToggle',['../classIRMideaAC.html#a848076f02a38a32c691a4617586862cc',1,'IRMideaAC']]], + ['istimecommand_4055',['isTimeCommand',['../classIRVestelAc.html#ae811a07c1a8d82e7068c39b9ca73aaf1',1,'IRVestelAc']]], + ['istimeractive_4056',['isTimerActive',['../classIRVestelAc.html#a160b73df8e1eda984f9bfbff3df7fa63',1,'IRVestelAc']]], + ['istimerenabled_4057',['isTimerEnabled',['../classIRWhirlpoolAc.html#a5a713ffed99ab3450257d83e2d6e15ee',1,'IRWhirlpoolAc']]], + ['isvalidlgac_4058',['isValidLgAc',['../classIRLgAc.html#a5984041eb12603ac1a277c28b355322a',1,'IRLgAc']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.html new file mode 100644 index 000000000..a81e96336 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.js new file mode 100644 index 000000000..42993aa20 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kelvinator_4059',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.html new file mode 100644 index 000000000..345265d62 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.js new file mode 100644 index 000000000..18f4d0950 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ledoff_4060',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], + ['ledon_4061',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], + ['lg_4062',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.html new file mode 100644 index 000000000..858bfd6c9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.js new file mode 100644 index 000000000..a9f6f2360 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_c.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['mark_4063',['mark',['../classIRsend.html#a7399389d40bfe24bc062ffca88fc3780',1,'IRsend']]], + ['markassent_4064',['markAsSent',['../classIRac.html#ad0e45b13f477e29823b8c138704536c4',1,'IRac']]], + ['match_4065',['match',['../classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa',1,'IRrecv']]], + ['matchatleast_4066',['matchAtLeast',['../classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a',1,'IRrecv']]], + ['matchbytes_4067',['matchBytes',['../classIRrecv.html#adc2c9bc4c4e5741cfac7468126bf8ca6',1,'IRrecv']]], + ['matchdata_4068',['matchData',['../classIRrecv.html#a5361439cb69b1069553544e486502d2e',1,'IRrecv']]], + ['matchgeneric_4069',['matchGeneric',['../classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd',1,'IRrecv::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)'],['../classIRrecv.html#a4448c1658383962d735353352987c9aa',1,'IRrecv::matchGeneric(volatile uint16_t *data_ptr, uint8_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)']]], + ['matchgenericconstbittime_4070',['matchGenericConstBitTime',['../classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0',1,'IRrecv']]], + ['matchmanchester_4071',['matchManchester',['../classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728',1,'IRrecv']]], + ['matchmanchesterdata_4072',['matchManchesterData',['../classIRrecv.html#ab44403411a217eb8ea75271575f8ab83',1,'IRrecv']]], + ['matchmark_4073',['matchMark',['../classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d',1,'IRrecv']]], + ['matchspace_4074',['matchSpace',['../classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc',1,'IRrecv']]], + ['midea_4075',['midea',['../classIRac.html#a5b9c72198497eca0121945b557691309',1,'IRac']]], + ['minrepeats_4076',['minRepeats',['../classIRsend.html#ae02772f34180163861b7e4eb3520db2a',1,'IRsend']]], + ['minstostring_4077',['minsToString',['../namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f',1,'irutils']]], + ['mitsubishi_4078',['mitsubishi',['../classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3',1,'IRac']]], + ['mitsubishi112_4079',['mitsubishi112',['../classIRac.html#a2438b6e4403d5952adb299083e038e10',1,'IRac']]], + ['mitsubishi136_4080',['mitsubishi136',['../classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e',1,'IRac']]], + ['mitsubishiheavy152_4081',['mitsubishiHeavy152',['../classIRac.html#a635b89320d878c1e3f270d7146cb9b00',1,'IRac']]], + ['mitsubishiheavy88_4082',['mitsubishiHeavy88',['../classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e',1,'IRac']]], + ['modeltostr_4083',['modelToStr',['../namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd',1,'irutils']]], + ['mstostring_4084',['msToString',['../namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a',1,'irutils']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.html new file mode 100644 index 000000000..2f09f51ba --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.js new file mode 100644 index 000000000..d3ffd6eff --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['neoclima_4085',['neoclima',['../classIRac.html#a0e468b705922e58308c5e340499f2391',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.html new file mode 100644 index 000000000..ee5afa650 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.js new file mode 100644 index 000000000..1fc2ce013 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['off_4086',['off',['../classIRAmcorAc.html#a5c67c2acde4964bf863d5ae73555ea1a',1,'IRAmcorAc::off()'],['../classIRArgoAC.html#ab5ab7cc22bbce59bb02ca60431dca3fb',1,'IRArgoAC::off()'],['../classIRCarrierAc64.html#ac7a262d768626f01dac94f5e2891c98e',1,'IRCarrierAc64::off()'],['../classIRCoolixAC.html#a7538665a38e193ecd3a0bed41e9f1417',1,'IRCoolixAC::off()'],['../classIRCoronaAc.html#a3744c68ec90d89999be4db5bd6ffe2a3',1,'IRCoronaAc::off()'],['../classIRDaikinESP.html#a5d1d22f45d877660719916ca546bd3af',1,'IRDaikinESP::off()'],['../classIRDaikin2.html#a84a48dfceb4d7137eb485e6897ccceac',1,'IRDaikin2::off()'],['../classIRDaikin216.html#a086d8cea2d6dd0f74c5cbece79d91567',1,'IRDaikin216::off()'],['../classIRDaikin160.html#a95f8c71bbf861d3c884656364e04b02a',1,'IRDaikin160::off()'],['../classIRDaikin176.html#a4ad81df1fe4921abee3634bf19b0d0f7',1,'IRDaikin176::off()'],['../classIRDaikin152.html#a035588ad676a54d2b6ada8cefe10e114',1,'IRDaikin152::off()'],['../classIRDelonghiAc.html#aa2f8f1d5da390bd5e5b36102dd40f5c8',1,'IRDelonghiAc::off()'],['../classIRElectraAc.html#afe3a9b789eafbef19d015cdebf71dc0d',1,'IRElectraAc::off()'],['../classIRFujitsuAC.html#ae7a320c2d2b8afbd9a04251053831cdd',1,'IRFujitsuAC::off()'],['../classIRGoodweatherAc.html#ad6863d837140951fcc0faf629025d48e',1,'IRGoodweatherAc::off()'],['../classIRGreeAC.html#a4cce897175ed731ab62402133089ed4f',1,'IRGreeAC::off()'],['../classIRHaierACYRW02.html#a9837ba26574f8bd452d616173819a9a4',1,'IRHaierACYRW02::off()'],['../classIRHitachiAc.html#a62be5ca181c8c9d11b65b38b1ed178b5',1,'IRHitachiAc::off()'],['../classIRHitachiAc1.html#a646b554980706d0dd2ac762be8458cdb',1,'IRHitachiAc1::off()'],['../classIRHitachiAc424.html#a0815a09fc49449bac03d996c63040a5f',1,'IRHitachiAc424::off()'],['../classIRKelvinatorAC.html#a4a759df902d1465c9520da7c7c595abc',1,'IRKelvinatorAC::off()'],['../classIRLgAc.html#a6d3d50b34575fecb93ed8bd5897c3f7c',1,'IRLgAc::off()'],['../classIRMideaAC.html#a29fbafcf47dc41475d009c4c92b2917b',1,'IRMideaAC::off()'],['../classIRMitsubishiAC.html#ac204620341200994c28411f53d5aa046',1,'IRMitsubishiAC::off()'],['../classIRMitsubishi136.html#a4122014509e9e755881920650f19baf3',1,'IRMitsubishi136::off()'],['../classIRMitsubishi112.html#ab5b6370edf2626da2e9f124a218678a8',1,'IRMitsubishi112::off()'],['../classIRMitsubishiHeavy152Ac.html#a93b603cc37d2dc7e3e7005ce21a0b2d7',1,'IRMitsubishiHeavy152Ac::off()'],['../classIRMitsubishiHeavy88Ac.html#a45c56c0454755d704a3df1f1f3647130',1,'IRMitsubishiHeavy88Ac::off()'],['../classIRNeoclimaAc.html#a9a277308bf8d8b0cd06a28964e7cbafb',1,'IRNeoclimaAc::off()'],['../classIRPanasonicAc.html#a03b706293c1c5b348bba536e6d8d33f5',1,'IRPanasonicAc::off()'],['../classIRSamsungAc.html#a34cb19bb4902441a2b9f10892eb17d83',1,'IRSamsungAc::off()'],['../classIRSharpAc.html#a178925a1d7ca01aae5c107fab5b32e93',1,'IRSharpAc::off()'],['../classIRTcl112Ac.html#ab2e39430629fcada55a584cff66d2749',1,'IRTcl112Ac::off()'],['../classIRTecoAc.html#ade1b1541bf2de053c78657af1ebcd001',1,'IRTecoAc::off()'],['../classIRToshibaAC.html#a70b145f7b9c46790e4e5da812bb66e58',1,'IRToshibaAC::off()'],['../classIRTrotecESP.html#a8f300ddaf255de1cdfee10b76b1f08e0',1,'IRTrotecESP::off()'],['../classIRVestelAc.html#a59e90e51e3518ef26bb382903ce67357',1,'IRVestelAc::off()']]], + ['on_4087',['on',['../classIRAmcorAc.html#adff3f4b9f57815a4062443f3e4dab78c',1,'IRAmcorAc::on()'],['../classIRArgoAC.html#a70497752f7afd8e3274cf4d8b1e22628',1,'IRArgoAC::on()'],['../classIRCarrierAc64.html#a39c13b713e36fbf94605f251b36bdfae',1,'IRCarrierAc64::on()'],['../classIRCoolixAC.html#a59c414fe0e951cd50083ab1fc45286ed',1,'IRCoolixAC::on()'],['../classIRCoronaAc.html#a7fe14d62eaccdc2db8db168c90a3cd87',1,'IRCoronaAc::on()'],['../classIRDaikinESP.html#a502e9dea10605d52e291d49af26b07eb',1,'IRDaikinESP::on()'],['../classIRDaikin2.html#a009ac70fd8b8695f3d931a42667fdb66',1,'IRDaikin2::on()'],['../classIRDaikin216.html#a09f54bb4ed1d553b4bbf6ffe6992a755',1,'IRDaikin216::on()'],['../classIRDaikin160.html#a2b6c282ad5cb2a702857532ab020110b',1,'IRDaikin160::on()'],['../classIRDaikin176.html#a3ca59ccdad4b7958fc4dc1a4b0593f38',1,'IRDaikin176::on()'],['../classIRDaikin152.html#a10ee74aa43e3940d657ac88cb03b9138',1,'IRDaikin152::on()'],['../classIRDelonghiAc.html#ab21d64ace3107a8f3359b3828bc2cab5',1,'IRDelonghiAc::on()'],['../classIRElectraAc.html#a99e29f982435b01c726d0234a433cfa6',1,'IRElectraAc::on()'],['../classIRFujitsuAC.html#adcb24818d088c879beb7d76ada332f43',1,'IRFujitsuAC::on()'],['../classIRGoodweatherAc.html#a1e3c2a9f47376062ab66318d6af4324b',1,'IRGoodweatherAc::on()'],['../classIRGreeAC.html#a69e399e411a19e5669e752d52ae66f15',1,'IRGreeAC::on()'],['../classIRHaierACYRW02.html#aaeb257d68235278be272e521fdec7331',1,'IRHaierACYRW02::on()'],['../classIRHitachiAc.html#a855e95d55d4ebfb3958b9d80a7b42c6f',1,'IRHitachiAc::on()'],['../classIRHitachiAc1.html#aea4fe1fddb56c8df31077b301e9c6473',1,'IRHitachiAc1::on()'],['../classIRHitachiAc424.html#ad414bca642af40ed81a6cbf93a0bf40b',1,'IRHitachiAc424::on()'],['../classIRKelvinatorAC.html#a714d0e70f2996694e2c46afdd9996341',1,'IRKelvinatorAC::on()'],['../classIRLgAc.html#a171358340c1ba8f90fef0c5454f2aa41',1,'IRLgAc::on()'],['../classIRMideaAC.html#af8dde03cb641a5af4f2ef0dcf70f1ca0',1,'IRMideaAC::on()'],['../classIRMitsubishiAC.html#a2946d1b3b641d7b991c0d296d5c5e77e',1,'IRMitsubishiAC::on()'],['../classIRMitsubishi136.html#a74180e99a5f4f1f4b740b442a1b74a06',1,'IRMitsubishi136::on()'],['../classIRMitsubishi112.html#accd250f130b4d0cd61593982b84b9138',1,'IRMitsubishi112::on()'],['../classIRMitsubishiHeavy152Ac.html#a5c7aec50b53fdc3af591e077a4a268e4',1,'IRMitsubishiHeavy152Ac::on()'],['../classIRMitsubishiHeavy88Ac.html#a44ce2c4f03b8b8973922f5bf59a19d2c',1,'IRMitsubishiHeavy88Ac::on()'],['../classIRNeoclimaAc.html#ab4a23cefef02351883dc4088dec51071',1,'IRNeoclimaAc::on()'],['../classIRPanasonicAc.html#a88e6b0f607b17266567306576e623a0c',1,'IRPanasonicAc::on()'],['../classIRSamsungAc.html#a68cf52997489a1c835662c7cdf23463c',1,'IRSamsungAc::on()'],['../classIRSharpAc.html#a5c8dad46c2965fc0d87780a8bd8b98f4',1,'IRSharpAc::on()'],['../classIRTcl112Ac.html#a0bbf7f0b9753b516fda0544c17b15b8a',1,'IRTcl112Ac::on()'],['../classIRTecoAc.html#af26015e5c663c346cf7db6d8af3f8c60',1,'IRTecoAc::on()'],['../classIRToshibaAC.html#abdc35338e4a18132d56bf6b46ddea590',1,'IRToshibaAC::on()'],['../classIRTrotecESP.html#a86c050edab8409a9b38d28f311f19404',1,'IRTrotecESP::on()'],['../classIRVestelAc.html#a4ed05fb5cbdfa5677ca238616bf03922',1,'IRVestelAc::on()']]], + ['opmodetostring_4088',['opmodeToString',['../classIRac.html#a6dd1b87f2477bc3721d207b1fed482b8',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.html new file mode 100644 index 000000000..f17c412c9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.js new file mode 100644 index 000000000..83b7a1a88 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/functions_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['panasonic_4089',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/mag_sel.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.html new file mode 100644 index 000000000..76996d1c2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.js new file mode 100644 index 000000000..f3d7c6876 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['iracutils_3578',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], + ['irutils_3579',['irutils',['../namespaceirutils.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.html new file mode 100644 index 000000000..c69e3662f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.js new file mode 100644 index 000000000..cc0a30d3e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['stdac_3580',['stdAc',['../namespacestdAc.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/nomatches.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/nomatches.html new file mode 100644 index 000000000..437732089 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.html new file mode 100644 index 000000000..9a6a29ad3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.js new file mode 100644 index 000000000..09c98c152 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list_7122',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.html new file mode 100644 index 000000000..132ee038e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.js new file mode 100644 index 000000000..19c13b8cf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['irremoteesp8266_20library_20api_20documentation_7123',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], + ['internationalisation_20_28i18n_29_20_26_20locale_20files_7124',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.html new file mode 100644 index 000000000..6109d4704 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.js new file mode 100644 index 000000000..08bad4bef --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['todo_20list_7125',['Todo List',['../todo.html',1,'']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.html new file mode 100644 index 000000000..bbe15faaa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.js new file mode 100644 index 000000000..ae64177b7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['irhitachiac344_7121',['IRHitachiAc344',['../classIRHitachiAc424.html#a3c885313a79bf8c02bc5eb9f7d80088b',1,'IRHitachiAc424']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.css b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.css new file mode 100644 index 000000000..3cf9df94a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.js new file mode 100644 index 000000000..a554ab9cb --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search_r.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/searchdata.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/searchdata.js new file mode 100644 index 000000000..d96a757c3 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/searchdata.js @@ -0,0 +1,45 @@ +var indexSectionsWithContent = +{ + 0: "_abcdefghijklmnopqrstuvwxyz~", + 1: "dimst", + 2: "is", + 3: "defirz", + 4: "_abcdefghiklmnoprstuvwx~", + 5: "_abcdefhiklmnopqrstuvwz", + 6: "s", + 7: "dfghlopsw", + 8: "acdefghijklmnprstuvwyz", + 9: "i", + 10: "dit" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "typedefs", + 7: "enums", + 8: "enumvalues", + 9: "related", + 10: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Typedefs", + 7: "Enumerations", + 8: "Enumerator", + 9: "Friends", + 10: "Pages" +}; + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.html new file mode 100644 index 000000000..376db4791 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.js new file mode 100644 index 000000000..d482b28e6 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['string_6975',['String',['../IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff',1,'IRremoteESP8266.h']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.html new file mode 100644 index 000000000..bf3eba5cc --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.js new file mode 100644 index 000000000..5dc345ec5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['_5fclean_4342',['_clean',['../classIRFujitsuAC.html#acf7808cfeb6e15cea1d5ee8196075e04',1,'IRFujitsuAC']]], + ['_5fcmd_4343',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], + ['_5fdesiredtemp_4344',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], + ['_5fdutycycle_4345',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], + ['_5ffan_4346',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], + ['_5ffanspeed_4347',['_fanSpeed',['../classIRFujitsuAC.html#a537f02328039c044f7152bf0a61a05c9',1,'IRFujitsuAC']]], + ['_5ffilter_4348',['_filter',['../classIRFujitsuAC.html#a4a2f96f4f1cd6650d48ebc3b13fd561c',1,'IRFujitsuAC']]], + ['_5fforcepower_4349',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], + ['_5ffreq_5funittest_4350',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], + ['_5finverted_4351',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], + ['_5firsend_4352',['_irsend',['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], + ['_5firtimer_5funittest_5fnow_4353',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], + ['_5flastsentpowerstate_4354',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], + ['_5fmode_4355',['_mode',['../classIRFujitsuAC.html#a1b22f3bb3dc43e370aabad5b6efd7ca5',1,'IRFujitsuAC::_mode()'],['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc::_mode()']]], + ['_5fmodel_4356',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()']]], + ['_5fmodulation_4357',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], + ['_5foutsidequiet_4358',['_outsideQuiet',['../classIRFujitsuAC.html#a20a794245e0bc44607faf7927a285672',1,'IRFujitsuAC']]], + ['_5fpin_4359',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], + ['_5fprev_4360',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], + ['_5fprevioustemp_4361',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()']]], + ['_5fprotocol_4362',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], + ['_5fsaved_5ftemp_4363',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()']]], + ['_5fsaved_5ftemp_5funits_4364',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc']]], + ['_5fstate_5flength_4365',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], + ['_5fstate_5flength_5fshort_4366',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], + ['_5fswingh_4367',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], + ['_5fswingmode_4368',['_swingMode',['../classIRFujitsuAC.html#a74a00fbba55b457b68f61481ce9ffbaa',1,'IRFujitsuAC']]], + ['_5fswingvtoggle_4369',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], + ['_5ftemp_4370',['_temp',['../classIRFujitsuAC.html#afcff35df74885c63651134ba85359694',1,'IRFujitsuAC::_temp()'],['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], + ['_5ftimer_5fnum_4371',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], + ['_5ftimerms_5funittest_5fnow_4372',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], + ['_5ftolerance_4373',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], + ['_5funknown_5fthreshold_4374',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.html new file mode 100644 index 000000000..49fe59a12 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.js new file mode 100644 index 000000000..3f8cb0a00 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['address_4375',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]], + ['argo_4376',['argo',['../classIRArgoAC.html#ab607bde051712a57fe9c0a0cf9da20ac',1,'IRArgoAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.html new file mode 100644 index 000000000..92982ac57 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.js new file mode 100644 index 000000000..d1ff18c76 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_10.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['rawbuf_6946',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], + ['rawlen_6947',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], + ['rcvstate_6948',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], + ['recvpin_6949',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], + ['remote_6950',['remote',['../classIRDaikinESP.html#ac24751c23f6b27cb26dcd51e91c63c9b',1,'IRDaikinESP::remote()'],['../classIRGoodweatherAc.html#af511a0703a4cbc77f5b8a520abf11f2f',1,'IRGoodweatherAc::remote()'],['../classIRSharpAc.html#a411a4db0579ed84b54533dcde153d5da',1,'IRSharpAc::remote()']]], + ['remote_5fstate_6951',['remote_state',['../classIRAmcorAc.html#acef1c3896f03afd5d10d5cbb7ed105ce',1,'IRAmcorAc::remote_state()'],['../classIRCarrierAc64.html#a257272c7cb54f5854e79053c8223a43e',1,'IRCarrierAc64::remote_state()'],['../classIRCoolixAC.html#a03bf575961d4d924275cb16a45edaa46',1,'IRCoolixAC::remote_state()'],['../classIRCoronaAc.html#afcf0b21ac5c438dc560612a785a29864',1,'IRCoronaAc::remote_state()'],['../classIRDaikin2.html#a0b28396956687a4009cab7c860b9ce4b',1,'IRDaikin2::remote_state()'],['../classIRDaikin216.html#abf9bab0a52f9227d54f583488b024a85',1,'IRDaikin216::remote_state()'],['../classIRDaikin160.html#a17fb5726060e8872735559654a72cb22',1,'IRDaikin160::remote_state()'],['../classIRDaikin176.html#adb6863da11f0569524f0beb31681d0b5',1,'IRDaikin176::remote_state()'],['../classIRDaikin128.html#af1b36cc2f51cd145da3bfe7ec3d9134a',1,'IRDaikin128::remote_state()'],['../classIRDaikin152.html#aa16c89c0cb6d83aef83d293466dab197',1,'IRDaikin152::remote_state()'],['../classIRDaikin64.html#aa279d6df0d130e727c3a1500b283eda0',1,'IRDaikin64::remote_state()'],['../classIRDelonghiAc.html#a3b3364143c52dc2a29d9db43612c07b1',1,'IRDelonghiAc::remote_state()'],['../classIRElectraAc.html#a3f423f5d896e4bfc2f3a0ce04b596289',1,'IRElectraAc::remote_state()'],['../classIRFujitsuAC.html#a851b9192e1f18f6a4b2f1726d49ef33b',1,'IRFujitsuAC::remote_state()'],['../classIRGreeAC.html#a9e0cb21278ac3c9a72738ab8e6e09096',1,'IRGreeAC::remote_state()'],['../classIRHaierAC.html#a609abaeab9df642fdaccd77235a84eed',1,'IRHaierAC::remote_state()'],['../classIRHaierACYRW02.html#a08069ef89f5c5e2c1ba8563cdad24578',1,'IRHaierACYRW02::remote_state()'],['../classIRHitachiAc.html#a44b3d360b2a8044782b73f7f4a533a99',1,'IRHitachiAc::remote_state()'],['../classIRHitachiAc1.html#a13340cba808d457d6093f1c9efffc419',1,'IRHitachiAc1::remote_state()'],['../classIRHitachiAc424.html#a58bac4ef7f46ef1e9f38c1a144e2ca41',1,'IRHitachiAc424::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../classIRKelvinatorAC.html#a70f75821274e53cc5ed64ac53a6e32b4',1,'IRKelvinatorAC::remote_state()'],['../classIRLgAc.html#a481133671657b13ecce1bd08f710089d',1,'IRLgAc::remote_state()'],['../classIRMideaAC.html#a8f122367cc407e7bb658fe7f3132effb',1,'IRMideaAC::remote_state()'],['../classIRMitsubishiAC.html#ac0a149b9705371e59c45ece162bc1aab',1,'IRMitsubishiAC::remote_state()'],['../classIRMitsubishi136.html#ad1e80d693d3558f0bed4c0f7995bddd5',1,'IRMitsubishi136::remote_state()'],['../classIRMitsubishi112.html#a64a40e57208d08b5cd6ef87a7c8d6671',1,'IRMitsubishi112::remote_state()'],['../classIRMitsubishiHeavy152Ac.html#a6d333f238bf1b42e39919d4897080aa8',1,'IRMitsubishiHeavy152Ac::remote_state()'],['../classIRMitsubishiHeavy88Ac.html#a46be0e755530f59fad7d3f9050ecc107',1,'IRMitsubishiHeavy88Ac::remote_state()'],['../classIRNeoclimaAc.html#a336507e0635ede3b9ebf53881ece50bb',1,'IRNeoclimaAc::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()'],['../classIRSamsungAc.html#a5966a3b665ce034de807de1955396e10',1,'IRSamsungAc::remote_state()'],['../classIRTcl112Ac.html#a6eda1148a977a3ccf0c6c30239fca4c8',1,'IRTcl112Ac::remote_state()'],['../classIRTecoAc.html#a3c2ad7587ed4f5589deb20d8dc16b1e4',1,'IRTecoAc::remote_state()'],['../classIRToshibaAC.html#aab228aa6db2255dddf98a46a25cbb0f0',1,'IRToshibaAC::remote_state()'],['../classIRTrotecESP.html#afccba55e2c3d42c716591c10bc9afa18',1,'IRTrotecESP::remote_state()'],['../classIRVestelAc.html#a74d889a0db2fa63a2e38aaa15819568c',1,'IRVestelAc::remote_state()'],['../classIRWhirlpoolAc.html#a65333985c39773896071081ebcca4821',1,'IRWhirlpoolAc::remote_state()']]], + ['remote_5ftime_5fstate_6952',['remote_time_state',['../classIRVestelAc.html#a9b10e4a0c1f71aecbeb385666d1a53bd',1,'IRVestelAc']]], + ['repeat_6953',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.html new file mode 100644 index 000000000..94f1a8cf9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.js new file mode 100644 index 000000000..7b6252538 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_11.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['saved_5fstate_6954',['saved_state',['../classIRCoolixAC.html#aec0bce8019d7d49a30915394bee56b9a',1,'IRCoolixAC']]], + ['scrap_6955',['scrap',['../unionmagiquest.html#afd0bcf9a87f0fa2db87b68b211952a73',1,'magiquest']]], + ['sleep_6956',['sleep',['../structstdAc_1_1state__t.html#a94fa6098d7422292a1c6943973cd106a',1,'stdAc::state_t']]], + ['sleepflag_6957',['sleepFlag',['../classIRCoolixAC.html#a26560e04d1f77830e40e5570845b9e06',1,'IRCoolixAC']]], + ['start_6958',['start',['../classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a',1,'IRtimer::start()'],['../classTimerMs.html#a15ad2e08a5931397391d48f040722f65',1,'TimerMs::start()']]], + ['state_6959',['state',['../classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305',1,'decode_results']]], + ['success_6960',['success',['../structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90',1,'match_result_t']]], + ['swingflag_6961',['swingFlag',['../classIRCoolixAC.html#a6d61903a90cebef56b931bebbfa5cba3',1,'IRCoolixAC']]], + ['swingh_6962',['swingh',['../structstdAc_1_1state__t.html#a761bb702891ed1fa35906929a4c8a3f8',1,'stdAc::state_t']]], + ['swinghflag_6963',['swingHFlag',['../classIRCoolixAC.html#a1c5fb27fb58d4d1a1fd8c9931eba58c4',1,'IRCoolixAC']]], + ['swingv_6964',['swingv',['../structstdAc_1_1state__t.html#a35477d368350d8981ad8b7b09505857e',1,'stdAc::state_t']]], + ['swingvflag_6965',['swingVFlag',['../classIRCoolixAC.html#adf18ad8494466f6301176ce10aa3a075',1,'IRCoolixAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.html new file mode 100644 index 000000000..61c013a4e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.js new file mode 100644 index 000000000..97e250db2 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_12.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['timeout_6966',['timeout',['../structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4',1,'irparams_t']]], + ['timer_6967',['timer',['../structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d',1,'irparams_t']]], + ['turbo_6968',['turbo',['../structstdAc_1_1state__t.html#aae084b686685f2b2a07ccdda649e358c',1,'stdAc::state_t']]], + ['turboflag_6969',['turboFlag',['../classIRCoolixAC.html#a60a8a848951555dba34f2a317d6611ea',1,'IRCoolixAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.html new file mode 100644 index 000000000..87b7ca676 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.js new file mode 100644 index 000000000..738a0e612 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['use_5ftime_5fstate_6970',['use_time_state',['../classIRVestelAc.html#af1b622c50a4952fb3edaf483e1bf9328',1,'IRVestelAc']]], + ['used_6971',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.html new file mode 100644 index 000000000..874fe5958 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.js new file mode 100644 index 000000000..20f2534d1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['value_6972',['value',['../classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47',1,'decode_results']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.html new file mode 100644 index 000000000..3ca879906 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.js new file mode 100644 index 000000000..6837a7b68 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wand_5fid_6973',['wand_id',['../unionmagiquest.html#a1b159cd47635d548e1d4198cd6d41e93',1,'magiquest']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.html new file mode 100644 index 000000000..2b5a4330f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.js new file mode 100644 index 000000000..f11625d47 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zonefollowflag_6974',['zoneFollowFlag',['../classIRCoolixAC.html#a9cb37ed201fcf842c153f0414d9bfd9f',1,'IRCoolixAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.html new file mode 100644 index 000000000..0c8a18cf9 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.js new file mode 100644 index 000000000..a68ff94f4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['beep_4377',['beep',['../structstdAc_1_1state__t.html#a468ce4cf8b68467964b1f1840257663d',1,'stdAc::state_t']]], + ['bits_4378',['bits',['../classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7',1,'decode_results']]], + ['bufsize_4379',['bufsize',['../structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec',1,'irparams_t']]], + ['byte_4380',['byte',['../unionmagiquest.html#af1a9c9a147a1610fe5f0e77ca3e09e44',1,'magiquest']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.html new file mode 100644 index 000000000..19a31fc28 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.js new file mode 100644 index 000000000..5ed66be69 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['celsius_4381',['celsius',['../structstdAc_1_1state__t.html#a235b17f3979b155b368bfdc2b14123f5',1,'stdAc::state_t']]], + ['clean_4382',['clean',['../structstdAc_1_1state__t.html#a703fa57ade60d68deccbb2a59258b32a',1,'stdAc::state_t']]], + ['cleanflag_4383',['cleanFlag',['../classIRCoolixAC.html#a9280bc7517713dae451a64e35674804d',1,'IRCoolixAC']]], + ['clock_4384',['clock',['../structstdAc_1_1state__t.html#ab1d76172930ebfe992fd9b700369e787',1,'stdAc::state_t']]], + ['cmd_4385',['cmd',['../unionmagiquest.html#a71f7646ffd59f0478ae28fad2d724a44',1,'magiquest']]], + ['command_4386',['command',['../classdecode__results.html#a9b750d09f713b0693472f815fd0fd402',1,'decode_results']]], + ['cool_5fmode_4387',['cool_mode',['../classIRArgoAC.html#a74e7e489d743f213664d9259f1e7a431',1,'IRArgoAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.html new file mode 100644 index 000000000..bdc37be7f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.js new file mode 100644 index 000000000..1f911c339 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['data_4388',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], + ['decode_5ftype_4389',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], + ['degrees_4390',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.html new file mode 100644 index 000000000..6aa2249b4 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.js new file mode 100644 index 000000000..fdbe17906 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['econo_4391',['econo',['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.html new file mode 100644 index 000000000..ce4a90635 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.js new file mode 100644 index 000000000..d6e83ad6b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['fanspeed_4392',['fanspeed',['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t']]], + ['filter_4393',['filter',['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t']]], + ['flap_5fmode_4394',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.html new file mode 100644 index 000000000..39ffd4746 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.js new file mode 100644 index 000000000..adfaa07ee --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['heat_5fmode_4395',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.html new file mode 100644 index 000000000..37a2eddfa --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.js new file mode 100644 index 000000000..e951bfb37 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['irparams_4396',['irparams',['../IRrecv_8cpp.html#a5620be27a7445f25d43dbe3432ed6fd1',1,'IRrecv.cpp']]], + ['irparams_5fsave_4397',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv::irparams_save()'],['../IRrecv_8cpp.html#a96e84ae171529ee954c53e2e938dd998',1,'irparams_save(): IRrecv.cpp']]], + ['irpin_4398',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]], + ['irremote_5fmux_4399',['irremote_mux',['../IRrecv_8cpp.html#ad2612f65707186ef7df0179d3636b4ea',1,'IRrecv.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.html new file mode 100644 index 000000000..21e5a4f3c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.js new file mode 100644 index 000000000..005123ec5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_9.js @@ -0,0 +1,2528 @@ +var searchData= +[ + ['k3dstr_4400',['k3DStr',['../IRtext_8cpp.html#aedbfd5e861447c2cde9f7bb6aade1370',1,'k3DStr(): IRtext.cpp'],['../IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d',1,'k3DStr(): IRtext.cpp']]], + ['k6thsensestr_4401',['k6thSenseStr',['../IRtext_8cpp.html#ad0bfc24932f22a599c7e7bf04fb57b10',1,'k6thSenseStr(): IRtext.cpp'],['../IRtext_8h.html#a7425119d393b134c4659db9d35691e35',1,'k6thSenseStr(): IRtext.cpp']]], + ['k8cheatstr_4402',['k8CHeatStr',['../IRtext_8cpp.html#ac6ab822edcfe7768cd1a8b0426a1bd59',1,'k8CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8',1,'k8CHeatStr(): IRtext.cpp']]], + ['kairflowstr_4403',['kAirFlowStr',['../IRtext_8cpp.html#a7ecf1c6454bbf9963ca85a2bd7d4a34a',1,'kAirFlowStr(): IRtext.cpp'],['../IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180',1,'kAirFlowStr(): IRtext.cpp']]], + ['kairwellbits_4404',['kAirwellBits',['../IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f',1,'IRremoteESP8266.h']]], + ['kairwellfootermark_4405',['kAirwellFooterMark',['../ir__Airwell_8cpp.html#a2f41c6fe12eb5b3369ffb67fc6333431',1,'ir_Airwell.cpp']]], + ['kairwellhalfclockperiod_4406',['kAirwellHalfClockPeriod',['../ir__Airwell_8cpp.html#a955f70631a1bc9be8453ccc9fbb3ecfc',1,'ir_Airwell.cpp']]], + ['kairwellhdrmark_4407',['kAirwellHdrMark',['../ir__Airwell_8cpp.html#ad0c7b6c28df61b706eef2ec05506d8c2',1,'ir_Airwell.cpp']]], + ['kairwellhdrspace_4408',['kAirwellHdrSpace',['../ir__Airwell_8cpp.html#ad7e80d679eaa5742f261619cc1115567',1,'ir_Airwell.cpp']]], + ['kairwellminrepeats_4409',['kAirwellMinRepeats',['../IRremoteESP8266_8h.html#a669217ae5aa0baa159f7452f53551875',1,'IRremoteESP8266.h']]], + ['kairwelloverhead_4410',['kAirwellOverhead',['../ir__Airwell_8cpp.html#a8365fb4b254f5eeb6fed59cdc627fead',1,'ir_Airwell.cpp']]], + ['kaiwarct501bits_4411',['kAiwaRcT501Bits',['../IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6',1,'IRremoteESP8266.h']]], + ['kaiwarct501minrepeats_4412',['kAiwaRcT501MinRepeats',['../IRremoteESP8266_8h.html#ad796714d955b6cc8e207b03058eae5a3',1,'IRremoteESP8266.h']]], + ['kaiwarct501postbits_4413',['kAiwaRcT501PostBits',['../ir__Aiwa_8cpp.html#a1ad2ad119febec79cb20bf2356ae4dd4',1,'ir_Aiwa.cpp']]], + ['kaiwarct501postdata_4414',['kAiwaRcT501PostData',['../ir__Aiwa_8cpp.html#a5c8aa67edc9ceed9dc398f878930b1cb',1,'ir_Aiwa.cpp']]], + ['kaiwarct501prebits_4415',['kAiwaRcT501PreBits',['../ir__Aiwa_8cpp.html#a614f30df204126f234ce1d256406f075',1,'ir_Aiwa.cpp']]], + ['kaiwarct501predata_4416',['kAiwaRcT501PreData',['../ir__Aiwa_8cpp.html#a9aafbd2938553c9b97dac6f4e3edee6e',1,'ir_Aiwa.cpp']]], + ['kallprotocolnamesstr_4417',['kAllProtocolNamesStr',['../IRtext_8cpp.html#a3ef36cf85e44181ecc4d11085b7abed6',1,'kAllProtocolNamesStr(): IRtext.cpp'],['../IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775',1,'kAllProtocolNamesStr(): IRtext.cpp']]], + ['kalokabits_4418',['kAlokaBits',['../IRremoteESP8266_8h.html#a864918ca63a5fe7345688a72d61ddf23',1,'IRremoteESP8266.h']]], + ['kalokaledblue_4419',['kAlokaLedBlue',['../ir__NEC_8h.html#a49908cff59d8e7a4926638c74b796c61',1,'ir_NEC.h']]], + ['kalokaledgreen_4420',['kAlokaLedGreen',['../ir__NEC_8h.html#aa6c6afc878f4b2a8d4b9349bf6766fb6',1,'ir_NEC.h']]], + ['kalokaledlightgreen_4421',['kAlokaLedLightGreen',['../ir__NEC_8h.html#ab2daa6b17fd2d5e30fc47105e4c3c6b6',1,'ir_NEC.h']]], + ['kalokaledmidblue_4422',['kAlokaLedMidBlue',['../ir__NEC_8h.html#a47d88027186cd96216bea935ca93d7bc',1,'ir_NEC.h']]], + ['kalokaledorange_4423',['kAlokaLedOrange',['../ir__NEC_8h.html#a40f8ae5d6ec8f6aa887c73f032ce03bb',1,'ir_NEC.h']]], + ['kalokaledpink_4424',['kAlokaLedPink',['../ir__NEC_8h.html#a53cf14e43062b82259e8d171a992ceff',1,'ir_NEC.h']]], + ['kalokaledpinkred_4425',['kAlokaLedPinkRed',['../ir__NEC_8h.html#a20ef8a4a844577849b4b3bc7a86fe352',1,'ir_NEC.h']]], + ['kalokaledrainbow_4426',['kAlokaLedRainbow',['../ir__NEC_8h.html#a724ce8d8c71c07a019ed2ddfba269151',1,'ir_NEC.h']]], + ['kalokaledred_4427',['kAlokaLedRed',['../ir__NEC_8h.html#ade8f47e4607be919ca05b6dd6ed23ae9',1,'ir_NEC.h']]], + ['kalokaledtreegrow_4428',['kAlokaLedTreeGrow',['../ir__NEC_8h.html#a5ecb76db25229f9f05044e54239144ee',1,'ir_NEC.h']]], + ['kalokaledwhite_4429',['kAlokaLedWhite',['../ir__NEC_8h.html#a0c0b35e9d905de0b299e38e5807f363e',1,'ir_NEC.h']]], + ['kalokaledyellow_4430',['kAlokaLedYellow',['../ir__NEC_8h.html#a1853a0e8856b8af97f458a180c41d6d5',1,'ir_NEC.h']]], + ['kalokanightfade_4431',['kAlokaNightFade',['../ir__NEC_8h.html#adb8489faf42032a38187759b5f1037a1',1,'ir_NEC.h']]], + ['kalokanighttimer_4432',['kAlokaNightTimer',['../ir__NEC_8h.html#a1b48b8bbd71fbe3728487f36123f4e4b',1,'ir_NEC.h']]], + ['kalokapower_4433',['kAlokaPower',['../ir__NEC_8h.html#a147ecbccf8f11976f65b3f374b6ab2d0',1,'ir_NEC.h']]], + ['kamcorauto_4434',['kAmcorAuto',['../ir__Amcor_8h.html#a9c02a27d5ed80963ff3b1ff32fc261c5',1,'ir_Amcor.h']]], + ['kamcorbits_4435',['kAmcorBits',['../IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db',1,'IRremoteESP8266.h']]], + ['kamcorchecksumbyte_4436',['kAmcorChecksumByte',['../ir__Amcor_8h.html#a6c60b38dd5b08d5787e346a55dfe0111',1,'ir_Amcor.h']]], + ['kamcorcool_4437',['kAmcorCool',['../ir__Amcor_8h.html#a221c452a3323bd4d39a6084f84ecefbd',1,'ir_Amcor.h']]], + ['kamcordefaultrepeat_4438',['kAmcorDefaultRepeat',['../IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c',1,'IRremoteESP8266.h']]], + ['kamcordry_4439',['kAmcorDry',['../ir__Amcor_8h.html#a4d285053d14cf85d0c17e738c53538cd',1,'ir_Amcor.h']]], + ['kamcorfan_4440',['kAmcorFan',['../ir__Amcor_8h.html#a5fa0c6e3a73c94fc419ff8d1aa1423c2',1,'ir_Amcor.h']]], + ['kamcorfanauto_4441',['kAmcorFanAuto',['../ir__Amcor_8h.html#a3199dbace6444ed6ca7ff2e55a8a3a24',1,'ir_Amcor.h']]], + ['kamcorfanmax_4442',['kAmcorFanMax',['../ir__Amcor_8h.html#a08ea054d4121220ba758a0e0cacef8ca',1,'ir_Amcor.h']]], + ['kamcorfanmed_4443',['kAmcorFanMed',['../ir__Amcor_8h.html#a9ef019a27cf0724ff1f1ff39e06c0c87',1,'ir_Amcor.h']]], + ['kamcorfanmin_4444',['kAmcorFanMin',['../ir__Amcor_8h.html#a0276f72dc5b39557850838c8c70fd157',1,'ir_Amcor.h']]], + ['kamcorfanoffset_4445',['kAmcorFanOffset',['../ir__Amcor_8h.html#aaa3beed08599db5e155b3b54a3fc60bd',1,'ir_Amcor.h']]], + ['kamcorfansize_4446',['kAmcorFanSize',['../ir__Amcor_8h.html#a4a6d1ad01cd89d8064efdd29311948b7',1,'ir_Amcor.h']]], + ['kamcorfootermark_4447',['kAmcorFooterMark',['../ir__Amcor_8cpp.html#a3f877b05b07810ff43712dd4412af4f5',1,'ir_Amcor.cpp']]], + ['kamcorgap_4448',['kAmcorGap',['../ir__Amcor_8cpp.html#a090f83ec3d4f3fd10baa16bf512dca23',1,'ir_Amcor.cpp']]], + ['kamcorhdrmark_4449',['kAmcorHdrMark',['../ir__Amcor_8cpp.html#ab528f545e9af4ffb0f13d5674cfd1589',1,'ir_Amcor.cpp']]], + ['kamcorhdrspace_4450',['kAmcorHdrSpace',['../ir__Amcor_8cpp.html#ae0e00c60c4220d27ef7051b45f2ae8b5',1,'ir_Amcor.cpp']]], + ['kamcorheat_4451',['kAmcorHeat',['../ir__Amcor_8h.html#a9467539574a0030d166fac79684216f8',1,'ir_Amcor.h']]], + ['kamcormax_4452',['kAmcorMax',['../ir__Amcor_8h.html#afac44479dc50e3885e474d2cf8d1f878',1,'ir_Amcor.h']]], + ['kamcormaxoffset_4453',['kAmcorMaxOffset',['../ir__Amcor_8h.html#a2740428d3e431ff7b04e85ec73009660',1,'ir_Amcor.h']]], + ['kamcormaxsize_4454',['kAmcorMaxSize',['../ir__Amcor_8h.html#a01d5ae3a2abe48f35971ad5373230ff8',1,'ir_Amcor.h']]], + ['kamcormaxtemp_4455',['kAmcorMaxTemp',['../ir__Amcor_8h.html#a6460abc4e2b44e4ef3f680c7e195c019',1,'ir_Amcor.h']]], + ['kamcormintemp_4456',['kAmcorMinTemp',['../ir__Amcor_8h.html#a2d952bf3f43cb55253a89db1bcc0b568',1,'ir_Amcor.h']]], + ['kamcormodefanbyte_4457',['kAmcorModeFanByte',['../ir__Amcor_8h.html#a077021dbba23d1727caf1fe037e5bd88',1,'ir_Amcor.h']]], + ['kamcormodeoffset_4458',['kAmcorModeOffset',['../ir__Amcor_8h.html#a1aebade414c6d493d5fd1ae8d9b4f626',1,'ir_Amcor.h']]], + ['kamcormodesize_4459',['kAmcorModeSize',['../ir__Amcor_8h.html#aa306915bcc7fcf7209584d84dc5d1aa4',1,'ir_Amcor.h']]], + ['kamcoronemark_4460',['kAmcorOneMark',['../ir__Amcor_8cpp.html#a402a3643dc6b85813eb5f28d742c4e7f',1,'ir_Amcor.cpp']]], + ['kamcoronespace_4461',['kAmcorOneSpace',['../ir__Amcor_8cpp.html#a51163573fdc7b8017c7311f0e4011b1b',1,'ir_Amcor.cpp']]], + ['kamcorpowerbyte_4462',['kAmcorPowerByte',['../ir__Amcor_8h.html#a47e85c75d262d9091f27c7ddca141ab7',1,'ir_Amcor.h']]], + ['kamcorpoweroff_4463',['kAmcorPowerOff',['../ir__Amcor_8h.html#aeccd11f34ca0a93f682ab6c144f07fb7',1,'ir_Amcor.h']]], + ['kamcorpoweroffset_4464',['kAmcorPowerOffset',['../ir__Amcor_8h.html#aeebaa4acca33937e47df058885d3167f',1,'ir_Amcor.h']]], + ['kamcorpoweron_4465',['kAmcorPowerOn',['../ir__Amcor_8h.html#adf21c2364e64c818ba5379e78cae9d5c',1,'ir_Amcor.h']]], + ['kamcorpowersize_4466',['kAmcorPowerSize',['../ir__Amcor_8h.html#a6a4e3568f341a7a60bdf7a4dc56fd482',1,'ir_Amcor.h']]], + ['kamcorspecialbyte_4467',['kAmcorSpecialByte',['../ir__Amcor_8h.html#aa73133f5a673eebd7e8ca99155138cb7',1,'ir_Amcor.h']]], + ['kamcorstatelength_4468',['kAmcorStateLength',['../IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7',1,'IRremoteESP8266.h']]], + ['kamcortempbyte_4469',['kAmcorTempByte',['../ir__Amcor_8h.html#a9d352d1da6a93fc990786662fb3698de',1,'ir_Amcor.h']]], + ['kamcortempoffset_4470',['kAmcorTempOffset',['../ir__Amcor_8h.html#ae7113af741d2edfebf0fc4d4cc181b2d',1,'ir_Amcor.h']]], + ['kamcortempsize_4471',['kAmcorTempSize',['../ir__Amcor_8h.html#a4c5fb23ff11e99a2b860553b145e33bb',1,'ir_Amcor.h']]], + ['kamcortolerance_4472',['kAmcorTolerance',['../ir__Amcor_8cpp.html#ad7a4b72f06c5e71002a44c3e4d483bef',1,'ir_Amcor.cpp']]], + ['kamcorventoffset_4473',['kAmcorVentOffset',['../ir__Amcor_8h.html#aa231f74cdba0fe6813c2d6c77268d300',1,'ir_Amcor.h']]], + ['kamcorventon_4474',['kAmcorVentOn',['../ir__Amcor_8h.html#a0774a9180ab233da61c77c717be02521',1,'ir_Amcor.h']]], + ['kamcorventsize_4475',['kAmcorVentSize',['../ir__Amcor_8h.html#a55cd6972c20ddc0fa24ee8f42b50e46f',1,'ir_Amcor.h']]], + ['kamcorzeromark_4476',['kAmcorZeroMark',['../ir__Amcor_8cpp.html#a6f16bcf81087461a4e196a2c670f29ee',1,'ir_Amcor.cpp']]], + ['kamcorzerospace_4477',['kAmcorZeroSpace',['../ir__Amcor_8cpp.html#a0cbb87d1a5bb594cf428c79cd96c8733',1,'ir_Amcor.cpp']]], + ['kargoauto_4478',['kArgoAuto',['../ir__Argo_8h.html#a527fa5776cb58f88013de5062c620b12',1,'ir_Argo.h']]], + ['kargobitmark_4479',['kArgoBitMark',['../ir__Argo_8cpp.html#aa15902c11e3a7d3cbb25504764b163c1',1,'ir_Argo.cpp']]], + ['kargobits_4480',['kArgoBits',['../IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2',1,'IRremoteESP8266.h']]], + ['kargocool_4481',['kArgoCool',['../ir__Argo_8h.html#ab331356887b5f8f04f5ffdf9031fde71',1,'ir_Argo.h']]], + ['kargodefaultrepeat_4482',['kArgoDefaultRepeat',['../IRremoteESP8266_8h.html#a9a2190c526885753c676db666e48b764',1,'IRremoteESP8266.h']]], + ['kargodry_4483',['kArgoDry',['../ir__Argo_8h.html#ae119706139f65f730db477d060a7bc5d',1,'ir_Argo.h']]], + ['kargofan1_4484',['kArgoFan1',['../ir__Argo_8h.html#abfbde2676afb8b027a26a49d947a1396',1,'ir_Argo.h']]], + ['kargofan2_4485',['kArgoFan2',['../ir__Argo_8h.html#a7b544220198b6aa311da78bc02b0e211',1,'ir_Argo.h']]], + ['kargofan3_4486',['kArgoFan3',['../ir__Argo_8h.html#aa34af62e7134bbca2028d74ba7dfed4e',1,'ir_Argo.h']]], + ['kargofanauto_4487',['kArgoFanAuto',['../ir__Argo_8h.html#a3b17c0ba868b439135e6e016452f1623',1,'ir_Argo.h']]], + ['kargofanoffset_4488',['kArgoFanOffset',['../ir__Argo_8h.html#ab652e466dfce6bfabab04f70e23e6bc9',1,'ir_Argo.h']]], + ['kargofansize_4489',['kArgoFanSize',['../ir__Argo_8h.html#a032348f63ce0e391120161f2547ab280',1,'ir_Argo.h']]], + ['kargoflap1_4490',['kArgoFlap1',['../ir__Argo_8h.html#a477dac25a687b9d875cf9e94623d5e84',1,'ir_Argo.h']]], + ['kargoflap2_4491',['kArgoFlap2',['../ir__Argo_8h.html#aa72401adcdd23c12d36f98370c605ef6',1,'ir_Argo.h']]], + ['kargoflap3_4492',['kArgoFlap3',['../ir__Argo_8h.html#ab18e2931823d631b533c14f417ed4adb',1,'ir_Argo.h']]], + ['kargoflap4_4493',['kArgoFlap4',['../ir__Argo_8h.html#a59204076030de56e1160fc599879b142',1,'ir_Argo.h']]], + ['kargoflap5_4494',['kArgoFlap5',['../ir__Argo_8h.html#a5a3f4c1b1303b177a924c61dfdcce3e6',1,'ir_Argo.h']]], + ['kargoflap6_4495',['kArgoFlap6',['../ir__Argo_8h.html#ac11d6b575b4abc7ac5aec9006ac41634',1,'ir_Argo.h']]], + ['kargoflapauto_4496',['kArgoFlapAuto',['../ir__Argo_8h.html#af7f4a97011f94e4bf453e7cfd01fd780',1,'ir_Argo.h']]], + ['kargoflapfull_4497',['kArgoFlapFull',['../ir__Argo_8h.html#a8befe8d8b6826fc79176b66eea8352b7',1,'ir_Argo.h']]], + ['kargogap_4498',['kArgoGap',['../ir__Argo_8cpp.html#a1a28fc063dea8beacbaac39cf8e9b81b',1,'ir_Argo.cpp']]], + ['kargohdrmark_4499',['kArgoHdrMark',['../ir__Argo_8cpp.html#a5c25d5a07e397fe86378021e7c3f2980',1,'ir_Argo.cpp']]], + ['kargohdrspace_4500',['kArgoHdrSpace',['../ir__Argo_8cpp.html#a10e8a2ac55f8b123093cd92757d1603d',1,'ir_Argo.cpp']]], + ['kargoheat_4501',['kArgoHeat',['../ir__Argo_8h.html#a431536a03ef985b53a4147df5a043b21',1,'ir_Argo.h']]], + ['kargoheatauto_4502',['kArgoHeatAuto',['../ir__Argo_8h.html#a154f8b3e0d600d87b2822027bf0c6619',1,'ir_Argo.h']]], + ['kargoheatbit_4503',['kArgoHeatBit',['../ir__Argo_8h.html#ada4b42336f3d423e3ef1060605c7f7f1',1,'ir_Argo.h']]], + ['kargoheatblink_4504',['kArgoHeatBlink',['../ir__Argo_8h.html#ad29933c939f9364399dfa0f7eaa8cce6',1,'ir_Argo.h']]], + ['kargoifeelbitoffset_4505',['kArgoIFeelBitOffset',['../ir__Argo_8h.html#a0dc059f228415b3cc7a22b50fff71e9c',1,'ir_Argo.h']]], + ['kargomaxbitoffset_4506',['kArgoMaxBitOffset',['../ir__Argo_8h.html#af487de7857781edbe368a2ba724fc7c7',1,'ir_Argo.h']]], + ['kargomaxroomtemp_4507',['kArgoMaxRoomTemp',['../ir__Argo_8h.html#a27427d4479dc126e8782985008d4dd7d',1,'ir_Argo.h']]], + ['kargomaxtemp_4508',['kArgoMaxTemp',['../ir__Argo_8h.html#a2409d2f472fb950c070fa5c0a07f69ce',1,'ir_Argo.h']]], + ['kargomintemp_4509',['kArgoMinTemp',['../ir__Argo_8h.html#a4bc4e4cfe12af43730cb128f4043ad11',1,'ir_Argo.h']]], + ['kargomodeoffset_4510',['kArgoModeOffset',['../ir__Argo_8h.html#a127045d26371fa051310208b0a3d0316',1,'ir_Argo.h']]], + ['kargomodesize_4511',['kArgoModeSize',['../ir__Argo_8h.html#a98e4d25798fb992200ade3dd5e53a401',1,'ir_Argo.h']]], + ['kargonightbitoffset_4512',['kArgoNightBitOffset',['../ir__Argo_8h.html#a4d0f78fc9017ed0ff93c77794a411738',1,'ir_Argo.h']]], + ['kargooff_4513',['kArgoOff',['../ir__Argo_8h.html#af3c6e4f7b18095179ea9e20e45e1890a',1,'ir_Argo.h']]], + ['kargoonespace_4514',['kArgoOneSpace',['../ir__Argo_8cpp.html#a47131b446d160fed9c7af1886d3580e4',1,'ir_Argo.cpp']]], + ['kargopowerbitoffset_4515',['kArgoPowerBitOffset',['../ir__Argo_8h.html#a26c8b660b323ac8a8f1bbf30d7f40bf7',1,'ir_Argo.h']]], + ['kargoroomtemphighoffset_4516',['kArgoRoomTempHighOffset',['../ir__Argo_8h.html#abe1b434b09b0c42d0d7c90496d180aeb',1,'ir_Argo.h']]], + ['kargoroomtemphighsize_4517',['kArgoRoomTempHighSize',['../ir__Argo_8h.html#a6fdcdd90f37c2f4572815b279379484d',1,'ir_Argo.h']]], + ['kargoroomtemplowoffset_4518',['kArgoRoomTempLowOffset',['../ir__Argo_8h.html#a1272f85bf89b7f0326352ae7a05b2244',1,'ir_Argo.h']]], + ['kargoroomtemplowsize_4519',['kArgoRoomTempLowSize',['../ir__Argo_8h.html#a2cd767383014feb1c6cdea45715e49c7',1,'ir_Argo.h']]], + ['kargostatelength_4520',['kArgoStateLength',['../IRremoteESP8266_8h.html#a5f38a56eacd9964a8514cb57de287a45',1,'IRremoteESP8266.h']]], + ['kargotempdelta_4521',['kArgoTempDelta',['../ir__Argo_8h.html#a7256560730a73dcaaa60cdfc8140fc0b',1,'ir_Argo.h']]], + ['kargotemphighoffset_4522',['kArgoTempHighOffset',['../ir__Argo_8h.html#af06b47b51a4b837ee92a2e2774d214e3',1,'ir_Argo.h']]], + ['kargotemphighsize_4523',['kArgoTempHighSize',['../ir__Argo_8h.html#af2b0c18a612c097f6356ff04ce9c78d0',1,'ir_Argo.h']]], + ['kargotemplowoffset_4524',['kArgoTempLowOffset',['../ir__Argo_8h.html#a17137f6bec2d629cca04a859bb48dae8',1,'ir_Argo.h']]], + ['kargotemplowsize_4525',['kArgoTempLowSize',['../ir__Argo_8h.html#aa50679112dc998ff06588d9a35ff313c',1,'ir_Argo.h']]], + ['kargozerospace_4526',['kArgoZeroSpace',['../ir__Argo_8cpp.html#a5e06b6d522b35f503ca1e5db27f32ff6',1,'ir_Argo.cpp']]], + ['kautomaticstr_4527',['kAutomaticStr',['../IRtext_8cpp.html#a66a32b6387a99572644e91f3299910a6',1,'kAutomaticStr(): IRtext.cpp'],['../IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea',1,'kAutomaticStr(): IRtext.cpp']]], + ['kautostr_4528',['kAutoStr',['../IRtext_8cpp.html#ae8ec328761b0218d0b18479a972b1121',1,'kAutoStr(): IRtext.cpp'],['../IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9',1,'kAutoStr(): IRtext.cpp']]], + ['kbeepstr_4529',['kBeepStr',['../IRtext_8cpp.html#a429f5c2f5aea162bd1568e8489aecb28',1,'kBeepStr(): IRtext.cpp'],['../IRtext_8h.html#a2e98c29968ade682d94f35e28364c878',1,'kBeepStr(): IRtext.cpp']]], + ['kbitsstr_4530',['kBitsStr',['../IRtext_8cpp.html#aaabaca413c37bb6b18dc13daf5b335c1',1,'kBitsStr(): IRtext.cpp'],['../IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94',1,'kBitsStr(): IRtext.cpp']]], + ['kbottomstr_4531',['kBottomStr',['../IRtext_8cpp.html#ab0bd355efc13bd278a0e33765a783cd0',1,'kBottomStr(): IRtext.cpp'],['../IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3',1,'kBottomStr(): IRtext.cpp']]], + ['kbreezestr_4532',['kBreezeStr',['../IRtext_8cpp.html#ab0317e8cf720936fb02816e7827bea9e',1,'kBreezeStr(): IRtext.cpp'],['../IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d',1,'kBreezeStr(): IRtext.cpp']]], + ['kbuttonstr_4533',['kButtonStr',['../IRtext_8cpp.html#a6ee11e0a45632c54e34bed14c3a971ce',1,'kButtonStr(): IRtext.cpp'],['../IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e',1,'kButtonStr(): IRtext.cpp']]], + ['kcancelstr_4534',['kCancelStr',['../IRtext_8cpp.html#af79c3879bac5ca97947f16c3a6a03321',1,'kCancelStr(): IRtext.cpp'],['../IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b',1,'kCancelStr(): IRtext.cpp']]], + ['kcarrierac40bitmark_4535',['kCarrierAc40BitMark',['../ir__Carrier_8cpp.html#a3f8996aa3a7b9b871bc6556f98efb345',1,'ir_Carrier.cpp']]], + ['kcarrierac40bits_4536',['kCarrierAc40Bits',['../IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d',1,'IRremoteESP8266.h']]], + ['kcarrierac40gap_4537',['kCarrierAc40Gap',['../ir__Carrier_8cpp.html#aa5f0d39a4e12645a6fb477efb3191384',1,'ir_Carrier.cpp']]], + ['kcarrierac40hdrmark_4538',['kCarrierAc40HdrMark',['../ir__Carrier_8cpp.html#a4b77665ded6dab393779d2763bc367f0',1,'ir_Carrier.cpp']]], + ['kcarrierac40hdrspace_4539',['kCarrierAc40HdrSpace',['../ir__Carrier_8cpp.html#a5ea98bc575a7ac8d7f5da937feeaeed4',1,'ir_Carrier.cpp']]], + ['kcarrierac40minrepeat_4540',['kCarrierAc40MinRepeat',['../IRremoteESP8266_8h.html#a222aa743f398883a4910fbbb6d408bdc',1,'IRremoteESP8266.h']]], + ['kcarrierac40onespace_4541',['kCarrierAc40OneSpace',['../ir__Carrier_8cpp.html#a79073c06820817e077c5bd8d9b8acfbd',1,'ir_Carrier.cpp']]], + ['kcarrierac40zerospace_4542',['kCarrierAc40ZeroSpace',['../ir__Carrier_8cpp.html#a2ee9b60c12887983a6f4f123db6fd5e9',1,'ir_Carrier.cpp']]], + ['kcarrierac64bitmark_4543',['kCarrierAc64BitMark',['../ir__Carrier_8cpp.html#ae32b2dab6a654fa293f54684da45c5c0',1,'ir_Carrier.cpp']]], + ['kcarrierac64bits_4544',['kCarrierAc64Bits',['../IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a',1,'IRremoteESP8266.h']]], + ['kcarrierac64checksumoffset_4545',['kCarrierAc64ChecksumOffset',['../ir__Carrier_8h.html#a3aa65474b5be8c77d498b7e83d8b8f31',1,'ir_Carrier.h']]], + ['kcarrierac64checksumsize_4546',['kCarrierAc64ChecksumSize',['../ir__Carrier_8h.html#a0b446c17c4965508f335e68c786f0596',1,'ir_Carrier.h']]], + ['kcarrierac64cool_4547',['kCarrierAc64Cool',['../ir__Carrier_8h.html#aa75d5965da484d09f6f4c645cdb23869',1,'ir_Carrier.h']]], + ['kcarrierac64fan_4548',['kCarrierAc64Fan',['../ir__Carrier_8h.html#a57655ceea762b18e0dd96724ddf888bd',1,'ir_Carrier.h']]], + ['kcarrierac64fanauto_4549',['kCarrierAc64FanAuto',['../ir__Carrier_8h.html#a12d1fb295a0d9cf407040ab544acc245',1,'ir_Carrier.h']]], + ['kcarrierac64fanhigh_4550',['kCarrierAc64FanHigh',['../ir__Carrier_8h.html#a099f2e82998bd78d25cec17a4be5f230',1,'ir_Carrier.h']]], + ['kcarrierac64fanlow_4551',['kCarrierAc64FanLow',['../ir__Carrier_8h.html#aaeee61e5924bdc8028c4775f96ba14d2',1,'ir_Carrier.h']]], + ['kcarrierac64fanmedium_4552',['kCarrierAc64FanMedium',['../ir__Carrier_8h.html#aeb8943f8d9f2bd95a9df6500eea7cba4',1,'ir_Carrier.h']]], + ['kcarrierac64fanoffset_4553',['kCarrierAc64FanOffset',['../ir__Carrier_8h.html#abbd2da4887e1c313df40506c82cba836',1,'ir_Carrier.h']]], + ['kcarrierac64fansize_4554',['kCarrierAc64FanSize',['../ir__Carrier_8h.html#aebcfb795028fea2d1b4bfde9a045e672',1,'ir_Carrier.h']]], + ['kcarrierac64gap_4555',['kCarrierAc64Gap',['../ir__Carrier_8cpp.html#a6f7ba77f1350126d78a23d7ba967e258',1,'ir_Carrier.cpp']]], + ['kcarrierac64hdrmark_4556',['kCarrierAc64HdrMark',['../ir__Carrier_8cpp.html#a19dc2108d4490c82c03c87c625bc5f31',1,'ir_Carrier.cpp']]], + ['kcarrierac64hdrspace_4557',['kCarrierAc64HdrSpace',['../ir__Carrier_8cpp.html#ad73dbf55f5ffa03d92ec699b23e8ca8d',1,'ir_Carrier.cpp']]], + ['kcarrierac64heat_4558',['kCarrierAc64Heat',['../ir__Carrier_8h.html#ac261ba8bff6f103bb9043c85a6f21d58',1,'ir_Carrier.h']]], + ['kcarrierac64maxtemp_4559',['kCarrierAc64MaxTemp',['../ir__Carrier_8h.html#a5653bc180a4c849b5e0b33b957255ae4',1,'ir_Carrier.h']]], + ['kcarrierac64minrepeat_4560',['kCarrierAc64MinRepeat',['../IRremoteESP8266_8h.html#a8b2b3670dc74ce9fbf3c8b511422a06c',1,'IRremoteESP8266.h']]], + ['kcarrierac64mintemp_4561',['kCarrierAc64MinTemp',['../ir__Carrier_8h.html#a9e7a88bf52839ecb34da1966bb8a956b',1,'ir_Carrier.h']]], + ['kcarrierac64modeoffset_4562',['kCarrierAc64ModeOffset',['../ir__Carrier_8h.html#a7f2ef38df606cb00f1c859914fc6f085',1,'ir_Carrier.h']]], + ['kcarrierac64modesize_4563',['kCarrierAc64ModeSize',['../ir__Carrier_8h.html#a8d28dd57b7ad6b9f4bb2ba11fa4b63f7',1,'ir_Carrier.h']]], + ['kcarrierac64offtimerenableoffset_4564',['kCarrierAc64OffTimerEnableOffset',['../ir__Carrier_8h.html#a1afcf0873e42c5cda5328bfe97d97ade',1,'ir_Carrier.h']]], + ['kcarrierac64offtimeroffset_4565',['kCarrierAc64OffTimerOffset',['../ir__Carrier_8h.html#a0c9189a86abe1bc41f9db34e4ab77172',1,'ir_Carrier.h']]], + ['kcarrierac64onespace_4566',['kCarrierAc64OneSpace',['../ir__Carrier_8cpp.html#a58ea051d56227a4037682f5d612b4cc7',1,'ir_Carrier.cpp']]], + ['kcarrierac64ontimerenableoffset_4567',['kCarrierAc64OnTimerEnableOffset',['../ir__Carrier_8h.html#a8a03bb9d7ead5116dff0b81732300b40',1,'ir_Carrier.h']]], + ['kcarrierac64ontimeroffset_4568',['kCarrierAc64OnTimerOffset',['../ir__Carrier_8h.html#ad2fd8df9a5114e0fc34a3657aac61f9c',1,'ir_Carrier.h']]], + ['kcarrierac64poweroffset_4569',['kCarrierAc64PowerOffset',['../ir__Carrier_8h.html#a943b94e79e98237678b66f6f4a1b6af4',1,'ir_Carrier.h']]], + ['kcarrierac64sleepoffset_4570',['kCarrierAc64SleepOffset',['../ir__Carrier_8h.html#a8ae023f5e44d5c29df41ab0f5cd534a0',1,'ir_Carrier.h']]], + ['kcarrierac64swingvoffset_4571',['kCarrierAc64SwingVOffset',['../ir__Carrier_8h.html#a186dcc18acb75f98370d71f4640f02ce',1,'ir_Carrier.h']]], + ['kcarrierac64tempoffset_4572',['kCarrierAc64TempOffset',['../ir__Carrier_8h.html#a3d3663b7e55cae59f1b8bba5ffbb5fad',1,'ir_Carrier.h']]], + ['kcarrierac64tempsize_4573',['kCarrierAc64TempSize',['../ir__Carrier_8h.html#ae9e16d5ab69b493607ce84dfbded150f',1,'ir_Carrier.h']]], + ['kcarrierac64timermax_4574',['kCarrierAc64TimerMax',['../ir__Carrier_8h.html#a78a34b51e51dc3b4129f350673c9fa96',1,'ir_Carrier.h']]], + ['kcarrierac64timermin_4575',['kCarrierAc64TimerMin',['../ir__Carrier_8h.html#aeebac3e61246f2e148806d4b4e8ac13e',1,'ir_Carrier.h']]], + ['kcarrierac64timersize_4576',['kCarrierAc64TimerSize',['../ir__Carrier_8h.html#adced87f4aed397ea8f2bb5ac2749dce5',1,'ir_Carrier.h']]], + ['kcarrierac64zerospace_4577',['kCarrierAc64ZeroSpace',['../ir__Carrier_8cpp.html#af28d4332e0f1ad19aa743b993f44cdc7',1,'ir_Carrier.cpp']]], + ['kcarrieracbitmark_4578',['kCarrierAcBitMark',['../ir__Carrier_8cpp.html#af4a608f81c745734499ec1842167940b',1,'ir_Carrier.cpp']]], + ['kcarrieracbits_4579',['kCarrierAcBits',['../IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b',1,'IRremoteESP8266.h']]], + ['kcarrieracfreq_4580',['kCarrierAcFreq',['../ir__Carrier_8cpp.html#a795dc2d9b122bd3794fddbddef571058',1,'ir_Carrier.cpp']]], + ['kcarrieracgap_4581',['kCarrierAcGap',['../ir__Carrier_8cpp.html#a00767c0b503a7fc8f0b2ddfac24a4f85',1,'ir_Carrier.cpp']]], + ['kcarrierachdrmark_4582',['kCarrierAcHdrMark',['../ir__Carrier_8cpp.html#ad9a7754e77cfcfd6c6032d497bc4528d',1,'ir_Carrier.cpp']]], + ['kcarrierachdrspace_4583',['kCarrierAcHdrSpace',['../ir__Carrier_8cpp.html#a8e09857e2fe15d6983ec0384c57140d4',1,'ir_Carrier.cpp']]], + ['kcarrieracminrepeat_4584',['kCarrierAcMinRepeat',['../IRremoteESP8266_8h.html#a78c8a8b11179e8fd20bf09fa35f6b886',1,'IRremoteESP8266.h']]], + ['kcarrieraconespace_4585',['kCarrierAcOneSpace',['../ir__Carrier_8cpp.html#ab04a214a7c2e0439384736c46ddc6c61',1,'ir_Carrier.cpp']]], + ['kcarrieraczerospace_4586',['kCarrierAcZeroSpace',['../ir__Carrier_8cpp.html#a51c9c4bbd6e2927baac15dc60c1e60fa',1,'ir_Carrier.cpp']]], + ['kceilingstr_4587',['kCeilingStr',['../IRtext_8cpp.html#a5258c9d80502d5a8e14bb324a394452b',1,'kCeilingStr(): IRtext.cpp'],['../IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e',1,'kCeilingStr(): IRtext.cpp']]], + ['kcelsiusstr_4588',['kCelsiusStr',['../IRtext_8cpp.html#af0ad7ca76c659a17872960bcbcfbdbbf',1,'kCelsiusStr(): IRtext.cpp'],['../IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e',1,'kCelsiusStr(): IRtext.cpp']]], + ['kcentrestr_4589',['kCentreStr',['../IRtext_8cpp.html#a87a4151e0361c9f75d0d5c00f9bad1ee',1,'kCentreStr(): IRtext.cpp'],['../IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228',1,'kCentreStr(): IRtext.cpp']]], + ['kchangestr_4590',['kChangeStr',['../IRtext_8cpp.html#a1f6396eb9bd4327a7a2307e5724c1dd7',1,'kChangeStr(): IRtext.cpp'],['../IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae',1,'kChangeStr(): IRtext.cpp']]], + ['kcirculatestr_4591',['kCirculateStr',['../IRtext_8cpp.html#a869ef1f579373ff4b5b61b1cba215680',1,'kCirculateStr(): IRtext.cpp'],['../IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578',1,'kCirculateStr(): IRtext.cpp']]], + ['kcleanstr_4592',['kCleanStr',['../IRtext_8cpp.html#ad2d97c52e8df2704654fdbd0a7a0561e',1,'kCleanStr(): IRtext.cpp'],['../IRtext_8h.html#a45c17b23773e9dcded65a82577b00263',1,'kCleanStr(): IRtext.cpp']]], + ['kclockstr_4593',['kClockStr',['../IRtext_8cpp.html#ad39bd469d5474159463543184cfae321',1,'kClockStr(): IRtext.cpp'],['../IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8',1,'kClockStr(): IRtext.cpp']]], + ['kcodestr_4594',['kCodeStr',['../IRtext_8cpp.html#a26e4bf74871ce457f42ec839545987f4',1,'kCodeStr(): IRtext.cpp'],['../IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd',1,'kCodeStr(): IRtext.cpp']]], + ['kcolonspacestr_4595',['kColonSpaceStr',['../IRtext_8cpp.html#a5d978c9ac25163a9629b7e8e2d37d25e',1,'kColonSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512',1,'kColonSpaceStr(): IRtext.cpp']]], + ['kcomfortstr_4596',['kComfortStr',['../IRtext_8cpp.html#aa7f0cfdb126ff7b0f8db6033bb51f36d',1,'kComfortStr(): IRtext.cpp'],['../IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1',1,'kComfortStr(): IRtext.cpp']]], + ['kcommandstr_4597',['kCommandStr',['../IRtext_8cpp.html#afd5865ea8c0f8565369dd2c4ee4622d6',1,'kCommandStr(): IRtext.cpp'],['../IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606',1,'kCommandStr(): IRtext.cpp']]], + ['kcommaspacestr_4598',['kCommaSpaceStr',['../IRtext_8cpp.html#ac8a9678d4c9eeee17a9dc28624c0ab49',1,'kCommaSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3',1,'kCommaSpaceStr(): IRtext.cpp']]], + ['kcoolixauto_4599',['kCoolixAuto',['../ir__Coolix_8h.html#a73c1ef7c2c80c861256a14a9f256b125',1,'ir_Coolix.h']]], + ['kcoolixbitmark_4600',['kCoolixBitMark',['../ir__Coolix_8cpp.html#acd8562a27ec6c0a6c2cf9480082e04cd',1,'ir_Coolix.cpp']]], + ['kcoolixbitmarkticks_4601',['kCoolixBitMarkTicks',['../ir__Coolix_8cpp.html#aefaa206b4316a4fd921f7171295d1232',1,'ir_Coolix.cpp']]], + ['kcoolixbits_4602',['kCoolixBits',['../IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9',1,'IRremoteESP8266.h']]], + ['kcoolixclean_4603',['kCoolixClean',['../ir__Coolix_8h.html#a5cc9fcde4a6da54917b4d69bb352bc86',1,'ir_Coolix.h']]], + ['kcoolixcmdfan_4604',['kCoolixCmdFan',['../ir__Coolix_8h.html#a7d5ff02f4a0c379322877b3dcf934c77',1,'ir_Coolix.h']]], + ['kcoolixcool_4605',['kCoolixCool',['../ir__Coolix_8h.html#ae285ee4206fe45d25bb1d99b848c7e65',1,'ir_Coolix.h']]], + ['kcoolixdefaultrepeat_4606',['kCoolixDefaultRepeat',['../IRremoteESP8266_8h.html#aa89410d369d71738c8cbefae6ac3b00f',1,'IRremoteESP8266.h']]], + ['kcoolixdefaultstate_4607',['kCoolixDefaultState',['../ir__Coolix_8h.html#ad54ebf20658c33e5ad54fc54a513511e',1,'ir_Coolix.h']]], + ['kcoolixdry_4608',['kCoolixDry',['../ir__Coolix_8h.html#a904c4135f61120e71577f6830adae689',1,'ir_Coolix.h']]], + ['kcoolixfan_4609',['kCoolixFan',['../ir__Coolix_8h.html#a2e050321c994844f2ff6668ba6973ac4',1,'ir_Coolix.h']]], + ['kcoolixfanauto_4610',['kCoolixFanAuto',['../ir__Coolix_8h.html#ac25d3c45ed7d7d30ff2ebf617d8265f0',1,'ir_Coolix.h']]], + ['kcoolixfanauto0_4611',['kCoolixFanAuto0',['../ir__Coolix_8h.html#a38cccd1edee2c88c1b080f1d5600ead7',1,'ir_Coolix.h']]], + ['kcoolixfanfixed_4612',['kCoolixFanFixed',['../ir__Coolix_8h.html#a37a3a23d8fe30df024cb844f82f90b2a',1,'ir_Coolix.h']]], + ['kcoolixfanmax_4613',['kCoolixFanMax',['../ir__Coolix_8h.html#aabb349ee111467088b9a292950aba753',1,'ir_Coolix.h']]], + ['kcoolixfanmed_4614',['kCoolixFanMed',['../ir__Coolix_8h.html#a2750626cda2e389df901b459805e09bd',1,'ir_Coolix.h']]], + ['kcoolixfanmin_4615',['kCoolixFanMin',['../ir__Coolix_8h.html#a6c0086075cce1698c48cc30e045ab5bf',1,'ir_Coolix.h']]], + ['kcoolixfanoffset_4616',['kCoolixFanOffset',['../ir__Coolix_8h.html#a1656f488974bd12db4049dfa8ff43a4e',1,'ir_Coolix.h']]], + ['kcoolixfansize_4617',['kCoolixFanSize',['../ir__Coolix_8h.html#a5f4649b5b73766245bc82191cdc0e596',1,'ir_Coolix.h']]], + ['kcoolixfantempcode_4618',['kCoolixFanTempCode',['../ir__Coolix_8h.html#a6d2d6f2fd8f5e9a4491623b9351efcba',1,'ir_Coolix.h']]], + ['kcoolixfanzonefollow_4619',['kCoolixFanZoneFollow',['../ir__Coolix_8h.html#a5a71c6acd18b3198c7900e2de34c48a3',1,'ir_Coolix.h']]], + ['kcoolixhdrmark_4620',['kCoolixHdrMark',['../ir__Coolix_8cpp.html#a746299797d958ccf116e6d1cdab3ad06',1,'ir_Coolix.cpp']]], + ['kcoolixhdrmarkticks_4621',['kCoolixHdrMarkTicks',['../ir__Coolix_8cpp.html#a04d520a0fe3d773f377810174e5463a4',1,'ir_Coolix.cpp']]], + ['kcoolixhdrspace_4622',['kCoolixHdrSpace',['../ir__Coolix_8cpp.html#ab7ff2a6bd99e0e6a0db3f14350cca84c',1,'ir_Coolix.cpp']]], + ['kcoolixhdrspaceticks_4623',['kCoolixHdrSpaceTicks',['../ir__Coolix_8cpp.html#a58951e9800513b019ccb9f04ae55716f',1,'ir_Coolix.cpp']]], + ['kcoolixheat_4624',['kCoolixHeat',['../ir__Coolix_8h.html#a234b39696f0b2fac6b37aa309082505e',1,'ir_Coolix.h']]], + ['kcoolixled_4625',['kCoolixLed',['../ir__Coolix_8h.html#a68ae46e117caf0d7a3cc2ef9492495f1',1,'ir_Coolix.h']]], + ['kcoolixmingap_4626',['kCoolixMinGap',['../ir__Coolix_8cpp.html#a46da2480f6850af899db74a4f2270cdc',1,'ir_Coolix.cpp']]], + ['kcoolixmingapticks_4627',['kCoolixMinGapTicks',['../ir__Coolix_8cpp.html#a94f47fbf027fcb90664b302ff123f535',1,'ir_Coolix.cpp']]], + ['kcoolixmodeoffset_4628',['kCoolixModeOffset',['../ir__Coolix_8h.html#acd17067177e1cc6776b7932afd9fbdb2',1,'ir_Coolix.h']]], + ['kcoolixmodesize_4629',['kCoolixModeSize',['../ir__Coolix_8h.html#a69e5ee4c5eb95ca3346d9d9186a688a8',1,'ir_Coolix.h']]], + ['kcoolixoff_4630',['kCoolixOff',['../ir__Coolix_8h.html#aef6f59b83a14b8505f395b2eb8d8ad39',1,'ir_Coolix.h']]], + ['kcoolixonespace_4631',['kCoolixOneSpace',['../ir__Coolix_8cpp.html#a97a8439ace71584e36ab7306c3d53749',1,'ir_Coolix.cpp']]], + ['kcoolixonespaceticks_4632',['kCoolixOneSpaceTicks',['../ir__Coolix_8cpp.html#a78770eaf597e4aa2ed539248ef10ec11',1,'ir_Coolix.cpp']]], + ['kcoolixprefix_4633',['kCoolixPrefix',['../ir__Coolix_8h.html#a1b88ef6651189ba330d8e2847528964b',1,'ir_Coolix.h']]], + ['kcoolixsensortempignorecode_4634',['kCoolixSensorTempIgnoreCode',['../ir__Coolix_8h.html#ae3aba531b0c0053424786ec4bb2be934',1,'ir_Coolix.h']]], + ['kcoolixsensortempmax_4635',['kCoolixSensorTempMax',['../ir__Coolix_8h.html#a71641b1240ee439e77128165cedf899f',1,'ir_Coolix.h']]], + ['kcoolixsensortempmin_4636',['kCoolixSensorTempMin',['../ir__Coolix_8h.html#a48f3f3ad79a53e0758270647db0b089c',1,'ir_Coolix.h']]], + ['kcoolixsensortempoffset_4637',['kCoolixSensorTempOffset',['../ir__Coolix_8h.html#a03edec58ad078d7de7436929c463898a',1,'ir_Coolix.h']]], + ['kcoolixsensortempsize_4638',['kCoolixSensorTempSize',['../ir__Coolix_8h.html#a979d1d4f84432afc29ac3fcc78353d6c',1,'ir_Coolix.h']]], + ['kcoolixsleep_4639',['kCoolixSleep',['../ir__Coolix_8h.html#aa7f9f96e56bd3f6b814bc84b947b2417',1,'ir_Coolix.h']]], + ['kcoolixswing_4640',['kCoolixSwing',['../ir__Coolix_8h.html#a799ad5ab7cf43f0aac3c342305f14b90',1,'ir_Coolix.h']]], + ['kcoolixswingh_4641',['kCoolixSwingH',['../ir__Coolix_8h.html#a877bd2731dfc86d864e38a5ceb4ede6e',1,'ir_Coolix.h']]], + ['kcoolixswingv_4642',['kCoolixSwingV',['../ir__Coolix_8h.html#ab9fcaf25426f1f9ad293e165f8c0bf38',1,'ir_Coolix.h']]], + ['kcoolixtempmap_4643',['kCoolixTempMap',['../ir__Coolix_8h.html#a9c8931df1dbed38c8119f6605266c710',1,'ir_Coolix.h']]], + ['kcoolixtempmax_4644',['kCoolixTempMax',['../ir__Coolix_8h.html#afbbb02bfeaaf5cb558ca28cdd5cfc4c3',1,'ir_Coolix.h']]], + ['kcoolixtempmin_4645',['kCoolixTempMin',['../ir__Coolix_8h.html#accd37cf257fa5fbeb64e28f0d63888fb',1,'ir_Coolix.h']]], + ['kcoolixtempoffset_4646',['kCoolixTempOffset',['../ir__Coolix_8h.html#ac49173b671af51026e378d65c7bc696b',1,'ir_Coolix.h']]], + ['kcoolixtemprange_4647',['kCoolixTempRange',['../ir__Coolix_8h.html#a74e3e75466fd27672968d660e3fddc9a',1,'ir_Coolix.h']]], + ['kcoolixtempsize_4648',['kCoolixTempSize',['../ir__Coolix_8h.html#a7a22c5c9bdd23ef80ffe9d6760c0650e',1,'ir_Coolix.h']]], + ['kcoolixtick_4649',['kCoolixTick',['../ir__Coolix_8cpp.html#a61ddf842920e2b3e33fdb856bd911eae',1,'ir_Coolix.cpp']]], + ['kcoolixturbo_4650',['kCoolixTurbo',['../ir__Coolix_8h.html#ade957b6f4a6cdb064c709972a5c31a4b',1,'ir_Coolix.h']]], + ['kcoolixunknown_4651',['kCoolixUnknown',['../ir__Coolix_8h.html#a2913e31a9dc5b89cbcae940cd5d59497',1,'ir_Coolix.h']]], + ['kcoolixzerospace_4652',['kCoolixZeroSpace',['../ir__Coolix_8cpp.html#a1a9ccf6b91e786f310ffe53d55cfd6d1',1,'ir_Coolix.cpp']]], + ['kcoolixzerospaceticks_4653',['kCoolixZeroSpaceTicks',['../ir__Coolix_8cpp.html#af1a750cb3e1f142326cd177118c27136',1,'ir_Coolix.cpp']]], + ['kcoolixzonefollowmaskoffset_4654',['kCoolixZoneFollowMaskOffset',['../ir__Coolix_8h.html#ae5da4da07b9d1bb715102cafd4a0105e',1,'ir_Coolix.h']]], + ['kcoolstr_4655',['kCoolStr',['../IRtext_8cpp.html#a31258a2210b16dc977bcfd96938a8937',1,'kCoolStr(): IRtext.cpp'],['../IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3',1,'kCoolStr(): IRtext.cpp']]], + ['kcoronaacbitmark_4656',['kCoronaAcBitMark',['../ir__Corona_8cpp.html#a1ecb863f625463289d34e210885238db',1,'ir_Corona.cpp']]], + ['kcoronaacbits_4657',['kCoronaAcBits',['../IRremoteESP8266_8h.html#aaf59be616d7e3a5e605b8d1e08f20686',1,'IRremoteESP8266.h']]], + ['kcoronaacbitsshort_4658',['kCoronaAcBitsShort',['../IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3',1,'IRremoteESP8266.h']]], + ['kcoronaacfanauto_4659',['kCoronaAcFanAuto',['../ir__Corona_8h.html#a8c97a0c674c000e4486159d628f1aa0a',1,'ir_Corona.h']]], + ['kcoronaacfanhigh_4660',['kCoronaAcFanHigh',['../ir__Corona_8h.html#a4f58be196a744892402e287b12502dcb',1,'ir_Corona.h']]], + ['kcoronaacfanlow_4661',['kCoronaAcFanLow',['../ir__Corona_8h.html#af9e5c729be856bf4b1bc10568f96c183',1,'ir_Corona.h']]], + ['kcoronaacfanmedium_4662',['kCoronaAcFanMedium',['../ir__Corona_8h.html#a9d6b46c006bd6ea54a14b92a2d7a3dff',1,'ir_Corona.h']]], + ['kcoronaacfanoffset_4663',['kCoronaAcFanOffset',['../ir__Corona_8h.html#ab9944dc3abdc09c4d616f43aaffccdec',1,'ir_Corona.h']]], + ['kcoronaacfansize_4664',['kCoronaAcFanSize',['../ir__Corona_8h.html#a07463e8e2e7d2bf004142ec6b89c7851',1,'ir_Corona.h']]], + ['kcoronaacfreq_4665',['kCoronaAcFreq',['../ir__Corona_8cpp.html#a0cb56860c88e9503743bcf94068bbf56',1,'ir_Corona.cpp']]], + ['kcoronaachdrmark_4666',['kCoronaAcHdrMark',['../ir__Corona_8cpp.html#a697d84f13a1228dbae3cfb491124689a',1,'ir_Corona.cpp']]], + ['kcoronaachdrspace_4667',['kCoronaAcHdrSpace',['../ir__Corona_8cpp.html#ad2425c406aa36c7752832d19f4a735f7',1,'ir_Corona.cpp']]], + ['kcoronaacmaxtemp_4668',['kCoronaAcMaxTemp',['../ir__Corona_8h.html#aa6d199e5bb8382443da4e1f303dd7988',1,'ir_Corona.h']]], + ['kcoronaacmintemp_4669',['kCoronaAcMinTemp',['../ir__Corona_8h.html#ae984b624da5e2d5ef1405e1b8d9424ba',1,'ir_Corona.h']]], + ['kcoronaacmodecool_4670',['kCoronaAcModeCool',['../ir__Corona_8h.html#a6f8bb2e27990014686828b4b7e2c84c6',1,'ir_Corona.h']]], + ['kcoronaacmodedry_4671',['kCoronaAcModeDry',['../ir__Corona_8h.html#afd47996b221103ae142363f04014fb4b',1,'ir_Corona.h']]], + ['kcoronaacmodefan_4672',['kCoronaAcModeFan',['../ir__Corona_8h.html#ab8098af3e0f9cd82a7c9c771ffd8ad15',1,'ir_Corona.h']]], + ['kcoronaacmodeheat_4673',['kCoronaAcModeHeat',['../ir__Corona_8h.html#a7f3c7c051ae3ee07621c47505a87bec1',1,'ir_Corona.h']]], + ['kcoronaacmodeoffset_4674',['kCoronaAcModeOffset',['../ir__Corona_8h.html#aa4caa3638ad09dc3a223320651adbd49',1,'ir_Corona.h']]], + ['kcoronaacmodesize_4675',['kCoronaAcModeSize',['../ir__Corona_8h.html#a38baa949868e16e67d7c2eb933b5019d',1,'ir_Corona.h']]], + ['kcoronaacofftimersection_4676',['kCoronaAcOffTimerSection',['../ir__Corona_8h.html#ac2cfdbf9b3ed3d85c0e298c3de8f357b',1,'ir_Corona.h']]], + ['kcoronaaconespace_4677',['kCoronaAcOneSpace',['../ir__Corona_8cpp.html#a6d9c199bdefbbb30b9561c5498c5a76e',1,'ir_Corona.cpp']]], + ['kcoronaacontimersection_4678',['kCoronaAcOnTimerSection',['../ir__Corona_8h.html#a711b7b5bd2081ca9b1e7ab25573ff612',1,'ir_Corona.h']]], + ['kcoronaacoverhead_4679',['kCoronaAcOverhead',['../ir__Corona_8cpp.html#aaef71b297a7868863a2ad7219bafabeb',1,'ir_Corona.cpp']]], + ['kcoronaacoverheadshort_4680',['kCoronaAcOverheadShort',['../ir__Corona_8cpp.html#a56010f67a047f551db681bb0ec8c35f7',1,'ir_Corona.cpp']]], + ['kcoronaacpowerbuttonoffset_4681',['kCoronaAcPowerButtonOffset',['../ir__Corona_8h.html#a71b6c16b1b5cffbd1991fea675e5a65e',1,'ir_Corona.h']]], + ['kcoronaacpoweroffset_4682',['kCoronaAcPowerOffset',['../ir__Corona_8h.html#ac2258a233d0f1ef3207fdd5abd8c855d',1,'ir_Corona.h']]], + ['kcoronaacpowersaveoffset_4683',['kCoronaAcPowerSaveOffset',['../ir__Corona_8h.html#a3bd4f3e2a1001aede28c886e7bbe42ae',1,'ir_Corona.h']]], + ['kcoronaacsectionbytes_4684',['kCoronaAcSectionBytes',['../ir__Corona_8h.html#a094063159064053dd5e5059eb0d90f7c',1,'ir_Corona.h']]], + ['kcoronaacsectiondata0base_4685',['kCoronaAcSectionData0Base',['../ir__Corona_8h.html#a2d0b1f5a0839839a17947bde624d4c74',1,'ir_Corona.h']]], + ['kcoronaacsectiondata0invpos_4686',['kCoronaAcSectionData0InvPos',['../ir__Corona_8h.html#a1a16967cb9024658763c7e6b6b5f8dd3',1,'ir_Corona.h']]], + ['kcoronaacsectiondata0pos_4687',['kCoronaAcSectionData0Pos',['../ir__Corona_8h.html#a285f66040fa3db6c9955a97ef6eee4b7',1,'ir_Corona.h']]], + ['kcoronaacsectiondata1invpos_4688',['kCoronaAcSectionData1InvPos',['../ir__Corona_8h.html#ad32635d2264331f4ee128e990411a704',1,'ir_Corona.h']]], + ['kcoronaacsectiondata1pos_4689',['kCoronaAcSectionData1Pos',['../ir__Corona_8h.html#a1b10ed7cf1c43a3a8be6de6d3cfc12af',1,'ir_Corona.h']]], + ['kcoronaacsectionheader0_4690',['kCoronaAcSectionHeader0',['../ir__Corona_8h.html#a39a2c0d214a10f8f9685e9955c0be0a4',1,'ir_Corona.h']]], + ['kcoronaacsectionheader0pos_4691',['kCoronaAcSectionHeader0Pos',['../ir__Corona_8h.html#a8641d0234280b8cc3bb255abebea6540',1,'ir_Corona.h']]], + ['kcoronaacsectionheader1_4692',['kCoronaAcSectionHeader1',['../ir__Corona_8h.html#a8a661569fc7b97ba2e9e755b944162f8',1,'ir_Corona.h']]], + ['kcoronaacsectionheader1pos_4693',['kCoronaAcSectionHeader1Pos',['../ir__Corona_8h.html#adaadcbe7d57b048250f32b44a96d3853',1,'ir_Corona.h']]], + ['kcoronaacsectionlabelbase_4694',['kCoronaAcSectionLabelBase',['../ir__Corona_8h.html#a6ff8a3461b87df048878faf49c12d064',1,'ir_Corona.h']]], + ['kcoronaacsectionlabelpos_4695',['kCoronaAcSectionLabelPos',['../ir__Corona_8h.html#a5c68109fb92da47236c4100c2db28e2c',1,'ir_Corona.h']]], + ['kcoronaacsections_4696',['kCoronaAcSections',['../ir__Corona_8h.html#a37e6cc5e2e186b2f5c5c938496ece111',1,'ir_Corona.h']]], + ['kcoronaacsettingssection_4697',['kCoronaAcSettingsSection',['../ir__Corona_8h.html#a5a83a045fd9878eae073f25e6c5b4753',1,'ir_Corona.h']]], + ['kcoronaacspacegap_4698',['kCoronaAcSpaceGap',['../ir__Corona_8cpp.html#a50f46039059d2a427bc9bc93c53df4fd',1,'ir_Corona.cpp']]], + ['kcoronaacstatelength_4699',['kCoronaAcStateLength',['../IRremoteESP8266_8h.html#ab18df94a82b365ff30caaabb05a9fcaf',1,'IRremoteESP8266.h']]], + ['kcoronaacstatelengthshort_4700',['kCoronaAcStateLengthShort',['../IRremoteESP8266_8h.html#a32b65ada4941a9622fbbc60f01b82425',1,'IRremoteESP8266.h']]], + ['kcoronaacswingvtoggleoffset_4701',['kCoronaAcSwingVToggleOffset',['../ir__Corona_8h.html#a1475a44b94a8cfe83fb48b3c3d98e148',1,'ir_Corona.h']]], + ['kcoronaactempoffset_4702',['kCoronaAcTempOffset',['../ir__Corona_8h.html#ae31731c985397a9a8b66ab933deccd7c',1,'ir_Corona.h']]], + ['kcoronaactempsize_4703',['kCoronaAcTempSize',['../ir__Corona_8h.html#a69dac2ce8e51b8e1890c8b7844eab9dd',1,'ir_Corona.h']]], + ['kcoronaactimermax_4704',['kCoronaAcTimerMax',['../ir__Corona_8h.html#af0428879b0fd39def7ea41e2906d9127',1,'ir_Corona.h']]], + ['kcoronaactimeroff_4705',['kCoronaAcTimerOff',['../ir__Corona_8h.html#af0feaf445fae561c3fa18ec68a19edef',1,'ir_Corona.h']]], + ['kcoronaactimerunitspermin_4706',['kCoronaAcTimerUnitsPerMin',['../ir__Corona_8h.html#a7f76e80480abdbdcdaf39186901950a4',1,'ir_Corona.h']]], + ['kcoronaaczerospace_4707',['kCoronaAcZeroSpace',['../ir__Corona_8cpp.html#af64bbcaf63ca9d06089de382354eb2d9',1,'ir_Corona.cpp']]], + ['kcoronatolerance_4708',['kCoronaTolerance',['../ir__Corona_8cpp.html#aad3726c95bfd7a9f79ba1e0c7058bb7b',1,'ir_Corona.cpp']]], + ['kdaikin128auto_4709',['kDaikin128Auto',['../ir__Daikin_8h.html#a1d2a0f9db8e1be93bff12ec23ba212e0',1,'ir_Daikin.h']]], + ['kdaikin128bitceiling_4710',['kDaikin128BitCeiling',['../ir__Daikin_8h.html#a0e1d1c1e7544eb455187290dbe4a1520',1,'ir_Daikin.h']]], + ['kdaikin128bitecono_4711',['kDaikin128BitEcono',['../ir__Daikin_8h.html#a34add42c4df4db799ddf52e8e5587dee',1,'ir_Daikin.h']]], + ['kdaikin128biteconooffset_4712',['kDaikin128BitEconoOffset',['../ir__Daikin_8h.html#af822203d873d9b847c3a7b08d236f82b',1,'ir_Daikin.h']]], + ['kdaikin128bithalfhour_4713',['kDaikin128BitHalfHour',['../ir__Daikin_8h.html#abf955f8f24fd37bbe21222ca160b3299',1,'ir_Daikin.h']]], + ['kdaikin128bitmark_4714',['kDaikin128BitMark',['../ir__Daikin_8h.html#a5178ac70eb4e134597e504d373d52fcd',1,'ir_Daikin.h']]], + ['kdaikin128bitpowertoggle_4715',['kDaikin128BitPowerToggle',['../ir__Daikin_8h.html#a813506d8d3f8b6933379bcfc097e4b29',1,'ir_Daikin.h']]], + ['kdaikin128bitpowertoggleoffset_4716',['kDaikin128BitPowerToggleOffset',['../ir__Daikin_8h.html#a05e33573c5050b1e54721a1716d652b5',1,'ir_Daikin.h']]], + ['kdaikin128bits_4717',['kDaikin128Bits',['../IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a',1,'IRremoteESP8266.h']]], + ['kdaikin128bitsleep_4718',['kDaikin128BitSleep',['../ir__Daikin_8h.html#a0cb96f1803fab5bfac8ef79a311308de',1,'ir_Daikin.h']]], + ['kdaikin128bitsleepoffset_4719',['kDaikin128BitSleepOffset',['../ir__Daikin_8h.html#a7b4aa1ef19f1c23ef74b45eb90734c6f',1,'ir_Daikin.h']]], + ['kdaikin128bitswing_4720',['kDaikin128BitSwing',['../ir__Daikin_8h.html#a8f6ab5b7f9871f08364abf3337ae48b4',1,'ir_Daikin.h']]], + ['kdaikin128bitswingoffset_4721',['kDaikin128BitSwingOffset',['../ir__Daikin_8h.html#a7f98cf3863ab58b147dc31c497bc07bc',1,'ir_Daikin.h']]], + ['kdaikin128bittimerenabled_4722',['kDaikin128BitTimerEnabled',['../ir__Daikin_8h.html#a1197dadb35f318b000ff6ee7ad3ca8b0',1,'ir_Daikin.h']]], + ['kdaikin128bittimerenabledoffset_4723',['kDaikin128BitTimerEnabledOffset',['../ir__Daikin_8h.html#af913ee51e5b90ad12f87dbed9ce349d6',1,'ir_Daikin.h']]], + ['kdaikin128bitwall_4724',['kDaikin128BitWall',['../ir__Daikin_8h.html#a842b3b696f95c5515ee4180626d78973',1,'ir_Daikin.h']]], + ['kdaikin128byteclockhours_4725',['kDaikin128ByteClockHours',['../ir__Daikin_8h.html#a0d705309d30881fd2fe806e5bf8ae27d',1,'ir_Daikin.h']]], + ['kdaikin128byteclockmins_4726',['kDaikin128ByteClockMins',['../ir__Daikin_8h.html#ab8c9af42d68548e1e711a0b38976342b',1,'ir_Daikin.h']]], + ['kdaikin128byteeconolight_4727',['kDaikin128ByteEconoLight',['../ir__Daikin_8h.html#a75a3c1f1790006f0005666a023218c79',1,'ir_Daikin.h']]], + ['kdaikin128bytemodefan_4728',['kDaikin128ByteModeFan',['../ir__Daikin_8h.html#a8433ab362f79a6bb3570d310a05f1141',1,'ir_Daikin.h']]], + ['kdaikin128byteofftimer_4729',['kDaikin128ByteOffTimer',['../ir__Daikin_8h.html#a66e243db1131f58d0840980ca64c0282',1,'ir_Daikin.h']]], + ['kdaikin128byteontimer_4730',['kDaikin128ByteOnTimer',['../ir__Daikin_8h.html#af27f1f25a52dc4c182111acd2abc554d',1,'ir_Daikin.h']]], + ['kdaikin128bytepowerswingsleep_4731',['kDaikin128BytePowerSwingSleep',['../ir__Daikin_8h.html#a0f5a9f1ac68c516744220ad230805c15',1,'ir_Daikin.h']]], + ['kdaikin128bytetemp_4732',['kDaikin128ByteTemp',['../ir__Daikin_8h.html#a4d3d5683aaee8e76138750a0f6ff1465',1,'ir_Daikin.h']]], + ['kdaikin128cool_4733',['kDaikin128Cool',['../ir__Daikin_8h.html#a24ee5ffe877d7caa964256e5723af7e1',1,'ir_Daikin.h']]], + ['kdaikin128defaultrepeat_4734',['kDaikin128DefaultRepeat',['../IRremoteESP8266_8h.html#a5c116cb58be005468de125f6ee651ccb',1,'IRremoteESP8266.h']]], + ['kdaikin128dry_4735',['kDaikin128Dry',['../ir__Daikin_8h.html#ac4da761bf3b0ce12e6513a2718b3a907',1,'ir_Daikin.h']]], + ['kdaikin128fan_4736',['kDaikin128Fan',['../ir__Daikin_8h.html#ac1c41d54f27d1653181ac69384f1130f',1,'ir_Daikin.h']]], + ['kdaikin128fanauto_4737',['kDaikin128FanAuto',['../ir__Daikin_8h.html#aec2fe4618978c17e60a1ea8b1a89c263',1,'ir_Daikin.h']]], + ['kdaikin128fanhigh_4738',['kDaikin128FanHigh',['../ir__Daikin_8h.html#a7ffd52eb15f6ffb5a0ffcddf39aa8f0d',1,'ir_Daikin.h']]], + ['kdaikin128fanlow_4739',['kDaikin128FanLow',['../ir__Daikin_8h.html#a505c58ff23c5a551c6e2e356f66e9cc1',1,'ir_Daikin.h']]], + ['kdaikin128fanmed_4740',['kDaikin128FanMed',['../ir__Daikin_8h.html#a4eb21add9bfb6774047a8a2c8b87ebbf',1,'ir_Daikin.h']]], + ['kdaikin128fanpowerful_4741',['kDaikin128FanPowerful',['../ir__Daikin_8h.html#ae0899153669a6e8848556cd65c26c8b5',1,'ir_Daikin.h']]], + ['kdaikin128fanquiet_4742',['kDaikin128FanQuiet',['../ir__Daikin_8h.html#a54777f468236bf4b342240e8c523308d',1,'ir_Daikin.h']]], + ['kdaikin128footermark_4743',['kDaikin128FooterMark',['../ir__Daikin_8h.html#ad5668b12e38afa4b44a8e214dac22f2e',1,'ir_Daikin.h']]], + ['kdaikin128freq_4744',['kDaikin128Freq',['../ir__Daikin_8h.html#a5a76fc08310d517cb7e182c287e77df1',1,'ir_Daikin.h']]], + ['kdaikin128gap_4745',['kDaikin128Gap',['../ir__Daikin_8h.html#a6323c59eb5906ac2887a02f9cd09a329',1,'ir_Daikin.h']]], + ['kdaikin128halfhouroffset_4746',['kDaikin128HalfHourOffset',['../ir__Daikin_8h.html#a8fddd8a5dbad2fd49445eaa2104f7da3',1,'ir_Daikin.h']]], + ['kdaikin128hdrmark_4747',['kDaikin128HdrMark',['../ir__Daikin_8h.html#a6257375541b6e10bda4083d9529e80f0',1,'ir_Daikin.h']]], + ['kdaikin128hdrspace_4748',['kDaikin128HdrSpace',['../ir__Daikin_8h.html#a114a4cef444d4c552b90701cb7debc73',1,'ir_Daikin.h']]], + ['kdaikin128heat_4749',['kDaikin128Heat',['../ir__Daikin_8h.html#ada28db809b26e2ae9e927650d4cb4f7a',1,'ir_Daikin.h']]], + ['kdaikin128hoursoffset_4750',['kDaikin128HoursOffset',['../ir__Daikin_8h.html#ace543fba33c68e3df4aa4d250ed1e792',1,'ir_Daikin.h']]], + ['kdaikin128hourssize_4751',['kDaikin128HoursSize',['../ir__Daikin_8h.html#ac5441402c0ee486f3c752a91f09375ff',1,'ir_Daikin.h']]], + ['kdaikin128leadermark_4752',['kDaikin128LeaderMark',['../ir__Daikin_8h.html#ab609b8979a2d2bf4fa5b7164590b2bfb',1,'ir_Daikin.h']]], + ['kdaikin128leaderspace_4753',['kDaikin128LeaderSpace',['../ir__Daikin_8h.html#a259bfa510a9ec06049c0a7bf6563eb35',1,'ir_Daikin.h']]], + ['kdaikin128maskfan_4754',['kDaikin128MaskFan',['../ir__Daikin_8h.html#ae58228f3b9eae0ec171527ced89e509f',1,'ir_Daikin.h']]], + ['kdaikin128masklight_4755',['kDaikin128MaskLight',['../ir__Daikin_8h.html#a8d3d4325f91cbdd8ce0cec25fc0d2022',1,'ir_Daikin.h']]], + ['kdaikin128maxtemp_4756',['kDaikin128MaxTemp',['../ir__Daikin_8h.html#a7dcd514d292ef98d70083227d046baad',1,'ir_Daikin.h']]], + ['kdaikin128mintemp_4757',['kDaikin128MinTemp',['../ir__Daikin_8h.html#aad27f3ff311f1defc5ac9fb3be0ad504',1,'ir_Daikin.h']]], + ['kdaikin128modesize_4758',['kDaikin128ModeSize',['../ir__Daikin_8h.html#a32a97adddfa791cc0e48d9bd847a3a4c',1,'ir_Daikin.h']]], + ['kdaikin128onespace_4759',['kDaikin128OneSpace',['../ir__Daikin_8h.html#ac6a9a48ae0037b889a6619361fd090ac',1,'ir_Daikin.h']]], + ['kdaikin128sectionlength_4760',['kDaikin128SectionLength',['../ir__Daikin_8h.html#a204a306e7d7071d4b798f7947c232520',1,'ir_Daikin.h']]], + ['kdaikin128sections_4761',['kDaikin128Sections',['../ir__Daikin_8h.html#a81f0cfda4d8452d6053cc6999a270b1f',1,'ir_Daikin.h']]], + ['kdaikin128statelength_4762',['kDaikin128StateLength',['../IRremoteESP8266_8h.html#a4279ccd14a3af2046e393661a7b4879f',1,'IRremoteESP8266.h']]], + ['kdaikin128timeroffset_4763',['kDaikin128TimerOffset',['../ir__Daikin_8h.html#aabde7c45424ae82a812485e8ceb58dbd',1,'ir_Daikin.h']]], + ['kdaikin128timersize_4764',['kDaikin128TimerSize',['../ir__Daikin_8h.html#a6f4022c5e4a092eb039c53ea72f51188',1,'ir_Daikin.h']]], + ['kdaikin128zerospace_4765',['kDaikin128ZeroSpace',['../ir__Daikin_8h.html#a1ca69805ada8ec451199c18d9da6f02a',1,'ir_Daikin.h']]], + ['kdaikin152bitmark_4766',['kDaikin152BitMark',['../ir__Daikin_8h.html#afd50318eaa383a7e85f0d0c2866bc9d5',1,'ir_Daikin.h']]], + ['kdaikin152bits_4767',['kDaikin152Bits',['../IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09',1,'IRremoteESP8266.h']]], + ['kdaikin152comfortbyte_4768',['kDaikin152ComfortByte',['../ir__Daikin_8h.html#a414b7acd5259122af5b496979fe068dc',1,'ir_Daikin.h']]], + ['kdaikin152comfortoffset_4769',['kDaikin152ComfortOffset',['../ir__Daikin_8h.html#a9cc7bb09fb66aa0cf7d0b751505fd3e6',1,'ir_Daikin.h']]], + ['kdaikin152defaultrepeat_4770',['kDaikin152DefaultRepeat',['../IRremoteESP8266_8h.html#a9407eebab271524e74bc3ddddb1a2e0b',1,'IRremoteESP8266.h']]], + ['kdaikin152drytemp_4771',['kDaikin152DryTemp',['../ir__Daikin_8h.html#a86e9308c00dbdd79546687af412c4156',1,'ir_Daikin.h']]], + ['kdaikin152econobyte_4772',['kDaikin152EconoByte',['../ir__Daikin_8h.html#a988782fd6bcf25b098d7c07e38679a78',1,'ir_Daikin.h']]], + ['kdaikin152fanbyte_4773',['kDaikin152FanByte',['../ir__Daikin_8h.html#a1972e59df2902335e37b2d66d16048a8',1,'ir_Daikin.h']]], + ['kdaikin152fantemp_4774',['kDaikin152FanTemp',['../ir__Daikin_8h.html#ad5c5bb7e8b181c79fe68607c1a4d202f',1,'ir_Daikin.h']]], + ['kdaikin152freq_4775',['kDaikin152Freq',['../ir__Daikin_8h.html#aa45492ae186142971975b7da56658a0b',1,'ir_Daikin.h']]], + ['kdaikin152gap_4776',['kDaikin152Gap',['../ir__Daikin_8h.html#aee02d3b17db4a382035c00329c6c2a0a',1,'ir_Daikin.h']]], + ['kdaikin152hdrmark_4777',['kDaikin152HdrMark',['../ir__Daikin_8h.html#a85fad797a9b43cb317fdb2e2c254a3bb',1,'ir_Daikin.h']]], + ['kdaikin152hdrspace_4778',['kDaikin152HdrSpace',['../ir__Daikin_8h.html#a0eb0b1b5fabab75a5956b6b939696a12',1,'ir_Daikin.h']]], + ['kdaikin152leaderbits_4779',['kDaikin152LeaderBits',['../ir__Daikin_8h.html#a432454efd5ea7457d34fe014b0d328c1',1,'ir_Daikin.h']]], + ['kdaikin152modebyte_4780',['kDaikin152ModeByte',['../ir__Daikin_8h.html#a1aaa767f722926e9aaf02dbcd8029003',1,'ir_Daikin.h']]], + ['kdaikin152onespace_4781',['kDaikin152OneSpace',['../ir__Daikin_8h.html#a1f96172c74b261a26ec6d71201f7c589',1,'ir_Daikin.h']]], + ['kdaikin152powerbyte_4782',['kDaikin152PowerByte',['../ir__Daikin_8h.html#a67ff6fbdc004d3a29b1d31c5bc47f572',1,'ir_Daikin.h']]], + ['kdaikin152powerfulbyte_4783',['kDaikin152PowerfulByte',['../ir__Daikin_8h.html#a720a3019f7bb2f8c458a7b79fbadd08f',1,'ir_Daikin.h']]], + ['kdaikin152quietbyte_4784',['kDaikin152QuietByte',['../ir__Daikin_8h.html#ad534758115c401368a428d887faa8768',1,'ir_Daikin.h']]], + ['kdaikin152sensorbyte_4785',['kDaikin152SensorByte',['../ir__Daikin_8h.html#a33187d50e8414f943d050a0b1c312168',1,'ir_Daikin.h']]], + ['kdaikin152sensoroffset_4786',['kDaikin152SensorOffset',['../ir__Daikin_8h.html#a01ef92b6eb478b1897fdfdcea03d7116',1,'ir_Daikin.h']]], + ['kdaikin152statelength_4787',['kDaikin152StateLength',['../IRremoteESP8266_8h.html#ae7579708922ffd3e44295f8770878983',1,'IRremoteESP8266.h']]], + ['kdaikin152swingvbyte_4788',['kDaikin152SwingVByte',['../ir__Daikin_8h.html#a9ed39bcce7d0bc73060fba843dfd2b28',1,'ir_Daikin.h']]], + ['kdaikin152tempbyte_4789',['kDaikin152TempByte',['../ir__Daikin_8h.html#a5e232b17db30a7e0ba159e2413df8b14',1,'ir_Daikin.h']]], + ['kdaikin152tempsize_4790',['kDaikin152TempSize',['../ir__Daikin_8h.html#ad22ee842100e70d95f1ebcdcaf3f2099',1,'ir_Daikin.h']]], + ['kdaikin152zerospace_4791',['kDaikin152ZeroSpace',['../ir__Daikin_8h.html#aec201aee71c0e301e8e191ddcaadb2de',1,'ir_Daikin.h']]], + ['kdaikin160bitmark_4792',['kDaikin160BitMark',['../ir__Daikin_8h.html#a852c2268ed7a8dd42c629e8a0706b6f5',1,'ir_Daikin.h']]], + ['kdaikin160bits_4793',['kDaikin160Bits',['../IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6',1,'IRremoteESP8266.h']]], + ['kdaikin160bytefan_4794',['kDaikin160ByteFan',['../ir__Daikin_8h.html#a980ae6010c956c92348d3ac88c084247',1,'ir_Daikin.h']]], + ['kdaikin160bytemode_4795',['kDaikin160ByteMode',['../ir__Daikin_8h.html#a6c5bcb2c4447dafc53c26775539886e6',1,'ir_Daikin.h']]], + ['kdaikin160bytepower_4796',['kDaikin160BytePower',['../ir__Daikin_8h.html#a8e79923cf8aa346ea52791887b54ffbe',1,'ir_Daikin.h']]], + ['kdaikin160byteswingv_4797',['kDaikin160ByteSwingV',['../ir__Daikin_8h.html#a35032831d79e96a98527896cd5d52efe',1,'ir_Daikin.h']]], + ['kdaikin160bytetemp_4798',['kDaikin160ByteTemp',['../ir__Daikin_8h.html#a1b9eed515f9cfc3508cce7d53fb7a84a',1,'ir_Daikin.h']]], + ['kdaikin160defaultrepeat_4799',['kDaikin160DefaultRepeat',['../IRremoteESP8266_8h.html#a82f4f1d8fae51c7e2f1f6753ca6e6053',1,'IRremoteESP8266.h']]], + ['kdaikin160freq_4800',['kDaikin160Freq',['../ir__Daikin_8h.html#a69e8abb57aecc6b99c60c5df7e18ff39',1,'ir_Daikin.h']]], + ['kdaikin160gap_4801',['kDaikin160Gap',['../ir__Daikin_8h.html#a8d107f0d63ef6951d657a55a370e8a8b',1,'ir_Daikin.h']]], + ['kdaikin160hdrmark_4802',['kDaikin160HdrMark',['../ir__Daikin_8h.html#a96043b43ba4d963456206e2d02639325',1,'ir_Daikin.h']]], + ['kdaikin160hdrspace_4803',['kDaikin160HdrSpace',['../ir__Daikin_8h.html#aefa7b5de43483951e00bd5d2cdbe5665',1,'ir_Daikin.h']]], + ['kdaikin160maskfan_4804',['kDaikin160MaskFan',['../ir__Daikin_8h.html#a623f586183436960361a85f8480c87c6',1,'ir_Daikin.h']]], + ['kdaikin160maskswingv_4805',['kDaikin160MaskSwingV',['../ir__Daikin_8h.html#abfaa078f7dfdd1c0bb14ad15fee26604',1,'ir_Daikin.h']]], + ['kdaikin160onespace_4806',['kDaikin160OneSpace',['../ir__Daikin_8h.html#a068c2252191675dca6503bfc37e4785e',1,'ir_Daikin.h']]], + ['kdaikin160section1length_4807',['kDaikin160Section1Length',['../ir__Daikin_8h.html#a06b59ee56cddcdcd9dfa375663da0c2d',1,'ir_Daikin.h']]], + ['kdaikin160section2length_4808',['kDaikin160Section2Length',['../ir__Daikin_8h.html#a7d6194a363661e11167cc972f1b92f68',1,'ir_Daikin.h']]], + ['kdaikin160sections_4809',['kDaikin160Sections',['../ir__Daikin_8h.html#afcc5de2994c1cd618437f1c67a5754d0',1,'ir_Daikin.h']]], + ['kdaikin160statelength_4810',['kDaikin160StateLength',['../IRremoteESP8266_8h.html#a09f022a12a40a8fae09bfbddfbee6d62',1,'IRremoteESP8266.h']]], + ['kdaikin160swingvauto_4811',['kDaikin160SwingVAuto',['../ir__Daikin_8h.html#aa6d9ee84d2c15c69ed8dbbc832285baf',1,'ir_Daikin.h']]], + ['kdaikin160swingvhigh_4812',['kDaikin160SwingVHigh',['../ir__Daikin_8h.html#abf542bd70d12534af72fb4ec8df5d265',1,'ir_Daikin.h']]], + ['kdaikin160swingvhighest_4813',['kDaikin160SwingVHighest',['../ir__Daikin_8h.html#a2a48ca041acbde68b902a4d0be4aeec5',1,'ir_Daikin.h']]], + ['kdaikin160swingvlow_4814',['kDaikin160SwingVLow',['../ir__Daikin_8h.html#a04ff7cb63db6b281ced56283288f05c0',1,'ir_Daikin.h']]], + ['kdaikin160swingvlowest_4815',['kDaikin160SwingVLowest',['../ir__Daikin_8h.html#ac4f34c7862802b21dede2ac0b534c8d8',1,'ir_Daikin.h']]], + ['kdaikin160swingvmiddle_4816',['kDaikin160SwingVMiddle',['../ir__Daikin_8h.html#a620b644f07f9b664f09417bb362dc216',1,'ir_Daikin.h']]], + ['kdaikin160tempoffset_4817',['kDaikin160TempOffset',['../ir__Daikin_8h.html#aa2f7050929bab65dbdb8af5b493dafe2',1,'ir_Daikin.h']]], + ['kdaikin160tempsize_4818',['kDaikin160TempSize',['../ir__Daikin_8h.html#adfecac727480010fae8e419ac3f13e73',1,'ir_Daikin.h']]], + ['kdaikin160zerospace_4819',['kDaikin160ZeroSpace',['../ir__Daikin_8h.html#a2b4591126c0b26ab16b5611dbfa4d5f6',1,'ir_Daikin.h']]], + ['kdaikin176bitmark_4820',['kDaikin176BitMark',['../ir__Daikin_8h.html#a4be0185fb8f65c0286cbf55dfd63a40f',1,'ir_Daikin.h']]], + ['kdaikin176bits_4821',['kDaikin176Bits',['../IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7',1,'IRremoteESP8266.h']]], + ['kdaikin176bytefan_4822',['kDaikin176ByteFan',['../ir__Daikin_8h.html#a21e4b1854d3f87757ba0f0c10074226c',1,'ir_Daikin.h']]], + ['kdaikin176bytemode_4823',['kDaikin176ByteMode',['../ir__Daikin_8h.html#ad114b4570f96bcbf5358fa1ece354572',1,'ir_Daikin.h']]], + ['kdaikin176bytemodebutton_4824',['kDaikin176ByteModeButton',['../ir__Daikin_8h.html#aacda7563a2aaa9a56c77ce550f24a237',1,'ir_Daikin.h']]], + ['kdaikin176bytepower_4825',['kDaikin176BytePower',['../ir__Daikin_8h.html#aabfb9642dce0ab4169b193955221b938',1,'ir_Daikin.h']]], + ['kdaikin176byteswingh_4826',['kDaikin176ByteSwingH',['../ir__Daikin_8h.html#a4566642e6aaa0d64c531fafe0309dccc',1,'ir_Daikin.h']]], + ['kdaikin176bytetemp_4827',['kDaikin176ByteTemp',['../ir__Daikin_8h.html#afab294c7e8c65e5bf58e85bee4901752',1,'ir_Daikin.h']]], + ['kdaikin176cool_4828',['kDaikin176Cool',['../ir__Daikin_8h.html#ab67e912a9abdda7dcbe52ce90b70a3b5',1,'ir_Daikin.h']]], + ['kdaikin176defaultrepeat_4829',['kDaikin176DefaultRepeat',['../IRremoteESP8266_8h.html#a0228803e8fff3c73227214d4bb3d8b05',1,'IRremoteESP8266.h']]], + ['kdaikin176dryfantemp_4830',['kDaikin176DryFanTemp',['../ir__Daikin_8h.html#a462ad30312f13443f51b510e5b391f42',1,'ir_Daikin.h']]], + ['kdaikin176fanmax_4831',['kDaikin176FanMax',['../ir__Daikin_8h.html#a97e77d2a09bc753c17104f9695a0c0b1',1,'ir_Daikin.h']]], + ['kdaikin176freq_4832',['kDaikin176Freq',['../ir__Daikin_8h.html#a7f0c76e579dad510f21c34ba57cbf8dc',1,'ir_Daikin.h']]], + ['kdaikin176gap_4833',['kDaikin176Gap',['../ir__Daikin_8h.html#a0309c9d689f64e2d57ab09a2bb27bc18',1,'ir_Daikin.h']]], + ['kdaikin176hdrmark_4834',['kDaikin176HdrMark',['../ir__Daikin_8h.html#a9ff1ca660571d09caa0de39ce1370720',1,'ir_Daikin.h']]], + ['kdaikin176hdrspace_4835',['kDaikin176HdrSpace',['../ir__Daikin_8h.html#a64c4874b5d92682911ca84e826e1ff0b',1,'ir_Daikin.h']]], + ['kdaikin176maskfan_4836',['kDaikin176MaskFan',['../ir__Daikin_8h.html#ae7410031c68ae8426caa61bc97909cdf',1,'ir_Daikin.h']]], + ['kdaikin176maskmode_4837',['kDaikin176MaskMode',['../ir__Daikin_8h.html#a65b76b7a85d70a4ed1af359b2babffa1',1,'ir_Daikin.h']]], + ['kdaikin176modebutton_4838',['kDaikin176ModeButton',['../ir__Daikin_8h.html#a5c8602d17e9f70eefd735741b9d714eb',1,'ir_Daikin.h']]], + ['kdaikin176onespace_4839',['kDaikin176OneSpace',['../ir__Daikin_8h.html#a86ed046d66daf884ac0f06722991f5ba',1,'ir_Daikin.h']]], + ['kdaikin176section1length_4840',['kDaikin176Section1Length',['../ir__Daikin_8h.html#a4c5ce7df75834c77c0908cc40dbe02ed',1,'ir_Daikin.h']]], + ['kdaikin176section2length_4841',['kDaikin176Section2Length',['../ir__Daikin_8h.html#a9e2bb25a1d64d2c042e7eef38f5347d0',1,'ir_Daikin.h']]], + ['kdaikin176sections_4842',['kDaikin176Sections',['../ir__Daikin_8h.html#a177d12ac0f4fe8b5c5aeaf8f72579607',1,'ir_Daikin.h']]], + ['kdaikin176statelength_4843',['kDaikin176StateLength',['../IRremoteESP8266_8h.html#aa71fc87dcb6f14b82997e1d2269429d2',1,'IRremoteESP8266.h']]], + ['kdaikin176swinghauto_4844',['kDaikin176SwingHAuto',['../ir__Daikin_8h.html#a326ffcf00330a1759e4f71f8f8603f23',1,'ir_Daikin.h']]], + ['kdaikin176swinghoff_4845',['kDaikin176SwingHOff',['../ir__Daikin_8h.html#a8672ccb9016808c84b1b06de6584188a',1,'ir_Daikin.h']]], + ['kdaikin176tempoffset_4846',['kDaikin176TempOffset',['../ir__Daikin_8h.html#aa5f6cc15ca424e4bf9cc4357d9db79c9',1,'ir_Daikin.h']]], + ['kdaikin176tempsize_4847',['kDaikin176TempSize',['../ir__Daikin_8h.html#a3ef1914f2caf650a90d8412f2c1e2b74',1,'ir_Daikin.h']]], + ['kdaikin176zerospace_4848',['kDaikin176ZeroSpace',['../ir__Daikin_8h.html#a4db8836caa6cae0bab6fbde94409c879',1,'ir_Daikin.h']]], + ['kdaikin216bitmark_4849',['kDaikin216BitMark',['../ir__Daikin_8h.html#ada7cf9c593d716617ff4436755eef4f9',1,'ir_Daikin.h']]], + ['kdaikin216bits_4850',['kDaikin216Bits',['../IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9',1,'IRremoteESP8266.h']]], + ['kdaikin216bytefan_4851',['kDaikin216ByteFan',['../ir__Daikin_8h.html#a832e7a349293058ebc50c17b904fb8f7',1,'ir_Daikin.h']]], + ['kdaikin216bytemode_4852',['kDaikin216ByteMode',['../ir__Daikin_8h.html#a48974eb3ceb40f2f580bd266a60f0392',1,'ir_Daikin.h']]], + ['kdaikin216bytepower_4853',['kDaikin216BytePower',['../ir__Daikin_8h.html#a740c2db81aebd8cb9e18b3f8c6c5b8be',1,'ir_Daikin.h']]], + ['kdaikin216bytepowerful_4854',['kDaikin216BytePowerful',['../ir__Daikin_8h.html#a9a428d988d705beae3ff1f7c0f01cb8d',1,'ir_Daikin.h']]], + ['kdaikin216byteswingh_4855',['kDaikin216ByteSwingH',['../ir__Daikin_8h.html#a20239baacdf9fb981eb0fb84b0ef536a',1,'ir_Daikin.h']]], + ['kdaikin216byteswingv_4856',['kDaikin216ByteSwingV',['../ir__Daikin_8h.html#a9fd16b0fb0d67a7058816d4b4f1659fc',1,'ir_Daikin.h']]], + ['kdaikin216bytetemp_4857',['kDaikin216ByteTemp',['../ir__Daikin_8h.html#a5828687e12d2b7fe1d793235d91750bd',1,'ir_Daikin.h']]], + ['kdaikin216defaultrepeat_4858',['kDaikin216DefaultRepeat',['../IRremoteESP8266_8h.html#a9d14d424d5a93de62f3e6f453db112db',1,'IRremoteESP8266.h']]], + ['kdaikin216freq_4859',['kDaikin216Freq',['../ir__Daikin_8h.html#aa3a9753c90ecb6d7f5ee3e5a16c79217',1,'ir_Daikin.h']]], + ['kdaikin216gap_4860',['kDaikin216Gap',['../ir__Daikin_8h.html#ab807adaab8afbeb97afaa9ddb2ec2c63',1,'ir_Daikin.h']]], + ['kdaikin216hdrmark_4861',['kDaikin216HdrMark',['../ir__Daikin_8h.html#a24163655b3d374aa643506c2bf4a2406',1,'ir_Daikin.h']]], + ['kdaikin216hdrspace_4862',['kDaikin216HdrSpace',['../ir__Daikin_8h.html#a2e69973e9a4aee29668597d09fcd70a4',1,'ir_Daikin.h']]], + ['kdaikin216maskfan_4863',['kDaikin216MaskFan',['../ir__Daikin_8h.html#a88f67ea1fe03ef40b81c5226ff5c72d5',1,'ir_Daikin.h']]], + ['kdaikin216onespace_4864',['kDaikin216OneSpace',['../ir__Daikin_8h.html#a1edeb73093bdea23e6cfb39c31ca1fce',1,'ir_Daikin.h']]], + ['kdaikin216section1length_4865',['kDaikin216Section1Length',['../ir__Daikin_8h.html#a5aacc812feb33ef954adc49086036859',1,'ir_Daikin.h']]], + ['kdaikin216section2length_4866',['kDaikin216Section2Length',['../ir__Daikin_8h.html#aade497bb9aad663a9e1e9403188d2154',1,'ir_Daikin.h']]], + ['kdaikin216sections_4867',['kDaikin216Sections',['../ir__Daikin_8h.html#a0ecd54bb733b982e3e5adf0c13ac9f6b',1,'ir_Daikin.h']]], + ['kdaikin216statelength_4868',['kDaikin216StateLength',['../IRremoteESP8266_8h.html#a70a1a65c1947b440e4ff27477de5ddc7',1,'IRremoteESP8266.h']]], + ['kdaikin216swingoff_4869',['kDaikin216SwingOff',['../ir__Daikin_8h.html#a84d6bb74c705dfbcd558f0b411a2a88e',1,'ir_Daikin.h']]], + ['kdaikin216swingon_4870',['kDaikin216SwingOn',['../ir__Daikin_8h.html#a4b2d77aafd84ed004390b5d4c7ad0455',1,'ir_Daikin.h']]], + ['kdaikin216swingsize_4871',['kDaikin216SwingSize',['../ir__Daikin_8h.html#a90d9e740067051fe294f1b408f7e020b',1,'ir_Daikin.h']]], + ['kdaikin216tempoffset_4872',['kDaikin216TempOffset',['../ir__Daikin_8h.html#a8e497623bb05ff10287ca06ac6ec15f6',1,'ir_Daikin.h']]], + ['kdaikin216tempsize_4873',['kDaikin216TempSize',['../ir__Daikin_8h.html#a3ef59f8474b38d1b0311f1018dbd6225',1,'ir_Daikin.h']]], + ['kdaikin216zerospace_4874',['kDaikin216ZeroSpace',['../ir__Daikin_8h.html#a448250dbb5a3a9733f21a0e347d17999',1,'ir_Daikin.h']]], + ['kdaikin2beepoffset_4875',['kDaikin2BeepOffset',['../ir__Daikin_8h.html#ad7f6110b5e3bf8c3b72ca07b745bae7c',1,'ir_Daikin.h']]], + ['kdaikin2beepsize_4876',['kDaikin2BeepSize',['../ir__Daikin_8h.html#a3a42f10a3427bff7af3c745592fe58fe',1,'ir_Daikin.h']]], + ['kdaikin2bitclean_4877',['kDaikin2BitClean',['../ir__Daikin_8h.html#a6672ff35e765c9ecb14107e7732b0bb2',1,'ir_Daikin.h']]], + ['kdaikin2bitcleanoffset_4878',['kDaikin2BitCleanOffset',['../ir__Daikin_8h.html#a4fa7ed25fb3f2371c3b5c7cf4906a3f3',1,'ir_Daikin.h']]], + ['kdaikin2biteye_4879',['kDaikin2BitEye',['../ir__Daikin_8h.html#a8adb3f3e8508adf8adc530365fceb96b',1,'ir_Daikin.h']]], + ['kdaikin2biteyeauto_4880',['kDaikin2BitEyeAuto',['../ir__Daikin_8h.html#a6a24519db9870520a645e4ad31857e39',1,'ir_Daikin.h']]], + ['kdaikin2biteyeautooffset_4881',['kDaikin2BitEyeAutoOffset',['../ir__Daikin_8h.html#a73db209ad074eeaef1a5317cbee8ab35',1,'ir_Daikin.h']]], + ['kdaikin2biteyeoffset_4882',['kDaikin2BitEyeOffset',['../ir__Daikin_8h.html#a7a4c6e131d9a0e441de549bd5f93074f',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshair_4883',['kDaikin2BitFreshAir',['../ir__Daikin_8h.html#a9ab2c4b0f415ce0042b848e44850b7b8',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshairhigh_4884',['kDaikin2BitFreshAirHigh',['../ir__Daikin_8h.html#a21a3f3c0f39827057d8f459283a72980',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshairhighoffset_4885',['kDaikin2BitFreshAirHighOffset',['../ir__Daikin_8h.html#afd4f5946e5fa5d8f48af32b8934b0f93',1,'ir_Daikin.h']]], + ['kdaikin2bitfreshairoffset_4886',['kDaikin2BitFreshAirOffset',['../ir__Daikin_8h.html#a15e49a577737bdca28c28aeeb4260e57',1,'ir_Daikin.h']]], + ['kdaikin2bitmark_4887',['kDaikin2BitMark',['../ir__Daikin_8h.html#a226f10b7216d4f039cf79af823673a18',1,'ir_Daikin.h']]], + ['kdaikin2bitmold_4888',['kDaikin2BitMold',['../ir__Daikin_8h.html#aa452116afeb7d246cee672d2717e0ff7',1,'ir_Daikin.h']]], + ['kdaikin2bitmoldoffset_4889',['kDaikin2BitMoldOffset',['../ir__Daikin_8h.html#a0e58caeb44ebc6b7c6d06e91fee33795',1,'ir_Daikin.h']]], + ['kdaikin2bitpower_4890',['kDaikin2BitPower',['../ir__Daikin_8h.html#ac7b549d7b68bc245521d7f4e6a4643ab',1,'ir_Daikin.h']]], + ['kdaikin2bitpoweroffset_4891',['kDaikin2BitPowerOffset',['../ir__Daikin_8h.html#a617d14e811cb26b86fef3048151ffc45',1,'ir_Daikin.h']]], + ['kdaikin2bitpurify_4892',['kDaikin2BitPurify',['../ir__Daikin_8h.html#a9c4d6aa579adbfe454aa19f9f604f21c',1,'ir_Daikin.h']]], + ['kdaikin2bitpurifyoffset_4893',['kDaikin2BitPurifyOffset',['../ir__Daikin_8h.html#a847a9646dc86c26da931e5bf6640ddab',1,'ir_Daikin.h']]], + ['kdaikin2bits_4894',['kDaikin2Bits',['../IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de',1,'IRremoteESP8266.h']]], + ['kdaikin2bitsleeptimer_4895',['kDaikin2BitSleepTimer',['../ir__Daikin_8h.html#a928ae056887b123fdf6b1e2072d03564',1,'ir_Daikin.h']]], + ['kdaikin2bitsleeptimeroffset_4896',['kDaikin2BitSleepTimerOffset',['../ir__Daikin_8h.html#abf7cfde40fd00c3500ed08831434b80f',1,'ir_Daikin.h']]], + ['kdaikin2defaultrepeat_4897',['kDaikin2DefaultRepeat',['../IRremoteESP8266_8h.html#a2dde8fd00f8a28e35da04cff9a3a1908',1,'IRremoteESP8266.h']]], + ['kdaikin2fanbyte_4898',['kDaikin2FanByte',['../ir__Daikin_8h.html#a88608f735885e11734ae83a0cc69dc8d',1,'ir_Daikin.h']]], + ['kdaikin2freq_4899',['kDaikin2Freq',['../ir__Daikin_8h.html#ab82e4836d9023c4ba3041d1226761461',1,'ir_Daikin.h']]], + ['kdaikin2gap_4900',['kDaikin2Gap',['../ir__Daikin_8h.html#afe14712c1be4ca14d5cd41e77d4bada0',1,'ir_Daikin.h']]], + ['kdaikin2hdrmark_4901',['kDaikin2HdrMark',['../ir__Daikin_8h.html#ab679ef183af5b94f53697d434e6540c3',1,'ir_Daikin.h']]], + ['kdaikin2hdrspace_4902',['kDaikin2HdrSpace',['../ir__Daikin_8h.html#a557f8eeaf55ff7fda0cacd0245ac27d3',1,'ir_Daikin.h']]], + ['kdaikin2leadermark_4903',['kDaikin2LeaderMark',['../ir__Daikin_8h.html#a533c7ea8f968502d4b31e14eb2b1f614',1,'ir_Daikin.h']]], + ['kdaikin2leaderspace_4904',['kDaikin2LeaderSpace',['../ir__Daikin_8h.html#a9d48d64e470ff0318bd62b3385433f57',1,'ir_Daikin.h']]], + ['kdaikin2lightoffset_4905',['kDaikin2LightOffset',['../ir__Daikin_8h.html#a0f40d38db7c625df9504798938ba24eb',1,'ir_Daikin.h']]], + ['kdaikin2lightsize_4906',['kDaikin2LightSize',['../ir__Daikin_8h.html#a4dc46fabef2c96a263a504a5f9012e1f',1,'ir_Daikin.h']]], + ['kdaikin2mincooltemp_4907',['kDaikin2MinCoolTemp',['../ir__Daikin_8h.html#a78b37644f9327537d35bec4c0fd8faee',1,'ir_Daikin.h']]], + ['kdaikin2onespace_4908',['kDaikin2OneSpace',['../ir__Daikin_8h.html#a70a96368500562fa95f88dc2f203c194',1,'ir_Daikin.h']]], + ['kdaikin2section1length_4909',['kDaikin2Section1Length',['../ir__Daikin_8h.html#a463878e9bfb22ca3c64a40259598872c',1,'ir_Daikin.h']]], + ['kdaikin2section2length_4910',['kDaikin2Section2Length',['../ir__Daikin_8h.html#a8cb956f86fdf487b1ea7ac388eeda2b5',1,'ir_Daikin.h']]], + ['kdaikin2sections_4911',['kDaikin2Sections',['../ir__Daikin_8h.html#a770cef4efa5d5668b063cf0e26f1b134',1,'ir_Daikin.h']]], + ['kdaikin2statelength_4912',['kDaikin2StateLength',['../IRremoteESP8266_8h.html#a349e4d17f83bb3e707ff19c0255c1644',1,'IRremoteESP8266.h']]], + ['kdaikin2swinghauto_4913',['kDaikin2SwingHAuto',['../ir__Daikin_8h.html#a834a3138b0f9bfdac98d26aa63bc951e',1,'ir_Daikin.h']]], + ['kdaikin2swinghleft_4914',['kDaikin2SwingHLeft',['../ir__Daikin_8h.html#aa9b294b2f12660081171df290a7e874f',1,'ir_Daikin.h']]], + ['kdaikin2swinghleftmax_4915',['kDaikin2SwingHLeftMax',['../ir__Daikin_8h.html#aac08696fc9734996537204c089db2f7c',1,'ir_Daikin.h']]], + ['kdaikin2swinghmiddle_4916',['kDaikin2SwingHMiddle',['../ir__Daikin_8h.html#ab882d68819344e622182b07ded30cccf',1,'ir_Daikin.h']]], + ['kdaikin2swinghright_4917',['kDaikin2SwingHRight',['../ir__Daikin_8h.html#a8d7c79266bedbb722dc1a74c8b727a27',1,'ir_Daikin.h']]], + ['kdaikin2swinghrightmax_4918',['kDaikin2SwingHRightMax',['../ir__Daikin_8h.html#a843ad9ee10eccd799814ca9fff57f481',1,'ir_Daikin.h']]], + ['kdaikin2swinghswing_4919',['kDaikin2SwingHSwing',['../ir__Daikin_8h.html#a3776d46e94a771a6dc94d14257f34d09',1,'ir_Daikin.h']]], + ['kdaikin2swinghwide_4920',['kDaikin2SwingHWide',['../ir__Daikin_8h.html#a93157e048486e564757ba737551cf481',1,'ir_Daikin.h']]], + ['kdaikin2swingvauto_4921',['kDaikin2SwingVAuto',['../ir__Daikin_8h.html#aa91228576ef22854a693c86df5276cbb',1,'ir_Daikin.h']]], + ['kdaikin2swingvbreeze_4922',['kDaikin2SwingVBreeze',['../ir__Daikin_8h.html#a5646d38fff6a985314158796665d9d76',1,'ir_Daikin.h']]], + ['kdaikin2swingvcirculate_4923',['kDaikin2SwingVCirculate',['../ir__Daikin_8h.html#a717bb32ce20e6d65ee78a9e8ba0f5490',1,'ir_Daikin.h']]], + ['kdaikin2swingvhigh_4924',['kDaikin2SwingVHigh',['../ir__Daikin_8h.html#a2d25d46fb289c3450ed6817a45982e27',1,'ir_Daikin.h']]], + ['kdaikin2swingvlow_4925',['kDaikin2SwingVLow',['../ir__Daikin_8h.html#accae3be213670675f8dfc974fe19f2cf',1,'ir_Daikin.h']]], + ['kdaikin2swingvswing_4926',['kDaikin2SwingVSwing',['../ir__Daikin_8h.html#a2a62938481ba7b4374df50867295c07d',1,'ir_Daikin.h']]], + ['kdaikin2tolerance_4927',['kDaikin2Tolerance',['../ir__Daikin_8h.html#ac428e884b15026c0610cc1b0b8b46154',1,'ir_Daikin.h']]], + ['kdaikin2zerospace_4928',['kDaikin2ZeroSpace',['../ir__Daikin_8h.html#a91b023ce8679d8d0e4434e014e746f99',1,'ir_Daikin.h']]], + ['kdaikin64bitmark_4929',['kDaikin64BitMark',['../ir__Daikin_8h.html#a6d89c1acd56b670b2aba65429d6fbf00',1,'ir_Daikin.h']]], + ['kdaikin64bits_4930',['kDaikin64Bits',['../IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f',1,'IRremoteESP8266.h']]], + ['kdaikin64checksumoffset_4931',['kDaikin64ChecksumOffset',['../ir__Daikin_8h.html#a5c47c0a0b1d2a23620beb2496af958c5',1,'ir_Daikin.h']]], + ['kdaikin64checksumsize_4932',['kDaikin64ChecksumSize',['../ir__Daikin_8h.html#a0c068274c73deb732e70a7daf6684391',1,'ir_Daikin.h']]], + ['kdaikin64clockhourssize_4933',['kDaikin64ClockHoursSize',['../ir__Daikin_8h.html#ae6d8f59a9707bc807a209167231d4399',1,'ir_Daikin.h']]], + ['kdaikin64clockminssize_4934',['kDaikin64ClockMinsSize',['../ir__Daikin_8h.html#a3ab23d9db994fb6dd52208f5f69b4531',1,'ir_Daikin.h']]], + ['kdaikin64clockoffset_4935',['kDaikin64ClockOffset',['../ir__Daikin_8h.html#af204ccf4e6bd33439cec240445785e9c',1,'ir_Daikin.h']]], + ['kdaikin64clocksize_4936',['kDaikin64ClockSize',['../ir__Daikin_8h.html#a110f42ae8aa2651b195c67eef15c4d79',1,'ir_Daikin.h']]], + ['kdaikin64cool_4937',['kDaikin64Cool',['../ir__Daikin_8h.html#a1ed020e8e7b5b741e90c4a27ca9f3a91',1,'ir_Daikin.h']]], + ['kdaikin64defaultrepeat_4938',['kDaikin64DefaultRepeat',['../IRremoteESP8266_8h.html#aca64338c3e3bbe52f8ec5688317041b3',1,'IRremoteESP8266.h']]], + ['kdaikin64dry_4939',['kDaikin64Dry',['../ir__Daikin_8h.html#aa494c8e2a54209c7467fdd7f40655b0b',1,'ir_Daikin.h']]], + ['kdaikin64fan_4940',['kDaikin64Fan',['../ir__Daikin_8h.html#aa1f4bb12be0f74af35ee54a5540f8a7b',1,'ir_Daikin.h']]], + ['kdaikin64fanauto_4941',['kDaikin64FanAuto',['../ir__Daikin_8h.html#a6fbc965cb8194048ed27d586321c01b2',1,'ir_Daikin.h']]], + ['kdaikin64fanhigh_4942',['kDaikin64FanHigh',['../ir__Daikin_8h.html#a122d57c30d1f4ad8f20d44077b0a1970',1,'ir_Daikin.h']]], + ['kdaikin64fanlow_4943',['kDaikin64FanLow',['../ir__Daikin_8h.html#a5a692fdcb373acf101536adb4c18384f',1,'ir_Daikin.h']]], + ['kdaikin64fanmed_4944',['kDaikin64FanMed',['../ir__Daikin_8h.html#a9b2737ba57e38d4c3dfe7bc65de4c944',1,'ir_Daikin.h']]], + ['kdaikin64fanoffset_4945',['kDaikin64FanOffset',['../ir__Daikin_8h.html#a5523d6df96b83aa152adc1cbdac6534f',1,'ir_Daikin.h']]], + ['kdaikin64fanquiet_4946',['kDaikin64FanQuiet',['../ir__Daikin_8h.html#a1a7d78b2ed8ca5b83d6422d659ecb296',1,'ir_Daikin.h']]], + ['kdaikin64fansize_4947',['kDaikin64FanSize',['../ir__Daikin_8h.html#ac907b8f8d46eb7983a1289f23bc02401',1,'ir_Daikin.h']]], + ['kdaikin64fanturbo_4948',['kDaikin64FanTurbo',['../ir__Daikin_8h.html#ae6d370916c0897bc82346136d7922f5d',1,'ir_Daikin.h']]], + ['kdaikin64freq_4949',['kDaikin64Freq',['../ir__Daikin_8h.html#a7b63829df4d0e1de61ed396c3b07e988',1,'ir_Daikin.h']]], + ['kdaikin64gap_4950',['kDaikin64Gap',['../ir__Daikin_8h.html#ae191cb5f6c65b944970158caaf56618d',1,'ir_Daikin.h']]], + ['kdaikin64hdrmark_4951',['kDaikin64HdrMark',['../ir__Daikin_8h.html#abe7b92798de08dfc5f044869891bdec5',1,'ir_Daikin.h']]], + ['kdaikin64hdrspace_4952',['kDaikin64HdrSpace',['../ir__Daikin_8h.html#a1eac122554acda264f9aa48261b2a884',1,'ir_Daikin.h']]], + ['kdaikin64knowngoodstate_4953',['kDaikin64KnownGoodState',['../ir__Daikin_8h.html#a09f0aa8c586b35b79bbceb19e822eb48',1,'ir_Daikin.h']]], + ['kdaikin64ldrmark_4954',['kDaikin64LdrMark',['../ir__Daikin_8h.html#aca20b8ee0fa9a8aa2d676ef12bd5ba97',1,'ir_Daikin.h']]], + ['kdaikin64ldrspace_4955',['kDaikin64LdrSpace',['../ir__Daikin_8h.html#ada1084c119abe58dadcb17eb4cfed072',1,'ir_Daikin.h']]], + ['kdaikin64maxtemp_4956',['kDaikin64MaxTemp',['../ir__Daikin_8h.html#a495e3b77590263a2c043c1ba12489fac',1,'ir_Daikin.h']]], + ['kdaikin64mintemp_4957',['kDaikin64MinTemp',['../ir__Daikin_8h.html#a209cb1798ae64de1f5274fb167ee62ea',1,'ir_Daikin.h']]], + ['kdaikin64modeoffset_4958',['kDaikin64ModeOffset',['../ir__Daikin_8h.html#ac32a0c805d01b5a9fa4d4aeb5546b8e3',1,'ir_Daikin.h']]], + ['kdaikin64modesize_4959',['kDaikin64ModeSize',['../ir__Daikin_8h.html#a451465916f9ae0586cf915005be33315',1,'ir_Daikin.h']]], + ['kdaikin64offtimeenablebit_4960',['kDaikin64OffTimeEnableBit',['../ir__Daikin_8h.html#a5d5c1380e6dd22cef44a76f74049a813',1,'ir_Daikin.h']]], + ['kdaikin64offtimehalfhourbit_4961',['kDaikin64OffTimeHalfHourBit',['../ir__Daikin_8h.html#a766df1d3c0fce7576a3e694b6e0d9242',1,'ir_Daikin.h']]], + ['kdaikin64offtimeoffset_4962',['kDaikin64OffTimeOffset',['../ir__Daikin_8h.html#a3aecddae0a4c0a3123b296dd6b0fb38e',1,'ir_Daikin.h']]], + ['kdaikin64offtimesize_4963',['kDaikin64OffTimeSize',['../ir__Daikin_8h.html#a70e8ae340d5f1ca35b2d6a46020b9dcc',1,'ir_Daikin.h']]], + ['kdaikin64onespace_4964',['kDaikin64OneSpace',['../ir__Daikin_8h.html#ab3129b72f5300893d04b47e72dd420e1',1,'ir_Daikin.h']]], + ['kdaikin64ontimeenablebit_4965',['kDaikin64OnTimeEnableBit',['../ir__Daikin_8h.html#ae264ee33d051149cecc08e3a026feba7',1,'ir_Daikin.h']]], + ['kdaikin64ontimehalfhourbit_4966',['kDaikin64OnTimeHalfHourBit',['../ir__Daikin_8h.html#a0d37e6624946b26dd30c3ed25181cc37',1,'ir_Daikin.h']]], + ['kdaikin64ontimeoffset_4967',['kDaikin64OnTimeOffset',['../ir__Daikin_8h.html#a6b4af969e8b114502f067b039b0a9467',1,'ir_Daikin.h']]], + ['kdaikin64ontimesize_4968',['kDaikin64OnTimeSize',['../ir__Daikin_8h.html#a46c5e1db123959992db9e746e2b3c58a',1,'ir_Daikin.h']]], + ['kdaikin64overhead_4969',['kDaikin64Overhead',['../ir__Daikin_8h.html#af0dafe45d0127430e05f2312e8ba99bb',1,'ir_Daikin.h']]], + ['kdaikin64powertogglebit_4970',['kDaikin64PowerToggleBit',['../ir__Daikin_8h.html#a55ca8803d859f0ffaac3c3547d6b532c',1,'ir_Daikin.h']]], + ['kdaikin64sleepbit_4971',['kDaikin64SleepBit',['../ir__Daikin_8h.html#addbe01f4a4766469fe5fd1cf9972f437',1,'ir_Daikin.h']]], + ['kdaikin64swingvbit_4972',['kDaikin64SwingVBit',['../ir__Daikin_8h.html#a9c7cbb529c760cead772fe03f7f90b1a',1,'ir_Daikin.h']]], + ['kdaikin64tempoffset_4973',['kDaikin64TempOffset',['../ir__Daikin_8h.html#a4b66ea40f97deafc22df18bd0942b5f1',1,'ir_Daikin.h']]], + ['kdaikin64tempsize_4974',['kDaikin64TempSize',['../ir__Daikin_8h.html#acc21945b46b307068e8669c83fbe5837',1,'ir_Daikin.h']]], + ['kdaikin64tolerancedelta_4975',['kDaikin64ToleranceDelta',['../ir__Daikin_8h.html#ae0b22a140c2727de9a347e8ab8d554e9',1,'ir_Daikin.h']]], + ['kdaikin64zerospace_4976',['kDaikin64ZeroSpace',['../ir__Daikin_8h.html#a142e45c289af1e9802254b9c138003fa',1,'ir_Daikin.h']]], + ['kdaikinauto_4977',['kDaikinAuto',['../ir__Daikin_8h.html#af3a0e7c149d020002cdf345a15606542',1,'ir_Daikin.h']]], + ['kdaikinbeeploud_4978',['kDaikinBeepLoud',['../ir__Daikin_8h.html#a4eb2b3899076882e3ed23220138ebac1',1,'ir_Daikin.h']]], + ['kdaikinbeepoff_4979',['kDaikinBeepOff',['../ir__Daikin_8h.html#a8271934c8bbd4b8e4d6aacdee5a038cf',1,'ir_Daikin.h']]], + ['kdaikinbeepquiet_4980',['kDaikinBeepQuiet',['../ir__Daikin_8h.html#a11008f7d6afc934426b88704d47301e7',1,'ir_Daikin.h']]], + ['kdaikinbitcomfort_4981',['kDaikinBitComfort',['../ir__Daikin_8h.html#aede9991f88965161d3f7cf1dba7fdeb7',1,'ir_Daikin.h']]], + ['kdaikinbitcomfortoffset_4982',['kDaikinBitComfortOffset',['../ir__Daikin_8h.html#a2e218dda2eb4ab3a97ea8018192c5f85',1,'ir_Daikin.h']]], + ['kdaikinbitecono_4983',['kDaikinBitEcono',['../ir__Daikin_8h.html#ab579939e749517944e6e497d5e44e922',1,'ir_Daikin.h']]], + ['kdaikinbiteconooffset_4984',['kDaikinBitEconoOffset',['../ir__Daikin_8h.html#aa99539b36ab708397bd1adbd4fd4f378',1,'ir_Daikin.h']]], + ['kdaikinbiteye_4985',['kDaikinBitEye',['../ir__Daikin_8h.html#a98bbaae1b0f16cf6f2428dcf326eda51',1,'ir_Daikin.h']]], + ['kdaikinbitmark_4986',['kDaikinBitMark',['../ir__Daikin_8h.html#ae109b9ea2120f989dac2529345e38adb',1,'ir_Daikin.h']]], + ['kdaikinbitmold_4987',['kDaikinBitMold',['../ir__Daikin_8h.html#a916ad89ccf3c0225a4ca1b36d74c67b2',1,'ir_Daikin.h']]], + ['kdaikinbitmoldoffset_4988',['kDaikinBitMoldOffset',['../ir__Daikin_8h.html#ad794d6ff5b5d05642e2668378d3a1100',1,'ir_Daikin.h']]], + ['kdaikinbitofftimer_4989',['kDaikinBitOffTimer',['../ir__Daikin_8h.html#a5d68046ada1892be65f14d06c2a25b2b',1,'ir_Daikin.h']]], + ['kdaikinbitofftimeroffset_4990',['kDaikinBitOffTimerOffset',['../ir__Daikin_8h.html#a7156bec80ef23aa0e4e212e11d63bdef',1,'ir_Daikin.h']]], + ['kdaikinbitontimer_4991',['kDaikinBitOnTimer',['../ir__Daikin_8h.html#a421a745ce85313d326e00b996b5afd80',1,'ir_Daikin.h']]], + ['kdaikinbitontimeroffset_4992',['kDaikinBitOnTimerOffset',['../ir__Daikin_8h.html#a7a6b740034320cc25fb6d33d36845ca0',1,'ir_Daikin.h']]], + ['kdaikinbitpower_4993',['kDaikinBitPower',['../ir__Daikin_8h.html#ab0d91673bcd73cbbbf5f18d6d73b699e',1,'ir_Daikin.h']]], + ['kdaikinbitpowerful_4994',['kDaikinBitPowerful',['../ir__Daikin_8h.html#a4d03bc31a28d866c3bf855f6482209e8',1,'ir_Daikin.h']]], + ['kdaikinbitpowerfuloffset_4995',['kDaikinBitPowerfulOffset',['../ir__Daikin_8h.html#a772bca7454e28bd3f61cdd24f58b98c8',1,'ir_Daikin.h']]], + ['kdaikinbitpoweroffset_4996',['kDaikinBitPowerOffset',['../ir__Daikin_8h.html#ad3672753b2b06b52cd8afeca3f564af4',1,'ir_Daikin.h']]], + ['kdaikinbits_4997',['kDaikinBits',['../IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485',1,'IRremoteESP8266.h']]], + ['kdaikinbitsensor_4998',['kDaikinBitSensor',['../ir__Daikin_8h.html#a37c7e26d1af184f844ef2c46064137ad',1,'ir_Daikin.h']]], + ['kdaikinbitsensoroffset_4999',['kDaikinBitSensorOffset',['../ir__Daikin_8h.html#a1ccb2c358aef3bf55005cf6b391e9e9b',1,'ir_Daikin.h']]], + ['kdaikinbitsilent_5000',['kDaikinBitSilent',['../ir__Daikin_8h.html#a85249d39c34b1a8b3bb8de4da32bb502',1,'ir_Daikin.h']]], + ['kdaikinbitsilentoffset_5001',['kDaikinBitSilentOffset',['../ir__Daikin_8h.html#a3fb5172c458084319937aa4ec2d6383b',1,'ir_Daikin.h']]], + ['kdaikinbitsshort_5002',['kDaikinBitsShort',['../IRremoteESP8266_8h.html#aebaa8eb786747761fb369cfd34181cb7',1,'IRremoteESP8266.h']]], + ['kdaikinbitweeklytimer_5003',['kDaikinBitWeeklyTimer',['../ir__Daikin_8h.html#a7d58b7c351394a43117e4710acd35cec',1,'ir_Daikin.h']]], + ['kdaikinbitweeklytimeroffset_5004',['kDaikinBitWeeklyTimerOffset',['../ir__Daikin_8h.html#a8ff2c05701327b6f26bee66361e39365',1,'ir_Daikin.h']]], + ['kdaikinbytechecksum1_5005',['kDaikinByteChecksum1',['../ir__Daikin_8h.html#a887d8d38cf4330e1107443471fa119ca',1,'ir_Daikin.h']]], + ['kdaikinbytechecksum2_5006',['kDaikinByteChecksum2',['../ir__Daikin_8h.html#ab27225f21b29e617bf03fc68cc6e8e0f',1,'ir_Daikin.h']]], + ['kdaikinbytechecksum3_5007',['kDaikinByteChecksum3',['../ir__Daikin_8h.html#a7277c453d4deed6abf0a7577b5b4454f',1,'ir_Daikin.h']]], + ['kdaikinbyteclockminshigh_5008',['kDaikinByteClockMinsHigh',['../ir__Daikin_8h.html#ade7d506fd7da26ae1713602c1620f716',1,'ir_Daikin.h']]], + ['kdaikinbyteclockminslow_5009',['kDaikinByteClockMinsLow',['../ir__Daikin_8h.html#a3c096c2f33eca6c6f7f57f0f684a4b43',1,'ir_Daikin.h']]], + ['kdaikinbytecomfort_5010',['kDaikinByteComfort',['../ir__Daikin_8h.html#a3b209715b7ac4e8ef4f15043654e646b',1,'ir_Daikin.h']]], + ['kdaikinbyteecono_5011',['kDaikinByteEcono',['../ir__Daikin_8h.html#ae08470f2e453a2a5b60bdb478fc8c6d7',1,'ir_Daikin.h']]], + ['kdaikinbyteeye_5012',['kDaikinByteEye',['../ir__Daikin_8h.html#ad3e2bb2f17d599c708e64cf08c042331',1,'ir_Daikin.h']]], + ['kdaikinbytefan_5013',['kDaikinByteFan',['../ir__Daikin_8h.html#a9078ad5b6b9afe43ffa0e646c35f3db6',1,'ir_Daikin.h']]], + ['kdaikinbytemold_5014',['kDaikinByteMold',['../ir__Daikin_8h.html#a81e098798e6aa7c0882703dced8ab039',1,'ir_Daikin.h']]], + ['kdaikinbyteofftimer_5015',['kDaikinByteOffTimer',['../ir__Daikin_8h.html#ad7fce891883a25e260cd8c0890d46f59',1,'ir_Daikin.h']]], + ['kdaikinbyteofftimerminshigh_5016',['kDaikinByteOffTimerMinsHigh',['../ir__Daikin_8h.html#a0294c99254e3eef7e7fa2cd169e0e5a9',1,'ir_Daikin.h']]], + ['kdaikinbyteofftimerminslow_5017',['kDaikinByteOffTimerMinsLow',['../ir__Daikin_8h.html#a45855767cf37f1562a7726dbf6419c87',1,'ir_Daikin.h']]], + ['kdaikinbyteontimer_5018',['kDaikinByteOnTimer',['../ir__Daikin_8h.html#a0a685bb92d8e3df4c9bd96b71c48f352',1,'ir_Daikin.h']]], + ['kdaikinbyteontimerminshigh_5019',['kDaikinByteOnTimerMinsHigh',['../ir__Daikin_8h.html#a77ce46689e1a353237edd45e7170bff6',1,'ir_Daikin.h']]], + ['kdaikinbyteontimerminslow_5020',['kDaikinByteOnTimerMinsLow',['../ir__Daikin_8h.html#a7c434f5c6a3febddf3da44e1c2b97872',1,'ir_Daikin.h']]], + ['kdaikinbytepower_5021',['kDaikinBytePower',['../ir__Daikin_8h.html#aa99cac4871f7ef1cdff2f41496989218',1,'ir_Daikin.h']]], + ['kdaikinbytepowerful_5022',['kDaikinBytePowerful',['../ir__Daikin_8h.html#a79b3d4cd40f839a3708fa33abb4b74c4',1,'ir_Daikin.h']]], + ['kdaikinbytesensor_5023',['kDaikinByteSensor',['../ir__Daikin_8h.html#afd18e8b5b4c9c6572659ea46df01a6df',1,'ir_Daikin.h']]], + ['kdaikinbytesilent_5024',['kDaikinByteSilent',['../ir__Daikin_8h.html#aac58a7371777f682cac3189d9905b968',1,'ir_Daikin.h']]], + ['kdaikinbyteswingh_5025',['kDaikinByteSwingH',['../ir__Daikin_8h.html#a58b88a2679bd57d723aa33afca4f2427',1,'ir_Daikin.h']]], + ['kdaikinbytetemp_5026',['kDaikinByteTemp',['../ir__Daikin_8h.html#acd14c2ebc40a8375343595ed8f0109f8',1,'ir_Daikin.h']]], + ['kdaikinbyteweeklytimer_5027',['kDaikinByteWeeklyTimer',['../ir__Daikin_8h.html#ad4eba59910311bdc8b489b27b4b59751',1,'ir_Daikin.h']]], + ['kdaikinclockminshighoffset_5028',['kDaikinClockMinsHighOffset',['../ir__Daikin_8h.html#a1b28496ffacf558f7919029f029c2dc6',1,'ir_Daikin.h']]], + ['kdaikinclockminshighsize_5029',['kDaikinClockMinsHighSize',['../ir__Daikin_8h.html#a1e018d153b13c65e411b3b090efc6d27',1,'ir_Daikin.h']]], + ['kdaikincool_5030',['kDaikinCool',['../ir__Daikin_8h.html#aa57615a0a9f79b97139580a807bf095f',1,'ir_Daikin.h']]], + ['kdaikincurbit_5031',['kDaikinCurBit',['../ir__Daikin_8h.html#afccfde2b46f5fcb425f02a79a9c20494',1,'ir_Daikin.h']]], + ['kdaikincurindex_5032',['kDaikinCurIndex',['../ir__Daikin_8h.html#a5c01a0bfbd92b337d2e4a5c3df381865',1,'ir_Daikin.h']]], + ['kdaikindefaultrepeat_5033',['kDaikinDefaultRepeat',['../IRremoteESP8266_8h.html#af691d5202b7f121a16b2d9871ee14d9c',1,'IRremoteESP8266.h']]], + ['kdaikindowoffset_5034',['kDaikinDoWOffset',['../ir__Daikin_8h.html#a07793a4b1ea8e9aabb77730ccbdf7e15',1,'ir_Daikin.h']]], + ['kdaikindowsize_5035',['kDaikinDoWSize',['../ir__Daikin_8h.html#a7bb34e2fc2c1926167b79889a5036ba0',1,'ir_Daikin.h']]], + ['kdaikindry_5036',['kDaikinDry',['../ir__Daikin_8h.html#ab6143bef74a122c3fba3a3b29df0cf29',1,'ir_Daikin.h']]], + ['kdaikinfan_5037',['kDaikinFan',['../ir__Daikin_8h.html#a616df34328cdac764aecc9ffb0f16f09',1,'ir_Daikin.h']]], + ['kdaikinfanauto_5038',['kDaikinFanAuto',['../ir__Daikin_8h.html#a87807bd5727d9da1b615fca2bd732292',1,'ir_Daikin.h']]], + ['kdaikinfanmax_5039',['kDaikinFanMax',['../ir__Daikin_8h.html#ab483f3913a909884f44f8cd8f779bca0',1,'ir_Daikin.h']]], + ['kdaikinfanmed_5040',['kDaikinFanMed',['../ir__Daikin_8h.html#ab6eb2c902c2b5f927160efc9fb9ab08c',1,'ir_Daikin.h']]], + ['kdaikinfanmin_5041',['kDaikinFanMin',['../ir__Daikin_8h.html#a83ad300b9374e50c22211501ee2d1a7a',1,'ir_Daikin.h']]], + ['kdaikinfanoffset_5042',['kDaikinFanOffset',['../ir__Daikin_8h.html#a48d0d0cb1174069d5b6ee2882761cb88',1,'ir_Daikin.h']]], + ['kdaikinfanquiet_5043',['kDaikinFanQuiet',['../ir__Daikin_8h.html#aae481cf166671c30bccdc7f47aa6666e',1,'ir_Daikin.h']]], + ['kdaikinfansize_5044',['kDaikinFanSize',['../ir__Daikin_8h.html#a1e490e414ff3f5f55b4cca443661cd1a',1,'ir_Daikin.h']]], + ['kdaikinfirstheader64_5045',['kDaikinFirstHeader64',['../ir__Daikin_8h.html#a0bd3b36061d545bb21562622642f4196',1,'ir_Daikin.h']]], + ['kdaikingap_5046',['kDaikinGap',['../ir__Daikin_8h.html#aed68991584125a277593c339ab387276',1,'ir_Daikin.h']]], + ['kdaikinhdrmark_5047',['kDaikinHdrMark',['../ir__Daikin_8h.html#a0a38b3bdfd8f4f7a18f969188388e29e',1,'ir_Daikin.h']]], + ['kdaikinhdrspace_5048',['kDaikinHdrSpace',['../ir__Daikin_8h.html#ac4ca6c53faeec7d7a7ccfb50802087dc',1,'ir_Daikin.h']]], + ['kdaikinheaderlength_5049',['kDaikinHeaderLength',['../ir__Daikin_8h.html#a476ca864b6791439549bb4257ca78b23',1,'ir_Daikin.h']]], + ['kdaikinheat_5050',['kDaikinHeat',['../ir__Daikin_8h.html#a05824dc5af4ed0d3eceda540ad0e7a9f',1,'ir_Daikin.h']]], + ['kdaikinlightbright_5051',['kDaikinLightBright',['../ir__Daikin_8h.html#a20a3103d8d0a672c0c05c1679bf3b2ab',1,'ir_Daikin.h']]], + ['kdaikinlightdim_5052',['kDaikinLightDim',['../ir__Daikin_8h.html#a1093baf5b62fca42f9361715be2198a3',1,'ir_Daikin.h']]], + ['kdaikinlightoff_5053',['kDaikinLightOff',['../ir__Daikin_8h.html#ae57f7d2ea43e865ebf8175a8dbacab45',1,'ir_Daikin.h']]], + ['kdaikinmarkexcess_5054',['kDaikinMarkExcess',['../ir__Daikin_8h.html#a5331e1ee51bd7b001346aa41ee5d26cc',1,'ir_Daikin.h']]], + ['kdaikinmaxtemp_5055',['kDaikinMaxTemp',['../ir__Daikin_8h.html#aab7be756494a5ed23e9202af769e0012',1,'ir_Daikin.h']]], + ['kdaikinmintemp_5056',['kDaikinMinTemp',['../ir__Daikin_8h.html#af257feb15dc282c7d06351ee9eed666b',1,'ir_Daikin.h']]], + ['kdaikinmodeoffset_5057',['kDaikinModeOffset',['../ir__Daikin_8h.html#a9a3aa5ee98496b468c5ba86faa3eeeae',1,'ir_Daikin.h']]], + ['kdaikinmodesize_5058',['kDaikinModeSize',['../ir__Daikin_8h.html#a00fc390085520e5382dbce2633b7142e',1,'ir_Daikin.h']]], + ['kdaikinonespace_5059',['kDaikinOneSpace',['../ir__Daikin_8h.html#a6653082dcfde989bd2c5810809fc18a9',1,'ir_Daikin.h']]], + ['kdaikinontimerminshighoffset_5060',['kDaikinOnTimerMinsHighOffset',['../ir__Daikin_8h.html#a2a4a4254fc853901686982c1410c77c8',1,'ir_Daikin.h']]], + ['kdaikinontimerminshighsize_5061',['kDaikinOnTimerMinsHighSize',['../ir__Daikin_8h.html#a2fc9c203378e49ea1d49557d776de620',1,'ir_Daikin.h']]], + ['kdaikinsection1length_5062',['kDaikinSection1Length',['../ir__Daikin_8h.html#ab3b8aacbebe6c1c5514141102d1ca26f',1,'ir_Daikin.h']]], + ['kdaikinsection2length_5063',['kDaikinSection2Length',['../ir__Daikin_8h.html#a2e65cdf05d22a20f01ae5f6d3e222218',1,'ir_Daikin.h']]], + ['kdaikinsection3length_5064',['kDaikinSection3Length',['../ir__Daikin_8h.html#ae7dbaf6b4034267e4610087f9f2f51e3',1,'ir_Daikin.h']]], + ['kdaikinsections_5065',['kDaikinSections',['../ir__Daikin_8h.html#aad822c70789b861fa5beb839833e0b4c',1,'ir_Daikin.h']]], + ['kdaikinstatelength_5066',['kDaikinStateLength',['../IRremoteESP8266_8h.html#af1fda5b9f355e526dc66cf58824315a7',1,'IRremoteESP8266.h']]], + ['kdaikinstatelengthshort_5067',['kDaikinStateLengthShort',['../IRremoteESP8266_8h.html#ae94c897cb0bd25ca7a4d693c7be9be3d',1,'IRremoteESP8266.h']]], + ['kdaikinswingoff_5068',['kDaikinSwingOff',['../ir__Daikin_8h.html#abc9194f48f63632b87c6139dd8ab6ecf',1,'ir_Daikin.h']]], + ['kdaikinswingoffset_5069',['kDaikinSwingOffset',['../ir__Daikin_8h.html#abeac0c8df9be90fc5b28db4b2284ed10',1,'ir_Daikin.h']]], + ['kdaikinswingon_5070',['kDaikinSwingOn',['../ir__Daikin_8h.html#af19ec29dc79837deca05f6061f2e6524',1,'ir_Daikin.h']]], + ['kdaikinswingsize_5071',['kDaikinSwingSize',['../ir__Daikin_8h.html#a0f7daf6ef2652bc0be591caa2fa0fad6',1,'ir_Daikin.h']]], + ['kdaikintempoffset_5072',['kDaikinTempOffset',['../ir__Daikin_8h.html#a1a38843bdf0f65f29c21b301f6f45ba5',1,'ir_Daikin.h']]], + ['kdaikintempsize_5073',['kDaikinTempSize',['../ir__Daikin_8h.html#aa2eef2bb403846d88df5387912af0a00',1,'ir_Daikin.h']]], + ['kdaikintolerance_5074',['kDaikinTolerance',['../ir__Daikin_8h.html#aea3938d1522df0040ddb9775075d6669',1,'ir_Daikin.h']]], + ['kdaikinunusedtime_5075',['kDaikinUnusedTime',['../ir__Daikin_8h.html#af60d27bb9d08317498b35f62c167f6a4',1,'ir_Daikin.h']]], + ['kdaikinzerospace_5076',['kDaikinZeroSpace',['../ir__Daikin_8h.html#ace5b2c2be3b58f22248eafb2148d059c',1,'ir_Daikin.h']]], + ['kdaysstr_5077',['kDaysStr',['../IRtext_8cpp.html#a4269111ae41c3a673ec0a87fca0fd78b',1,'kDaysStr(): IRtext.cpp'],['../IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae',1,'kDaysStr(): IRtext.cpp']]], + ['kdaystr_5078',['kDayStr',['../IRtext_8cpp.html#ab6fb8803c6a95d1926abb56b7ecb2e09',1,'kDayStr(): IRtext.cpp'],['../IRtext_8h.html#adb64531a5054629613696f9af39420e2',1,'kDayStr(): IRtext.cpp']]], + ['kdefaultesp32timer_5079',['kDefaultESP32Timer',['../IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709',1,'IRrecv.h']]], + ['kdefaultmessagegap_5080',['kDefaultMessageGap',['../IRsend_8h.html#ad49e9828319afbad49fd5082c50ef4a7',1,'IRsend.h']]], + ['kdelonghiacauto_5081',['kDelonghiAcAuto',['../ir__Delonghi_8h.html#ab10d4fe0b9dbe99ed942b73a6ff61d37',1,'ir_Delonghi.h']]], + ['kdelonghiacbitmark_5082',['kDelonghiAcBitMark',['../ir__Delonghi_8cpp.html#aa70f02d16b78f513e245871d4db0785a',1,'ir_Delonghi.cpp']]], + ['kdelonghiacbits_5083',['kDelonghiAcBits',['../IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909',1,'IRremoteESP8266.h']]], + ['kdelonghiacboostbit_5084',['kDelonghiAcBoostBit',['../ir__Delonghi_8h.html#a52c86741107eb5e33780f78fbf5667d5',1,'ir_Delonghi.h']]], + ['kdelonghiacchecksumoffset_5085',['kDelonghiAcChecksumOffset',['../ir__Delonghi_8h.html#a4b5e3d9874b016f60b7f9c26e7cf0cfd',1,'ir_Delonghi.h']]], + ['kdelonghiacchecksumsize_5086',['kDelonghiAcChecksumSize',['../ir__Delonghi_8h.html#a376acfc72923eccd3a1a9cc04453c0fc',1,'ir_Delonghi.h']]], + ['kdelonghiaccool_5087',['kDelonghiAcCool',['../ir__Delonghi_8h.html#a9447cc3a3f6f4e0603ecc99104523119',1,'ir_Delonghi.h']]], + ['kdelonghiacdefaultrepeat_5088',['kDelonghiAcDefaultRepeat',['../IRremoteESP8266_8h.html#a8f18256a0a6893e077e253e5e80da164',1,'IRremoteESP8266.h']]], + ['kdelonghiacdry_5089',['kDelonghiAcDry',['../ir__Delonghi_8h.html#a1c83f080ac1f48548fcfa5d691ef893d',1,'ir_Delonghi.h']]], + ['kdelonghiacfan_5090',['kDelonghiAcFan',['../ir__Delonghi_8h.html#af494534acfb8ae1c0f9c15bc13e2d0c8',1,'ir_Delonghi.h']]], + ['kdelonghiacfanauto_5091',['kDelonghiAcFanAuto',['../ir__Delonghi_8h.html#adf2286936d79d8c899283fa6e3838ebb',1,'ir_Delonghi.h']]], + ['kdelonghiacfanhigh_5092',['kDelonghiAcFanHigh',['../ir__Delonghi_8h.html#a03027eb1a6a382479b44db0699aee30b',1,'ir_Delonghi.h']]], + ['kdelonghiacfanlow_5093',['kDelonghiAcFanLow',['../ir__Delonghi_8h.html#a053a51021679cd5c4720e7ec68fa43eb',1,'ir_Delonghi.h']]], + ['kdelonghiacfanmedium_5094',['kDelonghiAcFanMedium',['../ir__Delonghi_8h.html#ac748c5e0b7c5acb108086f90c088028f',1,'ir_Delonghi.h']]], + ['kdelonghiacfanoffset_5095',['kDelonghiAcFanOffset',['../ir__Delonghi_8h.html#ab9ff55f2717de8401a940b6afd4c13d6',1,'ir_Delonghi.h']]], + ['kdelonghiacfansize_5096',['kDelonghiAcFanSize',['../ir__Delonghi_8h.html#adc3ed20ff78231b8ac2eb82481d3ebb2',1,'ir_Delonghi.h']]], + ['kdelonghiacfreq_5097',['kDelonghiAcFreq',['../ir__Delonghi_8cpp.html#a9425e4f71aa6454a89b55f3b5789d94d',1,'ir_Delonghi.cpp']]], + ['kdelonghiacgap_5098',['kDelonghiAcGap',['../ir__Delonghi_8cpp.html#ab1cd2481fc96811ed822c8c9f63420c3',1,'ir_Delonghi.cpp']]], + ['kdelonghiachdrmark_5099',['kDelonghiAcHdrMark',['../ir__Delonghi_8cpp.html#a0feead944883173788b8d02b7ae94ef8',1,'ir_Delonghi.cpp']]], + ['kdelonghiachdrspace_5100',['kDelonghiAcHdrSpace',['../ir__Delonghi_8cpp.html#a606ea96746b1b6471b1d76f05bdc7e5a',1,'ir_Delonghi.cpp']]], + ['kdelonghiachourssize_5101',['kDelonghiAcHoursSize',['../ir__Delonghi_8h.html#a94e0d6ed9ba66c467d9fb4467ab4e512',1,'ir_Delonghi.h']]], + ['kdelonghiacminssize_5102',['kDelonghiAcMinsSize',['../ir__Delonghi_8h.html#a91ed842a356878349760fe75f6d686b2',1,'ir_Delonghi.h']]], + ['kdelonghiacmodeoffset_5103',['kDelonghiAcModeOffset',['../ir__Delonghi_8h.html#a8044375ad833a12e56974b71ddfc2bc7',1,'ir_Delonghi.h']]], + ['kdelonghiacmodesize_5104',['kDelonghiAcModeSize',['../ir__Delonghi_8h.html#a30dc468cb735389aff3a27846e8a24f1',1,'ir_Delonghi.h']]], + ['kdelonghiacofftimerenablebit_5105',['kDelonghiAcOffTimerEnableBit',['../ir__Delonghi_8h.html#a93b8d905151be16f6d0918d6fd8d27e2',1,'ir_Delonghi.h']]], + ['kdelonghiacofftimerhoursoffset_5106',['kDelonghiAcOffTimerHoursOffset',['../ir__Delonghi_8h.html#a6d7b8115532bf01ae8c53b2ecbbf223b',1,'ir_Delonghi.h']]], + ['kdelonghiacofftimerminsoffset_5107',['kDelonghiAcOffTimerMinsOffset',['../ir__Delonghi_8h.html#a47b2f9c730c23d2c117141653622e04b',1,'ir_Delonghi.h']]], + ['kdelonghiaconespace_5108',['kDelonghiAcOneSpace',['../ir__Delonghi_8cpp.html#a8805fdc60cd3537ba2d94038610a3490',1,'ir_Delonghi.cpp']]], + ['kdelonghiacontimerenablebit_5109',['kDelonghiAcOnTimerEnableBit',['../ir__Delonghi_8h.html#a56d225e53ffcc29c486fce295ff3295b',1,'ir_Delonghi.h']]], + ['kdelonghiacontimerhoursoffset_5110',['kDelonghiAcOnTimerHoursOffset',['../ir__Delonghi_8h.html#a310b01f1ba238a8342261c01f77f0234',1,'ir_Delonghi.h']]], + ['kdelonghiacontimerminsoffset_5111',['kDelonghiAcOnTimerMinsOffset',['../ir__Delonghi_8h.html#a37d9a33640b64833daeb1ccc4e209be1',1,'ir_Delonghi.h']]], + ['kdelonghiacoverhead_5112',['kDelonghiAcOverhead',['../ir__Delonghi_8cpp.html#ac265c123c0cd7492d26f030d129f3475',1,'ir_Delonghi.cpp']]], + ['kdelonghiacpowerbit_5113',['kDelonghiAcPowerBit',['../ir__Delonghi_8h.html#ac89b7d74aaf3d4beaa21849085d2d7e3',1,'ir_Delonghi.h']]], + ['kdelonghiacsleepbit_5114',['kDelonghiAcSleepBit',['../ir__Delonghi_8h.html#aa1f75ea73bac50c6645625393b137391',1,'ir_Delonghi.h']]], + ['kdelonghiactempautodrymode_5115',['kDelonghiAcTempAutoDryMode',['../ir__Delonghi_8h.html#add6f728d2746a089e00a35644d664a6c',1,'ir_Delonghi.h']]], + ['kdelonghiactempfanmode_5116',['kDelonghiAcTempFanMode',['../ir__Delonghi_8h.html#a120ae31fac35c33214317c3187aae15c',1,'ir_Delonghi.h']]], + ['kdelonghiactempmaxc_5117',['kDelonghiAcTempMaxC',['../ir__Delonghi_8h.html#a476922b8d240c46cf092897f6c701e87',1,'ir_Delonghi.h']]], + ['kdelonghiactempmaxf_5118',['kDelonghiAcTempMaxF',['../ir__Delonghi_8h.html#abc11f81bc221aa3789258b7a990633b3',1,'ir_Delonghi.h']]], + ['kdelonghiactempminc_5119',['kDelonghiAcTempMinC',['../ir__Delonghi_8h.html#ad31267284f7dd8f533fc978ed7e92428',1,'ir_Delonghi.h']]], + ['kdelonghiactempminf_5120',['kDelonghiAcTempMinF',['../ir__Delonghi_8h.html#a0311abab5eff5a8c47261db8e3d40ed5',1,'ir_Delonghi.h']]], + ['kdelonghiactempoffset_5121',['kDelonghiAcTempOffset',['../ir__Delonghi_8h.html#a9d02f6520d6d1d7e305ea651099cc9ef',1,'ir_Delonghi.h']]], + ['kdelonghiactempsize_5122',['kDelonghiAcTempSize',['../ir__Delonghi_8h.html#a3fb467e0d2385893c8c7a8daa0505ec1',1,'ir_Delonghi.h']]], + ['kdelonghiactempunitbit_5123',['kDelonghiAcTempUnitBit',['../ir__Delonghi_8h.html#ac9e6f419569558f4bd5f5a6e10d24bb6',1,'ir_Delonghi.h']]], + ['kdelonghiactimermax_5124',['kDelonghiAcTimerMax',['../ir__Delonghi_8h.html#a44d3f0d850c5cd5ad8c0e2dc7c2bd860',1,'ir_Delonghi.h']]], + ['kdelonghiaczerospace_5125',['kDelonghiAcZeroSpace',['../ir__Delonghi_8cpp.html#a4c1a9a70a50c7da9aa6cf91af85c695e',1,'ir_Delonghi.cpp']]], + ['kdenon48bits_5126',['kDenon48Bits',['../IRremoteESP8266_8h.html#ad7389b5b4f01a16dbf940eaae005c805',1,'IRremoteESP8266.h']]], + ['kdenonbitmark_5127',['kDenonBitMark',['../ir__Denon_8cpp.html#a1cd978061cfdc9bf1d5e1142dad86e59',1,'ir_Denon.cpp']]], + ['kdenonbitmarkticks_5128',['kDenonBitMarkTicks',['../ir__Denon_8cpp.html#ae6dddc89296abc186ac524c3f1efbe63',1,'ir_Denon.cpp']]], + ['kdenonbits_5129',['kDenonBits',['../IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238',1,'IRremoteESP8266.h']]], + ['kdenonhdrmark_5130',['kDenonHdrMark',['../ir__Denon_8cpp.html#a6f7b5da8c723615200109f425df72254',1,'ir_Denon.cpp']]], + ['kdenonhdrmarkticks_5131',['kDenonHdrMarkTicks',['../ir__Denon_8cpp.html#a484a90cdd15de164c931f1c70ab02938',1,'ir_Denon.cpp']]], + ['kdenonhdrspace_5132',['kDenonHdrSpace',['../ir__Denon_8cpp.html#a758b11259a5dcab3e949739cf67106be',1,'ir_Denon.cpp']]], + ['kdenonhdrspaceticks_5133',['kDenonHdrSpaceTicks',['../ir__Denon_8cpp.html#afe6cb1be37dcea0251ebf0fc43640fe1',1,'ir_Denon.cpp']]], + ['kdenonlegacybits_5134',['kDenonLegacyBits',['../IRremoteESP8266_8h.html#aacf2eea1349016ccbc96e97a0976f4ec',1,'IRremoteESP8266.h']]], + ['kdenonmanufacturer_5135',['kDenonManufacturer',['../ir__Denon_8cpp.html#abd89138765e21d25991fd5857506491b',1,'ir_Denon.cpp']]], + ['kdenonmincommandlengthticks_5136',['kDenonMinCommandLengthTicks',['../ir__Denon_8cpp.html#abb20f9f6053e0d46399011de71697a6a',1,'ir_Denon.cpp']]], + ['kdenonmingap_5137',['kDenonMinGap',['../ir__Denon_8cpp.html#a19b3fe79e06b3ece2cb167d5e14b2c11',1,'ir_Denon.cpp']]], + ['kdenonmingapticks_5138',['kDenonMinGapTicks',['../ir__Denon_8cpp.html#a191e0cfcf8167805ef9bfdc05463c313',1,'ir_Denon.cpp']]], + ['kdenononespace_5139',['kDenonOneSpace',['../ir__Denon_8cpp.html#a150b22eeeb64b59a3d9df51904fdda3f',1,'ir_Denon.cpp']]], + ['kdenononespaceticks_5140',['kDenonOneSpaceTicks',['../ir__Denon_8cpp.html#ad15a88b8f6b953918799eac1e814d107',1,'ir_Denon.cpp']]], + ['kdenontick_5141',['kDenonTick',['../ir__Denon_8cpp.html#a6cc0eba04ca4a2362068bf47d1869752',1,'ir_Denon.cpp']]], + ['kdenonzerospace_5142',['kDenonZeroSpace',['../ir__Denon_8cpp.html#ad8f53f000727e66938d086eadb5bf6eb',1,'ir_Denon.cpp']]], + ['kdenonzerospaceticks_5143',['kDenonZeroSpaceTicks',['../ir__Denon_8cpp.html#aed0c86367586cd043d8381499b3a4bdd',1,'ir_Denon.cpp']]], + ['kdishbitmark_5144',['kDishBitMark',['../ir__Dish_8cpp.html#aabe7f9815a2f5e65558b0f482e2ac50e',1,'ir_Dish.cpp']]], + ['kdishbitmarkticks_5145',['kDishBitMarkTicks',['../ir__Dish_8cpp.html#a1cfd9b730c78aac35f6c2cb56367c7bb',1,'ir_Dish.cpp']]], + ['kdishbits_5146',['kDishBits',['../IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831',1,'IRremoteESP8266.h']]], + ['kdishhdrmark_5147',['kDishHdrMark',['../ir__Dish_8cpp.html#ac4311aaed27b1f37a41a2a9cced0ecc5',1,'ir_Dish.cpp']]], + ['kdishhdrmarkticks_5148',['kDishHdrMarkTicks',['../ir__Dish_8cpp.html#a8dce19ee6e3a6859bd2d43c0c9e90517',1,'ir_Dish.cpp']]], + ['kdishhdrspace_5149',['kDishHdrSpace',['../ir__Dish_8cpp.html#ac68dfa9e554c919fd51b379621b2fbc4',1,'ir_Dish.cpp']]], + ['kdishhdrspaceticks_5150',['kDishHdrSpaceTicks',['../ir__Dish_8cpp.html#ab212535e169722d7f23b461b011400c2',1,'ir_Dish.cpp']]], + ['kdishminrepeat_5151',['kDishMinRepeat',['../IRremoteESP8266_8h.html#a5c2263819b032e3af4d416ab41126bd8',1,'IRremoteESP8266.h']]], + ['kdishonespace_5152',['kDishOneSpace',['../ir__Dish_8cpp.html#a6f1986377a4571c8eba5f401b772c194',1,'ir_Dish.cpp']]], + ['kdishonespaceticks_5153',['kDishOneSpaceTicks',['../ir__Dish_8cpp.html#ade25414e4747c56303752060d9f89446',1,'ir_Dish.cpp']]], + ['kdishrptspace_5154',['kDishRptSpace',['../ir__Dish_8cpp.html#a67628a3581fe85638f72711581ec0e42',1,'ir_Dish.cpp']]], + ['kdishrptspaceticks_5155',['kDishRptSpaceTicks',['../ir__Dish_8cpp.html#a801af68fd07720f74abcf2712e3228dd',1,'ir_Dish.cpp']]], + ['kdishtick_5156',['kDishTick',['../ir__Dish_8cpp.html#aa1eccae3b18a457c7cec248d483e808a',1,'ir_Dish.cpp']]], + ['kdishzerospace_5157',['kDishZeroSpace',['../ir__Dish_8cpp.html#acde5c5a789af871f7b5aacdf3f0efeb7',1,'ir_Dish.cpp']]], + ['kdishzerospaceticks_5158',['kDishZeroSpaceTicks',['../ir__Dish_8cpp.html#a68a0f2b9e2e457c8a58fa533e0ca5336',1,'ir_Dish.cpp']]], + ['kdisplaytempstr_5159',['kDisplayTempStr',['../IRtext_8cpp.html#a018814e961b4eb51b91680db3be7d17c',1,'kDisplayTempStr(): IRtext.cpp'],['../IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3',1,'kDisplayTempStr(): IRtext.cpp']]], + ['kdoshishabitmark_5160',['kDoshishaBitMark',['../ir__Doshisha_8cpp.html#a50a4feaff92c4a9fbba6128638fdb2fb',1,'ir_Doshisha.cpp']]], + ['kdoshishabits_5161',['kDoshishaBits',['../IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362',1,'IRremoteESP8266.h']]], + ['kdoshishahdrmark_5162',['kDoshishaHdrMark',['../ir__Doshisha_8cpp.html#adbfc15a1abb62540538afc9c645c1875',1,'ir_Doshisha.cpp']]], + ['kdoshishahdrspace_5163',['kDoshishaHdrSpace',['../ir__Doshisha_8cpp.html#a95a58b09fde0ee9ba59fcf838d16f736',1,'ir_Doshisha.cpp']]], + ['kdoshishaonespace_5164',['kDoshishaOneSpace',['../ir__Doshisha_8cpp.html#a48f3b70ddd3bc06c628ebe7ce29e74d3',1,'ir_Doshisha.cpp']]], + ['kdoshishazerospace_5165',['kDoshishaZeroSpace',['../ir__Doshisha_8cpp.html#a055ae27320600bc7e100ea7e147775f9',1,'ir_Doshisha.cpp']]], + ['kdownstr_5166',['kDownStr',['../IRtext_8cpp.html#a24998688cbbe54780843983394e925e5',1,'kDownStr(): IRtext.cpp'],['../IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd',1,'kDownStr(): IRtext.cpp']]], + ['kdrystr_5167',['kDryStr',['../IRtext_8cpp.html#a149780a7bbdd13757ee4336c281ccd9d',1,'kDryStr(): IRtext.cpp'],['../IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5',1,'kDryStr(): IRtext.cpp']]], + ['kdutydefault_5168',['kDutyDefault',['../IRsend_8h.html#affa33c170fe058b783372852fca7cc5b',1,'IRsend.h']]], + ['kdutymax_5169',['kDutyMax',['../IRsend_8h.html#ac076e3f79a3d8d2dae9fc248a6f571e2',1,'IRsend.h']]], + ['keconostr_5170',['kEconoStr',['../IRtext_8cpp.html#a4e3bee67564fe8f13d1d4f997924f464',1,'kEconoStr(): IRtext.cpp'],['../IRtext_8h.html#ab0b71c4429416a581a393f07e898bade',1,'kEconoStr(): IRtext.cpp']]], + ['kelectraacauto_5171',['kElectraAcAuto',['../ir__Electra_8h.html#a536965f5003a474d68860005883afb5a',1,'ir_Electra.h']]], + ['kelectraacbitmark_5172',['kElectraAcBitMark',['../ir__Electra_8cpp.html#a41f7254b061b099b8131ec4d2a775116',1,'ir_Electra.cpp']]], + ['kelectraacbits_5173',['kElectraAcBits',['../IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16',1,'IRremoteESP8266.h']]], + ['kelectraaccleanoffset_5174',['kElectraAcCleanOffset',['../ir__Electra_8h.html#a466b5c998c1e2736214f816f1bab8239',1,'ir_Electra.h']]], + ['kelectraaccool_5175',['kElectraAcCool',['../ir__Electra_8h.html#a6a37f4e24aad54a982994599a1bca59d',1,'ir_Electra.h']]], + ['kelectraacdry_5176',['kElectraAcDry',['../ir__Electra_8h.html#a9b8636631c22e003072bf84a9e30ddff',1,'ir_Electra.h']]], + ['kelectraacfan_5177',['kElectraAcFan',['../ir__Electra_8h.html#a28047c7d083d8bc9d9e34ab210c28185',1,'ir_Electra.h']]], + ['kelectraacfanauto_5178',['kElectraAcFanAuto',['../ir__Electra_8h.html#a48b3067393d4dc1e3461db4535212bff',1,'ir_Electra.h']]], + ['kelectraacfanhigh_5179',['kElectraAcFanHigh',['../ir__Electra_8h.html#a5cbf3118669f056f377b4625e8e97d8c',1,'ir_Electra.h']]], + ['kelectraacfanlow_5180',['kElectraAcFanLow',['../ir__Electra_8h.html#a9a5663e86cb766a4e4579d1b81473c44',1,'ir_Electra.h']]], + ['kelectraacfanmed_5181',['kElectraAcFanMed',['../ir__Electra_8h.html#a4e906bcb7aa6c0fc5c71bd06c43c3993',1,'ir_Electra.h']]], + ['kelectraacfanoffset_5182',['kElectraAcFanOffset',['../ir__Electra_8h.html#a0efe73807b12370aa7c57ff831e56192',1,'ir_Electra.h']]], + ['kelectraacfansize_5183',['kElectraAcFanSize',['../ir__Electra_8h.html#aeb9bddbd47459ae51c1207baac9e6219',1,'ir_Electra.h']]], + ['kelectraachdrmark_5184',['kElectraAcHdrMark',['../ir__Electra_8cpp.html#a1200826684547765f1e526f362408e2e',1,'ir_Electra.cpp']]], + ['kelectraachdrspace_5185',['kElectraAcHdrSpace',['../ir__Electra_8cpp.html#a28cd57057c52b0def3683e71ee92c5d3',1,'ir_Electra.cpp']]], + ['kelectraacheat_5186',['kElectraAcHeat',['../ir__Electra_8h.html#af764a4738f146b752b8e29357af257e3',1,'ir_Electra.h']]], + ['kelectraaclighttogglemask_5187',['kElectraAcLightToggleMask',['../ir__Electra_8h.html#aa51ccef46052dd988ac1bccc4f2303f6',1,'ir_Electra.h']]], + ['kelectraaclighttoggleoff_5188',['kElectraAcLightToggleOff',['../ir__Electra_8h.html#ae98c4a00f003cc98c253b9367226c5c5',1,'ir_Electra.h']]], + ['kelectraaclighttoggleon_5189',['kElectraAcLightToggleOn',['../ir__Electra_8h.html#aa9ca231e98b7e529b081c3aaa1876df9',1,'ir_Electra.h']]], + ['kelectraacmaxtemp_5190',['kElectraAcMaxTemp',['../ir__Electra_8h.html#a3962ca1ae42f006baa1181683cbcbf86',1,'ir_Electra.h']]], + ['kelectraacmessagegap_5191',['kElectraAcMessageGap',['../ir__Electra_8cpp.html#adbcde2296ebf6ea93c7c95ce6d0b264e',1,'ir_Electra.cpp']]], + ['kelectraacminrepeat_5192',['kElectraAcMinRepeat',['../IRremoteESP8266_8h.html#a2ca237d578ca9a59aecac9813ab851ba',1,'IRremoteESP8266.h']]], + ['kelectraacmintemp_5193',['kElectraAcMinTemp',['../ir__Electra_8h.html#ad6f62477d70b59c958ba347c228f8e2b',1,'ir_Electra.h']]], + ['kelectraacmodeoffset_5194',['kElectraAcModeOffset',['../ir__Electra_8h.html#a79ea9dfa776115e5ec4ee816c4eef559',1,'ir_Electra.h']]], + ['kelectraaconespace_5195',['kElectraAcOneSpace',['../ir__Electra_8cpp.html#aeb59d520635a93f5dd7acdbe4327174d',1,'ir_Electra.cpp']]], + ['kelectraacpoweroffset_5196',['kElectraAcPowerOffset',['../ir__Electra_8h.html#a54012f7683397fada44f13c3e57d9ee0',1,'ir_Electra.h']]], + ['kelectraacstatelength_5197',['kElectraAcStateLength',['../IRremoteESP8266_8h.html#a8fb8c5778feaa94114218c36e8e43641',1,'IRremoteESP8266.h']]], + ['kelectraacswinghoffset_5198',['kElectraAcSwingHOffset',['../ir__Electra_8h.html#ac39219316f9b49ead4183cd206b4a3fb',1,'ir_Electra.h']]], + ['kelectraacswingoff_5199',['kElectraAcSwingOff',['../ir__Electra_8h.html#ade2211d0bd695daf490300db856d660a',1,'ir_Electra.h']]], + ['kelectraacswingon_5200',['kElectraAcSwingOn',['../ir__Electra_8h.html#a4ef75911d929752357d727aee339563e',1,'ir_Electra.h']]], + ['kelectraacswingsize_5201',['kElectraAcSwingSize',['../ir__Electra_8h.html#a67c58c049b50d04d4fadd93eee0231cf',1,'ir_Electra.h']]], + ['kelectraacswingvoffset_5202',['kElectraAcSwingVOffset',['../ir__Electra_8h.html#a4a5737e41994fe6c0cd566be354a70fb',1,'ir_Electra.h']]], + ['kelectraactempdelta_5203',['kElectraAcTempDelta',['../ir__Electra_8h.html#ac3310f7b0d4b9fbe22d7192465669487',1,'ir_Electra.h']]], + ['kelectraactempoffset_5204',['kElectraAcTempOffset',['../ir__Electra_8h.html#a928ee72169f9ab56a4209606aa7e5e43',1,'ir_Electra.h']]], + ['kelectraactempsize_5205',['kElectraAcTempSize',['../ir__Electra_8h.html#aeeb469144f4fd02ddd8a802f5cf7c308',1,'ir_Electra.h']]], + ['kelectraacturbooffset_5206',['kElectraAcTurboOffset',['../ir__Electra_8h.html#afbbd997ef8ddf5a4adfd0a37404d6782',1,'ir_Electra.h']]], + ['kelectraaczerospace_5207',['kElectraAcZeroSpace',['../ir__Electra_8cpp.html#a1453e0796cfe6ca169fd3c56e2595082',1,'ir_Electra.cpp']]], + ['kepsonbits_5208',['kEpsonBits',['../IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425',1,'IRremoteESP8266.h']]], + ['kepsonminrepeat_5209',['kEpsonMinRepeat',['../IRremoteESP8266_8h.html#ac8738cb054de937b77269acb973c5133',1,'IRremoteESP8266.h']]], + ['keyeautostr_5210',['kEyeAutoStr',['../IRtext_8cpp.html#ab7c525442638022439c7a277e1edf694',1,'kEyeAutoStr(): IRtext.cpp'],['../IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f',1,'kEyeAutoStr(): IRtext.cpp']]], + ['keyestr_5211',['kEyeStr',['../IRtext_8cpp.html#a1d8dc83e7f15aacd013509e36a49a9d8',1,'kEyeStr(): IRtext.cpp'],['../IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885',1,'kEyeStr(): IRtext.cpp']]], + ['kfalsestr_5212',['kFalseStr',['../IRtext_8cpp.html#a338ee31c8fb5a1c74c0640b279051cd2',1,'kFalseStr(): IRtext.cpp'],['../IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988',1,'kFalseStr(): IRtext.cpp']]], + ['kfanonlystr_5213',['kFanOnlyStr',['../IRtext_8cpp.html#adada7550fa28466a6db6f4544f8c7063',1,'kFanOnlyStr(): IRtext.cpp'],['../IRtext_8h.html#a220378c7b69db06362af5ad932965628',1,'kFanOnlyStr(): IRtext.cpp']]], + ['kfanstr_5214',['kFanStr',['../IRtext_8cpp.html#aaab703dfae684a786852a55c0f7f61ec',1,'kFanStr(): IRtext.cpp'],['../IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300',1,'kFanStr(): IRtext.cpp']]], + ['kfaststr_5215',['kFastStr',['../IRtext_8cpp.html#ad6084cb569cd62bb1199c6ecc8ac4126',1,'kFastStr(): IRtext.cpp'],['../IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8',1,'kFastStr(): IRtext.cpp']]], + ['kfilterstr_5216',['kFilterStr',['../IRtext_8cpp.html#af287ead64de5dc3b1cbafe7bc945e519',1,'kFilterStr(): IRtext.cpp'],['../IRtext_8h.html#a5b3133e24c729077da411e08119033be',1,'kFilterStr(): IRtext.cpp']]], + ['kfixedstr_5217',['kFixedStr',['../IRtext_8cpp.html#ab45f91a889dae134e48c86586608bfc9',1,'kFixedStr(): IRtext.cpp'],['../IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14',1,'kFixedStr(): IRtext.cpp']]], + ['kfnvbasis32_5218',['kFnvBasis32',['../IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3',1,'IRrecv.h']]], + ['kfnvprime32_5219',['kFnvPrime32',['../IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f',1,'IRrecv.h']]], + ['kfollowstr_5220',['kFollowStr',['../IRtext_8cpp.html#a5477068666c86b3d605df8cf0240c86f',1,'kFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b',1,'kFollowStr(): IRtext.cpp']]], + ['kfooter_5221',['kFooter',['../IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3',1,'IRrecv.h']]], + ['kfreshstr_5222',['kFreshStr',['../IRtext_8cpp.html#ae416979803b912c932aa5eda837fc471',1,'kFreshStr(): IRtext.cpp'],['../IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2',1,'kFreshStr(): IRtext.cpp']]], + ['kfujitsuacbitmark_5223',['kFujitsuAcBitMark',['../ir__Fujitsu_8cpp.html#a2e01906b1317da42fcc204284646e3db',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacbits_5224',['kFujitsuAcBits',['../IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47',1,'IRremoteESP8266.h']]], + ['kfujitsuaccleanoffset_5225',['kFujitsuAcCleanOffset',['../ir__Fujitsu_8h.html#ae7e7dc770ef9712296d2beeb085d2c1f',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdecono_5226',['kFujitsuAcCmdEcono',['../ir__Fujitsu_8h.html#a1e1eb4274232c43769f70b40f395a084',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdpowerful_5227',['kFujitsuAcCmdPowerful',['../ir__Fujitsu_8h.html#a69349537a37674a82b8ca630e6ca1b5a',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdstayon_5228',['kFujitsuAcCmdStayOn',['../ir__Fujitsu_8h.html#acc729a2cd570761f97c63b98024c157d',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdstephoriz_5229',['kFujitsuAcCmdStepHoriz',['../ir__Fujitsu_8h.html#ac67e3fa9ab8f1e1146bed1296f9a2131',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdstepvert_5230',['kFujitsuAcCmdStepVert',['../ir__Fujitsu_8h.html#a5dda60d753d93089fc323bfcd9567afd',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdtoggleswinghoriz_5231',['kFujitsuAcCmdToggleSwingHoriz',['../ir__Fujitsu_8h.html#a43b5912e65a8e6d3f1c672b155135f27',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdtoggleswingvert_5232',['kFujitsuAcCmdToggleSwingVert',['../ir__Fujitsu_8h.html#a66960882cee5d109f332917fe1f8067c',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdturnoff_5233',['kFujitsuAcCmdTurnOff',['../ir__Fujitsu_8h.html#a073903b56c40d89b9999ee9b7dc48f00',1,'ir_Fujitsu.h']]], + ['kfujitsuaccmdturnon_5234',['kFujitsuAcCmdTurnOn',['../ir__Fujitsu_8h.html#a51c2abda78c7d6ced59f88acb857281e',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanauto_5235',['kFujitsuAcFanAuto',['../ir__Fujitsu_8h.html#a55bbb5a5b1760515f070d302c9fa4cbb',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanhigh_5236',['kFujitsuAcFanHigh',['../ir__Fujitsu_8h.html#a30b11ea24865a00b10468015aae77886',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanlow_5237',['kFujitsuAcFanLow',['../ir__Fujitsu_8h.html#aa0162cde862a3c02dd877a3a7933c130',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanmed_5238',['kFujitsuAcFanMed',['../ir__Fujitsu_8h.html#a0efcb8e8a6521e4788a82ff6c556b67b',1,'ir_Fujitsu.h']]], + ['kfujitsuacfanquiet_5239',['kFujitsuAcFanQuiet',['../ir__Fujitsu_8h.html#a9abb4ec5fe9f27c6acd62273329490b6',1,'ir_Fujitsu.h']]], + ['kfujitsuacfansize_5240',['kFujitsuAcFanSize',['../ir__Fujitsu_8h.html#a797e68082ceebea788a215ecbfc279d9',1,'ir_Fujitsu.h']]], + ['kfujitsuacfilteroffset_5241',['kFujitsuAcFilterOffset',['../ir__Fujitsu_8h.html#a3c6349b24651bffb33f2633d3c65144c',1,'ir_Fujitsu.h']]], + ['kfujitsuachdrmark_5242',['kFujitsuAcHdrMark',['../ir__Fujitsu_8cpp.html#a96402e0aed6962a8a72cc736fa9bbc08',1,'ir_Fujitsu.cpp']]], + ['kfujitsuachdrspace_5243',['kFujitsuAcHdrSpace',['../ir__Fujitsu_8cpp.html#a655e37e172ab06dc06ca69f3c06223b2',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacmaxtemp_5244',['kFujitsuAcMaxTemp',['../ir__Fujitsu_8h.html#ad817f46441ac1284e3bbe8417e4f4388',1,'ir_Fujitsu.h']]], + ['kfujitsuacminbits_5245',['kFujitsuAcMinBits',['../IRremoteESP8266_8h.html#a025caa6d0ae6becdd5ee58b5ac6ed61f',1,'IRremoteESP8266.h']]], + ['kfujitsuacmingap_5246',['kFujitsuAcMinGap',['../ir__Fujitsu_8cpp.html#a255fab3b9047b34cf6c4d42c0c82c485',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacminrepeat_5247',['kFujitsuAcMinRepeat',['../IRremoteESP8266_8h.html#a9dd52420366167afb4c8831b4ccd02fa',1,'IRremoteESP8266.h']]], + ['kfujitsuacmintemp_5248',['kFujitsuAcMinTemp',['../ir__Fujitsu_8h.html#a35ec9572b356a7bcfb75947d03b198f7',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodeauto_5249',['kFujitsuAcModeAuto',['../ir__Fujitsu_8h.html#acf0aa6d1d033c893a3acd5b8d7756a5b',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodecool_5250',['kFujitsuAcModeCool',['../ir__Fujitsu_8h.html#a782e226fadab0a256144821cacea2314',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodedry_5251',['kFujitsuAcModeDry',['../ir__Fujitsu_8h.html#ae66f2ed2e554a6befdf0377d01bce257',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodefan_5252',['kFujitsuAcModeFan',['../ir__Fujitsu_8h.html#a7cc07ec4747b5cebc50257ec02297800',1,'ir_Fujitsu.h']]], + ['kfujitsuacmodeheat_5253',['kFujitsuAcModeHeat',['../ir__Fujitsu_8h.html#ad9b47b7419853a4cb1cf072023dac69b',1,'ir_Fujitsu.h']]], + ['kfujitsuaconespace_5254',['kFujitsuAcOneSpace',['../ir__Fujitsu_8cpp.html#a4f5246e6428cc701dbaa18923904713a',1,'ir_Fujitsu.cpp']]], + ['kfujitsuacoutsidequietoffset_5255',['kFujitsuAcOutsideQuietOffset',['../ir__Fujitsu_8h.html#a38522dc07bb7be2dd1ec654d4e60eb4f',1,'ir_Fujitsu.h']]], + ['kfujitsuacstatelength_5256',['kFujitsuAcStateLength',['../IRremoteESP8266_8h.html#ac3aa33a8386f73de0f57fc1ff7c6e7d9',1,'IRremoteESP8266.h']]], + ['kfujitsuacstatelengthshort_5257',['kFujitsuAcStateLengthShort',['../IRremoteESP8266_8h.html#a81cb09663eedbdc3888ee68438f0a5d3',1,'IRremoteESP8266.h']]], + ['kfujitsuacswingboth_5258',['kFujitsuAcSwingBoth',['../ir__Fujitsu_8h.html#a07c5a757b0c3bbe07412813807272434',1,'ir_Fujitsu.h']]], + ['kfujitsuacswinghoriz_5259',['kFujitsuAcSwingHoriz',['../ir__Fujitsu_8h.html#a8875f62d61afb8cbf468207aedcb8982',1,'ir_Fujitsu.h']]], + ['kfujitsuacswingoff_5260',['kFujitsuAcSwingOff',['../ir__Fujitsu_8h.html#a7f8109a1b8fd13a93d6b0255d05413df',1,'ir_Fujitsu.h']]], + ['kfujitsuacswingsize_5261',['kFujitsuAcSwingSize',['../ir__Fujitsu_8h.html#a1eb20884dc6c9bccbe899f779c4b5ad4',1,'ir_Fujitsu.h']]], + ['kfujitsuacswingvert_5262',['kFujitsuAcSwingVert',['../ir__Fujitsu_8h.html#a5c532a43ab11bf7cb353de2081260f40',1,'ir_Fujitsu.h']]], + ['kfujitsuaczerospace_5263',['kFujitsuAcZeroSpace',['../ir__Fujitsu_8cpp.html#a3815b89a2037cd0c8d774217df603d6e',1,'ir_Fujitsu.cpp']]], + ['kgicablebitmark_5264',['kGicableBitMark',['../ir__GICable_8cpp.html#ac315be0b5e02fb4c7109a6f67c4fac8e',1,'ir_GICable.cpp']]], + ['kgicablebits_5265',['kGicableBits',['../IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa',1,'IRremoteESP8266.h']]], + ['kgicablehdrmark_5266',['kGicableHdrMark',['../ir__GICable_8cpp.html#a0388e7a2030246928029ed1c79ba819d',1,'ir_GICable.cpp']]], + ['kgicablehdrspace_5267',['kGicableHdrSpace',['../ir__GICable_8cpp.html#ab357b0a095155eab6206245008387fc0',1,'ir_GICable.cpp']]], + ['kgicablemincommandlength_5268',['kGicableMinCommandLength',['../ir__GICable_8cpp.html#a79db5de95ff6b42259f0a54fa59f46f6',1,'ir_GICable.cpp']]], + ['kgicablemingap_5269',['kGicableMinGap',['../ir__GICable_8cpp.html#aff7027ab4b933e4a7f5506590c25f699',1,'ir_GICable.cpp']]], + ['kgicableminrepeat_5270',['kGicableMinRepeat',['../IRremoteESP8266_8h.html#ad8142649290db6fc337ac839d4078aef',1,'IRremoteESP8266.h']]], + ['kgicableonespace_5271',['kGicableOneSpace',['../ir__GICable_8cpp.html#a31300a6f41363cbc22d40f26e693b8be',1,'ir_GICable.cpp']]], + ['kgicablerptspace_5272',['kGicableRptSpace',['../ir__GICable_8cpp.html#a9e0d82ed05e210dec2980a7d1a2e081b',1,'ir_GICable.cpp']]], + ['kgicablezerospace_5273',['kGicableZeroSpace',['../ir__GICable_8cpp.html#a1383f274e701ad5c8141beb7703783ff',1,'ir_GICable.cpp']]], + ['kglobalcachefreqindex_5274',['kGlobalCacheFreqIndex',['../ir__GlobalCache_8cpp.html#aaa0bdfe1eb76e8519a111b6588a5a3ff',1,'ir_GlobalCache.cpp']]], + ['kglobalcachemaxrepeat_5275',['kGlobalCacheMaxRepeat',['../ir__GlobalCache_8cpp.html#ae4a19c45ab538e8a386769cd98943a0d',1,'ir_GlobalCache.cpp']]], + ['kglobalcacheminusec_5276',['kGlobalCacheMinUsec',['../ir__GlobalCache_8cpp.html#a133cf089a7b40516fac3b1143981b2a6',1,'ir_GlobalCache.cpp']]], + ['kglobalcacherptindex_5277',['kGlobalCacheRptIndex',['../ir__GlobalCache_8cpp.html#ad4d55ed7e89cfc6d513dae6ecb211fe9',1,'ir_GlobalCache.cpp']]], + ['kglobalcacherptstartindex_5278',['kGlobalCacheRptStartIndex',['../ir__GlobalCache_8cpp.html#afde4c65e9e75558df6ac7aa479bf507a',1,'ir_GlobalCache.cpp']]], + ['kglobalcachestartindex_5279',['kGlobalCacheStartIndex',['../ir__GlobalCache_8cpp.html#a8640be7a67ce3f49452b28bc24912637',1,'ir_GlobalCache.cpp']]], + ['kgoodweatherauto_5280',['kGoodweatherAuto',['../ir__Goodweather_8h.html#a2fc5f0f7d0f68dcff193548830f50528',1,'ir_Goodweather.h']]], + ['kgoodweatherbitairflow_5281',['kGoodweatherBitAirFlow',['../ir__Goodweather_8h.html#ad86cdbc34a6a82c7595cace56d040d64',1,'ir_Goodweather.h']]], + ['kgoodweatherbitcommand_5282',['kGoodweatherBitCommand',['../ir__Goodweather_8h.html#ad6973bf4ac7801097077938e133b1718',1,'ir_Goodweather.h']]], + ['kgoodweatherbiteof_5283',['kGoodweatherBitEOF',['../ir__Goodweather_8h.html#a239d4d1fee77e0d220efb0bc0b3c779a',1,'ir_Goodweather.h']]], + ['kgoodweatherbitfan_5284',['kGoodweatherBitFan',['../ir__Goodweather_8h.html#aa3d5f146109dd671e4d7d86c1dbccba7',1,'ir_Goodweather.h']]], + ['kgoodweatherbitlight_5285',['kGoodweatherBitLight',['../ir__Goodweather_8h.html#a976dc2b37d1fcec4bbc0958861b5a9b0',1,'ir_Goodweather.h']]], + ['kgoodweatherbitmark_5286',['kGoodweatherBitMark',['../ir__Goodweather_8h.html#acb9fb47b2a207997fda0244d1bafbe89',1,'ir_Goodweather.h']]], + ['kgoodweatherbitmode_5287',['kGoodweatherBitMode',['../ir__Goodweather_8h.html#a3795b45c06f6d2db23cc45478bfeeca9',1,'ir_Goodweather.h']]], + ['kgoodweatherbitpower_5288',['kGoodweatherBitPower',['../ir__Goodweather_8h.html#a652b820b22c8381a6035fea7b1ae1b8d',1,'ir_Goodweather.h']]], + ['kgoodweatherbits_5289',['kGoodweatherBits',['../IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425',1,'IRremoteESP8266.h']]], + ['kgoodweatherbitsleep_5290',['kGoodweatherBitSleep',['../ir__Goodweather_8h.html#a763e8033483516c093ad12a378e0c8f8',1,'ir_Goodweather.h']]], + ['kgoodweatherbitswing_5291',['kGoodweatherBitSwing',['../ir__Goodweather_8h.html#a0a3fc264b6a77157174c207688ac2cda',1,'ir_Goodweather.h']]], + ['kgoodweatherbittemp_5292',['kGoodweatherBitTemp',['../ir__Goodweather_8h.html#a692faf9976f90d67d183ff99ed06ee51',1,'ir_Goodweather.h']]], + ['kgoodweatherbitturbo_5293',['kGoodweatherBitTurbo',['../ir__Goodweather_8h.html#afe2ad22bc8ba5ab9cad025e9adaf4d56',1,'ir_Goodweather.h']]], + ['kgoodweathercmdairflow_5294',['kGoodweatherCmdAirFlow',['../ir__Goodweather_8h.html#aa51248353573abd95af37e46f0a2c4a7',1,'ir_Goodweather.h']]], + ['kgoodweathercmddowntemp_5295',['kGoodweatherCmdDownTemp',['../ir__Goodweather_8h.html#a8a0b72bf745b6003fb460a3c917eecff',1,'ir_Goodweather.h']]], + ['kgoodweathercmdfan_5296',['kGoodweatherCmdFan',['../ir__Goodweather_8h.html#a4a0881f87af157fdf9ed3d9f342f1ac5',1,'ir_Goodweather.h']]], + ['kgoodweathercmdhold_5297',['kGoodweatherCmdHold',['../ir__Goodweather_8h.html#ac0f3b1413228cb7e86822c5690f20344',1,'ir_Goodweather.h']]], + ['kgoodweathercmdlight_5298',['kGoodweatherCmdLight',['../ir__Goodweather_8h.html#ae70c4e66b17db9caf4800eb57a50706f',1,'ir_Goodweather.h']]], + ['kgoodweathercmdmode_5299',['kGoodweatherCmdMode',['../ir__Goodweather_8h.html#a6042296931ab29e9dfa5a701f3e42175',1,'ir_Goodweather.h']]], + ['kgoodweathercmdpower_5300',['kGoodweatherCmdPower',['../ir__Goodweather_8h.html#a3f1bf85bb10343512bb276adfc64b3b2',1,'ir_Goodweather.h']]], + ['kgoodweathercmdsleep_5301',['kGoodweatherCmdSleep',['../ir__Goodweather_8h.html#a3f4d72b620c73aec68c2125430ca709d',1,'ir_Goodweather.h']]], + ['kgoodweathercmdswing_5302',['kGoodweatherCmdSwing',['../ir__Goodweather_8h.html#ab4ceedbe859811a9fb394f6ebf233cb5',1,'ir_Goodweather.h']]], + ['kgoodweathercmdtimer_5303',['kGoodweatherCmdTimer',['../ir__Goodweather_8h.html#ad4d247ea6c9fc237e0acda84fdaa2eb6',1,'ir_Goodweather.h']]], + ['kgoodweathercmdturbo_5304',['kGoodweatherCmdTurbo',['../ir__Goodweather_8h.html#aebc6d53b3e7d1769bff47968c19c09c9',1,'ir_Goodweather.h']]], + ['kgoodweathercmduptemp_5305',['kGoodweatherCmdUpTemp',['../ir__Goodweather_8h.html#a51a089b03bd72a247a4c35c2ff3f3dc6',1,'ir_Goodweather.h']]], + ['kgoodweathercommandsize_5306',['kGoodweatherCommandSize',['../ir__Goodweather_8h.html#aa5ae9f1b5f6458a25b31b0d2c7feb508',1,'ir_Goodweather.h']]], + ['kgoodweathercool_5307',['kGoodweatherCool',['../ir__Goodweather_8h.html#a92c807d6ff8a3356e65f04e82b99aba4',1,'ir_Goodweather.h']]], + ['kgoodweatherdry_5308',['kGoodweatherDry',['../ir__Goodweather_8h.html#ac5174a3e2c64361c25adcf7caa5b714c',1,'ir_Goodweather.h']]], + ['kgoodweathereofmask_5309',['kGoodweatherEOFMask',['../ir__Goodweather_8h.html#a3d86da1a2bab92a9f70cc88e2628f266',1,'ir_Goodweather.h']]], + ['kgoodweatherextratolerance_5310',['kGoodweatherExtraTolerance',['../ir__Goodweather_8h.html#aae814dfbd574241d3b434d0bf2d38939',1,'ir_Goodweather.h']]], + ['kgoodweatherfan_5311',['kGoodweatherFan',['../ir__Goodweather_8h.html#ad56f00c7e39df93d28419d6a4afa360b',1,'ir_Goodweather.h']]], + ['kgoodweatherfanauto_5312',['kGoodweatherFanAuto',['../ir__Goodweather_8h.html#a9cc119524ac1cb93395dff3bb44b85cc',1,'ir_Goodweather.h']]], + ['kgoodweatherfanhigh_5313',['kGoodweatherFanHigh',['../ir__Goodweather_8h.html#af2b24de50923a0aabd4379dc6d3ef10f',1,'ir_Goodweather.h']]], + ['kgoodweatherfanlow_5314',['kGoodweatherFanLow',['../ir__Goodweather_8h.html#a7bc7c0cf9f2df574a7c087542991ab9b',1,'ir_Goodweather.h']]], + ['kgoodweatherfanmed_5315',['kGoodweatherFanMed',['../ir__Goodweather_8h.html#a5174245e9369a488332b32dfa416963e',1,'ir_Goodweather.h']]], + ['kgoodweatherfansize_5316',['kGoodweatherFanSize',['../ir__Goodweather_8h.html#a687ae6502d8fe6b4a5bd11468106481e',1,'ir_Goodweather.h']]], + ['kgoodweatherhdrmark_5317',['kGoodweatherHdrMark',['../ir__Goodweather_8h.html#a5c39e33226770babb4b0e89fc0cde709',1,'ir_Goodweather.h']]], + ['kgoodweatherhdrspace_5318',['kGoodweatherHdrSpace',['../ir__Goodweather_8h.html#a837bfeaa111b00e2744c4ada89281bfb',1,'ir_Goodweather.h']]], + ['kgoodweatherheat_5319',['kGoodweatherHeat',['../ir__Goodweather_8h.html#a17d223f03df2718151a426582a224a2e',1,'ir_Goodweather.h']]], + ['kgoodweatherminrepeat_5320',['kGoodweatherMinRepeat',['../IRremoteESP8266_8h.html#a885bc5a3a5ba2d8827a62d07a43d0321',1,'IRremoteESP8266.h']]], + ['kgoodweatheronespace_5321',['kGoodweatherOneSpace',['../ir__Goodweather_8h.html#a8efa251085a8f434cb91c049e65cda56',1,'ir_Goodweather.h']]], + ['kgoodweatherstateinit_5322',['kGoodweatherStateInit',['../ir__Goodweather_8h.html#a5ec0e7ca097241d6bef0cbf2135c8fca',1,'ir_Goodweather.h']]], + ['kgoodweatherswingfast_5323',['kGoodweatherSwingFast',['../ir__Goodweather_8h.html#a2d2fa76fa35cf7d450aaf0b980660514',1,'ir_Goodweather.h']]], + ['kgoodweatherswingoff_5324',['kGoodweatherSwingOff',['../ir__Goodweather_8h.html#aa2c53f56daa2820351924d91b542bb67',1,'ir_Goodweather.h']]], + ['kgoodweatherswingsize_5325',['kGoodweatherSwingSize',['../ir__Goodweather_8h.html#a208e47dc4f9e6a85464b4ce3ecaf5c3e',1,'ir_Goodweather.h']]], + ['kgoodweatherswingslow_5326',['kGoodweatherSwingSlow',['../ir__Goodweather_8h.html#ad2c87d849af2c77088ffc533d279aadb',1,'ir_Goodweather.h']]], + ['kgoodweathertempmax_5327',['kGoodweatherTempMax',['../ir__Goodweather_8h.html#abec401548ce2221a9c668318a33a039c',1,'ir_Goodweather.h']]], + ['kgoodweathertempmin_5328',['kGoodweatherTempMin',['../ir__Goodweather_8h.html#a8e76c0ec1bd5e124d9cee5742a2d1cfe',1,'ir_Goodweather.h']]], + ['kgoodweathertempsize_5329',['kGoodweatherTempSize',['../ir__Goodweather_8h.html#a2ef3336be36de4f34940de28cfe195a8',1,'ir_Goodweather.h']]], + ['kgoodweatherzerospace_5330',['kGoodweatherZeroSpace',['../ir__Goodweather_8h.html#a411cbfb812d102daeaf6a83c742f9a9a',1,'ir_Goodweather.h']]], + ['kgpiounused_5331',['kGpioUnused',['../IRac_8h.html#afd817f0bc02c516b6430098dcecde383',1,'IRac.h']]], + ['kgreeauto_5332',['kGreeAuto',['../ir__Gree_8h.html#a65d2d0192a1baff86b859da1018ef2f8',1,'ir_Gree.h']]], + ['kgreebitmark_5333',['kGreeBitMark',['../ir__Gree_8cpp.html#ad7e23346f6d793cc2469e4c8a5650397',1,'ir_Gree.cpp']]], + ['kgreebits_5334',['kGreeBits',['../IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d',1,'IRremoteESP8266.h']]], + ['kgreeblockfooter_5335',['kGreeBlockFooter',['../ir__Gree_8cpp.html#ae6d01cfa7ee2ef6ff27c1ecd7cd9be51',1,'ir_Gree.cpp']]], + ['kgreeblockfooterbits_5336',['kGreeBlockFooterBits',['../ir__Gree_8cpp.html#ae866eef4c729c703597a266917799cbd',1,'ir_Gree.cpp']]], + ['kgreecool_5337',['kGreeCool',['../ir__Gree_8h.html#a1e1eeab696b43864cec66e6485487cea',1,'ir_Gree.h']]], + ['kgreedefaultrepeat_5338',['kGreeDefaultRepeat',['../IRremoteESP8266_8h.html#a6816d2cb11b99a61fb63e6d0928e6706',1,'IRremoteESP8266.h']]], + ['kgreedisplaytempinside_5339',['kGreeDisplayTempInside',['../ir__Gree_8h.html#a7495e5873f63135490090929ed79e994',1,'ir_Gree.h']]], + ['kgreedisplaytempoff_5340',['kGreeDisplayTempOff',['../ir__Gree_8h.html#aa5881910d1c01b816f3ac22ddf0f89a8',1,'ir_Gree.h']]], + ['kgreedisplaytempoffset_5341',['kGreeDisplayTempOffset',['../ir__Gree_8h.html#ab60baff4d0e83964d6e5b23994949a06',1,'ir_Gree.h']]], + ['kgreedisplaytempoutside_5342',['kGreeDisplayTempOutside',['../ir__Gree_8h.html#a737c90e90897053623b15b5579cdb6a1',1,'ir_Gree.h']]], + ['kgreedisplaytempset_5343',['kGreeDisplayTempSet',['../ir__Gree_8h.html#a20f7d0948b158f83655ee4187a104176',1,'ir_Gree.h']]], + ['kgreedisplaytempsize_5344',['kGreeDisplayTempSize',['../ir__Gree_8h.html#aad94a8d5de27b1a46c03c9e3773cf8ec',1,'ir_Gree.h']]], + ['kgreedry_5345',['kGreeDry',['../ir__Gree_8h.html#aa818bcc036988ee24fe0467d128d174f',1,'ir_Gree.h']]], + ['kgreefan_5346',['kGreeFan',['../ir__Gree_8h.html#aa1513ffe43257664f761e4e1a5c2a38f',1,'ir_Gree.h']]], + ['kgreefanauto_5347',['kGreeFanAuto',['../ir__Gree_8h.html#aaad16357e34078257315aad7155b2cd1',1,'ir_Gree.h']]], + ['kgreefanmax_5348',['kGreeFanMax',['../ir__Gree_8h.html#a8753f860f2f503a4a70609fb000654f2',1,'ir_Gree.h']]], + ['kgreefanmed_5349',['kGreeFanMed',['../ir__Gree_8h.html#a674d096a91a5db4b5b7f1b0650c833de',1,'ir_Gree.h']]], + ['kgreefanmin_5350',['kGreeFanMin',['../ir__Gree_8h.html#a34ca09b196c41acc85a4fa0036f3ac3b',1,'ir_Gree.h']]], + ['kgreefanoffset_5351',['kGreeFanOffset',['../ir__Gree_8h.html#a3227e6075f673408577884feb0e6ef10',1,'ir_Gree.h']]], + ['kgreefansize_5352',['kGreeFanSize',['../ir__Gree_8h.html#a8285633b179fbe513c6f8bd2c316e957',1,'ir_Gree.h']]], + ['kgreehdrmark_5353',['kGreeHdrMark',['../ir__Gree_8cpp.html#aaae182fb09bed73e37a5b5d3aee6a5fb',1,'ir_Gree.cpp']]], + ['kgreehdrspace_5354',['kGreeHdrSpace',['../ir__Gree_8cpp.html#a96b50632219c2b5808aea4ee9077b15c',1,'ir_Gree.cpp']]], + ['kgreeheat_5355',['kGreeHeat',['../ir__Gree_8h.html#ada5dac7b789497bf7a434a809d4070f6',1,'ir_Gree.h']]], + ['kgreeifeeloffset_5356',['kGreeIFeelOffset',['../ir__Gree_8h.html#a7253f3b97bade5353a72bfcf2df7976b',1,'ir_Gree.h']]], + ['kgreelightoffset_5357',['kGreeLightOffset',['../ir__Gree_8h.html#ade795164ac467f2547583b9654e2e471',1,'ir_Gree.h']]], + ['kgreemaxtempc_5358',['kGreeMaxTempC',['../ir__Gree_8h.html#a4c01aedfff06ed5a028c40010ad7bfa0',1,'ir_Gree.h']]], + ['kgreemaxtempf_5359',['kGreeMaxTempF',['../ir__Gree_8h.html#a6495898a7a6ddda1473b55820f4b6c44',1,'ir_Gree.h']]], + ['kgreemintempc_5360',['kGreeMinTempC',['../ir__Gree_8h.html#ad127acfc710e281a7b29023c8d1da8f6',1,'ir_Gree.h']]], + ['kgreemintempf_5361',['kGreeMinTempF',['../ir__Gree_8h.html#acf0ecb1b535894e3e790b668333fb66b',1,'ir_Gree.h']]], + ['kgreemsgspace_5362',['kGreeMsgSpace',['../ir__Gree_8cpp.html#a619ed3a2915196ab91d87db2b5a829fd',1,'ir_Gree.cpp']]], + ['kgreeonespace_5363',['kGreeOneSpace',['../ir__Gree_8cpp.html#ab139138084643ea0fca13b28412904e9',1,'ir_Gree.cpp']]], + ['kgreepower1offset_5364',['kGreePower1Offset',['../ir__Gree_8h.html#a300b990aa836926d38dfea0ee99dc295',1,'ir_Gree.h']]], + ['kgreepower2offset_5365',['kGreePower2Offset',['../ir__Gree_8h.html#af29131d47e6cba73682727cd5e8b243d',1,'ir_Gree.h']]], + ['kgreesleepoffset_5366',['kGreeSleepOffset',['../ir__Gree_8h.html#ab715200758a0a4ee2733baf924729132',1,'ir_Gree.h']]], + ['kgreestatelength_5367',['kGreeStateLength',['../IRremoteESP8266_8h.html#a5558b24542873d8475e1ee0e2439839f',1,'IRremoteESP8266.h']]], + ['kgreeswingauto_5368',['kGreeSwingAuto',['../ir__Gree_8h.html#a414a503ad11c1d1d3b68d8b630df1f3a',1,'ir_Gree.h']]], + ['kgreeswingautooffset_5369',['kGreeSwingAutoOffset',['../ir__Gree_8h.html#a60d3de1ba88a6b06c79205116fbd7869',1,'ir_Gree.h']]], + ['kgreeswingdown_5370',['kGreeSwingDown',['../ir__Gree_8h.html#abbe69b966ceb1f9eb60fe9c3fb18088d',1,'ir_Gree.h']]], + ['kgreeswingdownauto_5371',['kGreeSwingDownAuto',['../ir__Gree_8h.html#abc7d7b7de5dd2eb9c0a6ca28827aeb06',1,'ir_Gree.h']]], + ['kgreeswinglastpos_5372',['kGreeSwingLastPos',['../ir__Gree_8h.html#a630cd8fec01f13bfda0fffc1a0e59199',1,'ir_Gree.h']]], + ['kgreeswingmiddle_5373',['kGreeSwingMiddle',['../ir__Gree_8h.html#a12a7caa871f33a5bb83611b4efc7a42b',1,'ir_Gree.h']]], + ['kgreeswingmiddleauto_5374',['kGreeSwingMiddleAuto',['../ir__Gree_8h.html#ac9f85ef5c1bfeac1e4c759742e2d147f',1,'ir_Gree.h']]], + ['kgreeswingmiddledown_5375',['kGreeSwingMiddleDown',['../ir__Gree_8h.html#acad74b8154d73786e093fa215ab800b0',1,'ir_Gree.h']]], + ['kgreeswingmiddleup_5376',['kGreeSwingMiddleUp',['../ir__Gree_8h.html#aefbdd203df5b35eb61be1d0edd712c80',1,'ir_Gree.h']]], + ['kgreeswingsize_5377',['kGreeSwingSize',['../ir__Gree_8h.html#a287e3c06c9a1efbf7091841f2f689968',1,'ir_Gree.h']]], + ['kgreeswingup_5378',['kGreeSwingUp',['../ir__Gree_8h.html#adad431eb1010951fcf77dc4dac6449c6',1,'ir_Gree.h']]], + ['kgreeswingupauto_5379',['kGreeSwingUpAuto',['../ir__Gree_8h.html#a63f04add215785d4ccfe6ccec03d7667',1,'ir_Gree.h']]], + ['kgreetempextradegreefoffset_5380',['kGreeTempExtraDegreeFOffset',['../ir__Gree_8h.html#abbbca05f6971b4bc2d83d4e5bd79854c',1,'ir_Gree.h']]], + ['kgreetempoffset_5381',['kGreeTempOffset',['../ir__Gree_8h.html#a838def81d0f1253e7371fa237f5f0a34',1,'ir_Gree.h']]], + ['kgreetempsize_5382',['kGreeTempSize',['../ir__Gree_8h.html#a15e8555687b1e6bfc47cd4ee4079b700',1,'ir_Gree.h']]], + ['kgreetimerenabledoffset_5383',['kGreeTimerEnabledOffset',['../ir__Gree_8h.html#aec18110852ca714f58734749ef8d4e7d',1,'ir_Gree.h']]], + ['kgreetimerhalfhroffset_5384',['kGreeTimerHalfHrOffset',['../ir__Gree_8h.html#af0779698759e0b6b41bd1f0b77fbddea',1,'ir_Gree.h']]], + ['kgreetimerhoursoffset_5385',['kGreeTimerHoursOffset',['../ir__Gree_8h.html#a1aeba4b3c5bff86b541291ea29220a60',1,'ir_Gree.h']]], + ['kgreetimerhourssize_5386',['kGreeTimerHoursSize',['../ir__Gree_8h.html#af08673b8c795a0c9a710825ceacd6bdb',1,'ir_Gree.h']]], + ['kgreetimermax_5387',['kGreeTimerMax',['../ir__Gree_8h.html#a76048e03908dd0d22cc8cacfbd99a40b',1,'ir_Gree.h']]], + ['kgreetimertenshroffset_5388',['kGreeTimerTensHrOffset',['../ir__Gree_8h.html#a5ca305d48fde5b5c6792c7734b31b941',1,'ir_Gree.h']]], + ['kgreetimertenshrsize_5389',['kGreeTimerTensHrSize',['../ir__Gree_8h.html#a5d8b007e38dcec0327ed0e38705f05c0',1,'ir_Gree.h']]], + ['kgreeturbooffset_5390',['kGreeTurboOffset',['../ir__Gree_8h.html#a5fe9afa8e66edd95a94404abe00dd1f1',1,'ir_Gree.h']]], + ['kgreeusefahrenheitoffset_5391',['kGreeUseFahrenheitOffset',['../ir__Gree_8h.html#a741c43d31a99fd8b723315d9db0724cc',1,'ir_Gree.h']]], + ['kgreewifioffset_5392',['kGreeWiFiOffset',['../ir__Gree_8h.html#a993dede6398a2c4ec2c1e025f4746768',1,'ir_Gree.h']]], + ['kgreexfanoffset_5393',['kGreeXfanOffset',['../ir__Gree_8h.html#a2388c44b2826823349d02dec581da584',1,'ir_Gree.h']]], + ['kgreezerospace_5394',['kGreeZeroSpace',['../ir__Gree_8cpp.html#aa4694ba8ff0e14cd6b9c4730675c385f',1,'ir_Gree.cpp']]], + ['khaieracauto_5395',['kHaierAcAuto',['../ir__Haier_8h.html#ac33a02f63ee77e0d3050598511730865',1,'ir_Haier.h']]], + ['khaieracbitmark_5396',['kHaierAcBitMark',['../ir__Haier_8cpp.html#a4dec38325834c873c03588a8046f0963',1,'ir_Haier.cpp']]], + ['khaieracbits_5397',['kHaierACBits',['../IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720',1,'IRremoteESP8266.h']]], + ['khaieraccmdfan_5398',['kHaierAcCmdFan',['../ir__Haier_8h.html#a447818ec7970e2ca09540afe44ecf90d',1,'ir_Haier.h']]], + ['khaieraccmdhealth_5399',['kHaierAcCmdHealth',['../ir__Haier_8h.html#a83cd0b5f307d9ae3ed0a3c6ed8fef94d',1,'ir_Haier.h']]], + ['khaieraccmdmode_5400',['kHaierAcCmdMode',['../ir__Haier_8h.html#a4543aa4ee28323bb9cb5c077f9bf9da1',1,'ir_Haier.h']]], + ['khaieraccmdoff_5401',['kHaierAcCmdOff',['../ir__Haier_8h.html#a96599917176ee244874926d1a530dd7e',1,'ir_Haier.h']]], + ['khaieraccmdon_5402',['kHaierAcCmdOn',['../ir__Haier_8h.html#a83973c2ad2b7b95611c81628c387e0d8',1,'ir_Haier.h']]], + ['khaieraccmdsleep_5403',['kHaierAcCmdSleep',['../ir__Haier_8h.html#abe52b62dd513395f2a8c7d47fa2fc514',1,'ir_Haier.h']]], + ['khaieraccmdswing_5404',['kHaierAcCmdSwing',['../ir__Haier_8h.html#afab164c2aabf39fdc1e956ff88af19d9',1,'ir_Haier.h']]], + ['khaieraccmdtempdown_5405',['kHaierAcCmdTempDown',['../ir__Haier_8h.html#aecc31139b4e45a7784669554c6fdbb54',1,'ir_Haier.h']]], + ['khaieraccmdtempup_5406',['kHaierAcCmdTempUp',['../ir__Haier_8h.html#aab5363f07920971c31d6acf8e70d392c',1,'ir_Haier.h']]], + ['khaieraccmdtimercancel_5407',['kHaierAcCmdTimerCancel',['../ir__Haier_8h.html#ab780da80fc471f004c5b34dc8f347d00',1,'ir_Haier.h']]], + ['khaieraccmdtimerset_5408',['kHaierAcCmdTimerSet',['../ir__Haier_8h.html#a9bd7c081d460a4ae5e3eac977f3916e4',1,'ir_Haier.h']]], + ['khaieraccool_5409',['kHaierAcCool',['../ir__Haier_8h.html#a83cd81ea1115f42a403ea5ee07a32bbb',1,'ir_Haier.h']]], + ['khaieracdefaultrepeat_5410',['kHaierAcDefaultRepeat',['../IRremoteESP8266_8h.html#a882914932449e33933b6f8e224cbaf3c',1,'IRremoteESP8266.h']]], + ['khaieracdeftemp_5411',['kHaierAcDefTemp',['../ir__Haier_8h.html#a86c9e8176fc01e52e883cadcc1d31763',1,'ir_Haier.h']]], + ['khaieracdry_5412',['kHaierAcDry',['../ir__Haier_8h.html#a3d36fbe1308221248f45044e5a671636',1,'ir_Haier.h']]], + ['khaieracfan_5413',['kHaierAcFan',['../ir__Haier_8h.html#af4049629b2139ca82471dfed1e1ced15',1,'ir_Haier.h']]], + ['khaieracfanauto_5414',['kHaierAcFanAuto',['../ir__Haier_8h.html#a8a34e74f7083caa98ed4afc31294539e',1,'ir_Haier.h']]], + ['khaieracfanhigh_5415',['kHaierAcFanHigh',['../ir__Haier_8h.html#aa4d9e45ca5777707778ef78a3284da19',1,'ir_Haier.h']]], + ['khaieracfanlow_5416',['kHaierAcFanLow',['../ir__Haier_8h.html#ae31e878b09284a6730a11e2017cfd7a8',1,'ir_Haier.h']]], + ['khaieracfanmed_5417',['kHaierAcFanMed',['../ir__Haier_8h.html#a5dfa833768e549964aa0bf8a336c32b0',1,'ir_Haier.h']]], + ['khaierachdr_5418',['kHaierAcHdr',['../ir__Haier_8cpp.html#a0f5dbd2eb92f10bc354e6b0a7a074084',1,'ir_Haier.cpp']]], + ['khaierachdrgap_5419',['kHaierAcHdrGap',['../ir__Haier_8cpp.html#a4c3fe62f8e5abf5d084009bbd4c4f878',1,'ir_Haier.cpp']]], + ['khaierachealthbitoffset_5420',['kHaierAcHealthBitOffset',['../ir__Haier_8h.html#ae2e5e80f891c9bbca2844d808b0b3d1b',1,'ir_Haier.h']]], + ['khaieracheat_5421',['kHaierAcHeat',['../ir__Haier_8h.html#a0edb011bdf85197e63a32d37f8517dd2',1,'ir_Haier.h']]], + ['khaierachourssize_5422',['kHaierAcHoursSize',['../ir__Haier_8h.html#a3db7b7dddae84a5d12101c5cdd06975e',1,'ir_Haier.h']]], + ['khaieracmaxtemp_5423',['kHaierAcMaxTemp',['../ir__Haier_8h.html#a925252489fe34d9932151817d0dbe90b',1,'ir_Haier.h']]], + ['khaieracmaxtime_5424',['kHaierAcMaxTime',['../ir__Haier_8h.html#ae04e48e926a7533c3b62f0ff991e1f88',1,'ir_Haier.h']]], + ['khaieracmingap_5425',['kHaierAcMinGap',['../ir__Haier_8cpp.html#a7ab1f44876a931da765b52e4633e5e82',1,'ir_Haier.cpp']]], + ['khaieracminssize_5426',['kHaierAcMinsSize',['../ir__Haier_8h.html#a105e047084515305e896d8ff776d05e6',1,'ir_Haier.h']]], + ['khaieracmintemp_5427',['kHaierAcMinTemp',['../ir__Haier_8h.html#aafd2a4f38ecf78482a5a94e9c6c23f1c',1,'ir_Haier.h']]], + ['khaieracmodeoffset_5428',['kHaierAcModeOffset',['../ir__Haier_8h.html#a93fdbb1742923cf3f738c8078d5660f8',1,'ir_Haier.h']]], + ['khaieracofftimeroffset_5429',['kHaierAcOffTimerOffset',['../ir__Haier_8h.html#ace8cd6ed41c3f247ada91052d653b515',1,'ir_Haier.h']]], + ['khaieraconespace_5430',['kHaierAcOneSpace',['../ir__Haier_8cpp.html#a43739aa786e08fca2a4a62a680b5c38b',1,'ir_Haier.cpp']]], + ['khaieracontimeroffset_5431',['kHaierAcOnTimerOffset',['../ir__Haier_8h.html#a5189092c278fb5c31efd4f539f905da5',1,'ir_Haier.h']]], + ['khaieracprefix_5432',['kHaierAcPrefix',['../ir__Haier_8h.html#a8502c9bea40205e01e6a01b47354272a',1,'ir_Haier.h']]], + ['khaieracsleepbit_5433',['kHaierAcSleepBit',['../ir__Haier_8h.html#ac63b91acdffa55d440b08aee05bda5dc',1,'ir_Haier.h']]], + ['khaieracsleepbitoffset_5434',['kHaierAcSleepBitOffset',['../ir__Haier_8h.html#ad9f4cbfd8e6a5874d661195858156eec',1,'ir_Haier.h']]], + ['khaieracstatelength_5435',['kHaierACStateLength',['../IRremoteESP8266_8h.html#afb4cd0c1a9c689d862e7095f0ab6dbe5',1,'IRremoteESP8266.h']]], + ['khaieracswingchg_5436',['kHaierAcSwingChg',['../ir__Haier_8h.html#af65a92a0b9d29a52ac882d4457e954e8',1,'ir_Haier.h']]], + ['khaieracswingdown_5437',['kHaierAcSwingDown',['../ir__Haier_8h.html#a2cf3a2102c6d4f9aede44efe853ffaa8',1,'ir_Haier.h']]], + ['khaieracswingoff_5438',['kHaierAcSwingOff',['../ir__Haier_8h.html#ac21f78c3cef931154b3fc953bbebc3b4',1,'ir_Haier.h']]], + ['khaieracswingoffset_5439',['kHaierAcSwingOffset',['../ir__Haier_8h.html#a0872af0b2b3f22f6681917b9c81c3bbd',1,'ir_Haier.h']]], + ['khaieracswingsize_5440',['kHaierAcSwingSize',['../ir__Haier_8h.html#ad032725404a02c0e5a93350f20daf6e1',1,'ir_Haier.h']]], + ['khaieracswingup_5441',['kHaierAcSwingUp',['../ir__Haier_8h.html#a4bff8829604ee927dda5cfc54bd6cfe6',1,'ir_Haier.h']]], + ['khaieractimeoffset_5442',['kHaierAcTimeOffset',['../ir__Haier_8h.html#abb7a8ec83d3c0dbbe4d660d6bf627f23',1,'ir_Haier.h']]], + ['khaieracyrw02auto_5443',['kHaierAcYrw02Auto',['../ir__Haier_8h.html#aa025eeba1c344c50cc98334c97a3c174',1,'ir_Haier.h']]], + ['khaieracyrw02bits_5444',['kHaierACYRW02Bits',['../IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27',1,'IRremoteESP8266.h']]], + ['khaieracyrw02buttonfan_5445',['kHaierAcYrw02ButtonFan',['../ir__Haier_8h.html#a0f9c265510e1e27f38817f08ef9c622b',1,'ir_Haier.h']]], + ['khaieracyrw02buttonhealth_5446',['kHaierAcYrw02ButtonHealth',['../ir__Haier_8h.html#ab1dc6c0a4ed59446bb69c4dd671c78cd',1,'ir_Haier.h']]], + ['khaieracyrw02buttonmode_5447',['kHaierAcYrw02ButtonMode',['../ir__Haier_8h.html#a74466c50b450b08407c9f226a5d657e5',1,'ir_Haier.h']]], + ['khaieracyrw02buttonpower_5448',['kHaierAcYrw02ButtonPower',['../ir__Haier_8h.html#af36b9c628a697f6c596052ecd143d80b',1,'ir_Haier.h']]], + ['khaieracyrw02buttonsleep_5449',['kHaierAcYrw02ButtonSleep',['../ir__Haier_8h.html#a5c7b8ff351e3d0167ec2c897c4820c40',1,'ir_Haier.h']]], + ['khaieracyrw02buttonswing_5450',['kHaierAcYrw02ButtonSwing',['../ir__Haier_8h.html#aa10c558317448783535e96be5876505c',1,'ir_Haier.h']]], + ['khaieracyrw02buttontempdown_5451',['kHaierAcYrw02ButtonTempDown',['../ir__Haier_8h.html#af4a9e5f7f705c331531ea2863dbbd11d',1,'ir_Haier.h']]], + ['khaieracyrw02buttontempup_5452',['kHaierAcYrw02ButtonTempUp',['../ir__Haier_8h.html#a3b24373f9c812f93eca05ee47e61d6e0',1,'ir_Haier.h']]], + ['khaieracyrw02buttonturbo_5453',['kHaierAcYrw02ButtonTurbo',['../ir__Haier_8h.html#ad80547c526b2eba142297715c0a0636d',1,'ir_Haier.h']]], + ['khaieracyrw02cool_5454',['kHaierAcYrw02Cool',['../ir__Haier_8h.html#a30c5d4e61ae3112a8a3e3622eecbb10b',1,'ir_Haier.h']]], + ['khaieracyrw02defaultrepeat_5455',['kHaierAcYrw02DefaultRepeat',['../IRremoteESP8266_8h.html#a62412e221207dbc2660f93dc265b4218',1,'IRremoteESP8266.h']]], + ['khaieracyrw02dry_5456',['kHaierAcYrw02Dry',['../ir__Haier_8h.html#a66cd902f2d35b4c8f66f085a0950a5fc',1,'ir_Haier.h']]], + ['khaieracyrw02fan_5457',['kHaierAcYrw02Fan',['../ir__Haier_8h.html#a35f50f043a2dda75c59507c1ed845b5d',1,'ir_Haier.h']]], + ['khaieracyrw02fanauto_5458',['kHaierAcYrw02FanAuto',['../ir__Haier_8h.html#ad554d38035ac15e4ea8b855802886989',1,'ir_Haier.h']]], + ['khaieracyrw02fanhigh_5459',['kHaierAcYrw02FanHigh',['../ir__Haier_8h.html#ab47bc48ac77fbf6734a41d10f0a53e4a',1,'ir_Haier.h']]], + ['khaieracyrw02fanlow_5460',['kHaierAcYrw02FanLow',['../ir__Haier_8h.html#a9a0a14ab98e1e52b60b9b9bf611c20cc',1,'ir_Haier.h']]], + ['khaieracyrw02fanmed_5461',['kHaierAcYrw02FanMed',['../ir__Haier_8h.html#a65583649324c6039112e7db26d685afc',1,'ir_Haier.h']]], + ['khaieracyrw02fanoffset_5462',['kHaierAcYrw02FanOffset',['../ir__Haier_8h.html#a0910d1996a451c98383124a39ef65f84',1,'ir_Haier.h']]], + ['khaieracyrw02fansize_5463',['kHaierAcYrw02FanSize',['../ir__Haier_8h.html#aa2c6bd47b47e0ea1b51931fec7daef4d',1,'ir_Haier.h']]], + ['khaieracyrw02healthoffset_5464',['kHaierAcYrw02HealthOffset',['../ir__Haier_8h.html#a4bcb42b359472cf770e0710b5369493b',1,'ir_Haier.h']]], + ['khaieracyrw02heat_5465',['kHaierAcYrw02Heat',['../ir__Haier_8h.html#aa0873975b6649294a3c9943130cb7a38',1,'ir_Haier.h']]], + ['khaieracyrw02modeoffset_5466',['kHaierAcYrw02ModeOffset',['../ir__Haier_8h.html#a027199b609d29ead8aec9bb89178cb30',1,'ir_Haier.h']]], + ['khaieracyrw02power_5467',['kHaierAcYrw02Power',['../ir__Haier_8h.html#abe59df7abf20a66107516054f3a2d32b',1,'ir_Haier.h']]], + ['khaieracyrw02poweroffset_5468',['kHaierAcYrw02PowerOffset',['../ir__Haier_8h.html#a67401152b0aa06fb7922bbca743cd600',1,'ir_Haier.h']]], + ['khaieracyrw02prefix_5469',['kHaierAcYrw02Prefix',['../ir__Haier_8h.html#ac62d0f7ca94e064712f8a7a80da2f11e',1,'ir_Haier.h']]], + ['khaieracyrw02sleep_5470',['kHaierAcYrw02Sleep',['../ir__Haier_8h.html#abb70fe8ca6004246345df3d841047252',1,'ir_Haier.h']]], + ['khaieracyrw02sleepoffset_5471',['kHaierAcYrw02SleepOffset',['../ir__Haier_8h.html#ac651bfee5d261124700c81ec5db184a7',1,'ir_Haier.h']]], + ['khaieracyrw02statelength_5472',['kHaierACYRW02StateLength',['../IRremoteESP8266_8h.html#a8f52b7d4595c117cf0b81ffbd1148cda',1,'IRremoteESP8266.h']]], + ['khaieracyrw02swingauto_5473',['kHaierAcYrw02SwingAuto',['../ir__Haier_8h.html#a95ae88223d910d4d966949241bccff8d',1,'ir_Haier.h']]], + ['khaieracyrw02swingbottom_5474',['kHaierAcYrw02SwingBottom',['../ir__Haier_8h.html#aa4b64385da5e9b2a89e15f70cd8c89e9',1,'ir_Haier.h']]], + ['khaieracyrw02swingdown_5475',['kHaierAcYrw02SwingDown',['../ir__Haier_8h.html#aab380411ac07b2b7f67956a5bbc362fb',1,'ir_Haier.h']]], + ['khaieracyrw02swingmiddle_5476',['kHaierAcYrw02SwingMiddle',['../ir__Haier_8h.html#a32d6dd98a050711bf928bf250b769839',1,'ir_Haier.h']]], + ['khaieracyrw02swingoff_5477',['kHaierAcYrw02SwingOff',['../ir__Haier_8h.html#a62570c15418cf24a94c92b162967f892',1,'ir_Haier.h']]], + ['khaieracyrw02swingtop_5478',['kHaierAcYrw02SwingTop',['../ir__Haier_8h.html#adf10f1bc1b293c684232cb6398631f70',1,'ir_Haier.h']]], + ['khaieracyrw02turbohigh_5479',['kHaierAcYrw02TurboHigh',['../ir__Haier_8h.html#ab096c15c69f242b99fbc1e4d7bd7548e',1,'ir_Haier.h']]], + ['khaieracyrw02turbolow_5480',['kHaierAcYrw02TurboLow',['../ir__Haier_8h.html#a19b7f4aee8115eb77267c415d8b3bd82',1,'ir_Haier.h']]], + ['khaieracyrw02turbooff_5481',['kHaierAcYrw02TurboOff',['../ir__Haier_8h.html#aa06ba46287b5806a6373e921cee34a51',1,'ir_Haier.h']]], + ['khaieracyrw02turbooffset_5482',['kHaierAcYrw02TurboOffset',['../ir__Haier_8h.html#a6581fc8ec43b9ac9f877bf27231554bd',1,'ir_Haier.h']]], + ['khaieracyrw02turbosize_5483',['kHaierAcYrw02TurboSize',['../ir__Haier_8h.html#a6ad469ec094d8af5a68cc94a744079bb',1,'ir_Haier.h']]], + ['khaieraczerospace_5484',['kHaierAcZeroSpace',['../ir__Haier_8cpp.html#af2b1a4f27c7b50a1e60ae00bbbec7a16',1,'ir_Haier.cpp']]], + ['kheader_5485',['kHeader',['../IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed',1,'IRrecv.h']]], + ['khealthstr_5486',['kHealthStr',['../IRtext_8cpp.html#a12474bbd4a7f700c922bcc1de240894f',1,'kHealthStr(): IRtext.cpp'],['../IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42',1,'kHealthStr(): IRtext.cpp']]], + ['kheatstr_5487',['kHeatStr',['../IRtext_8cpp.html#a3a16f1dabca01c8f8e5ba1516408ba39',1,'kHeatStr(): IRtext.cpp'],['../IRtext_8h.html#a058df7d2db245e307719d025352d464d',1,'kHeatStr(): IRtext.cpp']]], + ['khigheststr_5488',['kHighestStr',['../IRtext_8cpp.html#a219f1d54c5ea75bd5c736efc0d7d7275',1,'kHighestStr(): IRtext.cpp'],['../IRtext_8h.html#ad7706307f507466526b4288e33385bde',1,'kHighestStr(): IRtext.cpp']]], + ['khighnibble_5489',['kHighNibble',['../IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032',1,'IRutils.h']]], + ['khighstr_5490',['kHighStr',['../IRtext_8cpp.html#a127a20ad54e671f48a8faa822ff006f4',1,'kHighStr(): IRtext.cpp'],['../IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1',1,'kHighStr(): IRtext.cpp']]], + ['khistr_5491',['kHiStr',['../IRtext_8cpp.html#a7f4994ce51aed70ce6b5b4c88b886466',1,'kHiStr(): IRtext.cpp'],['../IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd',1,'kHiStr(): IRtext.cpp']]], + ['khitachiac1auto_5492',['kHitachiAc1Auto',['../ir__Hitachi_8h.html#a2689ef34702107dc3dce3d1cfa260fc9',1,'ir_Hitachi.h']]], + ['khitachiac1bits_5493',['kHitachiAc1Bits',['../IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1',1,'IRremoteESP8266.h']]], + ['khitachiac1checksumstartbyte_5494',['kHitachiAc1ChecksumStartByte',['../ir__Hitachi_8h.html#afafa689c5e922b812f63e08941feb2a7',1,'ir_Hitachi.h']]], + ['khitachiac1cool_5495',['kHitachiAc1Cool',['../ir__Hitachi_8h.html#a1146eda7688843d16094acf7a19a75ac',1,'ir_Hitachi.h']]], + ['khitachiac1dry_5496',['kHitachiAc1Dry',['../ir__Hitachi_8h.html#a82895db5201610844da803bf333102a3',1,'ir_Hitachi.h']]], + ['khitachiac1fan_5497',['kHitachiAc1Fan',['../ir__Hitachi_8h.html#ac5a3ba0e0e4ed02d4792d5a8e6a22654',1,'ir_Hitachi.h']]], + ['khitachiac1fanauto_5498',['kHitachiAc1FanAuto',['../ir__Hitachi_8h.html#a6f9adda7b08ec4b8566ceb4d79966689',1,'ir_Hitachi.h']]], + ['khitachiac1fanbyte_5499',['kHitachiAc1FanByte',['../ir__Hitachi_8h.html#afe6b5951ba3b4e7ad5400f30228d106e',1,'ir_Hitachi.h']]], + ['khitachiac1fanhigh_5500',['kHitachiAc1FanHigh',['../ir__Hitachi_8h.html#ace677cf030da9d74eda0f50d54c91411',1,'ir_Hitachi.h']]], + ['khitachiac1fanlow_5501',['kHitachiAc1FanLow',['../ir__Hitachi_8h.html#a011219de5c0e2ba043a8be6345f8cb05',1,'ir_Hitachi.h']]], + ['khitachiac1fanmed_5502',['kHitachiAc1FanMed',['../ir__Hitachi_8h.html#afbc2a535d85adb80cbcbac63e2432b1a',1,'ir_Hitachi.h']]], + ['khitachiac1fanoffset_5503',['kHitachiAc1FanOffset',['../ir__Hitachi_8h.html#af533c283666d80c0b9348f706909f4c4',1,'ir_Hitachi.h']]], + ['khitachiac1fansize_5504',['kHitachiAc1FanSize',['../ir__Hitachi_8h.html#a2b2a24680efaf1eeaf76dacaabef5c1d',1,'ir_Hitachi.h']]], + ['khitachiac1hdrmark_5505',['kHitachiAc1HdrMark',['../ir__Hitachi_8cpp.html#a2b1891174c78be6f960e92b389d25fe7',1,'ir_Hitachi.cpp']]], + ['khitachiac1hdrspace_5506',['kHitachiAc1HdrSpace',['../ir__Hitachi_8cpp.html#a93f34ee53a375dd7f4ccf82458453701',1,'ir_Hitachi.cpp']]], + ['khitachiac1heat_5507',['kHitachiAc1Heat',['../ir__Hitachi_8h.html#abd5d4db30d6be3b990a74d4481e7eabe',1,'ir_Hitachi.h']]], + ['khitachiac1modebyte_5508',['kHitachiAc1ModeByte',['../ir__Hitachi_8h.html#a57e27b66ff6d471c0dd335b610bc6e24',1,'ir_Hitachi.h']]], + ['khitachiac1model_5fa_5509',['kHitachiAc1Model_A',['../ir__Hitachi_8h.html#a5f8fc3bb000d46705e4530ca0a8f7b60',1,'ir_Hitachi.h']]], + ['khitachiac1model_5fb_5510',['kHitachiAc1Model_B',['../ir__Hitachi_8h.html#a2d894a528c538b8a3922e2500241a55b',1,'ir_Hitachi.h']]], + ['khitachiac1modelbyte_5511',['kHitachiAc1ModelByte',['../ir__Hitachi_8h.html#a2e2a76b8b7decef99cfb7b197e8fb7f7',1,'ir_Hitachi.h']]], + ['khitachiac1modeloffset_5512',['kHitachiAc1ModelOffset',['../ir__Hitachi_8h.html#a8a440a64e6e164511e0976dc5b6585ff',1,'ir_Hitachi.h']]], + ['khitachiac1modelsize_5513',['kHitachiAc1ModelSize',['../ir__Hitachi_8h.html#ab74bbcb475b7eaf33f70dbfdb853d8c3',1,'ir_Hitachi.h']]], + ['khitachiac1modeoffset_5514',['kHitachiAc1ModeOffset',['../ir__Hitachi_8h.html#a3f010fa5ae43ee36771be18659d8bc80',1,'ir_Hitachi.h']]], + ['khitachiac1modesize_5515',['kHitachiAc1ModeSize',['../ir__Hitachi_8h.html#a38b456d96602e83e7832e2a7af75f321',1,'ir_Hitachi.h']]], + ['khitachiac1offtimerhighbyte_5516',['kHitachiAc1OffTimerHighByte',['../ir__Hitachi_8h.html#a36e6b7fc328ee247c11f5779487119b6',1,'ir_Hitachi.h']]], + ['khitachiac1offtimerlowbyte_5517',['kHitachiAc1OffTimerLowByte',['../ir__Hitachi_8h.html#ac8eaedd191009b2ddaf1e047ac6ecf11',1,'ir_Hitachi.h']]], + ['khitachiac1ontimerhighbyte_5518',['kHitachiAc1OnTimerHighByte',['../ir__Hitachi_8h.html#aff6907e9999561abceac42e4cce1dc3b',1,'ir_Hitachi.h']]], + ['khitachiac1ontimerlowbyte_5519',['kHitachiAc1OnTimerLowByte',['../ir__Hitachi_8h.html#a95fef3be6809026b714847c709ba655b',1,'ir_Hitachi.h']]], + ['khitachiac1powerbyte_5520',['kHitachiAc1PowerByte',['../ir__Hitachi_8h.html#acda489ff6137ab3ebfb1795a32e1ec8e',1,'ir_Hitachi.h']]], + ['khitachiac1poweroffset_5521',['kHitachiAc1PowerOffset',['../ir__Hitachi_8h.html#a3fdcd0375b85ac2641d9d5cc6e4770f8',1,'ir_Hitachi.h']]], + ['khitachiac1powertoggleoffset_5522',['kHitachiAc1PowerToggleOffset',['../ir__Hitachi_8h.html#aac994777ce070ad69550229824800ee0',1,'ir_Hitachi.h']]], + ['khitachiac1sleep1_5523',['kHitachiAc1Sleep1',['../ir__Hitachi_8h.html#ab4ca89a9d8c8034e6a3d8ff17b09f3d5',1,'ir_Hitachi.h']]], + ['khitachiac1sleep2_5524',['kHitachiAc1Sleep2',['../ir__Hitachi_8h.html#a1e1a1ea1743b38da6bc6be63fa796689',1,'ir_Hitachi.h']]], + ['khitachiac1sleep3_5525',['kHitachiAc1Sleep3',['../ir__Hitachi_8h.html#a17eaa63f13a3c04aede9f485c310a930',1,'ir_Hitachi.h']]], + ['khitachiac1sleep4_5526',['kHitachiAc1Sleep4',['../ir__Hitachi_8h.html#a21360448a538fbd9491aa9dd28e6c545',1,'ir_Hitachi.h']]], + ['khitachiac1sleepbyte_5527',['kHitachiAc1SleepByte',['../ir__Hitachi_8h.html#ac693a15878e7cdc8e1f575502ea82843',1,'ir_Hitachi.h']]], + ['khitachiac1sleepoff_5528',['kHitachiAc1SleepOff',['../ir__Hitachi_8h.html#a96f87cb3838a1e1aab4b8407dcfc5b78',1,'ir_Hitachi.h']]], + ['khitachiac1sleepoffset_5529',['kHitachiAc1SleepOffset',['../ir__Hitachi_8h.html#a277ca55dbfd35258ea40059bdff62488',1,'ir_Hitachi.h']]], + ['khitachiac1sleepsize_5530',['kHitachiAc1SleepSize',['../ir__Hitachi_8h.html#a199cedd7120057f735ffc640f93a9a1a',1,'ir_Hitachi.h']]], + ['khitachiac1statelength_5531',['kHitachiAc1StateLength',['../IRremoteESP8266_8h.html#abb5e2ddb1a8d3c6fa7a94dbe1989ec5d',1,'IRremoteESP8266.h']]], + ['khitachiac1swingbyte_5532',['kHitachiAc1SwingByte',['../ir__Hitachi_8h.html#a5a283583007b26c1b45d8d7afcd55408',1,'ir_Hitachi.h']]], + ['khitachiac1swinghoffset_5533',['kHitachiAc1SwingHOffset',['../ir__Hitachi_8h.html#ab35d4bb6c17fc5bbcb5385a642476238',1,'ir_Hitachi.h']]], + ['khitachiac1swingtoggleoffset_5534',['kHitachiAc1SwingToggleOffset',['../ir__Hitachi_8h.html#a08eac3b64687e83229648c8664d75dc4',1,'ir_Hitachi.h']]], + ['khitachiac1swingvoffset_5535',['kHitachiAc1SwingVOffset',['../ir__Hitachi_8h.html#af4e410f10812d49175cd419ed678535b',1,'ir_Hitachi.h']]], + ['khitachiac1tempauto_5536',['kHitachiAc1TempAuto',['../ir__Hitachi_8h.html#ad402dff999a97b50b392572899522b6a',1,'ir_Hitachi.h']]], + ['khitachiac1tempbyte_5537',['kHitachiAc1TempByte',['../ir__Hitachi_8h.html#a03185c3b2ddb62d12267da014796da56',1,'ir_Hitachi.h']]], + ['khitachiac1tempdelta_5538',['kHitachiAc1TempDelta',['../ir__Hitachi_8h.html#a279c856a2b4d25651b117a8c654cb48d',1,'ir_Hitachi.h']]], + ['khitachiac1tempoffset_5539',['kHitachiAc1TempOffset',['../ir__Hitachi_8h.html#a8a92aa41be23301229ecec1486714b9a',1,'ir_Hitachi.h']]], + ['khitachiac1tempsize_5540',['kHitachiAc1TempSize',['../ir__Hitachi_8h.html#affb52642edc8f2231f0dc83bc5271885',1,'ir_Hitachi.h']]], + ['khitachiac1timersize_5541',['kHitachiAc1TimerSize',['../ir__Hitachi_8h.html#afd7f469f67f55263b0031b325232751b',1,'ir_Hitachi.h']]], + ['khitachiac2bits_5542',['kHitachiAc2Bits',['../IRremoteESP8266_8h.html#a362a0b0b0afc216cf8162a3724cf073a',1,'IRremoteESP8266.h']]], + ['khitachiac2statelength_5543',['kHitachiAc2StateLength',['../IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352',1,'IRremoteESP8266.h']]], + ['khitachiac344bits_5544',['kHitachiAc344Bits',['../IRremoteESP8266_8h.html#a204fc2410c3d555a37b152a01dceead0',1,'IRremoteESP8266.h']]], + ['khitachiac344buttonfan_5545',['kHitachiAc344ButtonFan',['../ir__Hitachi_8h.html#a5f33b956ec83ee0004785a9c44bd5b0b',1,'ir_Hitachi.h']]], + ['khitachiac344buttonpowermode_5546',['kHitachiAc344ButtonPowerMode',['../ir__Hitachi_8h.html#a3816a8ad86e03f8c5870057e7ad86335',1,'ir_Hitachi.h']]], + ['khitachiac344buttonswingh_5547',['kHitachiAc344ButtonSwingH',['../ir__Hitachi_8h.html#a10dea534868d76d99e91458ee28f5fe9',1,'ir_Hitachi.h']]], + ['khitachiac344buttonswingv_5548',['kHitachiAc344ButtonSwingV',['../ir__Hitachi_8h.html#a95c1b0ee7e3802631f4c2708371e7d34',1,'ir_Hitachi.h']]], + ['khitachiac344buttontempdown_5549',['kHitachiAc344ButtonTempDown',['../ir__Hitachi_8h.html#a05d9bd95037669f1d3743d935471db33',1,'ir_Hitachi.h']]], + ['khitachiac344buttontempup_5550',['kHitachiAc344ButtonTempUp',['../ir__Hitachi_8h.html#a74abf2ce4ed5918bf68f485eff179578',1,'ir_Hitachi.h']]], + ['khitachiac344cool_5551',['kHitachiAc344Cool',['../ir__Hitachi_8h.html#a92d4d8dea34a9387e55852b6b5289328',1,'ir_Hitachi.h']]], + ['khitachiac344dry_5552',['kHitachiAc344Dry',['../ir__Hitachi_8h.html#a37697339ddc2ffaf4ee13b5e140adf2c',1,'ir_Hitachi.h']]], + ['khitachiac344fan_5553',['kHitachiAc344Fan',['../ir__Hitachi_8h.html#a296cd0fc1f414a4e15ce228b5a794bcb',1,'ir_Hitachi.h']]], + ['khitachiac344fanauto_5554',['kHitachiAc344FanAuto',['../ir__Hitachi_8h.html#a6439744edb1ae4dd9e8ea2097fac7a9d',1,'ir_Hitachi.h']]], + ['khitachiac344fanhigh_5555',['kHitachiAc344FanHigh',['../ir__Hitachi_8h.html#a83ea1924948ce9ac8266ab64a41f3ebd',1,'ir_Hitachi.h']]], + ['khitachiac344fanlow_5556',['kHitachiAc344FanLow',['../ir__Hitachi_8h.html#acbbb61fde653c84a8e35865fa724872c',1,'ir_Hitachi.h']]], + ['khitachiac344fanmax_5557',['kHitachiAc344FanMax',['../ir__Hitachi_8h.html#af041ed41027b8e444e3069d9a3481c51',1,'ir_Hitachi.h']]], + ['khitachiac344fanmedium_5558',['kHitachiAc344FanMedium',['../ir__Hitachi_8h.html#aa6d47b5c28f758aa297b345cbf853c9a',1,'ir_Hitachi.h']]], + ['khitachiac344fanmin_5559',['kHitachiAc344FanMin',['../ir__Hitachi_8h.html#ac4bafed10c76739698e9a35183beb970',1,'ir_Hitachi.h']]], + ['khitachiac344heat_5560',['kHitachiAc344Heat',['../ir__Hitachi_8h.html#a6c4102910d21dc838efee1fb2477218d',1,'ir_Hitachi.h']]], + ['khitachiac344maxtemp_5561',['kHitachiAc344MaxTemp',['../ir__Hitachi_8h.html#a4a394fc23fb119ba67e3ca53e4b88f7f',1,'ir_Hitachi.h']]], + ['khitachiac344mintemp_5562',['kHitachiAc344MinTemp',['../ir__Hitachi_8h.html#a7322f7769c9c1af2311180474e5b0f57',1,'ir_Hitachi.h']]], + ['khitachiac344statelength_5563',['kHitachiAc344StateLength',['../IRremoteESP8266_8h.html#a2192f6b7c353f7f124dff3b57eab0659',1,'IRremoteESP8266.h']]], + ['khitachiac344swinghauto_5564',['kHitachiAc344SwingHAuto',['../ir__Hitachi_8h.html#a4f93eccee6e3e5f5c49c84034ca25af3',1,'ir_Hitachi.h']]], + ['khitachiac344swinghbyte_5565',['kHitachiAc344SwingHByte',['../ir__Hitachi_8h.html#a132b64e007043ade4f209b0416fd5f4d',1,'ir_Hitachi.h']]], + ['khitachiac344swinghleft_5566',['kHitachiAc344SwingHLeft',['../ir__Hitachi_8h.html#af714a1eb296b05f3fc8167aff5419764',1,'ir_Hitachi.h']]], + ['khitachiac344swinghleftmax_5567',['kHitachiAc344SwingHLeftMax',['../ir__Hitachi_8h.html#ad0c5636ac0ccfd7e9cd087101bd5d204',1,'ir_Hitachi.h']]], + ['khitachiac344swinghmiddle_5568',['kHitachiAc344SwingHMiddle',['../ir__Hitachi_8h.html#a7e4372e02d72723049b378e955070c21',1,'ir_Hitachi.h']]], + ['khitachiac344swinghoffset_5569',['kHitachiAc344SwingHOffset',['../ir__Hitachi_8h.html#a7e8e57b0b37f20a502eb66f13980989c',1,'ir_Hitachi.h']]], + ['khitachiac344swinghright_5570',['kHitachiAc344SwingHRight',['../ir__Hitachi_8h.html#af4b087dec06cfd86920dbf9df22aca63',1,'ir_Hitachi.h']]], + ['khitachiac344swinghrightmax_5571',['kHitachiAc344SwingHRightMax',['../ir__Hitachi_8h.html#a90cffc131be89a36d352c462403f689f',1,'ir_Hitachi.h']]], + ['khitachiac344swinghsize_5572',['kHitachiAc344SwingHSize',['../ir__Hitachi_8h.html#aadd389cd818207920c1e8efef53fde91',1,'ir_Hitachi.h']]], + ['khitachiac344swingvbyte_5573',['kHitachiAc344SwingVByte',['../ir__Hitachi_8h.html#ae40211be39e522ebf9b580b3481f49f3',1,'ir_Hitachi.h']]], + ['khitachiac344swingvoffset_5574',['kHitachiAc344SwingVOffset',['../ir__Hitachi_8h.html#a8b38ef096697f70bdba8f4bd2799e148',1,'ir_Hitachi.h']]], + ['khitachiac3bitmark_5575',['kHitachiAc3BitMark',['../ir__Hitachi_8cpp.html#a68269a88e02a3030749061e5f28f74cc',1,'ir_Hitachi.cpp']]], + ['khitachiac3bits_5576',['kHitachiAc3Bits',['../IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb',1,'IRremoteESP8266.h']]], + ['khitachiac3hdrmark_5577',['kHitachiAc3HdrMark',['../ir__Hitachi_8cpp.html#af0a80a66094e67b4a78e8dfa539cd22f',1,'ir_Hitachi.cpp']]], + ['khitachiac3hdrspace_5578',['kHitachiAc3HdrSpace',['../ir__Hitachi_8cpp.html#aca4dc0b851c69a5e640337d68eb6f412',1,'ir_Hitachi.cpp']]], + ['khitachiac3minbits_5579',['kHitachiAc3MinBits',['../IRremoteESP8266_8h.html#a66ebaf70d2b4018371825c9cd3078a42',1,'IRremoteESP8266.h']]], + ['khitachiac3minstatelength_5580',['kHitachiAc3MinStateLength',['../IRremoteESP8266_8h.html#ac3becb270bfddaa1c64b1f8582dfc902',1,'IRremoteESP8266.h']]], + ['khitachiac3onespace_5581',['kHitachiAc3OneSpace',['../ir__Hitachi_8cpp.html#a0e630e38b4bffd5ec931153c20e41d97',1,'ir_Hitachi.cpp']]], + ['khitachiac3statelength_5582',['kHitachiAc3StateLength',['../IRremoteESP8266_8h.html#a9cc230bac4f902d46049c7b2c2fdbd3d',1,'IRremoteESP8266.h']]], + ['khitachiac3zerospace_5583',['kHitachiAc3ZeroSpace',['../ir__Hitachi_8cpp.html#a7cf96a2734bcc9a5eb390b8647666925',1,'ir_Hitachi.cpp']]], + ['khitachiac424bitmark_5584',['kHitachiAc424BitMark',['../ir__Hitachi_8cpp.html#acf5f9d83873a74688eb0413708e26eed',1,'ir_Hitachi.cpp']]], + ['khitachiac424bits_5585',['kHitachiAc424Bits',['../IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb',1,'IRremoteESP8266.h']]], + ['khitachiac424buttonbyte_5586',['kHitachiAc424ButtonByte',['../ir__Hitachi_8h.html#a057159edca95f9a000c80c7059919e83',1,'ir_Hitachi.h']]], + ['khitachiac424buttonfan_5587',['kHitachiAc424ButtonFan',['../ir__Hitachi_8h.html#a4aa278fb1983213a2506c71debe035aa',1,'ir_Hitachi.h']]], + ['khitachiac424buttonpowermode_5588',['kHitachiAc424ButtonPowerMode',['../ir__Hitachi_8h.html#a2dd37a36c6ad928ad0c3485ae4ea78fd',1,'ir_Hitachi.h']]], + ['khitachiac424buttonswingh_5589',['kHitachiAc424ButtonSwingH',['../ir__Hitachi_8h.html#af3a0d9499fab327bc7dfb5d57562a946',1,'ir_Hitachi.h']]], + ['khitachiac424buttonswingv_5590',['kHitachiAc424ButtonSwingV',['../ir__Hitachi_8h.html#a59d8e5407daf37d38e0c76ab3abdec9d',1,'ir_Hitachi.h']]], + ['khitachiac424buttontempdown_5591',['kHitachiAc424ButtonTempDown',['../ir__Hitachi_8h.html#ad909ee0bc97e24aa70ff6ecd1cffe6c2',1,'ir_Hitachi.h']]], + ['khitachiac424buttontempup_5592',['kHitachiAc424ButtonTempUp',['../ir__Hitachi_8h.html#ac8885804fb276f6327beb2018b204359',1,'ir_Hitachi.h']]], + ['khitachiac424cool_5593',['kHitachiAc424Cool',['../ir__Hitachi_8h.html#a64c1e01c222e6dec001a7052e822d64f',1,'ir_Hitachi.h']]], + ['khitachiac424dry_5594',['kHitachiAc424Dry',['../ir__Hitachi_8h.html#a56bfde42914bc92f47929179cddcbdf3',1,'ir_Hitachi.h']]], + ['khitachiac424fan_5595',['kHitachiAc424Fan',['../ir__Hitachi_8h.html#a35db6fdcedeb3de0ffb0bb72f1e60a0b',1,'ir_Hitachi.h']]], + ['khitachiac424fanauto_5596',['kHitachiAc424FanAuto',['../ir__Hitachi_8h.html#add1ec95cfd4e388f90154b25410471d0',1,'ir_Hitachi.h']]], + ['khitachiac424fanbyte_5597',['kHitachiAc424FanByte',['../ir__Hitachi_8h.html#aa4758708fe16d13cf6f50b7aa9e12bf6',1,'ir_Hitachi.h']]], + ['khitachiac424fanhigh_5598',['kHitachiAc424FanHigh',['../ir__Hitachi_8h.html#aacabc41baea6c3ddf711424a400144a3',1,'ir_Hitachi.h']]], + ['khitachiac424fanlow_5599',['kHitachiAc424FanLow',['../ir__Hitachi_8h.html#acae66b060db5cd03732ccbf808c6049e',1,'ir_Hitachi.h']]], + ['khitachiac424fanmax_5600',['kHitachiAc424FanMax',['../ir__Hitachi_8h.html#a6298e6dee6ff9f5fc57cfc9ccf30c073',1,'ir_Hitachi.h']]], + ['khitachiac424fanmaxdry_5601',['kHitachiAc424FanMaxDry',['../ir__Hitachi_8h.html#af770b29d838610b87463551444548ac0',1,'ir_Hitachi.h']]], + ['khitachiac424fanmedium_5602',['kHitachiAc424FanMedium',['../ir__Hitachi_8h.html#a3d6479f2e76bd84eeda9f5c0772210c5',1,'ir_Hitachi.h']]], + ['khitachiac424fanmin_5603',['kHitachiAc424FanMin',['../ir__Hitachi_8h.html#aacf1d4b99d89a0e24622ca02402c683b',1,'ir_Hitachi.h']]], + ['khitachiac424fantemp_5604',['kHitachiAc424FanTemp',['../ir__Hitachi_8h.html#a874362698fad488da1a477c4f99923aa',1,'ir_Hitachi.h']]], + ['khitachiac424hdrmark_5605',['kHitachiAc424HdrMark',['../ir__Hitachi_8cpp.html#a7b1dcaa7569237831b08ea061fd403fb',1,'ir_Hitachi.cpp']]], + ['khitachiac424hdrspace_5606',['kHitachiAc424HdrSpace',['../ir__Hitachi_8cpp.html#a9309b801d147dd3eba96ed15245f7445',1,'ir_Hitachi.cpp']]], + ['khitachiac424heat_5607',['kHitachiAc424Heat',['../ir__Hitachi_8h.html#a5cfd38c9e7aa2c39dfa38b1ef4b33b4c',1,'ir_Hitachi.h']]], + ['khitachiac424ldrmark_5608',['kHitachiAc424LdrMark',['../ir__Hitachi_8cpp.html#a0e2a88cb5930fb9726a453bdefe33bae',1,'ir_Hitachi.cpp']]], + ['khitachiac424ldrspace_5609',['kHitachiAc424LdrSpace',['../ir__Hitachi_8cpp.html#ad6285b55ed74e0e1087c3eb12d63b39c',1,'ir_Hitachi.cpp']]], + ['khitachiac424maxtemp_5610',['kHitachiAc424MaxTemp',['../ir__Hitachi_8h.html#a22574044b5a9163aca1f0581b9fa9241',1,'ir_Hitachi.h']]], + ['khitachiac424mintemp_5611',['kHitachiAc424MinTemp',['../ir__Hitachi_8h.html#a3d4311f1f28bbe31a22b80556e678b22',1,'ir_Hitachi.h']]], + ['khitachiac424modebyte_5612',['kHitachiAc424ModeByte',['../ir__Hitachi_8h.html#a3c6e0d27a95d94142360efa19a342c99',1,'ir_Hitachi.h']]], + ['khitachiac424onespace_5613',['kHitachiAc424OneSpace',['../ir__Hitachi_8cpp.html#a9b9cd22801f17acac593a8bcf334fd71',1,'ir_Hitachi.cpp']]], + ['khitachiac424powerbyte_5614',['kHitachiAc424PowerByte',['../ir__Hitachi_8h.html#a815e6761376ca4eae649ec837d55dc25',1,'ir_Hitachi.h']]], + ['khitachiac424poweroff_5615',['kHitachiAc424PowerOff',['../ir__Hitachi_8h.html#affc2d076cc0de329466ecbde7186d4eb',1,'ir_Hitachi.h']]], + ['khitachiac424poweron_5616',['kHitachiAc424PowerOn',['../ir__Hitachi_8h.html#a922478904efd86c6ecf7dabec3dd759f',1,'ir_Hitachi.h']]], + ['khitachiac424statelength_5617',['kHitachiAc424StateLength',['../IRremoteESP8266_8h.html#aff17d9c0ccf683895d2c868094679f0a',1,'IRremoteESP8266.h']]], + ['khitachiac424tempbyte_5618',['kHitachiAc424TempByte',['../ir__Hitachi_8h.html#a5de1ae606d6a34e24420b08a73542b94',1,'ir_Hitachi.h']]], + ['khitachiac424tempoffset_5619',['kHitachiAc424TempOffset',['../ir__Hitachi_8h.html#a3adb47220c4c72a62d9296092047900f',1,'ir_Hitachi.h']]], + ['khitachiac424tempsize_5620',['kHitachiAc424TempSize',['../ir__Hitachi_8h.html#ae6738f4a4476e5f34efbeb52e8c413de',1,'ir_Hitachi.h']]], + ['khitachiac424zerospace_5621',['kHitachiAc424ZeroSpace',['../ir__Hitachi_8cpp.html#a0f2032ac476bf344df31dc9351b2b98a',1,'ir_Hitachi.cpp']]], + ['khitachiacauto_5622',['kHitachiAcAuto',['../ir__Hitachi_8h.html#af8c74a8388361162b93339e1b0bc94d9',1,'ir_Hitachi.h']]], + ['khitachiacautotemp_5623',['kHitachiAcAutoTemp',['../ir__Hitachi_8h.html#aaa28bb683fefc065cb115fbfb66994ec',1,'ir_Hitachi.h']]], + ['khitachiacbitmark_5624',['kHitachiAcBitMark',['../ir__Hitachi_8cpp.html#a0993bf3d527a12bfe51c7bbfcf788c59',1,'ir_Hitachi.cpp']]], + ['khitachiacbits_5625',['kHitachiAcBits',['../IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b',1,'IRremoteESP8266.h']]], + ['khitachiaccool_5626',['kHitachiAcCool',['../ir__Hitachi_8h.html#a2b40b07601fdf8b038c97bb8bd2bec59',1,'ir_Hitachi.h']]], + ['khitachiacdefaultrepeat_5627',['kHitachiAcDefaultRepeat',['../IRremoteESP8266_8h.html#acc8510281d2ff9a808501d375c03ba21',1,'IRremoteESP8266.h']]], + ['khitachiacdry_5628',['kHitachiAcDry',['../ir__Hitachi_8h.html#a19730b13fca736392600580c156ae3c3',1,'ir_Hitachi.h']]], + ['khitachiacfan_5629',['kHitachiAcFan',['../ir__Hitachi_8h.html#a69626883b6fdbd3ccd26bb3123bf1883',1,'ir_Hitachi.h']]], + ['khitachiacfanauto_5630',['kHitachiAcFanAuto',['../ir__Hitachi_8h.html#a6be6f6eae193e784133be63d7cc5d75e',1,'ir_Hitachi.h']]], + ['khitachiacfanhigh_5631',['kHitachiAcFanHigh',['../ir__Hitachi_8h.html#a85ef905a1d3704237141f07defc128f5',1,'ir_Hitachi.h']]], + ['khitachiacfanlow_5632',['kHitachiAcFanLow',['../ir__Hitachi_8h.html#a0add8c3a3d00a81fcc3279af78256de2',1,'ir_Hitachi.h']]], + ['khitachiacfanmed_5633',['kHitachiAcFanMed',['../ir__Hitachi_8h.html#ac88b4cfdce5d69bf07316ddd716c2c11',1,'ir_Hitachi.h']]], + ['khitachiacfreq_5634',['kHitachiAcFreq',['../ir__Hitachi_8h.html#a443eaa664017d7b671bef0e9aa2d643b',1,'ir_Hitachi.h']]], + ['khitachiachdrmark_5635',['kHitachiAcHdrMark',['../ir__Hitachi_8cpp.html#aefe34d17f5c72ee05afb9a6302a450da',1,'ir_Hitachi.cpp']]], + ['khitachiachdrspace_5636',['kHitachiAcHdrSpace',['../ir__Hitachi_8cpp.html#a4a4352723f119ea070be1eba2aafe36b',1,'ir_Hitachi.cpp']]], + ['khitachiacheat_5637',['kHitachiAcHeat',['../ir__Hitachi_8h.html#add2498e77e5585fd8c82a553bb0c22c0',1,'ir_Hitachi.h']]], + ['khitachiacmaxtemp_5638',['kHitachiAcMaxTemp',['../ir__Hitachi_8h.html#a63e17171c40d770d25f24d018aee2c4c',1,'ir_Hitachi.h']]], + ['khitachiacmingap_5639',['kHitachiAcMinGap',['../ir__Hitachi_8cpp.html#a14016b9110c11423c628c8e220e50864',1,'ir_Hitachi.cpp']]], + ['khitachiacmintemp_5640',['kHitachiAcMinTemp',['../ir__Hitachi_8h.html#a9b4f3ea50cc0491f10ff8dc8eabb3ecd',1,'ir_Hitachi.h']]], + ['khitachiaconespace_5641',['kHitachiAcOneSpace',['../ir__Hitachi_8cpp.html#a79a79aaf52a05c021621335586dd928f',1,'ir_Hitachi.cpp']]], + ['khitachiacpoweroffset_5642',['kHitachiAcPowerOffset',['../ir__Hitachi_8h.html#a30062f0646ac63c3612d13f98211e36b',1,'ir_Hitachi.h']]], + ['khitachiacstatelength_5643',['kHitachiAcStateLength',['../IRremoteESP8266_8h.html#a8bef76bac826afbbc51c2a867af15ed8',1,'IRremoteESP8266.h']]], + ['khitachiacswingoffset_5644',['kHitachiAcSwingOffset',['../ir__Hitachi_8h.html#aac1fcff513a4eca2aeb4f13c739165e2',1,'ir_Hitachi.h']]], + ['khitachiaczerospace_5645',['kHitachiAcZeroSpace',['../ir__Hitachi_8cpp.html#a0b03a4abb11d69a8b8da56ca2abc50c8',1,'ir_Hitachi.cpp']]], + ['kholdstr_5646',['kHoldStr',['../IRtext_8cpp.html#a86fd1f86e4a513603449e90a47500986',1,'kHoldStr(): IRtext.cpp'],['../IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e',1,'kHoldStr(): IRtext.cpp']]], + ['khoursstr_5647',['kHoursStr',['../IRtext_8cpp.html#ae94260daddf2ea56e54d56bbad66526c',1,'kHoursStr(): IRtext.cpp'],['../IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161',1,'kHoursStr(): IRtext.cpp']]], + ['khourstr_5648',['kHourStr',['../IRtext_8cpp.html#a1d25a0bf2c8a638fff1557a0c5637977',1,'kHourStr(): IRtext.cpp'],['../IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6',1,'kHourStr(): IRtext.cpp']]], + ['khumidstr_5649',['kHumidStr',['../IRtext_8cpp.html#aae236cd2e7ed4961360fe687fe38170d',1,'kHumidStr(): IRtext.cpp'],['../IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f',1,'kHumidStr(): IRtext.cpp']]], + ['kidlestate_5650',['kIdleState',['../IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf',1,'IRrecv.h']]], + ['kifeelstr_5651',['kIFeelStr',['../IRtext_8cpp.html#a3c7368d9138477f0eac2a6249ba2606b',1,'kIFeelStr(): IRtext.cpp'],['../IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f',1,'kIFeelStr(): IRtext.cpp']]], + ['kinaxbitmark_5652',['kInaxBitMark',['../ir__Inax_8cpp.html#a84553819866dbfcfad8cba87f6c02e04',1,'ir_Inax.cpp']]], + ['kinaxbits_5653',['kInaxBits',['../IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a',1,'IRremoteESP8266.h']]], + ['kinaxhdrmark_5654',['kInaxHdrMark',['../ir__Inax_8cpp.html#ac467a96d91b6266c3ce9a2a4ec2a8b44',1,'ir_Inax.cpp']]], + ['kinaxhdrspace_5655',['kInaxHdrSpace',['../ir__Inax_8cpp.html#a6ddcc8ca7a5d05cee91e57b3e69cca33',1,'ir_Inax.cpp']]], + ['kinaxmingap_5656',['kInaxMinGap',['../ir__Inax_8cpp.html#a600f49303a77fbdc1d77aae2abe9b9aa',1,'ir_Inax.cpp']]], + ['kinaxminrepeat_5657',['kInaxMinRepeat',['../IRremoteESP8266_8h.html#a37a3d0ae51a6ce850a424fe77d5b22d2',1,'IRremoteESP8266.h']]], + ['kinaxonespace_5658',['kInaxOneSpace',['../ir__Inax_8cpp.html#aeb77e3a51838547a29c1b343eba4c7ef',1,'ir_Inax.cpp']]], + ['kinaxtick_5659',['kInaxTick',['../ir__Inax_8cpp.html#ad437f0beac0893853cc9d5cc214b03c6',1,'ir_Inax.cpp']]], + ['kinaxzerospace_5660',['kInaxZeroSpace',['../ir__Inax_8cpp.html#a115f1f061362c1c3c41e3bb20ea7e1c6',1,'ir_Inax.cpp']]], + ['kinsidestr_5661',['kInsideStr',['../IRtext_8cpp.html#aa94c7a9b472bcd2297b43a5b4008bc51',1,'kInsideStr(): IRtext.cpp'],['../IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb',1,'kInsideStr(): IRtext.cpp']]], + ['kionstr_5662',['kIonStr',['../IRtext_8cpp.html#afc36ce4beed72e662a8d9d1473dad235',1,'kIonStr(): IRtext.cpp'],['../IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b',1,'kIonStr(): IRtext.cpp']]], + ['kjvcbitmark_5663',['kJvcBitMark',['../ir__JVC_8cpp.html#a23c11d77431d37bba18776f9341c767f',1,'ir_JVC.cpp']]], + ['kjvcbitmarkticks_5664',['kJvcBitMarkTicks',['../ir__JVC_8cpp.html#aad7cf432a9bd0d2b4df66d5f903a70dd',1,'ir_JVC.cpp']]], + ['kjvcbits_5665',['kJvcBits',['../IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f',1,'IRremoteESP8266.h']]], + ['kjvchdrmark_5666',['kJvcHdrMark',['../ir__JVC_8cpp.html#a60d81ad0066288b602054bd24a912f1f',1,'ir_JVC.cpp']]], + ['kjvchdrmarkticks_5667',['kJvcHdrMarkTicks',['../ir__JVC_8cpp.html#abb12fba45b7a366e23849d693953e749',1,'ir_JVC.cpp']]], + ['kjvchdrspace_5668',['kJvcHdrSpace',['../ir__JVC_8cpp.html#a5444718f66ba8b43c1d7d99f7b378a0d',1,'ir_JVC.cpp']]], + ['kjvchdrspaceticks_5669',['kJvcHdrSpaceTicks',['../ir__JVC_8cpp.html#ae7cf6cb7b5ea5fe17a9b182d1ef3b008',1,'ir_JVC.cpp']]], + ['kjvcmingap_5670',['kJvcMinGap',['../ir__JVC_8cpp.html#ac19d8396c10adb687a883d016ec43aa5',1,'ir_JVC.cpp']]], + ['kjvcmingapticks_5671',['kJvcMinGapTicks',['../ir__JVC_8cpp.html#a525e7d672b148c02bdca1f66ab92e6c7',1,'ir_JVC.cpp']]], + ['kjvconespace_5672',['kJvcOneSpace',['../ir__JVC_8cpp.html#a8befef1d03f3a09541c2612c66c0256f',1,'ir_JVC.cpp']]], + ['kjvconespaceticks_5673',['kJvcOneSpaceTicks',['../ir__JVC_8cpp.html#a20d4f7737d71bdbec58694e775669df9',1,'ir_JVC.cpp']]], + ['kjvcrptlength_5674',['kJvcRptLength',['../ir__JVC_8cpp.html#a3896e40881e70c63234fecb88375b5a1',1,'ir_JVC.cpp']]], + ['kjvcrptlengthticks_5675',['kJvcRptLengthTicks',['../ir__JVC_8cpp.html#a75e03cf5739ab0ba67e5cfa426776d16',1,'ir_JVC.cpp']]], + ['kjvctick_5676',['kJvcTick',['../ir__JVC_8cpp.html#acd5a2ba251824cac5311adcc9a813b1a',1,'ir_JVC.cpp']]], + ['kjvczerospace_5677',['kJvcZeroSpace',['../ir__JVC_8cpp.html#a67c790b909f82e044b8c4e7227d9c189',1,'ir_JVC.cpp']]], + ['kjvczerospaceticks_5678',['kJvcZeroSpaceTicks',['../ir__JVC_8cpp.html#a0a5319df3b1e01741cd35a37087342f5',1,'ir_JVC.cpp']]], + ['kkelvinatorauto_5679',['kKelvinatorAuto',['../ir__Kelvinator_8h.html#a879b005fc5493a693b05e3bb7cbc8fbf',1,'ir_Kelvinator.h']]], + ['kkelvinatorautotemp_5680',['kKelvinatorAutoTemp',['../ir__Kelvinator_8h.html#afa9e7ea8c9fb86cb02358cc8221733b0',1,'ir_Kelvinator.h']]], + ['kkelvinatorbasicfanmax_5681',['kKelvinatorBasicFanMax',['../ir__Kelvinator_8h.html#a10624389f033451cf9a6f4530c2dfb98',1,'ir_Kelvinator.h']]], + ['kkelvinatorbasicfansize_5682',['kKelvinatorBasicFanSize',['../ir__Kelvinator_8cpp.html#a35ffe10c5c1b834703fe44c5eeeb4c8f',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorbitmark_5683',['kKelvinatorBitMark',['../ir__Kelvinator_8cpp.html#a2014f9f92f1e24a04341398e7e673807',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorbitmarkticks_5684',['kKelvinatorBitMarkTicks',['../ir__Kelvinator_8cpp.html#a2d6579257ab7f185e4f0fecdbdf03835',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorbits_5685',['kKelvinatorBits',['../IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86',1,'IRremoteESP8266.h']]], + ['kkelvinatorchecksumstart_5686',['kKelvinatorChecksumStart',['../ir__Kelvinator_8cpp.html#a0afa7cec1db6a5f46c1b30d7ce718ae6',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorcmdfooter_5687',['kKelvinatorCmdFooter',['../ir__Kelvinator_8cpp.html#ad2361e09472fa03376b447114a19513f',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorcmdfooterbits_5688',['kKelvinatorCmdFooterBits',['../ir__Kelvinator_8cpp.html#af6c85d3b30a5949da53ad9400734f203',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorcool_5689',['kKelvinatorCool',['../ir__Kelvinator_8h.html#ad49a2e457470d6e16d001cdae3215606',1,'ir_Kelvinator.h']]], + ['kkelvinatordefaultrepeat_5690',['kKelvinatorDefaultRepeat',['../IRremoteESP8266_8h.html#a94c968c5cc929f189b8e578d2f55b132',1,'IRremoteESP8266.h']]], + ['kkelvinatordry_5691',['kKelvinatorDry',['../ir__Kelvinator_8h.html#a181b3d10b522f9afb29706da42afea55',1,'ir_Kelvinator.h']]], + ['kkelvinatorfan_5692',['kKelvinatorFan',['../ir__Kelvinator_8h.html#a8d6d97be2fd8a5aefa1319d3f662a50c',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanauto_5693',['kKelvinatorFanAuto',['../ir__Kelvinator_8h.html#ac4994c36634ca0ad8791807c9a992976',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanmax_5694',['kKelvinatorFanMax',['../ir__Kelvinator_8h.html#a889ce17d112d1a61420e1064d72c583a',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanmin_5695',['kKelvinatorFanMin',['../ir__Kelvinator_8h.html#a36a9422e2e6c6b7a87e8b2deffd1b189',1,'ir_Kelvinator.h']]], + ['kkelvinatorfanoffset_5696',['kKelvinatorFanOffset',['../ir__Kelvinator_8cpp.html#a4988bb98a4f8798c0b927e981667cfbd',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorfansize_5697',['kKelvinatorFanSize',['../ir__Kelvinator_8cpp.html#a286636ba83aceab9c8518878a6d7209e',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorgapspace_5698',['kKelvinatorGapSpace',['../ir__Kelvinator_8cpp.html#abf66116a235a9d05089182f2f7fd7640',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorgapspaceticks_5699',['kKelvinatorGapSpaceTicks',['../ir__Kelvinator_8cpp.html#a6a81fb4c1cf1ad34f99f3ca87ab74a5c',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrmark_5700',['kKelvinatorHdrMark',['../ir__Kelvinator_8cpp.html#a413e824c6bdd4778e70f496917b3fe30',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrmarkticks_5701',['kKelvinatorHdrMarkTicks',['../ir__Kelvinator_8cpp.html#a8ad828958071c75a80928abfb916c0df',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrspace_5702',['kKelvinatorHdrSpace',['../ir__Kelvinator_8cpp.html#a9cab23fbd5ba62714fda24765db0e7d1',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorhdrspaceticks_5703',['kKelvinatorHdrSpaceTicks',['../ir__Kelvinator_8cpp.html#ab4fbf899dcb2c2d510055215617d5b44',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorheat_5704',['kKelvinatorHeat',['../ir__Kelvinator_8h.html#a080eade5648791e37c76af7a52e85731',1,'ir_Kelvinator.h']]], + ['kkelvinatorionfilteroffset_5705',['kKelvinatorIonFilterOffset',['../ir__Kelvinator_8cpp.html#a5cbdc907f0cb6a47d0c548148933067b',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorlightoffset_5706',['kKelvinatorLightOffset',['../ir__Kelvinator_8cpp.html#a7e757add18951b8e36c2065c5dbefc24',1,'ir_Kelvinator.cpp']]], + ['kkelvinatormaxtemp_5707',['kKelvinatorMaxTemp',['../ir__Kelvinator_8h.html#a14933442e718db1a87bae5d076ad228d',1,'ir_Kelvinator.h']]], + ['kkelvinatormintemp_5708',['kKelvinatorMinTemp',['../ir__Kelvinator_8h.html#a98871ce825dbbe80d072f25253142879',1,'ir_Kelvinator.h']]], + ['kkelvinatormodeoffset_5709',['kKelvinatorModeOffset',['../ir__Kelvinator_8cpp.html#a6a52d11326d5f83653c510393bb2a518',1,'ir_Kelvinator.cpp']]], + ['kkelvinatoronespace_5710',['kKelvinatorOneSpace',['../ir__Kelvinator_8cpp.html#aae5a009282517309b8fdbfdaced9d659',1,'ir_Kelvinator.cpp']]], + ['kkelvinatoronespaceticks_5711',['kKelvinatorOneSpaceTicks',['../ir__Kelvinator_8cpp.html#ac907f4495debdcaf680f6e6941b844d5',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorpoweroffset_5712',['kKelvinatorPowerOffset',['../ir__Kelvinator_8cpp.html#a5a9591e2dd98f68ad6f562e199b1a304',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorquietoffset_5713',['kKelvinatorQuietOffset',['../ir__Kelvinator_8cpp.html#ad354be321ea41c51ead876fd30674546',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorstatelength_5714',['kKelvinatorStateLength',['../IRremoteESP8266_8h.html#af68545e8c2fe9af3719fb74c5d21f0c9',1,'IRremoteESP8266.h']]], + ['kkelvinatortick_5715',['kKelvinatorTick',['../ir__Kelvinator_8cpp.html#a846cbb5609b1dff139a90487000c7393',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorturbooffset_5716',['kKelvinatorTurboOffset',['../ir__Kelvinator_8cpp.html#a21987b6f00c7f2e9bba94c59bc5b804b',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorventswinghoffset_5717',['kKelvinatorVentSwingHOffset',['../ir__Kelvinator_8cpp.html#a551df2c1e21764f12030f6bfa6d5942d',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorventswingoffset_5718',['kKelvinatorVentSwingOffset',['../ir__Kelvinator_8cpp.html#a38012bf9daa0c362a9007107183391ef',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorventswingvoffset_5719',['kKelvinatorVentSwingVOffset',['../ir__Kelvinator_8cpp.html#a64d3767b464d4fe2543560cf5a2a5b21',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorxfanoffset_5720',['kKelvinatorXfanOffset',['../ir__Kelvinator_8cpp.html#a4417448475405306f10166fc9cd98054',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorzerospace_5721',['kKelvinatorZeroSpace',['../ir__Kelvinator_8cpp.html#a10469f76f50285a6084bb088fd601dea',1,'ir_Kelvinator.cpp']]], + ['kkelvinatorzerospaceticks_5722',['kKelvinatorZeroSpaceTicks',['../ir__Kelvinator_8cpp.html#a0abc0fdc3d9ac9f12133a46e95d69432',1,'ir_Kelvinator.cpp']]], + ['klasertagbits_5723',['kLasertagBits',['../IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e',1,'IRremoteESP8266.h']]], + ['klasertagdelta_5724',['kLasertagDelta',['../ir__Lasertag_8cpp.html#a5c0e8e9c6dec0480c09fcd339ed62257',1,'ir_Lasertag.cpp']]], + ['klasertagexcess_5725',['kLasertagExcess',['../ir__Lasertag_8cpp.html#afa77dc5a431a8d851320e7623378983e',1,'ir_Lasertag.cpp']]], + ['klasertagmingap_5726',['kLasertagMinGap',['../ir__Lasertag_8cpp.html#a33762e2c44dac34e00d255b41d9f2822',1,'ir_Lasertag.cpp']]], + ['klasertagminrepeat_5727',['kLasertagMinRepeat',['../IRremoteESP8266_8h.html#a9b36135c3df24eab232a5edac8c58c5e',1,'IRremoteESP8266.h']]], + ['klasertagminsamples_5728',['kLasertagMinSamples',['../ir__Lasertag_8cpp.html#acbf98970106cadb43e0703ae2caab0c1',1,'ir_Lasertag.cpp']]], + ['klasertagtick_5729',['kLasertagTick',['../ir__Lasertag_8cpp.html#a878b5d53379f8b1b21dfe19f1f83a626',1,'ir_Lasertag.cpp']]], + ['klasertagtolerance_5730',['kLasertagTolerance',['../ir__Lasertag_8cpp.html#a6146bcf378515d31330b3fec5c967346',1,'ir_Lasertag.cpp']]], + ['klaststr_5731',['kLastStr',['../IRtext_8cpp.html#ad7c8430b935afb7aec114788a9c0bf7d',1,'kLastStr(): IRtext.cpp'],['../IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32',1,'kLastStr(): IRtext.cpp']]], + ['kleftmaxstr_5732',['kLeftMaxStr',['../IRtext_8cpp.html#a1a82999b6eb3b6637f51bb8ce6a46efd',1,'kLeftMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf',1,'kLeftMaxStr(): IRtext.cpp']]], + ['kleftstr_5733',['kLeftStr',['../IRtext_8cpp.html#a0bb005966f2ff2da12a542e713f7f1f2',1,'kLeftStr(): IRtext.cpp'],['../IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf',1,'kLeftStr(): IRtext.cpp']]], + ['klegopfbitmark_5734',['kLegoPfBitMark',['../ir__Lego_8cpp.html#afdf76660f62bfefb4a813d57cd84b590',1,'ir_Lego.cpp']]], + ['klegopfbits_5735',['kLegoPfBits',['../IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e',1,'IRremoteESP8266.h']]], + ['klegopfhdrspace_5736',['kLegoPfHdrSpace',['../ir__Lego_8cpp.html#a140e8707900bfd4e3a9e2722a6b0bfb3',1,'ir_Lego.cpp']]], + ['klegopfmincommandlength_5737',['kLegoPfMinCommandLength',['../ir__Lego_8cpp.html#ad9a0c5184cc422ec1b32edf58c52d2b1',1,'ir_Lego.cpp']]], + ['klegopfminrepeat_5738',['kLegoPfMinRepeat',['../IRremoteESP8266_8h.html#a2614cf3cb840f028eb1dc684aeb1272c',1,'IRremoteESP8266.h']]], + ['klegopfonespace_5739',['kLegoPfOneSpace',['../ir__Lego_8cpp.html#a59a41085f2e8f81e1019fd40782269e3',1,'ir_Lego.cpp']]], + ['klegopfzerospace_5740',['kLegoPfZeroSpace',['../ir__Lego_8cpp.html#ada07e8aaf79cf58c46b301a410d9fb3e',1,'ir_Lego.cpp']]], + ['klg2bitmark_5741',['kLg2BitMark',['../ir__LG_8cpp.html#abf4db4647161db6fb2548b5200c41843',1,'ir_LG.cpp']]], + ['klg2bitmarkticks_5742',['kLg2BitMarkTicks',['../ir__LG_8cpp.html#aae477dcb68b9c5f1b12adf832eb388a1',1,'ir_LG.cpp']]], + ['klg2hdrmark_5743',['kLg2HdrMark',['../ir__LG_8cpp.html#a5ca50077fba2d5130220255e1659e0c3',1,'ir_LG.cpp']]], + ['klg2hdrmarkticks_5744',['kLg2HdrMarkTicks',['../ir__LG_8cpp.html#adb636fb6b634c651364ae954d31b5692',1,'ir_LG.cpp']]], + ['klg2hdrspace_5745',['kLg2HdrSpace',['../ir__LG_8cpp.html#a6637da052fea9320e97cff261f219cdb',1,'ir_LG.cpp']]], + ['klg2hdrspaceticks_5746',['kLg2HdrSpaceTicks',['../ir__LG_8cpp.html#abd2f843416070a93587d07e4d32f1eb5',1,'ir_LG.cpp']]], + ['klg32bits_5747',['kLg32Bits',['../IRremoteESP8266_8h.html#ae3c458814d7221b66d2f267cb2663bd2',1,'IRremoteESP8266.h']]], + ['klg32hdrmark_5748',['kLg32HdrMark',['../ir__LG_8cpp.html#a26cb3fb11b1a0bf0815868767e50f31b',1,'ir_LG.cpp']]], + ['klg32hdrmarkticks_5749',['kLg32HdrMarkTicks',['../ir__LG_8cpp.html#aded50973c0a938d455c1537cb240d5e9',1,'ir_LG.cpp']]], + ['klg32hdrspace_5750',['kLg32HdrSpace',['../ir__LG_8cpp.html#a59ddf2070642615e162c85b7575aff76',1,'ir_LG.cpp']]], + ['klg32hdrspaceticks_5751',['kLg32HdrSpaceTicks',['../ir__LG_8cpp.html#aa029c2c83a96f1ff02610eddd6b946fa',1,'ir_LG.cpp']]], + ['klg32rpthdrmark_5752',['kLg32RptHdrMark',['../ir__LG_8cpp.html#af19a674228bea82c1c588aa9dd974805',1,'ir_LG.cpp']]], + ['klg32rpthdrmarkticks_5753',['kLg32RptHdrMarkTicks',['../ir__LG_8cpp.html#a5c79f7072eee35fc1df10ecd18e2a3d2',1,'ir_LG.cpp']]], + ['klgacauto_5754',['kLgAcAuto',['../ir__LG_8h.html#ae5e45a0f42ce7544d6fb7981a43fb932',1,'ir_LG.h']]], + ['klgacchecksumoffset_5755',['kLgAcChecksumOffset',['../ir__LG_8h.html#aa0b9abe43a870097d886efcd0fd3bb96',1,'ir_LG.h']]], + ['klgacchecksumsize_5756',['kLgAcChecksumSize',['../ir__LG_8h.html#a177d205346380d47ae47b52079e5ffaf',1,'ir_LG.h']]], + ['klgaccool_5757',['kLgAcCool',['../ir__LG_8h.html#a3ba35885488bdda3d87ba344a5c58eb2',1,'ir_LG.h']]], + ['klgacdry_5758',['kLgAcDry',['../ir__LG_8h.html#ab3b9a106551be1217e0c824cffe1ea44',1,'ir_LG.h']]], + ['klgacfan_5759',['kLgAcFan',['../ir__LG_8h.html#afc12144673b8dd0555833427fa757275',1,'ir_LG.h']]], + ['klgacfanauto_5760',['kLgAcFanAuto',['../ir__LG_8h.html#a3dee1dc33f768d36a2216213c90a0a5c',1,'ir_LG.h']]], + ['klgacfanhigh_5761',['kLgAcFanHigh',['../ir__LG_8h.html#a89888f8d36899b5526e4c2ebb1097357',1,'ir_LG.h']]], + ['klgacfanlow_5762',['kLgAcFanLow',['../ir__LG_8h.html#afa3633c1b26d837f85b10a8a8d677efc',1,'ir_LG.h']]], + ['klgacfanmedium_5763',['kLgAcFanMedium',['../ir__LG_8h.html#abe0fb8a8f9d6ab9ebda36d0343841619',1,'ir_LG.h']]], + ['klgacfanoffset_5764',['kLgAcFanOffset',['../ir__LG_8h.html#a428d348215682243f7e5fe03c7580665',1,'ir_LG.h']]], + ['klgacfansize_5765',['kLgAcFanSize',['../ir__LG_8h.html#a4baf7484fee55fdd5cdbf13d11d7f1b9',1,'ir_LG.h']]], + ['klgacheat_5766',['kLgAcHeat',['../ir__LG_8h.html#a6c17d61082cc24f9d714c5d4ac151933',1,'ir_LG.h']]], + ['klgacmaxtemp_5767',['kLgAcMaxTemp',['../ir__LG_8h.html#a0fab7b6e6d1138638bdeadeab85f5090',1,'ir_LG.h']]], + ['klgacmintemp_5768',['kLgAcMinTemp',['../ir__LG_8h.html#ae3bef99e329f057358001cacf67f6d70',1,'ir_LG.h']]], + ['klgacmodeoffset_5769',['kLgAcModeOffset',['../ir__LG_8h.html#abbc65ef461fd214d9ef41ebf62693467',1,'ir_LG.h']]], + ['klgacmodesize_5770',['kLgAcModeSize',['../ir__LG_8h.html#ae9927832fbb45c310666d8de1ebe5f0f',1,'ir_LG.h']]], + ['klgacoffcommand_5771',['kLgAcOffCommand',['../ir__LG_8h.html#aecf8158eec1d9ec0d54056392b512296',1,'ir_LG.h']]], + ['klgacpoweroff_5772',['kLgAcPowerOff',['../ir__LG_8h.html#a3b2681e41071298197d849fbd7649318',1,'ir_LG.h']]], + ['klgacpoweroffset_5773',['kLgAcPowerOffset',['../ir__LG_8h.html#a7cce14305909efe3b904d68f902d42de',1,'ir_LG.h']]], + ['klgacpoweron_5774',['kLgAcPowerOn',['../ir__LG_8h.html#a87d2f6e4e2755aaab4762952b1bf6108',1,'ir_LG.h']]], + ['klgacpowersize_5775',['kLgAcPowerSize',['../ir__LG_8h.html#a624eee0bc9084e4d9d801f8cbdc28d1e',1,'ir_LG.h']]], + ['klgacsignature_5776',['kLgAcSignature',['../ir__LG_8h.html#ab7c3589deb28829ad0313b1505ec196e',1,'ir_LG.h']]], + ['klgacsignatureoffset_5777',['kLgAcSignatureOffset',['../ir__LG_8h.html#a406dff4b4ffa5b809b8ea87ddfd3bf8b',1,'ir_LG.h']]], + ['klgacsignaturesize_5778',['kLgAcSignatureSize',['../ir__LG_8h.html#a7420d729a5dca26d95be3b9907eb477e',1,'ir_LG.h']]], + ['klgactempadjust_5779',['kLgAcTempAdjust',['../ir__LG_8h.html#a16210dc395a86dc4562436047c22600f',1,'ir_LG.h']]], + ['klgactempoffset_5780',['kLgAcTempOffset',['../ir__LG_8h.html#aca5ae781e03e4a88a83303cb0cae0609',1,'ir_LG.h']]], + ['klgactempsize_5781',['kLgAcTempSize',['../ir__LG_8h.html#ad0235a6c5bebb086b75dc65433b3c9e1',1,'ir_LG.h']]], + ['klgbitmark_5782',['kLgBitMark',['../ir__LG_8cpp.html#a9311195710d4c3a2ac48456390a03138',1,'ir_LG.cpp']]], + ['klgbitmarkticks_5783',['kLgBitMarkTicks',['../ir__LG_8cpp.html#a80b2d221b207c8c0faa74f1f39e9920b',1,'ir_LG.cpp']]], + ['klgbits_5784',['kLgBits',['../IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102',1,'IRremoteESP8266.h']]], + ['klgdefaultrepeat_5785',['kLgDefaultRepeat',['../IRremoteESP8266_8h.html#a2d6832b3d214e0adad781c205993e461',1,'IRremoteESP8266.h']]], + ['klghdrmark_5786',['kLgHdrMark',['../ir__LG_8cpp.html#a74f253d9e4cc72148233021c47d59f35',1,'ir_LG.cpp']]], + ['klghdrmarkticks_5787',['kLgHdrMarkTicks',['../ir__LG_8cpp.html#a6f1f88f3cefe49b9796a10a9109e560e',1,'ir_LG.cpp']]], + ['klghdrspace_5788',['kLgHdrSpace',['../ir__LG_8cpp.html#a6eaf100cde647fc119d3e993680afd47',1,'ir_LG.cpp']]], + ['klghdrspaceticks_5789',['kLgHdrSpaceTicks',['../ir__LG_8cpp.html#a22d8775d4c8985970b47e449232b45de',1,'ir_LG.cpp']]], + ['klgmingap_5790',['kLgMinGap',['../ir__LG_8cpp.html#a784323468e6b5ebc65bd2870a94fb553',1,'ir_LG.cpp']]], + ['klgmingapticks_5791',['kLgMinGapTicks',['../ir__LG_8cpp.html#aa56fd5b4fe946992aa1b9bdf61b1518b',1,'ir_LG.cpp']]], + ['klgminmessagelength_5792',['kLgMinMessageLength',['../ir__LG_8cpp.html#a4eb3f82ae2ca6c34b58e512848a6dc41',1,'ir_LG.cpp']]], + ['klgminmessagelengthticks_5793',['kLgMinMessageLengthTicks',['../ir__LG_8cpp.html#ab000fc974bdd0723e8bcb4872f33dd72',1,'ir_LG.cpp']]], + ['klgonespace_5794',['kLgOneSpace',['../ir__LG_8cpp.html#a05fe6a47f437efc686cb46ec805da4d4',1,'ir_LG.cpp']]], + ['klgonespaceticks_5795',['kLgOneSpaceTicks',['../ir__LG_8cpp.html#a535b089cd72bd027cbc34eb917d71ae5',1,'ir_LG.cpp']]], + ['klgrptspace_5796',['kLgRptSpace',['../ir__LG_8cpp.html#a834b8f08ee32030c51ea5e2c5bd5a73c',1,'ir_LG.cpp']]], + ['klgrptspaceticks_5797',['kLgRptSpaceTicks',['../ir__LG_8cpp.html#abc43b327c2c752dc5ed2794f08e2eba8',1,'ir_LG.cpp']]], + ['klgtick_5798',['kLgTick',['../ir__LG_8cpp.html#ab8ab28ebf1fae94aa900a3199a6fc191',1,'ir_LG.cpp']]], + ['klgzerospace_5799',['kLgZeroSpace',['../ir__LG_8cpp.html#a981fe3cfc4adf0b3016a008ca1bbf734',1,'ir_LG.cpp']]], + ['klgzerospaceticks_5800',['kLgZeroSpaceTicks',['../ir__LG_8cpp.html#af932345e15db822da67d7796cd5b6584',1,'ir_LG.cpp']]], + ['klightstr_5801',['kLightStr',['../IRtext_8cpp.html#a2912b7dc11fd571706eaaf90e0095a4f',1,'kLightStr(): IRtext.cpp'],['../IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da',1,'kLightStr(): IRtext.cpp']]], + ['klighttogglestr_5802',['kLightToggleStr',['../IRtext_8cpp.html#a74a3ef3c72995e19582be04a2716b285',1,'kLightToggleStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c',1,'kLightToggleStr(): IRtext.cpp']]], + ['klostr_5803',['kLoStr',['../IRtext_8cpp.html#a72fc3855eec7026260de3a6b3a25c377',1,'kLoStr(): IRtext.cpp'],['../IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c',1,'kLoStr(): IRtext.cpp']]], + ['kloudstr_5804',['kLoudStr',['../IRtext_8cpp.html#a3b6d3eed96c5623cc95ebcfb93cb6f96',1,'kLoudStr(): IRtext.cpp'],['../IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2',1,'kLoudStr(): IRtext.cpp']]], + ['klowerstr_5805',['kLowerStr',['../IRtext_8cpp.html#a518681524ec3c8f8bc993823003fe58a',1,'kLowerStr(): IRtext.cpp'],['../IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c',1,'kLowerStr(): IRtext.cpp']]], + ['kloweststr_5806',['kLowestStr',['../IRtext_8cpp.html#ae0c595955599a398669a372edd339f67',1,'kLowestStr(): IRtext.cpp'],['../IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3',1,'kLowestStr(): IRtext.cpp']]], + ['klownibble_5807',['kLowNibble',['../IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec',1,'IRutils.h']]], + ['klowstr_5808',['kLowStr',['../IRtext_8cpp.html#a18f69bf40b866ee1d30d1586757d5f41',1,'kLowStr(): IRtext.cpp'],['../IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea',1,'kLowStr(): IRtext.cpp']]], + ['klutronbits_5809',['kLutronBits',['../IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99',1,'IRremoteESP8266.h']]], + ['klutrondelta_5810',['kLutronDelta',['../ir__Lutron_8cpp.html#a4220004fac195ef46388199ad9624860',1,'ir_Lutron.cpp']]], + ['klutrongap_5811',['kLutronGap',['../ir__Lutron_8cpp.html#a18ffb51db0ae33904a64012cb72d6165',1,'ir_Lutron.cpp']]], + ['klutrontick_5812',['kLutronTick',['../ir__Lutron_8cpp.html#a04a84309978b79c0983c398a497a087a',1,'ir_Lutron.cpp']]], + ['kmagiquestbits_5813',['kMagiquestBits',['../IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751',1,'IRremoteESP8266.h']]], + ['kmagiquestgap_5814',['kMagiQuestGap',['../ir__Magiquest_8h.html#aebdea5a1a55547d812f1f7bb2d3ddf1f',1,'ir_Magiquest.h']]], + ['kmagiquestmarkone_5815',['kMagiQuestMarkOne',['../ir__Magiquest_8h.html#a0d5d090015ecf49995514054c29cb4e2',1,'ir_Magiquest.h']]], + ['kmagiquestmarkzero_5816',['kMagiQuestMarkZero',['../ir__Magiquest_8h.html#a7240a15dbb9bc6a1e31575be7837c390',1,'ir_Magiquest.h']]], + ['kmagiquestoneratio_5817',['kMagiQuestOneRatio',['../ir__Magiquest_8h.html#a073cdb7ca4dd35b8fa05d99eb7da5b65',1,'ir_Magiquest.h']]], + ['kmagiquestspaceone_5818',['kMagiQuestSpaceOne',['../ir__Magiquest_8h.html#a92bad440c0291cbb903f08de08d96fb2',1,'ir_Magiquest.h']]], + ['kmagiquestspacezero_5819',['kMagiQuestSpaceZero',['../ir__Magiquest_8h.html#abe557052c5c3bef87e62daf71b4c8654',1,'ir_Magiquest.h']]], + ['kmagiquesttotalusec_5820',['kMagiQuestTotalUsec',['../ir__Magiquest_8h.html#a819dcf22b127f4f7b282d784490a83c3',1,'ir_Magiquest.h']]], + ['kmagiquestzeroratio_5821',['kMagiQuestZeroRatio',['../ir__Magiquest_8h.html#a41e5594b8e1510267e563ed78fbe98b0',1,'ir_Magiquest.h']]], + ['kmanualstr_5822',['kManualStr',['../IRtext_8cpp.html#a619896ae89717b2b0e1d3492bb528cbc',1,'kManualStr(): IRtext.cpp'],['../IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8',1,'kManualStr(): IRtext.cpp']]], + ['kmark_5823',['kMark',['../ir__Lasertag_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_RC5_RC6.cpp']]], + ['kmarkexcess_5824',['kMarkExcess',['../IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e',1,'IRrecv.h']]], + ['kmarkstate_5825',['kMarkState',['../IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2',1,'IRrecv.h']]], + ['kmaxaccurateusecdelay_5826',['kMaxAccurateUsecDelay',['../IRsend_8h.html#a527e66125f3ae6ce87adbc72eab7d0b9',1,'IRsend.h']]], + ['kmaximumstr_5827',['kMaximumStr',['../IRtext_8cpp.html#af346693e98c91c7ce79bb22c7460dcee',1,'kMaximumStr(): IRtext.cpp'],['../IRtext_8h.html#a487173616cc3fced0489c01c11333912',1,'kMaximumStr(): IRtext.cpp']]], + ['kmaxleftstr_5828',['kMaxLeftStr',['../IRtext_8cpp.html#ae8ad7e46c3a33b4b9c5fa6545c9e3822',1,'kMaxLeftStr(): IRtext.cpp'],['../IRtext_8h.html#aac197960695463757652bc643efdcd59',1,'kMaxLeftStr(): IRtext.cpp']]], + ['kmaxrightstr_5829',['kMaxRightStr',['../IRtext_8cpp.html#a1ae3f331adb8ac6d1a27aa3d688fb65f',1,'kMaxRightStr(): IRtext.cpp'],['../IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e',1,'kMaxRightStr(): IRtext.cpp']]], + ['kmaxstr_5830',['kMaxStr',['../IRtext_8cpp.html#ad30e01090f06db0a3cb0c00bb6d2f0ca',1,'kMaxStr(): IRtext.cpp'],['../IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb',1,'kMaxStr(): IRtext.cpp']]], + ['kmaxtimeoutms_5831',['kMaxTimeoutMs',['../IRrecv_8h.html#a73391726d7caccb9b498bba73a969784',1,'IRrecv.h']]], + ['kmediumstr_5832',['kMediumStr',['../IRtext_8cpp.html#ac59539e93fdc7d8f15f1f55bcbf933c5',1,'kMediumStr(): IRtext.cpp'],['../IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b',1,'kMediumStr(): IRtext.cpp']]], + ['kmedstr_5833',['kMedStr',['../IRtext_8cpp.html#a4832f8f5118018fa3c6eae1cd652eabf',1,'kMedStr(): IRtext.cpp'],['../IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0',1,'kMedStr(): IRtext.cpp']]], + ['kmiddlestr_5834',['kMiddleStr',['../IRtext_8cpp.html#a536f05d84867cfae601d4c1a2312d755',1,'kMiddleStr(): IRtext.cpp'],['../IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad',1,'kMiddleStr(): IRtext.cpp']]], + ['kmidea24bits_5835',['kMidea24Bits',['../IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14',1,'IRremoteESP8266.h']]], + ['kmidea24mingap_5836',['kMidea24MinGap',['../ir__Midea_8cpp.html#abfee73cafcc017c4742893908200dffc',1,'ir_Midea.cpp']]], + ['kmidea24minrepeat_5837',['kMidea24MinRepeat',['../IRremoteESP8266_8h.html#a8ed4bb62818fc64e4c4b60ef1094059e',1,'IRremoteESP8266.h']]], + ['kmideaacauto_5838',['kMideaACAuto',['../ir__Midea_8h.html#a379f580c4d1832a62fe49d66f7c13af6',1,'ir_Midea.h']]], + ['kmideaaccelsiusoffset_5839',['kMideaACCelsiusOffset',['../ir__Midea_8h.html#a3354c62fbd83c1f0c55aee359d45a1e0',1,'ir_Midea.h']]], + ['kmideaaccool_5840',['kMideaACCool',['../ir__Midea_8h.html#a94b1b18f6aa9c5010699ea9bfcc89b21',1,'ir_Midea.h']]], + ['kmideaacdry_5841',['kMideaACDry',['../ir__Midea_8h.html#a88c2d215406e337b437b99a04c4ca6c4',1,'ir_Midea.h']]], + ['kmideaacfan_5842',['kMideaACFan',['../ir__Midea_8h.html#ac92dd372bb18d43aea73d5ec511e1290',1,'ir_Midea.h']]], + ['kmideaacfanauto_5843',['kMideaACFanAuto',['../ir__Midea_8h.html#a334a64f653b141d67ffda2eca2a9851f',1,'ir_Midea.h']]], + ['kmideaacfanhigh_5844',['kMideaACFanHigh',['../ir__Midea_8h.html#a9c177aff562a19f32d6cf010704ac681',1,'ir_Midea.h']]], + ['kmideaacfanlow_5845',['kMideaACFanLow',['../ir__Midea_8h.html#a90ebe3812e8b554798a2083ddfe9fdff',1,'ir_Midea.h']]], + ['kmideaacfanmed_5846',['kMideaACFanMed',['../ir__Midea_8h.html#a9406c8d9ad79e6a121a29cd5455e8e7d',1,'ir_Midea.h']]], + ['kmideaacfanoffset_5847',['kMideaACFanOffset',['../ir__Midea_8h.html#ac210e7bed85ad46cef1fa15a71d8e4c9',1,'ir_Midea.h']]], + ['kmideaacfansize_5848',['kMideaACFanSize',['../ir__Midea_8h.html#ab2726e607d432d00b625471d51b71b21',1,'ir_Midea.h']]], + ['kmideaacheat_5849',['kMideaACHeat',['../ir__Midea_8h.html#aa0fb74d8406327a9510f0efa8a16a488',1,'ir_Midea.h']]], + ['kmideaacmaxtempc_5850',['kMideaACMaxTempC',['../ir__Midea_8h.html#a0cccc3093cffabe1e512f298c04b3ba1',1,'ir_Midea.h']]], + ['kmideaacmaxtempf_5851',['kMideaACMaxTempF',['../ir__Midea_8h.html#ac7306c86080e934055d5be9728c91629',1,'ir_Midea.h']]], + ['kmideaacmintempc_5852',['kMideaACMinTempC',['../ir__Midea_8h.html#ae849eb79db6c077d617283154edade84',1,'ir_Midea.h']]], + ['kmideaacmintempf_5853',['kMideaACMinTempF',['../ir__Midea_8h.html#a0b0bdf519164f793a129d0e32152069a',1,'ir_Midea.h']]], + ['kmideaacmodeoffset_5854',['kMideaACModeOffset',['../ir__Midea_8h.html#a04fb535d82fe9d44d6898dd7c2e3491e',1,'ir_Midea.h']]], + ['kmideaacpoweroffset_5855',['kMideaACPowerOffset',['../ir__Midea_8h.html#a299cd691572c33f5d4742a9c289c279c',1,'ir_Midea.h']]], + ['kmideaacsleepoffset_5856',['kMideaACSleepOffset',['../ir__Midea_8h.html#a3c968881e59795eadfcb991b36755494',1,'ir_Midea.h']]], + ['kmideaactempoffset_5857',['kMideaACTempOffset',['../ir__Midea_8h.html#aec7e9182f167eb9b094670cf9889a595',1,'ir_Midea.h']]], + ['kmideaactempsize_5858',['kMideaACTempSize',['../ir__Midea_8h.html#aad2041ff636467046b63ceeb9fdfaaea',1,'ir_Midea.h']]], + ['kmideaactoggleswingv_5859',['kMideaACToggleSwingV',['../ir__Midea_8h.html#a5420b72289d3ae99a6dbc5c94914c473',1,'ir_Midea.h']]], + ['kmideabitmark_5860',['kMideaBitMark',['../ir__Midea_8cpp.html#a39dc2d03456f67418519dc0f5efde7e0',1,'ir_Midea.cpp']]], + ['kmideabitmarkticks_5861',['kMideaBitMarkTicks',['../ir__Midea_8cpp.html#ac4d9b1460516aa19913b5bd328c1e176',1,'ir_Midea.cpp']]], + ['kmideabits_5862',['kMideaBits',['../IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239',1,'IRremoteESP8266.h']]], + ['kmideahdrmark_5863',['kMideaHdrMark',['../ir__Midea_8cpp.html#adcaa1ad6e2ba1022f3c90266f4fd0378',1,'ir_Midea.cpp']]], + ['kmideahdrmarkticks_5864',['kMideaHdrMarkTicks',['../ir__Midea_8cpp.html#af63b6cfcc5dc3e501b61c0d55d678f9e',1,'ir_Midea.cpp']]], + ['kmideahdrspace_5865',['kMideaHdrSpace',['../ir__Midea_8cpp.html#a8676eda087a85f6639b547140496c12f',1,'ir_Midea.cpp']]], + ['kmideahdrspaceticks_5866',['kMideaHdrSpaceTicks',['../ir__Midea_8cpp.html#aad99b5d8361733a9ca662735783e061c',1,'ir_Midea.cpp']]], + ['kmideamingap_5867',['kMideaMinGap',['../ir__Midea_8cpp.html#ad9ed8fb4841654fa756614862ac63be7',1,'ir_Midea.cpp']]], + ['kmideamingapticks_5868',['kMideaMinGapTicks',['../ir__Midea_8cpp.html#accd4e69e8fe0957ba013b97879fb1120',1,'ir_Midea.cpp']]], + ['kmideaminrepeat_5869',['kMideaMinRepeat',['../IRremoteESP8266_8h.html#aa8876e8e177b8e71154f8cfb42b19160',1,'IRremoteESP8266.h']]], + ['kmideaonespace_5870',['kMideaOneSpace',['../ir__Midea_8cpp.html#aabe187743f36e664c6069b004e9a82f7',1,'ir_Midea.cpp']]], + ['kmideaonespaceticks_5871',['kMideaOneSpaceTicks',['../ir__Midea_8cpp.html#a2cf0d5df2e5a3d7b1d24fd25ae3d7453',1,'ir_Midea.cpp']]], + ['kmideatick_5872',['kMideaTick',['../ir__Midea_8cpp.html#a878185258a4174978b072ac36aa377e2',1,'ir_Midea.cpp']]], + ['kmideatolerance_5873',['kMideaTolerance',['../ir__Midea_8cpp.html#a55553c3b8e7997fb1257ac2a37a929b6',1,'ir_Midea.cpp']]], + ['kmideazerospace_5874',['kMideaZeroSpace',['../ir__Midea_8cpp.html#a107d1d062e8475b84ec4ab548c3f01ef',1,'ir_Midea.cpp']]], + ['kmideazerospaceticks_5875',['kMideaZeroSpaceTicks',['../ir__Midea_8cpp.html#acd6580988c12ef5614727dd4d1b4c92d',1,'ir_Midea.cpp']]], + ['kmidstr_5876',['kMidStr',['../IRtext_8cpp.html#afd827d424c0bfdcc34b3607440fd2652',1,'kMidStr(): IRtext.cpp'],['../IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196',1,'kMidStr(): IRtext.cpp']]], + ['kminimumstr_5877',['kMinimumStr',['../IRtext_8cpp.html#acbd869e5978b6fee053d33d8cf21e11a',1,'kMinimumStr(): IRtext.cpp'],['../IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607',1,'kMinimumStr(): IRtext.cpp']]], + ['kminstr_5878',['kMinStr',['../IRtext_8cpp.html#a2b0c7369c1a93b8a7d5a87bf37fcee34',1,'kMinStr(): IRtext.cpp'],['../IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8',1,'kMinStr(): IRtext.cpp']]], + ['kminutesstr_5879',['kMinutesStr',['../IRtext_8cpp.html#a1c05b3e6af04586a0060c58979df002f',1,'kMinutesStr(): IRtext.cpp'],['../IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38',1,'kMinutesStr(): IRtext.cpp']]], + ['kminutestr_5880',['kMinuteStr',['../IRtext_8cpp.html#acab620931ba510a7bc395bad59169099',1,'kMinuteStr(): IRtext.cpp'],['../IRtext_8h.html#a54df015b1adadb211a30f826999c78f6',1,'kMinuteStr(): IRtext.cpp']]], + ['kmitsubishi112auto_5881',['kMitsubishi112Auto',['../ir__Mitsubishi_8h.html#a6e38f06ff78e3406a4f2cf1e1b453402',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112bitmark_5882',['kMitsubishi112BitMark',['../ir__Mitsubishi_8cpp.html#aef96bbd77d5bd66ed220840c09f54c37',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112bits_5883',['kMitsubishi112Bits',['../IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8',1,'IRremoteESP8266.h']]], + ['kmitsubishi112cool_5884',['kMitsubishi112Cool',['../ir__Mitsubishi_8h.html#aa9d1a63a8a275cda1794628f8d516963',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112dry_5885',['kMitsubishi112Dry',['../ir__Mitsubishi_8h.html#a4a3023d0342003b7947b19c9c5c25fb3',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanbyte_5886',['kMitsubishi112FanByte',['../ir__Mitsubishi_8h.html#a4312828eb864a67f8cc67a90c1324d3a',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanlow_5887',['kMitsubishi112FanLow',['../ir__Mitsubishi_8h.html#a4b8d6d04bb75ed98f6ed5bdff7472f50',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanmax_5888',['kMitsubishi112FanMax',['../ir__Mitsubishi_8h.html#a5a3e7c72ed85864b34f8ee298b3adc49',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanmed_5889',['kMitsubishi112FanMed',['../ir__Mitsubishi_8h.html#aa8a81057eeccbf528962b31a197b0319',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanmin_5890',['kMitsubishi112FanMin',['../ir__Mitsubishi_8h.html#ad8b101130e781d30b5d4072b3c514c78',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanoffset_5891',['kMitsubishi112FanOffset',['../ir__Mitsubishi_8h.html#ac000e0d3a59314c115e516f37c29983d',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fanquiet_5892',['kMitsubishi112FanQuiet',['../ir__Mitsubishi_8h.html#addcf7a99c5ba2f4510754d22a4c0760f',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112fansize_5893',['kMitsubishi112FanSize',['../ir__Mitsubishi_8h.html#ab102138f689d66c2c4c97445931f2dec',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112gap_5894',['kMitsubishi112Gap',['../ir__Mitsubishi_8cpp.html#ab24cc7d395c1620b9519b5d0ce2a2023',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112hdrmark_5895',['kMitsubishi112HdrMark',['../ir__Mitsubishi_8cpp.html#a3082567d58d6f8e6ef26714ff23f3728',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112hdrmarktolerance_5896',['kMitsubishi112HdrMarkTolerance',['../ir__Mitsubishi_8cpp.html#a288931e01f8cffa1917fb7bc59710e20',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112hdrspace_5897',['kMitsubishi112HdrSpace',['../ir__Mitsubishi_8cpp.html#a7b35ecbbc94f7ef622b20f21f83c0fba',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112heat_5898',['kMitsubishi112Heat',['../ir__Mitsubishi_8h.html#a260b6883e9433b466abf31618b1c4015',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112maxtemp_5899',['kMitsubishi112MaxTemp',['../ir__Mitsubishi_8h.html#afd968ea297ef8856b7266a8cc6e1bba0',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112minrepeat_5900',['kMitsubishi112MinRepeat',['../IRremoteESP8266_8h.html#a6bba58bb0f33feb9a6dfd20637d01d13',1,'IRremoteESP8266.h']]], + ['kmitsubishi112mintemp_5901',['kMitsubishi112MinTemp',['../ir__Mitsubishi_8h.html#acea288a8911a540cb9602d057eccb2a6',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112modebyte_5902',['kMitsubishi112ModeByte',['../ir__Mitsubishi_8h.html#a7e7663483fa89b4283baafba744d707a',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112modeoffset_5903',['kMitsubishi112ModeOffset',['../ir__Mitsubishi_8h.html#a39c8631bfd414738f1934eb28e74b97b',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112onespace_5904',['kMitsubishi112OneSpace',['../ir__Mitsubishi_8cpp.html#a8dd0d824826a7da007e78741015d418a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi112powerbyte_5905',['kMitsubishi112PowerByte',['../ir__Mitsubishi_8h.html#ab09f78fee2a242dfdb0318a4caf7a2d6',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112poweroffset_5906',['kMitsubishi112PowerOffset',['../ir__Mitsubishi_8h.html#afd78de91190fa6ec8ffcc9132e3a8b35',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112statelength_5907',['kMitsubishi112StateLength',['../IRremoteESP8266_8h.html#a5ff0437b26e325bc2516a3e63c7ffe76',1,'IRremoteESP8266.h']]], + ['kmitsubishi112swinghauto_5908',['kMitsubishi112SwingHAuto',['../ir__Mitsubishi_8h.html#ab55e72c6d2b407868cda075efb24ac92',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghbyte_5909',['kMitsubishi112SwingHByte',['../ir__Mitsubishi_8h.html#ac149161c62c9ceee1c3a37d73930a7e8',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghleft_5910',['kMitsubishi112SwingHLeft',['../ir__Mitsubishi_8h.html#a8299b42b0972bda8a4bc4f32527c33e9',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghleftmax_5911',['kMitsubishi112SwingHLeftMax',['../ir__Mitsubishi_8h.html#a48346e97056af670454bc77a64b904bc',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghmiddle_5912',['kMitsubishi112SwingHMiddle',['../ir__Mitsubishi_8h.html#a7adcab7d152d84adef2059339de4bb40',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghoffset_5913',['kMitsubishi112SwingHOffset',['../ir__Mitsubishi_8h.html#a42f92264157e170d68046b9970a057ed',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghright_5914',['kMitsubishi112SwingHRight',['../ir__Mitsubishi_8h.html#a76cf277572a2b628d4a5353186ca2522',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghrightmax_5915',['kMitsubishi112SwingHRightMax',['../ir__Mitsubishi_8h.html#a1ff73f603b6e32075cbc9253d3090b49',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghsize_5916',['kMitsubishi112SwingHSize',['../ir__Mitsubishi_8h.html#a9ab977dbab987789d40fae38212f07ba',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swinghwide_5917',['kMitsubishi112SwingHWide',['../ir__Mitsubishi_8h.html#afab80db45769ab2957afc0e4799b46e5',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvauto_5918',['kMitsubishi112SwingVAuto',['../ir__Mitsubishi_8h.html#a1e16b172e864a74b426b1f823770cdaa',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvbyte_5919',['kMitsubishi112SwingVByte',['../ir__Mitsubishi_8h.html#afbcd99e59a029ccc6276c87a46d560dd',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvhigh_5920',['kMitsubishi112SwingVHigh',['../ir__Mitsubishi_8h.html#ab6e345e609d72f9ed903e30f3aa9a26f',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvhighest_5921',['kMitsubishi112SwingVHighest',['../ir__Mitsubishi_8h.html#a1cb8c62990dfb98a8ea228ad59cd88e5',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvlow_5922',['kMitsubishi112SwingVLow',['../ir__Mitsubishi_8h.html#a515bea322889f619d64ae96c37eaba72',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvlowest_5923',['kMitsubishi112SwingVLowest',['../ir__Mitsubishi_8h.html#ac4dd729a11e3ece244df6b1ddc9250f8',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvmiddle_5924',['kMitsubishi112SwingVMiddle',['../ir__Mitsubishi_8h.html#a0ae62480999dc4cf8a223b59938a0d68',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvoffset_5925',['kMitsubishi112SwingVOffset',['../ir__Mitsubishi_8h.html#ae4f3919271bb464d90a42066e8052c64',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112swingvsize_5926',['kMitsubishi112SwingVSize',['../ir__Mitsubishi_8h.html#ae4f466b64691d8aa20e66a982d65ceea',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112tempbyte_5927',['kMitsubishi112TempByte',['../ir__Mitsubishi_8h.html#a4099370512a63ae3414221ab45f05034',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112tempsize_5928',['kMitsubishi112TempSize',['../ir__Mitsubishi_8h.html#a30d0ece1b7db3558ecc03214843c9fec',1,'ir_Mitsubishi.h']]], + ['kmitsubishi112zerospace_5929',['kMitsubishi112ZeroSpace',['../ir__Mitsubishi_8cpp.html#ad70d1567dc2e4ea07a247f2555fc23b4',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136auto_5930',['kMitsubishi136Auto',['../ir__Mitsubishi_8h.html#ae10977a0d09f4c583b03fa05720c3aed',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136bitmark_5931',['kMitsubishi136BitMark',['../ir__Mitsubishi_8cpp.html#a3aa9c715088a58a8b4a97d5038dbf6d4',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136bits_5932',['kMitsubishi136Bits',['../IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974',1,'IRremoteESP8266.h']]], + ['kmitsubishi136cool_5933',['kMitsubishi136Cool',['../ir__Mitsubishi_8h.html#a93332579055a07ea291b3caf9ad11944',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136dry_5934',['kMitsubishi136Dry',['../ir__Mitsubishi_8h.html#ad612c480e8664169e2b8e062d47bd8b9',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fan_5935',['kMitsubishi136Fan',['../ir__Mitsubishi_8h.html#a4445944955b9017fcd6d1ae447f1b0d7',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanbyte_5936',['kMitsubishi136FanByte',['../ir__Mitsubishi_8h.html#a62166a745fdf0bbbd4b0eb114073b03e',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanlow_5937',['kMitsubishi136FanLow',['../ir__Mitsubishi_8h.html#af0f7177491c4cb053e6811376be956ec',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanmax_5938',['kMitsubishi136FanMax',['../ir__Mitsubishi_8h.html#a43a4337e20fbf4f6747a58c15213bd16',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanmed_5939',['kMitsubishi136FanMed',['../ir__Mitsubishi_8h.html#a73ff7df8fe65829cfd5875dc5040dec7',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanmin_5940',['kMitsubishi136FanMin',['../ir__Mitsubishi_8h.html#a2623eaf6e7d2ceb20ee72faddf46569e',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanoffset_5941',['kMitsubishi136FanOffset',['../ir__Mitsubishi_8h.html#aaa194e1e4394d3805477f4b2b78d3a81',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fanquiet_5942',['kMitsubishi136FanQuiet',['../ir__Mitsubishi_8h.html#af2f7483bbb99216614e01dd5aedc35d5',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136fansize_5943',['kMitsubishi136FanSize',['../ir__Mitsubishi_8h.html#a3fa7836f102aa9c78d7dd287a038baee',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136gap_5944',['kMitsubishi136Gap',['../ir__Mitsubishi_8cpp.html#a3f9e0708bbe8ed3ff98a563c3ff1af2b',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136hdrmark_5945',['kMitsubishi136HdrMark',['../ir__Mitsubishi_8cpp.html#a49c54ff757d070de54e3739b775bea00',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136hdrspace_5946',['kMitsubishi136HdrSpace',['../ir__Mitsubishi_8cpp.html#a1ddd09e423c427b3956298c20725188a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136heat_5947',['kMitsubishi136Heat',['../ir__Mitsubishi_8h.html#a932f074e9348d35cea119c8141eeb7f2',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136maxtemp_5948',['kMitsubishi136MaxTemp',['../ir__Mitsubishi_8h.html#a2db420b28003dc3e05bf1c86830c61ed',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136minrepeat_5949',['kMitsubishi136MinRepeat',['../IRremoteESP8266_8h.html#a448bd7af5fdab67fb40901a3d6efed21',1,'IRremoteESP8266.h']]], + ['kmitsubishi136mintemp_5950',['kMitsubishi136MinTemp',['../ir__Mitsubishi_8h.html#a5e2e5783d33f927f941271a44d11434c',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136modebyte_5951',['kMitsubishi136ModeByte',['../ir__Mitsubishi_8h.html#a98fbde8559e82a1875235019913e859c',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136modeoffset_5952',['kMitsubishi136ModeOffset',['../ir__Mitsubishi_8h.html#a061d59096df59826d951e83594728893',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136onespace_5953',['kMitsubishi136OneSpace',['../ir__Mitsubishi_8cpp.html#a9a0cfee8b6ea94d3f798d53d30c99d5f',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi136powerbit_5954',['kMitsubishi136PowerBit',['../ir__Mitsubishi_8h.html#abbe2f7821db2a6f4696cf7f9138c509d',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136powerbyte_5955',['kMitsubishi136PowerByte',['../ir__Mitsubishi_8h.html#aca06b9d066d3f1a322bbb0f3d1a874a7',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136poweroffset_5956',['kMitsubishi136PowerOffset',['../ir__Mitsubishi_8h.html#ad235f31bc4b42548373c15e18f29e8b1',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136statelength_5957',['kMitsubishi136StateLength',['../IRremoteESP8266_8h.html#a01adbe4e1afb2ba26a5a60bf5b0b42f6',1,'IRremoteESP8266.h']]], + ['kmitsubishi136swingvauto_5958',['kMitsubishi136SwingVAuto',['../ir__Mitsubishi_8h.html#a828c2cc017cb7d00872137464d2119ae',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvbyte_5959',['kMitsubishi136SwingVByte',['../ir__Mitsubishi_8h.html#ab31414515f89e94ec8b63028e215b5ad',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvhigh_5960',['kMitsubishi136SwingVHigh',['../ir__Mitsubishi_8h.html#a319b36df23511aba8fb16b13eda9333b',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvhighest_5961',['kMitsubishi136SwingVHighest',['../ir__Mitsubishi_8h.html#a5bd1dbb97df91dfec0f9493120ea1269',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvlow_5962',['kMitsubishi136SwingVLow',['../ir__Mitsubishi_8h.html#a1ba4f3f7eb75bb54a752cfb11f196af0',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136swingvlowest_5963',['kMitsubishi136SwingVLowest',['../ir__Mitsubishi_8h.html#ab0701f0127b07780066040bc08e46a2e',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136tempbyte_5964',['kMitsubishi136TempByte',['../ir__Mitsubishi_8h.html#a22bf24adb745489a75fb877fa5cc249a',1,'ir_Mitsubishi.h']]], + ['kmitsubishi136zerospace_5965',['kMitsubishi136ZeroSpace',['../ir__Mitsubishi_8cpp.html#afaf1eca1169f492dcdd8a7266756c827',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2bitmark_5966',['kMitsubishi2BitMark',['../ir__Mitsubishi_8cpp.html#a8b0e87a15c51c3b62c14b4e7a071207f',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2hdrmark_5967',['kMitsubishi2HdrMark',['../ir__Mitsubishi_8cpp.html#a2d838e748f1f69165fb6b672955ea95e',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2hdrspace_5968',['kMitsubishi2HdrSpace',['../ir__Mitsubishi_8cpp.html#acd8994a08389c8d874afcbb8eb9c0861',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2mingap_5969',['kMitsubishi2MinGap',['../ir__Mitsubishi_8cpp.html#a7fa283a14968b582123a474c86a6fde9',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2onespace_5970',['kMitsubishi2OneSpace',['../ir__Mitsubishi_8cpp.html#aeee614cef3e95f661dca95b344edcf64',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishi2zerospace_5971',['kMitsubishi2ZeroSpace',['../ir__Mitsubishi_8cpp.html#a665522ccd10f4c9fba39e3f8f8a5cb95',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacauto_5972',['kMitsubishiAcAuto',['../ir__Mitsubishi_8h.html#a1fdbdc0906594e0efebbd05110877000',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacbitmark_5973',['kMitsubishiAcBitMark',['../ir__Mitsubishi_8cpp.html#a3787c48ffff208ef964886efab7e17ca',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacbits_5974',['kMitsubishiACBits',['../IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b',1,'IRremoteESP8266.h']]], + ['kmitsubishiaccool_5975',['kMitsubishiAcCool',['../ir__Mitsubishi_8h.html#a434455f6c76f0ca354b01e6a8a6479e9',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacdry_5976',['kMitsubishiAcDry',['../ir__Mitsubishi_8h.html#a9875c4b91a1b155b5f2e12370c33e031',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacextratolerance_5977',['kMitsubishiAcExtraTolerance',['../ir__Mitsubishi_8cpp.html#a98a0e4182311d584d4de4632eb491f04',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacfanauto_5978',['kMitsubishiAcFanAuto',['../ir__Mitsubishi_8h.html#a302cfd0468875cff23c69f71c392ad36',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanautooffset_5979',['kMitsubishiAcFanAutoOffset',['../ir__Mitsubishi_8h.html#ab8696268b90bf45314d712c212d68a10',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanmax_5980',['kMitsubishiAcFanMax',['../ir__Mitsubishi_8h.html#abbc2b87dfc6b2364d065f66f4d3e540c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanoffset_5981',['kMitsubishiAcFanOffset',['../ir__Mitsubishi_8h.html#ac16a5f7fe9800006de4511fd4ac89d64',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanquiet_5982',['kMitsubishiAcFanQuiet',['../ir__Mitsubishi_8h.html#a90799250620dec05385b9e81cfcb83af',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfanrealmax_5983',['kMitsubishiAcFanRealMax',['../ir__Mitsubishi_8h.html#aa28f81fbd686adb082786e7cda9a17fc',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfansilent_5984',['kMitsubishiAcFanSilent',['../ir__Mitsubishi_8h.html#a731206548afa4f2672a78dae677f6b44',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacfansize_5985',['kMitsubishiAcFanSize',['../ir__Mitsubishi_8h.html#a565c641228d28357282b211048f1bd1c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiachdrmark_5986',['kMitsubishiAcHdrMark',['../ir__Mitsubishi_8cpp.html#a11fcb08ce6bf9fa5fc50ca0e5c7d2d64',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiachdrspace_5987',['kMitsubishiAcHdrSpace',['../ir__Mitsubishi_8cpp.html#af0af560129a4666aeba1a4a9ab59e271',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacheat_5988',['kMitsubishiAcHeat',['../ir__Mitsubishi_8h.html#a6107df195ecf54ec4ef97b5ab82e911c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacmaxtemp_5989',['kMitsubishiAcMaxTemp',['../ir__Mitsubishi_8h.html#a8ba3fba3eb9dd63f5ade3cb3bd11269b',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacminrepeat_5990',['kMitsubishiACMinRepeat',['../IRremoteESP8266_8h.html#a376653a421df42d889ac3b2a071de58b',1,'IRremoteESP8266.h']]], + ['kmitsubishiacmintemp_5991',['kMitsubishiAcMinTemp',['../ir__Mitsubishi_8h.html#a2d6d53ccf446fcb03331f4e9757f4169',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacmodeoffset_5992',['kMitsubishiAcModeOffset',['../ir__Mitsubishi_8h.html#ac0037c13e3f90b7bde5a8328faaa3b9b',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacnotimer_5993',['kMitsubishiAcNoTimer',['../ir__Mitsubishi_8h.html#a0f5da97478cd6cdf2ffab161657e4ab6',1,'ir_Mitsubishi.h']]], + ['kmitsubishiaconespace_5994',['kMitsubishiAcOneSpace',['../ir__Mitsubishi_8cpp.html#abdf26b381c5288556257fabf43458775',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacpower_5995',['kMitsubishiAcPower',['../ir__Mitsubishi_8h.html#a864c4d936663d68f65ed4525072bd3eb',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacpoweroffset_5996',['kMitsubishiAcPowerOffset',['../ir__Mitsubishi_8h.html#a78749519549fb76a920ca447a4504e72',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacrptmark_5997',['kMitsubishiAcRptMark',['../ir__Mitsubishi_8cpp.html#a541d764aef906909a1a0d40466567c92',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacrptspace_5998',['kMitsubishiAcRptSpace',['../ir__Mitsubishi_8cpp.html#a4b120db1bd34c62778597abf05092d0a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiacstartstoptimer_5999',['kMitsubishiAcStartStopTimer',['../ir__Mitsubishi_8h.html#aecbdc43fb4bd199c47cb5125816eab59',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacstarttimer_6000',['kMitsubishiAcStartTimer',['../ir__Mitsubishi_8h.html#a4107cbc35f18204f46adb57b0fd0f09c',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacstatelength_6001',['kMitsubishiACStateLength',['../IRremoteESP8266_8h.html#a7d0d6dd6d5741f91a1afb641f11d9bc5',1,'IRremoteESP8266.h']]], + ['kmitsubishiacstoptimer_6002',['kMitsubishiAcStopTimer',['../ir__Mitsubishi_8h.html#a5e59039d523d15b145aa87222d52f2bf',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvaneauto_6003',['kMitsubishiAcVaneAuto',['../ir__Mitsubishi_8h.html#a1caff28ea3678cc5f655fc7147c5a15e',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvaneautomove_6004',['kMitsubishiAcVaneAutoMove',['../ir__Mitsubishi_8h.html#a2dc0b1ff66ffc21f626d7d8894a31fbb',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvanebitoffset_6005',['kMitsubishiAcVaneBitOffset',['../ir__Mitsubishi_8h.html#a0766870a9709320cfff03d0147f8e414',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvaneoffset_6006',['kMitsubishiAcVaneOffset',['../ir__Mitsubishi_8h.html#a2e928c1f814b71a1c346b3e987d7b857',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacvanesize_6007',['kMitsubishiAcVaneSize',['../ir__Mitsubishi_8h.html#a27d52c41a9309a89e3a2c45b87c501ff',1,'ir_Mitsubishi.h']]], + ['kmitsubishiacwidevaneauto_6008',['kMitsubishiAcWideVaneAuto',['../ir__Mitsubishi_8h.html#a2081e2b8eb778e15b7d9f2f0f332c012',1,'ir_Mitsubishi.h']]], + ['kmitsubishiaczerospace_6009',['kMitsubishiAcZeroSpace',['../ir__Mitsubishi_8cpp.html#a9481515c349154bbb6f56cec2712ba85',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishibitmark_6010',['kMitsubishiBitMark',['../ir__Mitsubishi_8cpp.html#a82c8e081b172080df14bdd6e3e6eb608',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishibitmarkticks_6011',['kMitsubishiBitMarkTicks',['../ir__Mitsubishi_8cpp.html#a6daf88606f40b13bce698c73d00f5faf',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishibits_6012',['kMitsubishiBits',['../IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152bits_6013',['kMitsubishiHeavy152Bits',['../IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152fanauto_6014',['kMitsubishiHeavy152FanAuto',['../ir__MitsubishiHeavy_8h.html#ae1739c1b5cd00b28a06dfd96413570a8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanecono_6015',['kMitsubishiHeavy152FanEcono',['../ir__MitsubishiHeavy_8h.html#acf0522589438103f805889e980259eb8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanhigh_6016',['kMitsubishiHeavy152FanHigh',['../ir__MitsubishiHeavy_8h.html#a48881ddd596b6945d04465b3f7a9bee6',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanlow_6017',['kMitsubishiHeavy152FanLow',['../ir__MitsubishiHeavy_8h.html#acff7254b2ced32550ec9305dbaac3d95',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanmax_6018',['kMitsubishiHeavy152FanMax',['../ir__MitsubishiHeavy_8h.html#aa1e9a41137a7dd65fc049ae41856795f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanmed_6019',['kMitsubishiHeavy152FanMed',['../ir__MitsubishiHeavy_8h.html#ac432324a30abcc0e664cf0ff8e974516',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152fanturbo_6020',['kMitsubishiHeavy152FanTurbo',['../ir__MitsubishiHeavy_8h.html#a7665d1ecb52afabd0dd951f2ab54e59b',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152minrepeat_6021',['kMitsubishiHeavy152MinRepeat',['../IRremoteESP8266_8h.html#a789cbb74cf332f8440a4fcdcac188741',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152statelength_6022',['kMitsubishiHeavy152StateLength',['../IRremoteESP8266_8h.html#a31d12a44c8c3a3c4533f65b8213e2086',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy152swinghauto_6023',['kMitsubishiHeavy152SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac0ed87ce67ece78e2e9f2b49da5ba152',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghleft_6024',['kMitsubishiHeavy152SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a1a20549b529745e913565e6d717d9f95',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghleftmax_6025',['kMitsubishiHeavy152SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a970e6b602f5bbd4d560249966f6de6c9',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghleftright_6026',['kMitsubishiHeavy152SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a24c71dc5a17affb2f2d136f6846befbc',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghmiddle_6027',['kMitsubishiHeavy152SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#af1a02e21631c1efb12a01b3db065916c',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghoff_6028',['kMitsubishiHeavy152SwingHOff',['../ir__MitsubishiHeavy_8h.html#a246f8f9c9083f21ee22c2367ece2b9e2',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghright_6029',['kMitsubishiHeavy152SwingHRight',['../ir__MitsubishiHeavy_8h.html#aeec05249b3958f5a1cd629b328209e05',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghrightleft_6030',['kMitsubishiHeavy152SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#a43ddc14cc8707aa9743519b1c54eb776',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swinghrightmax_6031',['kMitsubishiHeavy152SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#ae825ed46bf143bc6a01891a5f021c870',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvauto_6032',['kMitsubishiHeavy152SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a31c20346b5538d74b58cb1fd499b5751',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvhigh_6033',['kMitsubishiHeavy152SwingVHigh',['../ir__MitsubishiHeavy_8h.html#a9ac8e39e46b43fb2276af7dd9724e3d4',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvhighest_6034',['kMitsubishiHeavy152SwingVHighest',['../ir__MitsubishiHeavy_8h.html#a554efbb611fd29a5d388d8195aa79993',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvlow_6035',['kMitsubishiHeavy152SwingVLow',['../ir__MitsubishiHeavy_8h.html#ad9a0b57ba70d318572b77236c23830a7',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvlowest_6036',['kMitsubishiHeavy152SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a02f1b980aa78b4ff314209d16bf0a6e8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvmiddle_6037',['kMitsubishiHeavy152SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#ae5c3ec8b8837dddff01d71c44a4ba813',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvoff_6038',['kMitsubishiHeavy152SwingVOff',['../ir__MitsubishiHeavy_8h.html#abb6905210a2f4021d157eeb61eaed7cd',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvoffset_6039',['kMitsubishiHeavy152SwingVOffset',['../ir__MitsubishiHeavy_8h.html#ae46f3549243667bbc38d6dc058772699',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy152swingvsize_6040',['kMitsubishiHeavy152SwingVSize',['../ir__MitsubishiHeavy_8h.html#a9cf7566686359cd5d553881b5eb96131',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy3dmask_6041',['kMitsubishiHeavy3DMask',['../ir__MitsubishiHeavy_8h.html#a16dcde537c9a2b1e8ddab4d6e08abb39',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88bits_6042',['kMitsubishiHeavy88Bits',['../IRremoteESP8266_8h.html#aa80d389140df4ab7071bfb3510b35dda',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy88cleanoffset_6043',['kMitsubishiHeavy88CleanOffset',['../ir__MitsubishiHeavy_8h.html#ac0a4108b9ce94b3a85c2cb9680c98f4e',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanauto_6044',['kMitsubishiHeavy88FanAuto',['../ir__MitsubishiHeavy_8h.html#a607cbc27223765b3dd1f9bfd77932d0f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanecono_6045',['kMitsubishiHeavy88FanEcono',['../ir__MitsubishiHeavy_8h.html#ab5fbaaffd9e0182fc7e60252f89da2c3',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanhigh_6046',['kMitsubishiHeavy88FanHigh',['../ir__MitsubishiHeavy_8h.html#aa45b29aaa7d8df7a34dfe6308a6b6412',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanlow_6047',['kMitsubishiHeavy88FanLow',['../ir__MitsubishiHeavy_8h.html#a92f0cba1aef78e5ade01c648837e7553',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanmed_6048',['kMitsubishiHeavy88FanMed',['../ir__MitsubishiHeavy_8h.html#aade681ee8ed4c4647a997a3caad093ea',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanoffset_6049',['kMitsubishiHeavy88FanOffset',['../ir__MitsubishiHeavy_8h.html#a477fe23b5b186f4386e5d0cbded98710',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fansize_6050',['kMitsubishiHeavy88FanSize',['../ir__MitsubishiHeavy_8h.html#a68ffc738a040b3c95a839362e069fe8a',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88fanturbo_6051',['kMitsubishiHeavy88FanTurbo',['../ir__MitsubishiHeavy_8h.html#a29201ebd9395edb2660337ee00efa1dd',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88minrepeat_6052',['kMitsubishiHeavy88MinRepeat',['../IRremoteESP8266_8h.html#ad7bccde1a9b32c962c99748fb130f711',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy88statelength_6053',['kMitsubishiHeavy88StateLength',['../IRremoteESP8266_8h.html#a515e5a081c388dd4313b20ff2b6c7955',1,'IRremoteESP8266.h']]], + ['kmitsubishiheavy88swingh3d_6054',['kMitsubishiHeavy88SwingH3D',['../ir__MitsubishiHeavy_8h.html#adfeb87be0ddfc6c06bbcb4a1506d3185',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghauto_6055',['kMitsubishiHeavy88SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac39f2339ab90bdc6d9c98dd6cf95fce2',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghleft_6056',['kMitsubishiHeavy88SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a32a76b07c6da2b09d04d985544d91af1',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghleftmax_6057',['kMitsubishiHeavy88SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a83340e32cff8ca09eb7596ec55a67853',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghleftright_6058',['kMitsubishiHeavy88SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a82f7addc930441b6e756d71ce3df24ca',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghmiddle_6059',['kMitsubishiHeavy88SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#a7a4b00b2953f2bc068d83c2618484c69',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghoff_6060',['kMitsubishiHeavy88SwingHOff',['../ir__MitsubishiHeavy_8h.html#a5313aeb4115ca5a795c6ebb9871ce436',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghoffset1_6061',['kMitsubishiHeavy88SwingHOffset1',['../ir__MitsubishiHeavy_8h.html#aeefa28e96d259e4ad5b63b86abf46f39',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghoffset2_6062',['kMitsubishiHeavy88SwingHOffset2',['../ir__MitsubishiHeavy_8h.html#a9efbee563f821dad4006e8c56de9131d',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghright_6063',['kMitsubishiHeavy88SwingHRight',['../ir__MitsubishiHeavy_8h.html#a35224e254d897b9d42e16f9dae04d984',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghrightleft_6064',['kMitsubishiHeavy88SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#aa913c0f1c61260c533c66aaa12dc83ac',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghrightmax_6065',['kMitsubishiHeavy88SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#a83c481d42999e377a2c50cacc28017b0',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swinghsize_6066',['kMitsubishiHeavy88SwingHSize',['../ir__MitsubishiHeavy_8h.html#a46a3cb1874cf5d1875e971094527b98f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvauto_6067',['kMitsubishiHeavy88SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a65c66f030afd2795d3132b3d0be2cabe',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte5offset_6068',['kMitsubishiHeavy88SwingVByte5Offset',['../ir__MitsubishiHeavy_8h.html#adab63d1b0145cbea0953a9fdd34fd3cf',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte5size_6069',['kMitsubishiHeavy88SwingVByte5Size',['../ir__MitsubishiHeavy_8h.html#ae0569562330f8c2af57a78764341c310',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte7offset_6070',['kMitsubishiHeavy88SwingVByte7Offset',['../ir__MitsubishiHeavy_8h.html#a8e864258ce7f01edb3b8d4672bba6312',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvbyte7size_6071',['kMitsubishiHeavy88SwingVByte7Size',['../ir__MitsubishiHeavy_8h.html#a2e0d599b002366cc73d07f876d4fc0f7',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvhigh_6072',['kMitsubishiHeavy88SwingVHigh',['../ir__MitsubishiHeavy_8h.html#af99a8f0925f184f56080ddf3e9a37606',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvhighest_6073',['kMitsubishiHeavy88SwingVHighest',['../ir__MitsubishiHeavy_8h.html#adc2a20b5ca5dda6417c60a1a3c321fc0',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvlow_6074',['kMitsubishiHeavy88SwingVLow',['../ir__MitsubishiHeavy_8h.html#adb086c76e06cbf6c8808470363da5e93',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvlowest_6075',['kMitsubishiHeavy88SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a6f4af31ee9b187648c242aca2851d3ed',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvmiddle_6076',['kMitsubishiHeavy88SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#aeaddb1d80dd777c0fdd8e77661479598',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavy88swingvoff_6077',['kMitsubishiHeavy88SwingVOff',['../ir__MitsubishiHeavy_8h.html#ad29f5b94153e0fc9943a2c4c02aa1f61',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyauto_6078',['kMitsubishiHeavyAuto',['../ir__MitsubishiHeavy_8h.html#a1bcb7429a89904e3b431aaaff20e35fa',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavybitmark_6079',['kMitsubishiHeavyBitMark',['../ir__MitsubishiHeavy_8cpp.html#a54b398e130a1893bdc81067c636d6001',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavycleanoffset_6080',['kMitsubishiHeavyCleanOffset',['../ir__MitsubishiHeavy_8h.html#acbcff6b22bf5dee4eeb1dbccc323409a',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavycool_6081',['kMitsubishiHeavyCool',['../ir__MitsubishiHeavy_8h.html#a5d819a9a6372fde79380a6890ffd3168',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavydry_6082',['kMitsubishiHeavyDry',['../ir__MitsubishiHeavy_8h.html#a749f4d74b6cce4ad29a7ab78bb780eaf',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyfan_6083',['kMitsubishiHeavyFan',['../ir__MitsubishiHeavy_8h.html#a55d9e0b9676da64dfdc888e7941665f8',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyfilteroffset_6084',['kMitsubishiHeavyFilterOffset',['../ir__MitsubishiHeavy_8h.html#a32232c193503a4a6bab8f783fdebeddf',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavygap_6085',['kMitsubishiHeavyGap',['../ir__MitsubishiHeavy_8cpp.html#a92920bf4a95bccb9b55c623ff6dac96a',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyhdrmark_6086',['kMitsubishiHeavyHdrMark',['../ir__MitsubishiHeavy_8cpp.html#a9b1724efadc251117733297c424e76f4',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyhdrspace_6087',['kMitsubishiHeavyHdrSpace',['../ir__MitsubishiHeavy_8cpp.html#a9070250903c1d1653beb54ac3de27033',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyheat_6088',['kMitsubishiHeavyHeat',['../ir__MitsubishiHeavy_8h.html#a0b76a854d109dd0622155015edd31d74',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavymaxtemp_6089',['kMitsubishiHeavyMaxTemp',['../ir__MitsubishiHeavy_8h.html#a49abbf34671b67eb4ebbe881444180f4',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavymintemp_6090',['kMitsubishiHeavyMinTemp',['../ir__MitsubishiHeavy_8h.html#afa83fd435c67699da272b883277dbb98',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavymodeoffset_6091',['kMitsubishiHeavyModeOffset',['../ir__MitsubishiHeavy_8h.html#a2ac27d9659d3a203c8cc360bda901d10',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavynightoffset_6092',['kMitsubishiHeavyNightOffset',['../ir__MitsubishiHeavy_8h.html#a01b341211034e272bf5d4be00b88cc78',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyonespace_6093',['kMitsubishiHeavyOneSpace',['../ir__MitsubishiHeavy_8cpp.html#adec6564e4af2886b4c7d44343d98b9dc',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavypoweroffset_6094',['kMitsubishiHeavyPowerOffset',['../ir__MitsubishiHeavy_8h.html#a51d81b3a7d97e423858e00aecd9719c9',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavysiglength_6095',['kMitsubishiHeavySigLength',['../ir__MitsubishiHeavy_8h.html#af08e6fc65b10821e52dd4a0073033d14',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavysilentoffset_6096',['kMitsubishiHeavySilentOffset',['../ir__MitsubishiHeavy_8h.html#a9b7eb89d7a3f08e84339317d1f21ca6f',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyzerospace_6097',['kMitsubishiHeavyZeroSpace',['../ir__MitsubishiHeavy_8cpp.html#a903c30cee53f76c7dc3d2fef74b6e4b2',1,'ir_MitsubishiHeavy.cpp']]], + ['kmitsubishiheavyzjssig_6098',['kMitsubishiHeavyZjsSig',['../ir__MitsubishiHeavy_8h.html#a01eb89bfc9d4b271a97fea566eb937ff',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishiheavyzmssig_6099',['kMitsubishiHeavyZmsSig',['../ir__MitsubishiHeavy_8h.html#a18761991123d121c8d40531d07922165',1,'ir_MitsubishiHeavy.h']]], + ['kmitsubishimincommandlength_6100',['kMitsubishiMinCommandLength',['../ir__Mitsubishi_8cpp.html#ad5a6d37e755ce1faa4cdb024d2bed26a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishimincommandlengthticks_6101',['kMitsubishiMinCommandLengthTicks',['../ir__Mitsubishi_8cpp.html#a4f69a50c720c7a19f0ee04d262eb5948',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishimingap_6102',['kMitsubishiMinGap',['../ir__Mitsubishi_8cpp.html#a66f6379ca4c0e5f03eda2d81be0a35b2',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishimingapticks_6103',['kMitsubishiMinGapTicks',['../ir__Mitsubishi_8cpp.html#af9e8409306344cf4cd0117f2131fc67a',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishiminrepeat_6104',['kMitsubishiMinRepeat',['../IRremoteESP8266_8h.html#ad88bda81b48f25d30bb5a169d3b6bcec',1,'IRremoteESP8266.h']]], + ['kmitsubishionespace_6105',['kMitsubishiOneSpace',['../ir__Mitsubishi_8cpp.html#ab3c6a50b722402633aaf26e2a4a39ff0',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishionespaceticks_6106',['kMitsubishiOneSpaceTicks',['../ir__Mitsubishi_8cpp.html#a3b12f2aa2c3b4b7ef439f86356aab9cf',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishitick_6107',['kMitsubishiTick',['../ir__Mitsubishi_8cpp.html#a5197eb8b6e8de8fdfb9f056b6f7d9aa5',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishizerospace_6108',['kMitsubishiZeroSpace',['../ir__Mitsubishi_8cpp.html#a9660ac382e9a929f6acb73a32b2a1a3c',1,'ir_Mitsubishi.cpp']]], + ['kmitsubishizerospaceticks_6109',['kMitsubishiZeroSpaceTicks',['../ir__Mitsubishi_8cpp.html#a18f364a0ba491236538bc9d086303d69',1,'ir_Mitsubishi.cpp']]], + ['kmodebitssize_6110',['kModeBitsSize',['../IRutils_8h.html#a5432915ab86062fceadc067a233f1627',1,'IRutils.h']]], + ['kmodelstr_6111',['kModelStr',['../IRtext_8cpp.html#a40905418e2934e539c50c6cfc2c4ffe3',1,'kModelStr(): IRtext.cpp'],['../IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186',1,'kModelStr(): IRtext.cpp']]], + ['kmodestr_6112',['kModeStr',['../IRtext_8cpp.html#a7260c578d290c33b7705cd1439d992ee',1,'kModeStr(): IRtext.cpp'],['../IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f',1,'kModeStr(): IRtext.cpp']]], + ['kmouldstr_6113',['kMouldStr',['../IRtext_8cpp.html#ac665ea584a4949565aa35629d791dbc5',1,'kMouldStr(): IRtext.cpp'],['../IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30',1,'kMouldStr(): IRtext.cpp']]], + ['kmovestr_6114',['kMoveStr',['../IRtext_8cpp.html#a321f98699209fb487287c4911a0c0200',1,'kMoveStr(): IRtext.cpp'],['../IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd',1,'kMoveStr(): IRtext.cpp']]], + ['kmultibracketsbits_6115',['kMultibracketsBits',['../IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1',1,'IRremoteESP8266.h']]], + ['kmultibracketsdefaultrepeat_6116',['kMultibracketsDefaultRepeat',['../IRremoteESP8266_8h.html#a5aa418baefd018d5facc08d3bb721fe9',1,'IRremoteESP8266.h']]], + ['kmultibracketsfooterspace_6117',['kMultibracketsFooterSpace',['../ir__Multibrackets_8cpp.html#a738cde2d6a25611bea116d04375dd28a',1,'ir_Multibrackets.cpp']]], + ['kmultibracketsfreq_6118',['kMultibracketsFreq',['../ir__Multibrackets_8cpp.html#a38ba01a3c516f6018199aa9031a5fb4a',1,'ir_Multibrackets.cpp']]], + ['kmultibracketshdrmark_6119',['kMultibracketsHdrMark',['../ir__Multibrackets_8cpp.html#a4eaafbf701604ceb6591b8a8b9c1d202',1,'ir_Multibrackets.cpp']]], + ['kmultibracketstick_6120',['kMultibracketsTick',['../ir__Multibrackets_8cpp.html#aa528fbf06b8d5293d82b7efc2bcd1e9b',1,'ir_Multibrackets.cpp']]], + ['kmultibracketstolerance_6121',['kMultibracketsTolerance',['../ir__Multibrackets_8cpp.html#a242017fb86f015cdecbf31c278c43ccc',1,'ir_Multibrackets.cpp']]], + ['kmwmdelta_6122',['kMWMDelta',['../ir__MWM_8cpp.html#a4e32849a3c799af002d1290a8a33366e',1,'ir_MWM.cpp']]], + ['kmwmexcess_6123',['kMWMExcess',['../ir__MWM_8cpp.html#ab3ff88bfc09c94e70fb74a77dbdd87d7',1,'ir_MWM.cpp']]], + ['kmwmmaxwidth_6124',['kMWMMaxWidth',['../ir__MWM_8cpp.html#a833013dcb331ebce3b885b0ce73c9eaa',1,'ir_MWM.cpp']]], + ['kmwmmingap_6125',['kMWMMinGap',['../ir__MWM_8cpp.html#a4d1f9c5442390a5ba089270c1187e917',1,'ir_MWM.cpp']]], + ['kmwmminsamples_6126',['kMWMMinSamples',['../ir__MWM_8cpp.html#ad386c922a0fcbd0c5b904b9abdd8d582',1,'ir_MWM.cpp']]], + ['kmwmtick_6127',['kMWMTick',['../ir__MWM_8cpp.html#a42c39c0101ccad1e88fa206a26447256',1,'ir_MWM.cpp']]], + ['kmwmtolerance_6128',['kMWMTolerance',['../ir__MWM_8cpp.html#ae3a91ec66f51f50810229b4adc1264fd',1,'ir_MWM.cpp']]], + ['knastr_6129',['kNAStr',['../IRtext_8cpp.html#a1757349137713553454f405872bc4dcd',1,'kNAStr(): IRtext.cpp'],['../IRtext_8h.html#a5d094344fba1715dbde69ff947775264',1,'kNAStr(): IRtext.cpp']]], + ['knecbitmark_6130',['kNecBitMark',['../ir__NEC_8h.html#ab536a800ec8f7259fe7e485ea4aea465',1,'ir_NEC.h']]], + ['knecbitmarkticks_6131',['kNecBitMarkTicks',['../ir__NEC_8h.html#a84ca60f84d64d65872b40a87819eccc1',1,'ir_NEC.h']]], + ['knecbits_6132',['kNECBits',['../IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097',1,'IRremoteESP8266.h']]], + ['knechdrmark_6133',['kNecHdrMark',['../ir__NEC_8h.html#ac727ede47d30ec76b03e4a41b48ce8c7',1,'ir_NEC.h']]], + ['knechdrmarkticks_6134',['kNecHdrMarkTicks',['../ir__NEC_8h.html#ab1486c07a09bc4324c03b1c887f5c5f7',1,'ir_NEC.h']]], + ['knechdrspace_6135',['kNecHdrSpace',['../ir__NEC_8h.html#a8279410369d6ed266502615d3ff1750b',1,'ir_NEC.h']]], + ['knechdrspaceticks_6136',['kNecHdrSpaceTicks',['../ir__NEC_8h.html#a4470ee927c0c3447bdda20c52b0f8566',1,'ir_NEC.h']]], + ['knecmincommandlength_6137',['kNecMinCommandLength',['../ir__NEC_8h.html#ac7b8d897d9e5bbf29b9b1b899a2ef7d8',1,'ir_NEC.h']]], + ['knecmincommandlengthticks_6138',['kNecMinCommandLengthTicks',['../ir__NEC_8h.html#a78e411960e643495987b1cb53268bc46',1,'ir_NEC.h']]], + ['knecmingap_6139',['kNecMinGap',['../ir__NEC_8h.html#a3d6ecc128599df57dc98e97e51b2264e',1,'ir_NEC.h']]], + ['knecmingapticks_6140',['kNecMinGapTicks',['../ir__NEC_8h.html#a2e6d938510a34aa1217a56aa51ece9f5',1,'ir_NEC.h']]], + ['kneconespace_6141',['kNecOneSpace',['../ir__NEC_8h.html#af57080e9b7513d1c8e7e781f3d502fbd',1,'ir_NEC.h']]], + ['kneconespaceticks_6142',['kNecOneSpaceTicks',['../ir__NEC_8h.html#a2f1e5412d44816f92e4b6c72e16e8b1f',1,'ir_NEC.h']]], + ['knecrptlength_6143',['kNecRptLength',['../ir__NEC_8h.html#af4ab20595dfda177fbb06dd821ea14c7',1,'ir_NEC.h']]], + ['knecrptspace_6144',['kNecRptSpace',['../ir__NEC_8h.html#a9538478446b1ae5d72c8366dd6a11673',1,'ir_NEC.h']]], + ['knecrptspaceticks_6145',['kNecRptSpaceTicks',['../ir__NEC_8h.html#a91b5296d480008a4b44c5b084756f04b',1,'ir_NEC.h']]], + ['knectick_6146',['kNecTick',['../ir__NEC_8h.html#abe1ec110798236c7b626f7efe4cc5657',1,'ir_NEC.h']]], + ['kneczerospace_6147',['kNecZeroSpace',['../ir__NEC_8h.html#a00573a6bdb348339b9898173b644b693',1,'ir_NEC.h']]], + ['kneczerospaceticks_6148',['kNecZeroSpaceTicks',['../ir__NEC_8h.html#a80f316535d761c64f1d5752ef80a65ff',1,'ir_NEC.h']]], + ['kneoclima8cheatoffset_6149',['kNeoclima8CHeatOffset',['../ir__Neoclima_8h.html#a4e9654ac35708a22912448eef3eb2b35',1,'ir_Neoclima.h']]], + ['kneoclimaauto_6150',['kNeoclimaAuto',['../ir__Neoclima_8h.html#a4574742c21aae9aafaff9b10f9423006',1,'ir_Neoclima.h']]], + ['kneoclimabitmark_6151',['kNeoclimaBitMark',['../ir__Neoclima_8cpp.html#ae34236a830ec2d200575ac33fda43689',1,'ir_Neoclima.cpp']]], + ['kneoclimabits_6152',['kNeoclimaBits',['../IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f',1,'IRremoteESP8266.h']]], + ['kneoclimabutton8cheat_6153',['kNeoclimaButton8CHeat',['../ir__Neoclima_8h.html#ad337d964ff800bea5c55f1fe69dfb7ff',1,'ir_Neoclima.h']]], + ['kneoclimabuttonairflow_6154',['kNeoclimaButtonAirFlow',['../ir__Neoclima_8h.html#ab5fff838f8e5ac9ff213fc69346ffa7c',1,'ir_Neoclima.h']]], + ['kneoclimabuttoneye_6155',['kNeoclimaButtonEye',['../ir__Neoclima_8h.html#a6cabdccd3c8d52cb2817f99454bdc884',1,'ir_Neoclima.h']]], + ['kneoclimabuttonfanspeed_6156',['kNeoclimaButtonFanSpeed',['../ir__Neoclima_8h.html#ab41ffd863516b79b6c7e9b69e7d5a272',1,'ir_Neoclima.h']]], + ['kneoclimabuttonfollow_6157',['kNeoclimaButtonFollow',['../ir__Neoclima_8h.html#a592017dce3bfa4ea2f0f341a818aff72',1,'ir_Neoclima.h']]], + ['kneoclimabuttonfresh_6158',['kNeoclimaButtonFresh',['../ir__Neoclima_8h.html#a6a965f2dc7860879ccaf410405095e9c',1,'ir_Neoclima.h']]], + ['kneoclimabuttonhold_6159',['kNeoclimaButtonHold',['../ir__Neoclima_8h.html#aada6fdb6572bd7d841de89f1d1eed3fe',1,'ir_Neoclima.h']]], + ['kneoclimabuttonion_6160',['kNeoclimaButtonIon',['../ir__Neoclima_8h.html#a05dccf1c19237d315bb78f387f8fd57f',1,'ir_Neoclima.h']]], + ['kneoclimabuttonlight_6161',['kNeoclimaButtonLight',['../ir__Neoclima_8h.html#ac66b472b31f6183f4615584561baa284',1,'ir_Neoclima.h']]], + ['kneoclimabuttonmode_6162',['kNeoclimaButtonMode',['../ir__Neoclima_8h.html#a4cfee4b0898f1504be5cbd129cd99278',1,'ir_Neoclima.h']]], + ['kneoclimabuttonoffset_6163',['kNeoclimaButtonOffset',['../ir__Neoclima_8h.html#a08ae86c15defd78ecac0f322f84190d3',1,'ir_Neoclima.h']]], + ['kneoclimabuttonpower_6164',['kNeoclimaButtonPower',['../ir__Neoclima_8h.html#a047d19978c58b35dcd6a069fce04af87',1,'ir_Neoclima.h']]], + ['kneoclimabuttonsize_6165',['kNeoclimaButtonSize',['../ir__Neoclima_8h.html#aac90dbf9fe499df2edf64df44f449e57',1,'ir_Neoclima.h']]], + ['kneoclimabuttonsleep_6166',['kNeoclimaButtonSleep',['../ir__Neoclima_8h.html#adcbe2a89eecf41fe1fe2b8c62428084e',1,'ir_Neoclima.h']]], + ['kneoclimabuttonswing_6167',['kNeoclimaButtonSwing',['../ir__Neoclima_8h.html#aeea180bef85a40d8c7fe3f5facf7b199',1,'ir_Neoclima.h']]], + ['kneoclimabuttontempdown_6168',['kNeoclimaButtonTempDown',['../ir__Neoclima_8h.html#aee91f1ebdf89b6fe9f3b31937d1185a0',1,'ir_Neoclima.h']]], + ['kneoclimabuttontempup_6169',['kNeoclimaButtonTempUp',['../ir__Neoclima_8h.html#abb093132f77d179ab02fc4a022d55236',1,'ir_Neoclima.h']]], + ['kneoclimabuttonturbo_6170',['kNeoclimaButtonTurbo',['../ir__Neoclima_8h.html#af156d94f9e47e8b5e2e2493308cca04c',1,'ir_Neoclima.h']]], + ['kneoclimacool_6171',['kNeoclimaCool',['../ir__Neoclima_8h.html#ac5d874e5ffce72ce68176f38e780c439',1,'ir_Neoclima.h']]], + ['kneoclimadry_6172',['kNeoclimaDry',['../ir__Neoclima_8h.html#ab68ba4480e1bcb685579c5f902d0709e',1,'ir_Neoclima.h']]], + ['kneoclimaeyeoffset_6173',['kNeoclimaEyeOffset',['../ir__Neoclima_8h.html#ad7baeea22b87a69150c65b2c049ee0b2',1,'ir_Neoclima.h']]], + ['kneoclimafan_6174',['kNeoclimaFan',['../ir__Neoclima_8h.html#aa6166bd65d80a708d790dbf703c83ea2',1,'ir_Neoclima.h']]], + ['kneoclimafanauto_6175',['kNeoclimaFanAuto',['../ir__Neoclima_8h.html#a7885fdbc4ae3336aac74d7ee3d8c3258',1,'ir_Neoclima.h']]], + ['kneoclimafanhigh_6176',['kNeoclimaFanHigh',['../ir__Neoclima_8h.html#a57ddf91c1cbb157b3a53b1082bac2d75',1,'ir_Neoclima.h']]], + ['kneoclimafanlow_6177',['kNeoclimaFanLow',['../ir__Neoclima_8h.html#ac9031328be51a46543ebd4360aaca55a',1,'ir_Neoclima.h']]], + ['kneoclimafanmed_6178',['kNeoclimaFanMed',['../ir__Neoclima_8h.html#a11faf2a34faf44460795b50bfbdab402',1,'ir_Neoclima.h']]], + ['kneoclimafanoffest_6179',['kNeoclimaFanOffest',['../ir__Neoclima_8h.html#a32f614475b5f00f8ccdf12498c519713',1,'ir_Neoclima.h']]], + ['kneoclimafansize_6180',['kNeoclimaFanSize',['../ir__Neoclima_8h.html#a888cbc3f0a38137cb909188b6fff91b1',1,'ir_Neoclima.h']]], + ['kneoclimafollowme_6181',['kNeoclimaFollowMe',['../ir__Neoclima_8h.html#a493c1e6b8b8909f4201cd506a1f4804a',1,'ir_Neoclima.h']]], + ['kneoclimafreshoffset_6182',['kNeoclimaFreshOffset',['../ir__Neoclima_8h.html#af19f0f77ece049bdef26930be1b0309f',1,'ir_Neoclima.h']]], + ['kneoclimahdrmark_6183',['kNeoclimaHdrMark',['../ir__Neoclima_8cpp.html#aa392821c0ce822a7b7d67efd202bedd5',1,'ir_Neoclima.cpp']]], + ['kneoclimahdrspace_6184',['kNeoclimaHdrSpace',['../ir__Neoclima_8cpp.html#a3714ad66d75162ccb286152b70375588',1,'ir_Neoclima.cpp']]], + ['kneoclimaheat_6185',['kNeoclimaHeat',['../ir__Neoclima_8h.html#a5a5e53801c0f8e554c391ed56404b926',1,'ir_Neoclima.h']]], + ['kneoclimaholdoffset_6186',['kNeoclimaHoldOffset',['../ir__Neoclima_8h.html#a3a91e7504c7820223021dcc2cbbf9f2a',1,'ir_Neoclima.h']]], + ['kneoclimaionoffset_6187',['kNeoclimaIonOffset',['../ir__Neoclima_8h.html#ad420932425fbe261368938e604dfb0c1',1,'ir_Neoclima.h']]], + ['kneoclimalightoffset_6188',['kNeoclimaLightOffset',['../ir__Neoclima_8h.html#af58a863257c5d436b299ac8cbcb57686',1,'ir_Neoclima.h']]], + ['kneoclimamaxtemp_6189',['kNeoclimaMaxTemp',['../ir__Neoclima_8h.html#a755ef8290df8a3e19f236839bee42412',1,'ir_Neoclima.h']]], + ['kneoclimamingap_6190',['kNeoclimaMinGap',['../ir__Neoclima_8cpp.html#a0e54c73eff563f6c3ec39a0951dd3d2d',1,'ir_Neoclima.cpp']]], + ['kneoclimaminrepeat_6191',['kNeoclimaMinRepeat',['../IRremoteESP8266_8h.html#a16fc26a3ff66a66068ac9638554df847',1,'IRremoteESP8266.h']]], + ['kneoclimamintemp_6192',['kNeoclimaMinTemp',['../ir__Neoclima_8h.html#adc979ad2ac64481f13b1085b1fdd13c4',1,'ir_Neoclima.h']]], + ['kneoclimamodeoffset_6193',['kNeoclimaModeOffset',['../ir__Neoclima_8h.html#a823a960610ef3387099d2a2103dd0b56',1,'ir_Neoclima.h']]], + ['kneoclimaonespace_6194',['kNeoclimaOneSpace',['../ir__Neoclima_8cpp.html#a5fd5f3b7f04134190aafc65762528da0',1,'ir_Neoclima.cpp']]], + ['kneoclimapoweroffset_6195',['kNeoclimaPowerOffset',['../ir__Neoclima_8h.html#a9b881e5400fe9bcd3b1422aeb355cf7c',1,'ir_Neoclima.h']]], + ['kneoclimasleepoffset_6196',['kNeoclimaSleepOffset',['../ir__Neoclima_8h.html#ac0c978cdc30827c7390b93a9a4f05d24',1,'ir_Neoclima.h']]], + ['kneoclimastatelength_6197',['kNeoclimaStateLength',['../IRremoteESP8266_8h.html#a5a871ed6d145c5ea3d50e96600c02e31',1,'IRremoteESP8266.h']]], + ['kneoclimaswinghoffset_6198',['kNeoclimaSwingHOffset',['../ir__Neoclima_8h.html#a5f2e8ccaa590386b0947b0f291ebcb09',1,'ir_Neoclima.h']]], + ['kneoclimaswingvoff_6199',['kNeoclimaSwingVOff',['../ir__Neoclima_8h.html#ad230a8c18e6edb5709cb29033f1fd221',1,'ir_Neoclima.h']]], + ['kneoclimaswingvoffset_6200',['kNeoclimaSwingVOffset',['../ir__Neoclima_8h.html#a91b63c4712093684625a16c76bcc6784',1,'ir_Neoclima.h']]], + ['kneoclimaswingvon_6201',['kNeoclimaSwingVOn',['../ir__Neoclima_8h.html#a7021804eb30e7a7c5b9c9ababb1b8cad',1,'ir_Neoclima.h']]], + ['kneoclimaswingvsize_6202',['kNeoclimaSwingVSize',['../ir__Neoclima_8h.html#ab4b49ec2c326d0e94eba23e7a93b6fc6',1,'ir_Neoclima.h']]], + ['kneoclimatempoffset_6203',['kNeoclimaTempOffset',['../ir__Neoclima_8h.html#a5c3470f6c773b4c557e6996f8c29a573',1,'ir_Neoclima.h']]], + ['kneoclimatempsize_6204',['kNeoclimaTempSize',['../ir__Neoclima_8h.html#af848fc3f4ce46c8786fd2b3e129b1e48',1,'ir_Neoclima.h']]], + ['kneoclimaturbooffset_6205',['kNeoclimaTurboOffset',['../ir__Neoclima_8h.html#ae23c6faf5f54ff12d592360b42d69971',1,'ir_Neoclima.h']]], + ['kneoclimazerospace_6206',['kNeoclimaZeroSpace',['../ir__Neoclima_8cpp.html#a0b98d84da4651d8d31f8f1d84621c21e',1,'ir_Neoclima.cpp']]], + ['knibblesize_6207',['kNibbleSize',['../IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846',1,'IRutils.h']]], + ['knightstr_6208',['kNightStr',['../IRtext_8cpp.html#a01908d3c0f79bc015a699fc0576a8771',1,'kNightStr(): IRtext.cpp'],['../IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0',1,'kNightStr(): IRtext.cpp']]], + ['knikaibitmark_6209',['kNikaiBitMark',['../ir__Nikai_8cpp.html#ad665145b0ee9cc722d9fde43cbd3fd82',1,'ir_Nikai.cpp']]], + ['knikaibitmarkticks_6210',['kNikaiBitMarkTicks',['../ir__Nikai_8cpp.html#ac10d1b4c45af3ddbf3c50b85dbb0c2f0',1,'ir_Nikai.cpp']]], + ['knikaibits_6211',['kNikaiBits',['../IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40',1,'IRremoteESP8266.h']]], + ['knikaihdrmark_6212',['kNikaiHdrMark',['../ir__Nikai_8cpp.html#ae0656b931e18e6e011a7c74cfaf4384b',1,'ir_Nikai.cpp']]], + ['knikaihdrmarkticks_6213',['kNikaiHdrMarkTicks',['../ir__Nikai_8cpp.html#a11671cee9a312ece8f1c90596eddd7ac',1,'ir_Nikai.cpp']]], + ['knikaihdrspace_6214',['kNikaiHdrSpace',['../ir__Nikai_8cpp.html#ae801e20e669f3039888bf48074988b84',1,'ir_Nikai.cpp']]], + ['knikaihdrspaceticks_6215',['kNikaiHdrSpaceTicks',['../ir__Nikai_8cpp.html#a83885a2fc573f947afe5015cd2f4d953',1,'ir_Nikai.cpp']]], + ['knikaimingap_6216',['kNikaiMinGap',['../ir__Nikai_8cpp.html#ad88846eaa7559df7fb944283fd292da1',1,'ir_Nikai.cpp']]], + ['knikaimingapticks_6217',['kNikaiMinGapTicks',['../ir__Nikai_8cpp.html#afdf938a763f30e3c5e534eba269dff1f',1,'ir_Nikai.cpp']]], + ['knikaionespace_6218',['kNikaiOneSpace',['../ir__Nikai_8cpp.html#a4bb69ab22b2abcd20ffff90f9267fa43',1,'ir_Nikai.cpp']]], + ['knikaionespaceticks_6219',['kNikaiOneSpaceTicks',['../ir__Nikai_8cpp.html#a25a4d289b7fad06c31312df552ee81ab',1,'ir_Nikai.cpp']]], + ['knikaitick_6220',['kNikaiTick',['../ir__Nikai_8cpp.html#a70eb8953509420081d0a294203eeb34b',1,'ir_Nikai.cpp']]], + ['knikaizerospace_6221',['kNikaiZeroSpace',['../ir__Nikai_8cpp.html#aa9af57c5c936107b00096e16cc6f57d9',1,'ir_Nikai.cpp']]], + ['knikaizerospaceticks_6222',['kNikaiZeroSpaceTicks',['../ir__Nikai_8cpp.html#a8df777a744c018e27c6969c2109d6d79',1,'ir_Nikai.cpp']]], + ['knorepeat_6223',['kNoRepeat',['../IRremoteESP8266_8h.html#a1a49dde7ffbd753f7756cf0c9dc6d826',1,'IRremoteESP8266.h']]], + ['knostr_6224',['kNoStr',['../IRtext_8cpp.html#a07897ceb4a6607d87ef37a517908a4b5',1,'kNoStr(): IRtext.cpp'],['../IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d',1,'kNoStr(): IRtext.cpp']]], + ['knowstr_6225',['kNowStr',['../IRtext_8cpp.html#a09d8590020bcf998746528d0e50f7a20',1,'kNowStr(): IRtext.cpp'],['../IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12',1,'kNowStr(): IRtext.cpp']]], + ['koffstr_6226',['kOffStr',['../IRtext_8cpp.html#a9ce19a214db45b8cff83032ffa1ccdd8',1,'kOffStr(): IRtext.cpp'],['../IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a',1,'kOffStr(): IRtext.cpp']]], + ['kofftimerstr_6227',['kOffTimerStr',['../IRtext_8cpp.html#ae5faab97b26f9e877f79f49002bbba2c',1,'kOffTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f',1,'kOffTimerStr(): IRtext.cpp']]], + ['konstr_6228',['kOnStr',['../IRtext_8cpp.html#ab3f42c8df156baa46326a57193f78c51',1,'kOnStr(): IRtext.cpp'],['../IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7',1,'kOnStr(): IRtext.cpp']]], + ['kontimerstr_6229',['kOnTimerStr',['../IRtext_8cpp.html#adaecb1b5526f2bb3a1334e816a414273',1,'kOnTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a9f355a0d834790287d95eea30b57564d',1,'kOnTimerStr(): IRtext.cpp']]], + ['koutsidequietstr_6230',['kOutsideQuietStr',['../IRtext_8cpp.html#a103f2a8a2a6d351cd8ea259de3c454ef',1,'kOutsideQuietStr(): IRtext.cpp'],['../IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c',1,'kOutsideQuietStr(): IRtext.cpp']]], + ['koutsidestr_6231',['kOutsideStr',['../IRtext_8cpp.html#a8465ee1e8b1e5dd58a9cf872c9569e01',1,'kOutsideStr(): IRtext.cpp'],['../IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0',1,'kOutsideStr(): IRtext.cpp']]], + ['kpanasonicacauto_6232',['kPanasonicAcAuto',['../ir__Panasonic_8h.html#aa7c839a4342205c384870e8a4f5ec36b',1,'ir_Panasonic.h']]], + ['kpanasonicacbits_6233',['kPanasonicAcBits',['../IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a',1,'IRremoteESP8266.h']]], + ['kpanasonicacchecksuminit_6234',['kPanasonicAcChecksumInit',['../ir__Panasonic_8h.html#a49329b4fef403696effcbcc5c8a86cd2',1,'ir_Panasonic.h']]], + ['kpanasonicaccool_6235',['kPanasonicAcCool',['../ir__Panasonic_8h.html#acfaa3d61fbb13fc6cd8d354f1c0a8dc7',1,'ir_Panasonic.h']]], + ['kpanasonicacdefaultrepeat_6236',['kPanasonicAcDefaultRepeat',['../IRremoteESP8266_8h.html#af6b7c6ad564253cb128ac92c00e86f0c',1,'IRremoteESP8266.h']]], + ['kpanasonicacdry_6237',['kPanasonicAcDry',['../ir__Panasonic_8h.html#a2d211bd2150a67819453f3220dc0cc91',1,'ir_Panasonic.h']]], + ['kpanasonicacexcess_6238',['kPanasonicAcExcess',['../ir__Panasonic_8h.html#adde8b69377faa9a4566dc15e95711257',1,'ir_Panasonic.h']]], + ['kpanasonicacfan_6239',['kPanasonicAcFan',['../ir__Panasonic_8h.html#a87e4dd423bbd1f879a9d5da31e1fea5e',1,'ir_Panasonic.h']]], + ['kpanasonicacfanauto_6240',['kPanasonicAcFanAuto',['../ir__Panasonic_8h.html#a7d4486fd68969af4f7230f12e865c698',1,'ir_Panasonic.h']]], + ['kpanasonicacfandelta_6241',['kPanasonicAcFanDelta',['../ir__Panasonic_8h.html#a2210f85a17fba2bbdfbb883e9fb57e52',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmax_6242',['kPanasonicAcFanMax',['../ir__Panasonic_8h.html#aa4599c84d72ab9c622b642870efb9cf1',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmed_6243',['kPanasonicAcFanMed',['../ir__Panasonic_8h.html#a978004e8e2c4122fec81c5a972b842a0',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmin_6244',['kPanasonicAcFanMin',['../ir__Panasonic_8h.html#a450c7951a525817d27351fb7c8ff2df9',1,'ir_Panasonic.h']]], + ['kpanasonicacfanmodetemp_6245',['kPanasonicAcFanModeTemp',['../ir__Panasonic_8h.html#a76543f9d81c2d109e04359f0c61dcb99',1,'ir_Panasonic.h']]], + ['kpanasonicacheat_6246',['kPanasonicAcHeat',['../ir__Panasonic_8h.html#ac37bb7dd975a9aa803edfc108a5071ed',1,'ir_Panasonic.h']]], + ['kpanasonicacionfilterbyte_6247',['kPanasonicAcIonFilterByte',['../ir__Panasonic_8h.html#a16c946660d2ee3821dd2e30a69144a38',1,'ir_Panasonic.h']]], + ['kpanasonicacionfilteroffset_6248',['kPanasonicAcIonFilterOffset',['../ir__Panasonic_8h.html#a5c1b18d1b834e9d46cbd29c74a1b8269',1,'ir_Panasonic.h']]], + ['kpanasonicacmaxtemp_6249',['kPanasonicAcMaxTemp',['../ir__Panasonic_8h.html#a95fe6bc5b2565bf29d1a6dcee2f0c39f',1,'ir_Panasonic.h']]], + ['kpanasonicacmessagegap_6250',['kPanasonicAcMessageGap',['../ir__Panasonic_8cpp.html#a962cde97e8d98ad32f0b59172b641d6d',1,'ir_Panasonic.cpp']]], + ['kpanasonicacmintemp_6251',['kPanasonicAcMinTemp',['../ir__Panasonic_8h.html#a7861e8477904e1a572bcf35286fd3733',1,'ir_Panasonic.h']]], + ['kpanasonicacofftimeroffset_6252',['kPanasonicAcOffTimerOffset',['../ir__Panasonic_8h.html#a477b61044f1db5c296f13a404c536046',1,'ir_Panasonic.h']]], + ['kpanasonicacontimeroffset_6253',['kPanasonicAcOnTimerOffset',['../ir__Panasonic_8h.html#a64350202f82aabfd1673f0dda4d3c13d',1,'ir_Panasonic.h']]], + ['kpanasonicacpowerfulckpoffset_6254',['kPanasonicAcPowerfulCkpOffset',['../ir__Panasonic_8h.html#aa839301a08c8e49548f497e786dbb6fa',1,'ir_Panasonic.h']]], + ['kpanasonicacpowerfuloffset_6255',['kPanasonicAcPowerfulOffset',['../ir__Panasonic_8h.html#a27e9b1af4b65830015576beed69cb27d',1,'ir_Panasonic.h']]], + ['kpanasonicacpoweroffset_6256',['kPanasonicAcPowerOffset',['../ir__Panasonic_8h.html#a9e9b3d0c77ef93ab472ce14ed1534c77',1,'ir_Panasonic.h']]], + ['kpanasonicacquietckpoffset_6257',['kPanasonicAcQuietCkpOffset',['../ir__Panasonic_8h.html#a5a3779cd6fd8d573ae14ed4a6d676dba',1,'ir_Panasonic.h']]], + ['kpanasonicacquietoffset_6258',['kPanasonicAcQuietOffset',['../ir__Panasonic_8h.html#a1ec8db8798f79dead05233ee6333700d',1,'ir_Panasonic.h']]], + ['kpanasonicacsection1length_6259',['kPanasonicAcSection1Length',['../ir__Panasonic_8cpp.html#a34c6c085d468ed4b35f814452335d334',1,'ir_Panasonic.cpp']]], + ['kpanasonicacsectiongap_6260',['kPanasonicAcSectionGap',['../ir__Panasonic_8cpp.html#a3cf28f1268e8a35da220d42deda7c456',1,'ir_Panasonic.cpp']]], + ['kpanasonicacshortbits_6261',['kPanasonicAcShortBits',['../IRremoteESP8266_8h.html#a2fd1f84669f7994bb3c235a508333c6c',1,'IRremoteESP8266.h']]], + ['kpanasonicacstatelength_6262',['kPanasonicAcStateLength',['../IRremoteESP8266_8h.html#ab21d86545b57738354e7a3b833d38f94',1,'IRremoteESP8266.h']]], + ['kpanasonicacstateshortlength_6263',['kPanasonicAcStateShortLength',['../IRremoteESP8266_8h.html#a0a6ca8c1dfa6f313421ddf268d76d8e6',1,'IRremoteESP8266.h']]], + ['kpanasonicacswinghauto_6264',['kPanasonicAcSwingHAuto',['../ir__Panasonic_8h.html#a91e2933692ad98acf054c7a69f6c2018',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghfullleft_6265',['kPanasonicAcSwingHFullLeft',['../ir__Panasonic_8h.html#abf1d8c53a1b69d99019c6878f9ec220d',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghfullright_6266',['kPanasonicAcSwingHFullRight',['../ir__Panasonic_8h.html#a0e1b7a7591a0f14b2f8be3cb222f1187',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghleft_6267',['kPanasonicAcSwingHLeft',['../ir__Panasonic_8h.html#a853f2c2922e03a975bdd11efc474fa7e',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghmiddle_6268',['kPanasonicAcSwingHMiddle',['../ir__Panasonic_8h.html#afad8a7257fc178321867f16939fff7c7',1,'ir_Panasonic.h']]], + ['kpanasonicacswinghright_6269',['kPanasonicAcSwingHRight',['../ir__Panasonic_8h.html#a282900f1c494efdc6ee057357e624d2e',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvauto_6270',['kPanasonicAcSwingVAuto',['../ir__Panasonic_8h.html#a218e2ea8c76966105c71edcb6e46cd12',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvhigh_6271',['kPanasonicAcSwingVHigh',['../ir__Panasonic_8h.html#a25c63195112c5aedc5b5bad40441c55a',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvhighest_6272',['kPanasonicAcSwingVHighest',['../ir__Panasonic_8h.html#ac1cea523d6e1da08d333e0b4acec81af',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvlow_6273',['kPanasonicAcSwingVLow',['../ir__Panasonic_8h.html#a3ae9b6c5581f1bfb5b31e252052a6c9d',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvlowest_6274',['kPanasonicAcSwingVLowest',['../ir__Panasonic_8h.html#af269e81dae5989c33199d607adcc04a0',1,'ir_Panasonic.h']]], + ['kpanasonicacswingvmiddle_6275',['kPanasonicAcSwingVMiddle',['../ir__Panasonic_8h.html#a5d46c8234f97e10695507b17a7483d51',1,'ir_Panasonic.h']]], + ['kpanasonicactempoffset_6276',['kPanasonicAcTempOffset',['../ir__Panasonic_8h.html#a203e0351cd53db8376312a3289503175',1,'ir_Panasonic.h']]], + ['kpanasonicactempsize_6277',['kPanasonicAcTempSize',['../ir__Panasonic_8h.html#af30649a3489a4a1dc1f655d15c00e991',1,'ir_Panasonic.h']]], + ['kpanasonicactimemax_6278',['kPanasonicAcTimeMax',['../ir__Panasonic_8h.html#a61378ccad09d1a2e900123a8cbd34858',1,'ir_Panasonic.h']]], + ['kpanasonicactimeoverflowsize_6279',['kPanasonicAcTimeOverflowSize',['../ir__Panasonic_8h.html#ad7942b5ffbb2b1f7a5d9b3719592622b',1,'ir_Panasonic.h']]], + ['kpanasonicactimesize_6280',['kPanasonicAcTimeSize',['../ir__Panasonic_8h.html#a16577844a2f5ca46e2dff076952f2963',1,'ir_Panasonic.h']]], + ['kpanasonicactimespecial_6281',['kPanasonicAcTimeSpecial',['../ir__Panasonic_8h.html#aefb20e7cdbbc27e3c0725a8660a84a28',1,'ir_Panasonic.h']]], + ['kpanasonicactolerance_6282',['kPanasonicAcTolerance',['../ir__Panasonic_8h.html#a586a655b3afd82c38588fc1b61089aa1',1,'ir_Panasonic.h']]], + ['kpanasonicbitmark_6283',['kPanasonicBitMark',['../ir__Panasonic_8cpp.html#a428cd02c5dc3dc571e495efa0707cc99',1,'ir_Panasonic.cpp']]], + ['kpanasonicbitmarkticks_6284',['kPanasonicBitMarkTicks',['../ir__Panasonic_8cpp.html#aa0b259da4bc3dbf6c8b2ca31de759f55',1,'ir_Panasonic.cpp']]], + ['kpanasonicbits_6285',['kPanasonicBits',['../IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7',1,'IRremoteESP8266.h']]], + ['kpanasonicendgap_6286',['kPanasonicEndGap',['../ir__Panasonic_8cpp.html#a3cb2f7a925bb8374a90e3156febabb39',1,'ir_Panasonic.cpp']]], + ['kpanasonicfreq_6287',['kPanasonicFreq',['../ir__Panasonic_8h.html#af344612d7f1c0d3f8271c312f310243e',1,'ir_Panasonic.h']]], + ['kpanasonichdrmark_6288',['kPanasonicHdrMark',['../ir__Panasonic_8cpp.html#a0d36b699fead0e229c583dae94f5e8f9',1,'ir_Panasonic.cpp']]], + ['kpanasonichdrmarkticks_6289',['kPanasonicHdrMarkTicks',['../ir__Panasonic_8cpp.html#a0f2d448b87f30840ee38c27032cd10bd',1,'ir_Panasonic.cpp']]], + ['kpanasonichdrspace_6290',['kPanasonicHdrSpace',['../ir__Panasonic_8cpp.html#ae56b3eb80f186a63b0f69c6b4e9efce8',1,'ir_Panasonic.cpp']]], + ['kpanasonichdrspaceticks_6291',['kPanasonicHdrSpaceTicks',['../ir__Panasonic_8cpp.html#a5fa430a5612bd21eb859356cc9c62a3c',1,'ir_Panasonic.cpp']]], + ['kpanasonicknowngoodstate_6292',['kPanasonicKnownGoodState',['../ir__Panasonic_8h.html#a88a9678f8b00efa173b800b0b8441f87',1,'ir_Panasonic.h']]], + ['kpanasonicmanufacturer_6293',['kPanasonicManufacturer',['../IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47',1,'IRremoteESP8266.h']]], + ['kpanasonicmincommandlength_6294',['kPanasonicMinCommandLength',['../ir__Panasonic_8cpp.html#a5f191fff3eeb722cb03bee859a016132',1,'ir_Panasonic.cpp']]], + ['kpanasonicmincommandlengthticks_6295',['kPanasonicMinCommandLengthTicks',['../ir__Panasonic_8cpp.html#aba420f9aa4c3e6f261e422962362ce31',1,'ir_Panasonic.cpp']]], + ['kpanasonicmingap_6296',['kPanasonicMinGap',['../ir__Panasonic_8cpp.html#a61592f3569c0ee4825cca185fb43236d',1,'ir_Panasonic.cpp']]], + ['kpanasonicmingapticks_6297',['kPanasonicMinGapTicks',['../ir__Panasonic_8cpp.html#aa605847e951b22f1f31b82e6b04c4bab',1,'ir_Panasonic.cpp']]], + ['kpanasoniconespace_6298',['kPanasonicOneSpace',['../ir__Panasonic_8cpp.html#a9069f2ab94cacbd301d7615795c155b1',1,'ir_Panasonic.cpp']]], + ['kpanasoniconespaceticks_6299',['kPanasonicOneSpaceTicks',['../ir__Panasonic_8cpp.html#aa7a8cb818a098bb8ec395af7f5dbc6d7',1,'ir_Panasonic.cpp']]], + ['kpanasonictick_6300',['kPanasonicTick',['../ir__Panasonic_8cpp.html#ab2fddd81fb53066257aeaa60069527a8',1,'ir_Panasonic.cpp']]], + ['kpanasoniczerospace_6301',['kPanasonicZeroSpace',['../ir__Panasonic_8cpp.html#a43f64a8326fd2447653c81488673fd21',1,'ir_Panasonic.cpp']]], + ['kpanasoniczerospaceticks_6302',['kPanasonicZeroSpaceTicks',['../ir__Panasonic_8cpp.html#a58fef1468dbd4c3963be58754f38b125',1,'ir_Panasonic.cpp']]], + ['kperiodoffset_6303',['kPeriodOffset',['../IRsend_8h.html#a3a451a4e72e39a4bbf75c62af0ac62f5',1,'IRsend.h']]], + ['kpioneerbitmark_6304',['kPioneerBitMark',['../ir__Pioneer_8cpp.html#a6117fd080ad88efcf943aef53dadd1ad',1,'ir_Pioneer.cpp']]], + ['kpioneerbitmarkticks_6305',['kPioneerBitMarkTicks',['../ir__Pioneer_8cpp.html#a1cd60e52b21df3b10ac5f668cf61df16',1,'ir_Pioneer.cpp']]], + ['kpioneerbits_6306',['kPioneerBits',['../IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b',1,'IRremoteESP8266.h']]], + ['kpioneerhdrmark_6307',['kPioneerHdrMark',['../ir__Pioneer_8cpp.html#a03c4df7d9eba6ab56df0451a18e5adbd',1,'ir_Pioneer.cpp']]], + ['kpioneerhdrmarkticks_6308',['kPioneerHdrMarkTicks',['../ir__Pioneer_8cpp.html#a9fc6ba8a158cae2d0d67af8e6cddd169',1,'ir_Pioneer.cpp']]], + ['kpioneerhdrspace_6309',['kPioneerHdrSpace',['../ir__Pioneer_8cpp.html#a1308ff993ce7d030bdef919d65f35e62',1,'ir_Pioneer.cpp']]], + ['kpioneerhdrspaceticks_6310',['kPioneerHdrSpaceTicks',['../ir__Pioneer_8cpp.html#a6c2ab5c384101f9184fd0960f21d13a5',1,'ir_Pioneer.cpp']]], + ['kpioneermincommandlength_6311',['kPioneerMinCommandLength',['../ir__Pioneer_8cpp.html#a22cb7d70bb0eb3b0ce6c7da3631d832f',1,'ir_Pioneer.cpp']]], + ['kpioneermincommandlengthticks_6312',['kPioneerMinCommandLengthTicks',['../ir__Pioneer_8cpp.html#a472ab59d00c439cc8832081492e742cc',1,'ir_Pioneer.cpp']]], + ['kpioneermingap_6313',['kPioneerMinGap',['../ir__Pioneer_8cpp.html#adc67bf557bd3474f18dfaa3125c1af41',1,'ir_Pioneer.cpp']]], + ['kpioneermingapticks_6314',['kPioneerMinGapTicks',['../ir__Pioneer_8cpp.html#abe0ebf83502225b39926ab745a8f8be2',1,'ir_Pioneer.cpp']]], + ['kpioneeronespace_6315',['kPioneerOneSpace',['../ir__Pioneer_8cpp.html#a5238b059346168128184bca93de16a54',1,'ir_Pioneer.cpp']]], + ['kpioneeronespaceticks_6316',['kPioneerOneSpaceTicks',['../ir__Pioneer_8cpp.html#af637842c88b54a022ac1ba3fef3fa041',1,'ir_Pioneer.cpp']]], + ['kpioneertick_6317',['kPioneerTick',['../ir__Pioneer_8cpp.html#a63de2364627344f86537ac82447c5cb4',1,'ir_Pioneer.cpp']]], + ['kpioneerzerospace_6318',['kPioneerZeroSpace',['../ir__Pioneer_8cpp.html#a3c6428f201dd3e32c171d6db44269d67',1,'ir_Pioneer.cpp']]], + ['kpioneerzerospaceticks_6319',['kPioneerZeroSpaceTicks',['../ir__Pioneer_8cpp.html#acdeea63204ce47f1556fa31bbed8a4a4',1,'ir_Pioneer.cpp']]], + ['kpowerbuttonstr_6320',['kPowerButtonStr',['../IRtext_8cpp.html#a69d36084b1410a06aa780edcda9428dd',1,'kPowerButtonStr(): IRtext.cpp'],['../IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c',1,'kPowerButtonStr(): IRtext.cpp']]], + ['kpowerfulstr_6321',['kPowerfulStr',['../IRtext_8cpp.html#a5dfc12bfa12ddf7da3ab6c216258284a',1,'kPowerfulStr(): IRtext.cpp'],['../IRtext_8h.html#a7980630cd028febca8245730dffa684b',1,'kPowerfulStr(): IRtext.cpp']]], + ['kpowerstr_6322',['kPowerStr',['../IRtext_8cpp.html#a5b4b43efe1f1c27d6aee90ebb3500792',1,'kPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda',1,'kPowerStr(): IRtext.cpp']]], + ['kpowertogglestr_6323',['kPowerToggleStr',['../IRtext_8cpp.html#a2f7e242dc28cf61fb718bb5c1b681642',1,'kPowerToggleStr(): IRtext.cpp'],['../IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5',1,'kPowerToggleStr(): IRtext.cpp']]], + ['kpreviouspowerstr_6324',['kPreviousPowerStr',['../IRtext_8cpp.html#a2a5cd83ac519798debd7065eb03d5d72',1,'kPreviousPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c',1,'kPreviousPowerStr(): IRtext.cpp']]], + ['kprontodataoffset_6325',['kProntoDataOffset',['../ir__Pronto_8cpp.html#ac073b9ac759e09091b3d80af747656a1',1,'ir_Pronto.cpp']]], + ['kprontofreqfactor_6326',['kProntoFreqFactor',['../ir__Pronto_8cpp.html#aa63eef9baeb563c8494d85d13b956db8',1,'ir_Pronto.cpp']]], + ['kprontofreqoffset_6327',['kProntoFreqOffset',['../ir__Pronto_8cpp.html#a2fae4105559199e292121bcb847d9d52',1,'ir_Pronto.cpp']]], + ['kprontominlength_6328',['kProntoMinLength',['../IRremoteESP8266_8h.html#a25dd42234e21d41b0b4bc97e1fe921c4',1,'IRremoteESP8266.h']]], + ['kprontoseq1lenoffset_6329',['kProntoSeq1LenOffset',['../ir__Pronto_8cpp.html#a1df51305dddf233fc3963856e288366f',1,'ir_Pronto.cpp']]], + ['kprontoseq2lenoffset_6330',['kProntoSeq2LenOffset',['../ir__Pronto_8cpp.html#a708744a9f82547e5abc17d7ed866a648',1,'ir_Pronto.cpp']]], + ['kprontotypeoffset_6331',['kProntoTypeOffset',['../ir__Pronto_8cpp.html#a603ff34f28f270a98bf0bebdaf19bfbc',1,'ir_Pronto.cpp']]], + ['kprotocolstr_6332',['kProtocolStr',['../IRtext_8cpp.html#afb9e901ded9e88a48218282a7446ff63',1,'kProtocolStr(): IRtext.cpp'],['../IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef',1,'kProtocolStr(): IRtext.cpp']]], + ['kpurifystr_6333',['kPurifyStr',['../IRtext_8cpp.html#a85c2b59f6cba1878648d3d8fe9d7f9a4',1,'kPurifyStr(): IRtext.cpp'],['../IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb',1,'kPurifyStr(): IRtext.cpp']]], + ['kquietstr_6334',['kQuietStr',['../IRtext_8cpp.html#a6f85e3119eb884455f474ff909be6b53',1,'kQuietStr(): IRtext.cpp'],['../IRtext_8h.html#a7086660370d73d6f499972cf802db8f7',1,'kQuietStr(): IRtext.cpp']]], + ['krawbuf_6335',['kRawBuf',['../IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3',1,'IRrecv.h']]], + ['krawtick_6336',['kRawTick',['../IRrecv_8h.html#a373dde69c312b0122665e581eea1297b',1,'IRrecv.h']]], + ['krc5bits_6337',['kRC5Bits',['../IRremoteESP8266_8h.html#ad0935984e6518e340562665742199483',1,'IRremoteESP8266.h']]], + ['krc5mincommandlength_6338',['kRc5MinCommandLength',['../ir__RC5__RC6_8cpp.html#a32b5997148b53fd2984388f6d0384c35',1,'ir_RC5_RC6.cpp']]], + ['krc5mingap_6339',['kRc5MinGap',['../ir__RC5__RC6_8cpp.html#a26580409f593179d838c465647e35c41',1,'ir_RC5_RC6.cpp']]], + ['krc5rawbits_6340',['kRC5RawBits',['../IRremoteESP8266_8h.html#a955183d3358fcafea853014ddd890574',1,'IRremoteESP8266.h']]], + ['krc5samplesmin_6341',['kRc5SamplesMin',['../ir__RC5__RC6_8cpp.html#aa206173838597c760b4a01c36bbc771a',1,'ir_RC5_RC6.cpp']]], + ['krc5t1_6342',['kRc5T1',['../ir__RC5__RC6_8cpp.html#aa42cae15fa77a196eb8f198de09e19eb',1,'ir_RC5_RC6.cpp']]], + ['krc5togglemask_6343',['kRc5ToggleMask',['../ir__RC5__RC6_8cpp.html#ae3485c1c157d6d84a0385cb1bfb8833a',1,'ir_RC5_RC6.cpp']]], + ['krc5xbits_6344',['kRC5XBits',['../IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc',1,'IRremoteESP8266.h']]], + ['krc6_5f36bits_6345',['kRC6_36Bits',['../IRremoteESP8266_8h.html#a30a2cb328aa0d47f53aba56055ac74e0',1,'IRremoteESP8266.h']]], + ['krc6_5f36togglemask_6346',['kRc6_36ToggleMask',['../ir__RC5__RC6_8cpp.html#a31ae862ce2a43edd99bda647262b18fa',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrmark_6347',['kRc6HdrMark',['../ir__RC5__RC6_8cpp.html#ae05bbb9f690cc92feb0a9c14b3b8c477',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrmarkticks_6348',['kRc6HdrMarkTicks',['../ir__RC5__RC6_8cpp.html#aff2a5bc05ddf61d289c44a4fd093009c',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrspace_6349',['kRc6HdrSpace',['../ir__RC5__RC6_8cpp.html#a0196311c9b116cf48c8f901fb6c93ac3',1,'ir_RC5_RC6.cpp']]], + ['krc6hdrspaceticks_6350',['kRc6HdrSpaceTicks',['../ir__RC5__RC6_8cpp.html#a35a9cc59fe5251a34c88e34b6a507fd3',1,'ir_RC5_RC6.cpp']]], + ['krc6mode0bits_6351',['kRC6Mode0Bits',['../IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a',1,'IRremoteESP8266.h']]], + ['krc6rptlength_6352',['kRc6RptLength',['../ir__RC5__RC6_8cpp.html#a4989f36b790a99545e708c8681b6b961',1,'ir_RC5_RC6.cpp']]], + ['krc6rptlengthticks_6353',['kRc6RptLengthTicks',['../ir__RC5__RC6_8cpp.html#acf2dc0074bfe7671deb8985eba4396e3',1,'ir_RC5_RC6.cpp']]], + ['krc6tick_6354',['kRc6Tick',['../ir__RC5__RC6_8cpp.html#aad98dc2541039634817609d4e297322f',1,'ir_RC5_RC6.cpp']]], + ['krc6togglemask_6355',['kRc6ToggleMask',['../ir__RC5__RC6_8cpp.html#a4df09270c1e9cda504026189e30829ff',1,'ir_RC5_RC6.cpp']]], + ['krcmmbitmark_6356',['kRcmmBitMark',['../ir__RCMM_8cpp.html#ad768f62bbd7e4df567c3e53ea0a8ed06',1,'ir_RCMM.cpp']]], + ['krcmmbitmarkticks_6357',['kRcmmBitMarkTicks',['../ir__RCMM_8cpp.html#a48aeb7992d30f8c7cfa04dbd14ea0996',1,'ir_RCMM.cpp']]], + ['krcmmbits_6358',['kRCMMBits',['../IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5',1,'IRremoteESP8266.h']]], + ['krcmmbitspace0_6359',['kRcmmBitSpace0',['../ir__RCMM_8cpp.html#a34a7b22107461be18500f6d1ddf979e3',1,'ir_RCMM.cpp']]], + ['krcmmbitspace0ticks_6360',['kRcmmBitSpace0Ticks',['../ir__RCMM_8cpp.html#a0864042e8c098169d1d221fbd798cda3',1,'ir_RCMM.cpp']]], + ['krcmmbitspace1_6361',['kRcmmBitSpace1',['../ir__RCMM_8cpp.html#a812b9895f0eccaaf78752dc7030022aa',1,'ir_RCMM.cpp']]], + ['krcmmbitspace1ticks_6362',['kRcmmBitSpace1Ticks',['../ir__RCMM_8cpp.html#a89f945e0a91feccd505f0b8310a9ebb9',1,'ir_RCMM.cpp']]], + ['krcmmbitspace2_6363',['kRcmmBitSpace2',['../ir__RCMM_8cpp.html#aff0db6a8f28d3a307cd7bbb6dc90e3e3',1,'ir_RCMM.cpp']]], + ['krcmmbitspace2ticks_6364',['kRcmmBitSpace2Ticks',['../ir__RCMM_8cpp.html#a592dda1dd9239c9a015163b80cddf859',1,'ir_RCMM.cpp']]], + ['krcmmbitspace3_6365',['kRcmmBitSpace3',['../ir__RCMM_8cpp.html#a5e6351cbcb4c576871584dbf61d87d33',1,'ir_RCMM.cpp']]], + ['krcmmbitspace3ticks_6366',['kRcmmBitSpace3Ticks',['../ir__RCMM_8cpp.html#aa3f7d7e37ffa6bf9649eef7720770767',1,'ir_RCMM.cpp']]], + ['krcmmexcess_6367',['kRcmmExcess',['../ir__RCMM_8cpp.html#a3845e23031e92fd008157b0f95827432',1,'ir_RCMM.cpp']]], + ['krcmmhdrmark_6368',['kRcmmHdrMark',['../ir__RCMM_8cpp.html#a7fc5d5c1dc89ef0615fcaebaacc504df',1,'ir_RCMM.cpp']]], + ['krcmmhdrmarkticks_6369',['kRcmmHdrMarkTicks',['../ir__RCMM_8cpp.html#a00e93c94548ac081083ed2cabd614330',1,'ir_RCMM.cpp']]], + ['krcmmhdrspace_6370',['kRcmmHdrSpace',['../ir__RCMM_8cpp.html#af4dc2548c8069caf889612b3b28895ea',1,'ir_RCMM.cpp']]], + ['krcmmhdrspaceticks_6371',['kRcmmHdrSpaceTicks',['../ir__RCMM_8cpp.html#a87cd8bb5322fb38aecd20362a7df5016',1,'ir_RCMM.cpp']]], + ['krcmmmingap_6372',['kRcmmMinGap',['../ir__RCMM_8cpp.html#a94f9533bf18c0a2c2b6511ffa95ff5dc',1,'ir_RCMM.cpp']]], + ['krcmmmingapticks_6373',['kRcmmMinGapTicks',['../ir__RCMM_8cpp.html#aacb274f2da878aed511f6ab400cd51e9',1,'ir_RCMM.cpp']]], + ['krcmmrptlength_6374',['kRcmmRptLength',['../ir__RCMM_8cpp.html#a1dccf2b944d4eeb8b7dd2a1f66548a68',1,'ir_RCMM.cpp']]], + ['krcmmrptlengthticks_6375',['kRcmmRptLengthTicks',['../ir__RCMM_8cpp.html#a4cd637fa0a6071f9ea0b52c346ffe7f0',1,'ir_RCMM.cpp']]], + ['krcmmtick_6376',['kRcmmTick',['../ir__RCMM_8cpp.html#a9e1a3a26185d58ff675eec7485bc671f',1,'ir_RCMM.cpp']]], + ['krcmmtolerance_6377',['kRcmmTolerance',['../ir__RCMM_8cpp.html#a4b95480078186b3498ca6426e5bbc428',1,'ir_RCMM.cpp']]], + ['krcz01channelmask_6378',['kRcz01ChannelMask',['../ir__Doshisha_8cpp.html#a085b3d47e4cf8d8b4ba999ae58ec3533',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel1_6379',['kRcz01CommandLevel1',['../ir__Doshisha_8cpp.html#a436b801a282374de0f28e27828e1c4bf',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel2_6380',['kRcz01CommandLevel2',['../ir__Doshisha_8cpp.html#a311ef41fff985236216238565219bfe7',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel3_6381',['kRcz01CommandLevel3',['../ir__Doshisha_8cpp.html#a879bd44f482c87fbaf9fecaad8ed4c6d',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevel4_6382',['kRcz01CommandLevel4',['../ir__Doshisha_8cpp.html#a52bad85f1a3918e3031297a6c6074b45',1,'ir_Doshisha.cpp']]], + ['krcz01commandleveldown_6383',['kRcz01CommandLevelDown',['../ir__Doshisha_8cpp.html#a1678269506503f1abf871ed0af6dcc2b',1,'ir_Doshisha.cpp']]], + ['krcz01commandlevelup_6384',['kRcz01CommandLevelUp',['../ir__Doshisha_8cpp.html#a4eba011d2b110a5348783534e957660e',1,'ir_Doshisha.cpp']]], + ['krcz01commandmask_6385',['kRcz01CommandMask',['../ir__Doshisha_8cpp.html#a148e2f676f895f4e3b77b39780e2ca94',1,'ir_Doshisha.cpp']]], + ['krcz01commandnightlight_6386',['kRcz01CommandNightLight',['../ir__Doshisha_8cpp.html#a47e9d5bf353cf8aef8199fb74693aa0f',1,'ir_Doshisha.cpp']]], + ['krcz01commandoff_6387',['kRcz01CommandOff',['../ir__Doshisha_8cpp.html#a97fd32975ab9fafa85e0704964780773',1,'ir_Doshisha.cpp']]], + ['krcz01commandon_6388',['kRcz01CommandOn',['../ir__Doshisha_8cpp.html#a7377eac8b1d938903fd43d7505dd8a49',1,'ir_Doshisha.cpp']]], + ['krcz01commandswitchchannel_6389',['kRcz01CommandSwitchChannel',['../ir__Doshisha_8cpp.html#afcd3fe98c34ef9572c1a68bd143e128b',1,'ir_Doshisha.cpp']]], + ['krcz01commandtimmer30_6390',['kRcz01CommandTimmer30',['../ir__Doshisha_8cpp.html#a3deebab67d01756f7776f0d11cbdef6e',1,'ir_Doshisha.cpp']]], + ['krcz01commandtimmer60_6391',['kRcz01CommandTimmer60',['../ir__Doshisha_8cpp.html#abac6b50227512508aeb5b6042a8380fd',1,'ir_Doshisha.cpp']]], + ['krcz01signature_6392',['kRcz01Signature',['../ir__Doshisha_8cpp.html#a35c6dff74ae1702933e33f02f743f616',1,'ir_Doshisha.cpp']]], + ['krcz01signaturemask_6393',['kRcz01SignatureMask',['../ir__Doshisha_8cpp.html#a1f3b9cdfba7cc7515611d7145b7318a5',1,'ir_Doshisha.cpp']]], + ['krepeat_6394',['kRepeat',['../IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89',1,'IRrecv.h']]], + ['krepeatstr_6395',['kRepeatStr',['../IRtext_8cpp.html#ad55ef2e023915f39c7ce77e7eeb1ad76',1,'kRepeatStr(): IRtext.cpp'],['../IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b',1,'kRepeatStr(): IRtext.cpp']]], + ['krightmaxstr_6396',['kRightMaxStr',['../IRtext_8cpp.html#af3e63659779f5fdb4aded4861521e564',1,'kRightMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae',1,'kRightMaxStr(): IRtext.cpp']]], + ['krightstr_6397',['kRightStr',['../IRtext_8cpp.html#aacc9b0b21efb6053b75ed117d4ab9105',1,'kRightStr(): IRtext.cpp'],['../IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd',1,'kRightStr(): IRtext.cpp']]], + ['kroomstr_6398',['kRoomStr',['../IRtext_8cpp.html#ab3f02ff54af9a94fd57d098838a4a642',1,'kRoomStr(): IRtext.cpp'],['../IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079',1,'kRoomStr(): IRtext.cpp']]], + ['ksamsung36bits_6399',['kSamsung36Bits',['../IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179',1,'IRremoteESP8266.h']]], + ['ksamsungacauto_6400',['kSamsungAcAuto',['../ir__Samsung_8h.html#a1b05ff970f45c57b13fc13d11e95396b',1,'ir_Samsung.h']]], + ['ksamsungacautotemp_6401',['kSamsungAcAutoTemp',['../ir__Samsung_8h.html#a87bb469afc0e2b6bad44634f3ba5e0ef',1,'ir_Samsung.h']]], + ['ksamsungacbeepoffset_6402',['kSamsungAcBeepOffset',['../ir__Samsung_8h.html#a12ae1e43d05d39c39d335c97223e003e',1,'ir_Samsung.h']]], + ['ksamsungacbitmark_6403',['kSamsungAcBitMark',['../ir__Samsung_8cpp.html#a37e6f36939f1a12ffe52907bbb64a4cf',1,'ir_Samsung.cpp']]], + ['ksamsungacbits_6404',['kSamsungAcBits',['../IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c',1,'IRremoteESP8266.h']]], + ['ksamsungacbreezeoffset_6405',['kSamsungAcBreezeOffset',['../ir__Samsung_8h.html#a31d5463b3819fe41ce078b085c395a40',1,'ir_Samsung.h']]], + ['ksamsungacbreezeon_6406',['kSamsungAcBreezeOn',['../ir__Samsung_8h.html#a06299ba6942969f7b9472e752b50d4d7',1,'ir_Samsung.h']]], + ['ksamsungacbreezesize_6407',['kSamsungAcBreezeSize',['../ir__Samsung_8h.html#a1f6ec492aa58cb704147213e3b6f9f24',1,'ir_Samsung.h']]], + ['ksamsungacclean10offset_6408',['kSamsungAcClean10Offset',['../ir__Samsung_8h.html#a0982038a8c3e27972e69b83c350a0ff3',1,'ir_Samsung.h']]], + ['ksamsungacclean11offset_6409',['kSamsungAcClean11Offset',['../ir__Samsung_8h.html#a87666330f9a410ced00bf15c5f22daf2',1,'ir_Samsung.h']]], + ['ksamsungaccool_6410',['kSamsungAcCool',['../ir__Samsung_8h.html#a24d40e01f046f887b7d41dad67ad7555',1,'ir_Samsung.h']]], + ['ksamsungacdefaultrepeat_6411',['kSamsungAcDefaultRepeat',['../IRremoteESP8266_8h.html#a973f4e0189fc10805f67b67f708be1e4',1,'IRremoteESP8266.h']]], + ['ksamsungacdisplayoffset_6412',['kSamsungAcDisplayOffset',['../ir__Samsung_8h.html#af47c9229cbe569b93ad5f4986c4484ab',1,'ir_Samsung.h']]], + ['ksamsungacdry_6413',['kSamsungAcDry',['../ir__Samsung_8h.html#a6423976c7a41f526e7a878cecb257bbd',1,'ir_Samsung.h']]], + ['ksamsungacextendedbits_6414',['kSamsungAcExtendedBits',['../IRremoteESP8266_8h.html#a296e700965e70a622fe99675ff0438af',1,'IRremoteESP8266.h']]], + ['ksamsungacextendedstatelength_6415',['kSamsungAcExtendedStateLength',['../IRremoteESP8266_8h.html#a28039071f1130e9bc86efddd8265cbf9',1,'IRremoteESP8266.h']]], + ['ksamsungacfan_6416',['kSamsungAcFan',['../ir__Samsung_8h.html#a61d825254b26894a2f097ad92a7dbff2',1,'ir_Samsung.h']]], + ['ksamsungacfanauto_6417',['kSamsungAcFanAuto',['../ir__Samsung_8h.html#a37b29911f4d2b71dcdbd18a5d6dc301a',1,'ir_Samsung.h']]], + ['ksamsungacfanauto2_6418',['kSamsungAcFanAuto2',['../ir__Samsung_8h.html#aafa4319fb523b14d58371f757497e82a',1,'ir_Samsung.h']]], + ['ksamsungacfanhigh_6419',['kSamsungAcFanHigh',['../ir__Samsung_8h.html#a52cccad28fad5b9886ef408af02f56f9',1,'ir_Samsung.h']]], + ['ksamsungacfanlow_6420',['kSamsungAcFanLow',['../ir__Samsung_8h.html#a6f16b5b3f2dea3461f5d44379e8b8634',1,'ir_Samsung.h']]], + ['ksamsungacfanmed_6421',['kSamsungAcFanMed',['../ir__Samsung_8h.html#a798c3544dbd6bb6c8622cf45f88abc14',1,'ir_Samsung.h']]], + ['ksamsungacfanoffest_6422',['kSamsungAcFanOffest',['../ir__Samsung_8h.html#a1dd4a351c1a036972f741fbdafb05a7e',1,'ir_Samsung.h']]], + ['ksamsungacfansize_6423',['kSamsungAcFanSize',['../ir__Samsung_8h.html#a5b055e9951e23ba44bf1fdeed805b332',1,'ir_Samsung.h']]], + ['ksamsungacfanturbo_6424',['kSamsungAcFanTurbo',['../ir__Samsung_8h.html#af6c1432748eaa19df35531b87d197095',1,'ir_Samsung.h']]], + ['ksamsungachdrmark_6425',['kSamsungAcHdrMark',['../ir__Samsung_8cpp.html#ab7385ca5b7b417753b253a0f7cb3721b',1,'ir_Samsung.cpp']]], + ['ksamsungachdrspace_6426',['kSamsungAcHdrSpace',['../ir__Samsung_8cpp.html#a1b1f903fff13b10fb2431be9373e27cb',1,'ir_Samsung.cpp']]], + ['ksamsungacheat_6427',['kSamsungAcHeat',['../ir__Samsung_8h.html#a44ce6be7046ec4b4fe9caba7b71b8f0d',1,'ir_Samsung.h']]], + ['ksamsungacionoffset_6428',['kSamsungAcIonOffset',['../ir__Samsung_8h.html#aa7bbd222553072c092158421d1b9977f',1,'ir_Samsung.h']]], + ['ksamsungacmaxtemp_6429',['kSamsungAcMaxTemp',['../ir__Samsung_8h.html#a0a994796db81a3d56dd2c27cad448a71',1,'ir_Samsung.h']]], + ['ksamsungacmintemp_6430',['kSamsungAcMinTemp',['../ir__Samsung_8h.html#ad5f46ccb96335519f5633c33de0d8018',1,'ir_Samsung.h']]], + ['ksamsungacmodeoffset_6431',['kSamsungAcModeOffset',['../ir__Samsung_8h.html#a64b2aceb5c0d4dbea2d4697efe65aef2',1,'ir_Samsung.h']]], + ['ksamsungaconespace_6432',['kSamsungAcOneSpace',['../ir__Samsung_8cpp.html#ab106d9b7efb165eed83ae2ccef9a49b4',1,'ir_Samsung.cpp']]], + ['ksamsungacpower1offset_6433',['kSamsungAcPower1Offset',['../ir__Samsung_8h.html#aa6a4ff05acfabf24e4dfc126e583c46c',1,'ir_Samsung.h']]], + ['ksamsungacpower6offset_6434',['kSamsungAcPower6Offset',['../ir__Samsung_8h.html#a90591c7d6069d81493f894328d595187',1,'ir_Samsung.h']]], + ['ksamsungacpower6size_6435',['kSamsungAcPower6Size',['../ir__Samsung_8h.html#ace0a7a2cfedbb77d05de53abc5906992',1,'ir_Samsung.h']]], + ['ksamsungacpowerful10offset_6436',['kSamsungAcPowerful10Offset',['../ir__Samsung_8h.html#a7f92d734af799e058723e898d3ebdd30',1,'ir_Samsung.h']]], + ['ksamsungacpowerful10on_6437',['kSamsungAcPowerful10On',['../ir__Samsung_8h.html#aa05bb4788febba1f56b2b3929ac273a3',1,'ir_Samsung.h']]], + ['ksamsungacpowerful10size_6438',['kSamsungAcPowerful10Size',['../ir__Samsung_8h.html#a19ede17e420f68ea552497461e69006a',1,'ir_Samsung.h']]], + ['ksamsungacpowerfulmask8_6439',['kSamsungAcPowerfulMask8',['../ir__Samsung_8h.html#a39e23325e35688a3641c467b720381ce',1,'ir_Samsung.h']]], + ['ksamsungacpowersection_6440',['kSamsungAcPowerSection',['../ir__Samsung_8h.html#a9264b5d640d9052c153562fd38415676',1,'ir_Samsung.h']]], + ['ksamsungacquiet1offset_6441',['kSamsungAcQuiet1Offset',['../ir__Samsung_8h.html#ab029485b433f7eef6413d8194790c566',1,'ir_Samsung.h']]], + ['ksamsungacquiet5offset_6442',['kSamsungAcQuiet5Offset',['../ir__Samsung_8h.html#ae10abd66772da9bab4ba266f29e7ec75',1,'ir_Samsung.h']]], + ['ksamsungacsectiongap_6443',['kSamsungAcSectionGap',['../ir__Samsung_8cpp.html#a9752fc615c215a93c1ee65edca3a359e',1,'ir_Samsung.cpp']]], + ['ksamsungacsectionlength_6444',['kSamsungAcSectionLength',['../ir__Samsung_8h.html#ad3faedf7b111f1b91d671666e38ce6f3',1,'ir_Samsung.h']]], + ['ksamsungacsectionmark_6445',['kSamsungAcSectionMark',['../ir__Samsung_8cpp.html#a4304073cddaa2da9613dedce499fee56',1,'ir_Samsung.cpp']]], + ['ksamsungacsections_6446',['kSamsungAcSections',['../ir__Samsung_8cpp.html#a86185d98d6e891a17688d9d2a0fa7114',1,'ir_Samsung.cpp']]], + ['ksamsungacsectionspace_6447',['kSamsungAcSectionSpace',['../ir__Samsung_8cpp.html#a4837f502ef9b7c972ec409cf4fc3c605',1,'ir_Samsung.cpp']]], + ['ksamsungacstatelength_6448',['kSamsungAcStateLength',['../IRremoteESP8266_8h.html#a2d07d8c8917fee072a261d00e67e0d36',1,'IRremoteESP8266.h']]], + ['ksamsungacswingmove_6449',['kSamsungAcSwingMove',['../ir__Samsung_8h.html#ab2d2b422e3972f77aef23f77c7cfbbac',1,'ir_Samsung.h']]], + ['ksamsungacswingoffset_6450',['kSamsungAcSwingOffset',['../ir__Samsung_8h.html#ab71772d77c56cf4d01f3ce4ab751a55c',1,'ir_Samsung.h']]], + ['ksamsungacswingsize_6451',['kSamsungAcSwingSize',['../ir__Samsung_8h.html#a1b50618058108826f9103f46bf7677ee',1,'ir_Samsung.h']]], + ['ksamsungacswingstop_6452',['kSamsungAcSwingStop',['../ir__Samsung_8h.html#a37c1720d66c4ba02e368946e53036367',1,'ir_Samsung.h']]], + ['ksamsungaczerospace_6453',['kSamsungAcZeroSpace',['../ir__Samsung_8cpp.html#a7492a25e730f93f22c099ab687621b18',1,'ir_Samsung.cpp']]], + ['ksamsungbitmark_6454',['kSamsungBitMark',['../ir__Samsung_8cpp.html#a03f9ae317a7a701437c8015dfde4401f',1,'ir_Samsung.cpp']]], + ['ksamsungbitmarkticks_6455',['kSamsungBitMarkTicks',['../ir__Samsung_8cpp.html#afe1663f83396f7e5cf9bfc32f321e539',1,'ir_Samsung.cpp']]], + ['ksamsungbits_6456',['kSamsungBits',['../IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170',1,'IRremoteESP8266.h']]], + ['ksamsunghdrmark_6457',['kSamsungHdrMark',['../ir__Samsung_8cpp.html#a3d0598585af609af4c8d5004789d2df7',1,'ir_Samsung.cpp']]], + ['ksamsunghdrmarkticks_6458',['kSamsungHdrMarkTicks',['../ir__Samsung_8cpp.html#a0c81f486877d24bfd40215b089c52f2a',1,'ir_Samsung.cpp']]], + ['ksamsunghdrspace_6459',['kSamsungHdrSpace',['../ir__Samsung_8cpp.html#a2f55c53bfc72de06ff202c8ec401163d',1,'ir_Samsung.cpp']]], + ['ksamsunghdrspaceticks_6460',['kSamsungHdrSpaceTicks',['../ir__Samsung_8cpp.html#a1ae96cedfa4ed26869d295cfbb8056dd',1,'ir_Samsung.cpp']]], + ['ksamsungmingap_6461',['kSamsungMinGap',['../ir__Samsung_8cpp.html#ab13edb242547803b386aa8539a4b9470',1,'ir_Samsung.cpp']]], + ['ksamsungmingapticks_6462',['kSamsungMinGapTicks',['../ir__Samsung_8cpp.html#a55d79dcfcd43f05ebe456a9a2fce3ff0',1,'ir_Samsung.cpp']]], + ['ksamsungminmessagelength_6463',['kSamsungMinMessageLength',['../ir__Samsung_8cpp.html#ae2ec2e45f91f872e85c250c7aac0efc1',1,'ir_Samsung.cpp']]], + ['ksamsungminmessagelengthticks_6464',['kSamsungMinMessageLengthTicks',['../ir__Samsung_8cpp.html#a6d436a1b71158ff9b5d7ae21344cd7d2',1,'ir_Samsung.cpp']]], + ['ksamsungonespace_6465',['kSamsungOneSpace',['../ir__Samsung_8cpp.html#ab486b048d13f44623ee291d4221c2a1b',1,'ir_Samsung.cpp']]], + ['ksamsungonespaceticks_6466',['kSamsungOneSpaceTicks',['../ir__Samsung_8cpp.html#a484a1e3ce3dcbbef15be559bfb5822d0',1,'ir_Samsung.cpp']]], + ['ksamsungrptspace_6467',['kSamsungRptSpace',['../ir__Samsung_8cpp.html#a1cc2f3bcd7f2ca36f0a726828c14aa74',1,'ir_Samsung.cpp']]], + ['ksamsungrptspaceticks_6468',['kSamsungRptSpaceTicks',['../ir__Samsung_8cpp.html#a6864f78ad1428358acbc8b46796e50cc',1,'ir_Samsung.cpp']]], + ['ksamsungtick_6469',['kSamsungTick',['../ir__Samsung_8cpp.html#accd7d51c2714bd383170831372f57bc5',1,'ir_Samsung.cpp']]], + ['ksamsungzerospace_6470',['kSamsungZeroSpace',['../ir__Samsung_8cpp.html#ae2c828a3d099d6195208a3794022587e',1,'ir_Samsung.cpp']]], + ['ksamsungzerospaceticks_6471',['kSamsungZeroSpaceTicks',['../ir__Samsung_8cpp.html#aea63a73a5b0af2c173bc473ee2447a93',1,'ir_Samsung.cpp']]], + ['ksanyolc7461addressbits_6472',['kSanyoLC7461AddressBits',['../IRremoteESP8266_8h.html#a7e15e988acbea0fb4dfaee6f5bfa12d0',1,'IRremoteESP8266.h']]], + ['ksanyolc7461addressmask_6473',['kSanyoLc7461AddressMask',['../ir__Sanyo_8cpp.html#a785ccc066e433f11791f8a30243944d3',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461bitmark_6474',['kSanyoLc7461BitMark',['../ir__Sanyo_8cpp.html#a1360ba5ac3f30715c00a6a65155cfec8',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461bits_6475',['kSanyoLC7461Bits',['../IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8',1,'IRremoteESP8266.h']]], + ['ksanyolc7461commandbits_6476',['kSanyoLC7461CommandBits',['../IRremoteESP8266_8h.html#a5cd69a192be51634ce72a40398a6c0d7',1,'IRremoteESP8266.h']]], + ['ksanyolc7461commandmask_6477',['kSanyoLc7461CommandMask',['../ir__Sanyo_8cpp.html#abdd072e210a7616d564a9d4a7f798ad3',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461hdrmark_6478',['kSanyoLc7461HdrMark',['../ir__Sanyo_8cpp.html#a0b2e520442dd96f8cd77969230713277',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461hdrspace_6479',['kSanyoLc7461HdrSpace',['../ir__Sanyo_8cpp.html#aa9ca2469e22f66d6e5e3f4ef952484ba',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461mincommandlength_6480',['kSanyoLc7461MinCommandLength',['../ir__Sanyo_8cpp.html#a237fac9264bba0014124a815133868b2',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461mingap_6481',['kSanyoLc7461MinGap',['../ir__Sanyo_8cpp.html#aff7f31500dbe9939e223bed6b6c631a8',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461onespace_6482',['kSanyoLc7461OneSpace',['../ir__Sanyo_8cpp.html#a52716e37d6943b01e9df37956f1a83de',1,'ir_Sanyo.cpp']]], + ['ksanyolc7461zerospace_6483',['kSanyoLc7461ZeroSpace',['../ir__Sanyo_8cpp.html#a4e386992c8fca642c259e86e34729a4d',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bbits_6484',['kSanyoSA8650BBits',['../IRremoteESP8266_8h.html#a2c572c8bfa811b7dc3a8a537cc642b85',1,'IRremoteESP8266.h']]], + ['ksanyosa8650bdoublespaceusecs_6485',['kSanyoSa8650bDoubleSpaceUsecs',['../ir__Sanyo_8cpp.html#a828caf6fd05e81cedee67c558b88a0b6',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bhdrmark_6486',['kSanyoSa8650bHdrMark',['../ir__Sanyo_8cpp.html#a9d0472d183a96b8ca71a2b704a06cac8',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bhdrspace_6487',['kSanyoSa8650bHdrSpace',['../ir__Sanyo_8cpp.html#ab432df3bd299b72b4449672d611798b7',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bonemark_6488',['kSanyoSa8650bOneMark',['../ir__Sanyo_8cpp.html#a8854c7bd32c1ec53e8e1869cd9dd8cdd',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650brptlength_6489',['kSanyoSa8650bRptLength',['../ir__Sanyo_8cpp.html#a327ee6de7027aacfa9aa6ee8bdc74e3e',1,'ir_Sanyo.cpp']]], + ['ksanyosa8650bzeromark_6490',['kSanyoSa8650bZeroMark',['../ir__Sanyo_8cpp.html#a516a45a7934f23274fa302d7e711b43c',1,'ir_Sanyo.cpp']]], + ['ksavestr_6491',['kSaveStr',['../IRtext_8cpp.html#a24f9462727ee596a3ae16393c33e3ebc',1,'kSaveStr(): IRtext.cpp'],['../IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069',1,'kSaveStr(): IRtext.cpp']]], + ['ksecondsstr_6492',['kSecondsStr',['../IRtext_8cpp.html#a282cb9785839a9da66a9333d788c0fb1',1,'kSecondsStr(): IRtext.cpp'],['../IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455',1,'kSecondsStr(): IRtext.cpp']]], + ['ksecondstr_6493',['kSecondStr',['../IRtext_8cpp.html#a5ec55e16709cbd2c4b1ff8c72c01c1f5',1,'kSecondStr(): IRtext.cpp'],['../IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1',1,'kSecondStr(): IRtext.cpp']]], + ['ksensorstr_6494',['kSensorStr',['../IRtext_8cpp.html#aa7e6eab2fbc832f98d6560f62453c934',1,'kSensorStr(): IRtext.cpp'],['../IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8',1,'kSensorStr(): IRtext.cpp']]], + ['ksensortempstr_6495',['kSensorTempStr',['../IRtext_8cpp.html#a756daa989457676d2af255428a01e1d5',1,'kSensorTempStr(): IRtext.cpp'],['../IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1',1,'kSensorTempStr(): IRtext.cpp']]], + ['ksetstr_6496',['kSetStr',['../IRtext_8cpp.html#a27b5e437df44d4d41db9b296a1f236a1',1,'kSetStr(): IRtext.cpp'],['../IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce',1,'kSetStr(): IRtext.cpp']]], + ['ksharpacauto_6497',['kSharpAcAuto',['../ir__Sharp_8h.html#ad4e228b234598a84e11a76e7f2d27199',1,'ir_Sharp.h']]], + ['ksharpacbitcleanoffset_6498',['kSharpAcBitCleanOffset',['../ir__Sharp_8h.html#a3460827972f31d05070c638a57782286',1,'ir_Sharp.h']]], + ['ksharpacbitionoffset_6499',['kSharpAcBitIonOffset',['../ir__Sharp_8h.html#a73f967e9950d04941ed9f6815815fb23',1,'ir_Sharp.h']]], + ['ksharpacbitmark_6500',['kSharpAcBitMark',['../ir__Sharp_8h.html#ae73dd2c91b531bf3a52641b36f56ead7',1,'ir_Sharp.h']]], + ['ksharpacbits_6501',['kSharpAcBits',['../IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2',1,'IRremoteESP8266.h']]], + ['ksharpacbittimerenabled_6502',['kSharpAcBitTimerEnabled',['../ir__Sharp_8h.html#a083863299df4ff081be0add9d5082700',1,'ir_Sharp.h']]], + ['ksharpacbittimertype_6503',['kSharpAcBitTimerType',['../ir__Sharp_8h.html#ad47cf2f20c4589b9cbe6b583d62b4675',1,'ir_Sharp.h']]], + ['ksharpacbyteclean_6504',['kSharpAcByteClean',['../ir__Sharp_8h.html#a2f4a4ddf407413a52d45c955ebd5bcd5',1,'ir_Sharp.h']]], + ['ksharpacbytefan_6505',['kSharpAcByteFan',['../ir__Sharp_8h.html#a24139aa535ca54dcf45558da5ee2ac56',1,'ir_Sharp.h']]], + ['ksharpacbyteion_6506',['kSharpAcByteIon',['../ir__Sharp_8h.html#aaceee11c539050ba5ac368b9612131a4',1,'ir_Sharp.h']]], + ['ksharpacbytemode_6507',['kSharpAcByteMode',['../ir__Sharp_8h.html#af7d8a2ab79ae4f2ad48e569576fd34e8',1,'ir_Sharp.h']]], + ['ksharpacbytepowerspecial_6508',['kSharpAcBytePowerSpecial',['../ir__Sharp_8h.html#a44d180bd3babec15143ba8ea8aa18906',1,'ir_Sharp.h']]], + ['ksharpacbytespecial_6509',['kSharpAcByteSpecial',['../ir__Sharp_8h.html#a78ba1ef4993661f9dfaad776dff1b43e',1,'ir_Sharp.h']]], + ['ksharpacbyteswing_6510',['kSharpAcByteSwing',['../ir__Sharp_8h.html#aee580a3c6cfd75f75f46852d0f3df0db',1,'ir_Sharp.h']]], + ['ksharpacbytetemp_6511',['kSharpAcByteTemp',['../ir__Sharp_8h.html#a1b67ab12ed664517124fe3c1d7325927',1,'ir_Sharp.h']]], + ['ksharpacbytetimer_6512',['kSharpAcByteTimer',['../ir__Sharp_8h.html#af2fc9b6abae8ca6ca0d01b8c924386be',1,'ir_Sharp.h']]], + ['ksharpaccool_6513',['kSharpAcCool',['../ir__Sharp_8h.html#ae828d7e915f69cc1e9538839fc51c895',1,'ir_Sharp.h']]], + ['ksharpacdefaultrepeat_6514',['kSharpAcDefaultRepeat',['../IRremoteESP8266_8h.html#a7f0438831899e3df16f9002717c818b9',1,'IRremoteESP8266.h']]], + ['ksharpacdry_6515',['kSharpAcDry',['../ir__Sharp_8h.html#a50ae949b473ed4a6482fa00d747b2c0f',1,'ir_Sharp.h']]], + ['ksharpacfanauto_6516',['kSharpAcFanAuto',['../ir__Sharp_8h.html#a2ef78269271593420ea2bdc20025ca69',1,'ir_Sharp.h']]], + ['ksharpacfanhigh_6517',['kSharpAcFanHigh',['../ir__Sharp_8h.html#af29136d64c2f2a2515918ccf0ff0f594',1,'ir_Sharp.h']]], + ['ksharpacfanmax_6518',['kSharpAcFanMax',['../ir__Sharp_8h.html#a8b0aaa58a5f4caabea84e3b448793054',1,'ir_Sharp.h']]], + ['ksharpacfanmed_6519',['kSharpAcFanMed',['../ir__Sharp_8h.html#a7607f054da76f5e1508abf42d9cd71fc',1,'ir_Sharp.h']]], + ['ksharpacfanmin_6520',['kSharpAcFanMin',['../ir__Sharp_8h.html#a2372fdfbb0d8c2163a3eae5b8eda570a',1,'ir_Sharp.h']]], + ['ksharpacfanoffset_6521',['kSharpAcFanOffset',['../ir__Sharp_8h.html#ae95f02db8d9799ce726f5f467922a36c',1,'ir_Sharp.h']]], + ['ksharpacfansize_6522',['kSharpAcFanSize',['../ir__Sharp_8h.html#a2640f5c4eb0b4e62b9e2124a1fbfb6d2',1,'ir_Sharp.h']]], + ['ksharpacgap_6523',['kSharpAcGap',['../ir__Sharp_8h.html#a777eb0358ce3ef4528f086ff9ff7cd8d',1,'ir_Sharp.h']]], + ['ksharpachdrmark_6524',['kSharpAcHdrMark',['../ir__Sharp_8h.html#aff6f1e55de051762a0def881a5bb555c',1,'ir_Sharp.h']]], + ['ksharpachdrspace_6525',['kSharpAcHdrSpace',['../ir__Sharp_8h.html#a0ea5ff96afd358a8ad1be8d8ed808f04',1,'ir_Sharp.h']]], + ['ksharpacheat_6526',['kSharpAcHeat',['../ir__Sharp_8h.html#ab546d06a0b1f3477f88282f764f208cb',1,'ir_Sharp.h']]], + ['ksharpacmaxtemp_6527',['kSharpAcMaxTemp',['../ir__Sharp_8h.html#a6cfb060ea8c2f650fdd73b055cfda00a',1,'ir_Sharp.h']]], + ['ksharpacmintemp_6528',['kSharpAcMinTemp',['../ir__Sharp_8h.html#ad9ac5214b6cc780d9424ec7d038fe837',1,'ir_Sharp.h']]], + ['ksharpacmodesize_6529',['kSharpAcModeSize',['../ir__Sharp_8h.html#a7dfcf91a08bc37884cc4882c60004736',1,'ir_Sharp.h']]], + ['ksharpacofftimertype_6530',['kSharpAcOffTimerType',['../ir__Sharp_8h.html#ada633bea9c6c2ffd234c8262e92cebd5',1,'ir_Sharp.h']]], + ['ksharpaconespace_6531',['kSharpAcOneSpace',['../ir__Sharp_8h.html#a20e8eb7c8763fbddb20530badbaab38b',1,'ir_Sharp.h']]], + ['ksharpacontimertype_6532',['kSharpAcOnTimerType',['../ir__Sharp_8h.html#adce8625b00931645c7ccf54edf263c59',1,'ir_Sharp.h']]], + ['ksharpacpoweroff_6533',['kSharpAcPowerOff',['../ir__Sharp_8h.html#a5c13882a47bdd289507e8a5a23ec99d6',1,'ir_Sharp.h']]], + ['ksharpacpoweron_6534',['kSharpAcPowerOn',['../ir__Sharp_8h.html#af485487ea50dd2f9bc153e5f83dc5cf9',1,'ir_Sharp.h']]], + ['ksharpacpoweronfromoff_6535',['kSharpAcPowerOnFromOff',['../ir__Sharp_8h.html#ae484cf776fa47542f4d693c29052fc9f',1,'ir_Sharp.h']]], + ['ksharpacpowersetspecialoff_6536',['kSharpAcPowerSetSpecialOff',['../ir__Sharp_8h.html#a93b22ba4b5e68f8185ed28a6bb7c05dd',1,'ir_Sharp.h']]], + ['ksharpacpowersetspecialoffset_6537',['kSharpAcPowerSetSpecialOffset',['../ir__Sharp_8h.html#a0603455573e1dd203a5f6718efc12085',1,'ir_Sharp.h']]], + ['ksharpacpowersetspecialon_6538',['kSharpAcPowerSetSpecialOn',['../ir__Sharp_8h.html#a67aff6b22c0cfb89debb8ade7239f07e',1,'ir_Sharp.h']]], + ['ksharpacpowerspecialsize_6539',['kSharpAcPowerSpecialSize',['../ir__Sharp_8h.html#a233d545e942de27ec9e96d0d5e7afdb3',1,'ir_Sharp.h']]], + ['ksharpacpowertimersetting_6540',['kSharpAcPowerTimerSetting',['../ir__Sharp_8h.html#a208cb9446ea1f42db42a1f6e24b61219',1,'ir_Sharp.h']]], + ['ksharpacpowerunknown_6541',['kSharpAcPowerUnknown',['../ir__Sharp_8h.html#ab20172b860fa1401607f0678c682640f',1,'ir_Sharp.h']]], + ['ksharpacspecialfan_6542',['kSharpAcSpecialFan',['../ir__Sharp_8h.html#a6c1a1c535150f973eecb1a131d0c4780',1,'ir_Sharp.h']]], + ['ksharpacspecialpower_6543',['kSharpAcSpecialPower',['../ir__Sharp_8h.html#a843585897995ee15e39af0d452d8660d',1,'ir_Sharp.h']]], + ['ksharpacspecialswing_6544',['kSharpAcSpecialSwing',['../ir__Sharp_8h.html#a34127a7df393d2a5a84ca90e60e8507a',1,'ir_Sharp.h']]], + ['ksharpacspecialtempecono_6545',['kSharpAcSpecialTempEcono',['../ir__Sharp_8h.html#af2dcb54fc26802d1818ef88e6ddfc819',1,'ir_Sharp.h']]], + ['ksharpacspecialtimer_6546',['kSharpAcSpecialTimer',['../ir__Sharp_8h.html#a539b21c344db53fbfd4f17c91ab98139',1,'ir_Sharp.h']]], + ['ksharpacspecialtimerhalfhour_6547',['kSharpAcSpecialTimerHalfHour',['../ir__Sharp_8h.html#a1f9bf40a4af95689947c09559ed049bf',1,'ir_Sharp.h']]], + ['ksharpacspecialturbo_6548',['kSharpAcSpecialTurbo',['../ir__Sharp_8h.html#a270bb2bc83d4eb8974f498dd8eb299bb',1,'ir_Sharp.h']]], + ['ksharpacstatelength_6549',['kSharpAcStateLength',['../IRremoteESP8266_8h.html#a5192edb9406a8572e393918bab69e3c6',1,'IRremoteESP8266.h']]], + ['ksharpacswingnotoggle_6550',['kSharpAcSwingNoToggle',['../ir__Sharp_8h.html#a9c56d4f694ea69921ba2cb75f67426d6',1,'ir_Sharp.h']]], + ['ksharpacswingoffset_6551',['kSharpAcSwingOffset',['../ir__Sharp_8h.html#a61c5356e645867fa2eeda02c83e5b9ae',1,'ir_Sharp.h']]], + ['ksharpacswingsize_6552',['kSharpAcSwingSize',['../ir__Sharp_8h.html#aafec87d2ddea0fd56d176f1b5f80a6fa',1,'ir_Sharp.h']]], + ['ksharpacswingtoggle_6553',['kSharpAcSwingToggle',['../ir__Sharp_8h.html#aa6db653d25f67214819292b8f86af0e6',1,'ir_Sharp.h']]], + ['ksharpactimerhoursmax_6554',['kSharpAcTimerHoursMax',['../ir__Sharp_8h.html#a63af01993ba1e539dfb8dae67f42b9ae',1,'ir_Sharp.h']]], + ['ksharpactimerhoursoff_6555',['kSharpAcTimerHoursOff',['../ir__Sharp_8h.html#a462c10c12d828ba58d589cc365bd7be3',1,'ir_Sharp.h']]], + ['ksharpactimerhoursoffset_6556',['kSharpAcTimerHoursOffset',['../ir__Sharp_8h.html#aeb8d6ca49ba029bdb3663ff6b9c2cc4d',1,'ir_Sharp.h']]], + ['ksharpactimerhourssize_6557',['kSharpAcTimerHoursSize',['../ir__Sharp_8h.html#a965ed2ef8ba32a325ec41a351d88c17d',1,'ir_Sharp.h']]], + ['ksharpactimerincrement_6558',['kSharpAcTimerIncrement',['../ir__Sharp_8h.html#af32638e308a7034eb013b7ea9569273e',1,'ir_Sharp.h']]], + ['ksharpaczerospace_6559',['kSharpAcZeroSpace',['../ir__Sharp_8h.html#a5310e0404daae1a6e534dbaeaa9a9939',1,'ir_Sharp.h']]], + ['ksharpaddressbits_6560',['kSharpAddressBits',['../IRremoteESP8266_8h.html#a79c2f3cc459267cf0261124ddef47f5e',1,'IRremoteESP8266.h']]], + ['ksharpaddressmask_6561',['kSharpAddressMask',['../ir__Sharp_8cpp.html#a84fba003383cd4652fc804b97002f464',1,'ir_Sharp.cpp']]], + ['ksharpbitmark_6562',['kSharpBitMark',['../ir__Sharp_8cpp.html#ae2adc2bffb2b024faab8da363621733f',1,'ir_Sharp.cpp']]], + ['ksharpbitmarkticks_6563',['kSharpBitMarkTicks',['../ir__Sharp_8cpp.html#aa64bd0c359add4038c0143b5774627bb',1,'ir_Sharp.cpp']]], + ['ksharpbits_6564',['kSharpBits',['../IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae',1,'IRremoteESP8266.h']]], + ['ksharpcommandbits_6565',['kSharpCommandBits',['../IRremoteESP8266_8h.html#ae4cdfc8e358ec738d20c1bda49842ccf',1,'IRremoteESP8266.h']]], + ['ksharpcommandmask_6566',['kSharpCommandMask',['../ir__Sharp_8cpp.html#ad44eda54ade4bef4fdf4451fdb784950',1,'ir_Sharp.cpp']]], + ['ksharpgap_6567',['kSharpGap',['../ir__Sharp_8cpp.html#a77015be2a04274bcb332ec21cb75251e',1,'ir_Sharp.cpp']]], + ['ksharpgapticks_6568',['kSharpGapTicks',['../ir__Sharp_8cpp.html#a4aa110ec2934797f71ddf9bcd34498d1',1,'ir_Sharp.cpp']]], + ['ksharponespace_6569',['kSharpOneSpace',['../ir__Sharp_8cpp.html#a3359539480a203db37c2cf2efd88fdcc',1,'ir_Sharp.cpp']]], + ['ksharponespaceticks_6570',['kSharpOneSpaceTicks',['../ir__Sharp_8cpp.html#a12e18dfd195faae6ca581936434c9063',1,'ir_Sharp.cpp']]], + ['ksharptick_6571',['kSharpTick',['../ir__Sharp_8cpp.html#af417ab19220576243753903657923ba7',1,'ir_Sharp.cpp']]], + ['ksharptogglemask_6572',['kSharpToggleMask',['../ir__Sharp_8cpp.html#a2701123f01683c6927c23c7699bce13a',1,'ir_Sharp.cpp']]], + ['ksharpzerospace_6573',['kSharpZeroSpace',['../ir__Sharp_8cpp.html#ac2ad6123d938999e234896e1635e3063',1,'ir_Sharp.cpp']]], + ['ksharpzerospaceticks_6574',['kSharpZeroSpaceTicks',['../ir__Sharp_8cpp.html#af8c638f77ff29c2d20555343be80e5f0',1,'ir_Sharp.cpp']]], + ['ksherwoodbits_6575',['kSherwoodBits',['../IRremoteESP8266_8h.html#a94abd640c9e7aa225f4a8873a1ddea6a',1,'IRremoteESP8266.h']]], + ['ksherwoodminrepeat_6576',['kSherwoodMinRepeat',['../IRremoteESP8266_8h.html#a2e00b92b55657fc4e140eb85e3a414dc',1,'IRremoteESP8266.h']]], + ['ksilentstr_6577',['kSilentStr',['../IRtext_8cpp.html#a398d3c627c5b95c5d7adfb5308fc7de0',1,'kSilentStr(): IRtext.cpp'],['../IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e',1,'kSilentStr(): IRtext.cpp']]], + ['ksinglerepeat_6578',['kSingleRepeat',['../IRremoteESP8266_8h.html#a46835b1e2d279570fd818749e88180d4',1,'IRremoteESP8266.h']]], + ['ksleepstr_6579',['kSleepStr',['../IRtext_8cpp.html#a38068788c0ef50e6034dbcffeec1eb36',1,'kSleepStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac743c367e179723b128ad69f124c5',1,'kSleepStr(): IRtext.cpp']]], + ['ksleeptimerstr_6580',['kSleepTimerStr',['../IRtext_8cpp.html#a3402e1f6d78e3c59b71bd0dfdf020b51',1,'kSleepTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa',1,'kSleepTimerStr(): IRtext.cpp']]], + ['kslowstr_6581',['kSlowStr',['../IRtext_8cpp.html#a3131a17a06dff31058579b301227a04f',1,'kSlowStr(): IRtext.cpp'],['../IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473',1,'kSlowStr(): IRtext.cpp']]], + ['ksony12bits_6582',['kSony12Bits',['../IRremoteESP8266_8h.html#aa16fdf708a67dbe22c85ad4bac9b05b6',1,'IRremoteESP8266.h']]], + ['ksony15bits_6583',['kSony15Bits',['../IRremoteESP8266_8h.html#ad868d68d289d618ace266519afa059f4',1,'IRremoteESP8266.h']]], + ['ksony20bits_6584',['kSony20Bits',['../IRremoteESP8266_8h.html#aa9cd1ff8036f6c3a288c4f34af4a5eb4',1,'IRremoteESP8266.h']]], + ['ksonyaltfreq_6585',['kSonyAltFreq',['../ir__Sony_8cpp.html#a05912a15a9a6a4a78416600adc7e526b',1,'ir_Sony.cpp']]], + ['ksonyhdrmark_6586',['kSonyHdrMark',['../ir__Sony_8cpp.html#afac5a232c82e81ac257ddfc94aa4f379',1,'ir_Sony.cpp']]], + ['ksonyhdrmarkticks_6587',['kSonyHdrMarkTicks',['../ir__Sony_8cpp.html#a89abc5f0556f38d462202d1de78cbddb',1,'ir_Sony.cpp']]], + ['ksonyminbits_6588',['kSonyMinBits',['../IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b',1,'IRremoteESP8266.h']]], + ['ksonymingap_6589',['kSonyMinGap',['../ir__Sony_8cpp.html#abfe3a5e1fa2a38ee556326b1ea0e7e11',1,'ir_Sony.cpp']]], + ['ksonymingapticks_6590',['kSonyMinGapTicks',['../ir__Sony_8cpp.html#a150d62f71f79295153bac4694bae0aa3',1,'ir_Sony.cpp']]], + ['ksonyminrepeat_6591',['kSonyMinRepeat',['../IRremoteESP8266_8h.html#a112408429fb4a5cca22a66a351453bad',1,'IRremoteESP8266.h']]], + ['ksonyonemark_6592',['kSonyOneMark',['../ir__Sony_8cpp.html#a490e7ca2b0f81848ae42eb57d0023d13',1,'ir_Sony.cpp']]], + ['ksonyonemarkticks_6593',['kSonyOneMarkTicks',['../ir__Sony_8cpp.html#ad41c0d0496661c2e066056de6974bfe9',1,'ir_Sony.cpp']]], + ['ksonyrptlength_6594',['kSonyRptLength',['../ir__Sony_8cpp.html#a24578b92cf53caa48fa3660f16ec90ec',1,'ir_Sony.cpp']]], + ['ksonyrptlengthticks_6595',['kSonyRptLengthTicks',['../ir__Sony_8cpp.html#a0a7f67ba27e03c35d5df35a2a14a1e19',1,'ir_Sony.cpp']]], + ['ksonyspace_6596',['kSonySpace',['../ir__Sony_8cpp.html#ad09a9eb0dc0b809cea0d0a2a8ff6b9fb',1,'ir_Sony.cpp']]], + ['ksonyspaceticks_6597',['kSonySpaceTicks',['../ir__Sony_8cpp.html#a80dccfab869821cadaf02df664d91eda',1,'ir_Sony.cpp']]], + ['ksonystdfreq_6598',['kSonyStdFreq',['../ir__Sony_8cpp.html#a5e5b14c45909411d160e051f0bc7c63d',1,'ir_Sony.cpp']]], + ['ksonytick_6599',['kSonyTick',['../ir__Sony_8cpp.html#a7ced75a5e9f06f5c68132665d27e01b8',1,'ir_Sony.cpp']]], + ['ksonyzeromark_6600',['kSonyZeroMark',['../ir__Sony_8cpp.html#a7808995a9d2755681f1461d578d5480b',1,'ir_Sony.cpp']]], + ['ksonyzeromarkticks_6601',['kSonyZeroMarkTicks',['../ir__Sony_8cpp.html#a542aed17f98a11ca89456eec507a5225',1,'ir_Sony.cpp']]], + ['kspace_6602',['kSpace',['../ir__Lasertag_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_RC5_RC6.cpp']]], + ['kspacelbracestr_6603',['kSpaceLBraceStr',['../IRtext_8cpp.html#a156ef0014809a3509e7b254a9585e0a1',1,'kSpaceLBraceStr(): IRtext.cpp'],['../IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03',1,'kSpaceLBraceStr(): IRtext.cpp']]], + ['kspacestate_6604',['kSpaceState',['../IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a',1,'IRrecv.h']]], + ['kstartoffset_6605',['kStartOffset',['../IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972',1,'IRrecv.h']]], + ['kstartstr_6606',['kStartStr',['../IRtext_8cpp.html#a2075a48eed571455a88e7dfbc3a547ef',1,'kStartStr(): IRtext.cpp'],['../IRtext_8h.html#ad030c0930697d3c295f3783e8519995c',1,'kStartStr(): IRtext.cpp']]], + ['kstatesizemax_6607',['kStateSizeMax',['../IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2',1,'IRrecv.h']]], + ['kstepstr_6608',['kStepStr',['../IRtext_8cpp.html#ac6c64c4bdc955b6528616db3a4b303c1',1,'kStepStr(): IRtext.cpp'],['../IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3',1,'kStepStr(): IRtext.cpp']]], + ['kstopstate_6609',['kStopState',['../IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3',1,'IRrecv.h']]], + ['kstopstr_6610',['kStopStr',['../IRtext_8cpp.html#a0466188f9064d18622304cd375b18390',1,'kStopStr(): IRtext.cpp'],['../IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b',1,'kStopStr(): IRtext.cpp']]], + ['ksuperstr_6611',['kSuperStr',['../IRtext_8cpp.html#a81e6c76017bc819882a043ac8fcc2854',1,'kSuperStr(): IRtext.cpp'],['../IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7',1,'kSuperStr(): IRtext.cpp']]], + ['kswinghstr_6612',['kSwingHStr',['../IRtext_8cpp.html#a12d4e0afe0f6b96af817ebc95eb0b6f4',1,'kSwingHStr(): IRtext.cpp'],['../IRtext_8h.html#acfad569446290c1da0c102b98344411c',1,'kSwingHStr(): IRtext.cpp']]], + ['kswingstr_6613',['kSwingStr',['../IRtext_8cpp.html#a106174aef3a46450c0a16bef7c36a8c5',1,'kSwingStr(): IRtext.cpp'],['../IRtext_8h.html#a56d1a94eae3422758b2762da008e243c',1,'kSwingStr(): IRtext.cpp']]], + ['kswingvmodestr_6614',['kSwingVModeStr',['../IRtext_8cpp.html#ab71be957190939e2b4643f2e56e1201f',1,'kSwingVModeStr(): IRtext.cpp'],['../IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485',1,'kSwingVModeStr(): IRtext.cpp']]], + ['kswingvstr_6615',['kSwingVStr',['../IRtext_8cpp.html#a6dc1ec788e0659e82219534b5dbb79bc',1,'kSwingVStr(): IRtext.cpp'],['../IRtext_8h.html#a8415af77afcb671c3729d604be51fd22',1,'kSwingVStr(): IRtext.cpp']]], + ['kswingvtogglestr_6616',['kSwingVToggleStr',['../IRtext_8cpp.html#a3efcf06e5ac4d6309bad1b1d0e49a933',1,'kSwingVToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a27ae4d475898878bd8e71111066629c6',1,'kSwingVToggleStr(): IRtext.cpp']]], + ['ksymphonybits_6617',['kSymphonyBits',['../IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533',1,'IRremoteESP8266.h']]], + ['ksymphonydefaultrepeat_6618',['kSymphonyDefaultRepeat',['../IRremoteESP8266_8h.html#a219b8495f77932c200680f7a2b133880',1,'IRremoteESP8266.h']]], + ['ksymphonyfootergap_6619',['kSymphonyFooterGap',['../ir__Symphony_8cpp.html#a363cf54f4e752932d5e341975c2445f4',1,'ir_Symphony.cpp']]], + ['ksymphonyonemark_6620',['kSymphonyOneMark',['../ir__Symphony_8cpp.html#a469bfa8046ba75f9ba7cda4996dd785d',1,'ir_Symphony.cpp']]], + ['ksymphonyonespace_6621',['kSymphonyOneSpace',['../ir__Symphony_8cpp.html#ab699747bdf28d5a89920041e9c5bb01b',1,'ir_Symphony.cpp']]], + ['ksymphonyzeromark_6622',['kSymphonyZeroMark',['../ir__Symphony_8cpp.html#a58f27b1b9da16ffe73448c7ae3998fc9',1,'ir_Symphony.cpp']]], + ['ksymphonyzerospace_6623',['kSymphonyZeroSpace',['../ir__Symphony_8cpp.html#a9aaf8db419618de847573d2019155287',1,'ir_Symphony.cpp']]], + ['ktcl112acauto_6624',['kTcl112AcAuto',['../ir__Tcl_8h.html#a11a982cc182e446d53ded658cb7a08b6',1,'ir_Tcl.h']]], + ['ktcl112acbiteconooffset_6625',['kTcl112AcBitEconoOffset',['../ir__Tcl_8h.html#a97c8948de72d702b859a7abccfbc423e',1,'ir_Tcl.h']]], + ['ktcl112acbithealthoffset_6626',['kTcl112AcBitHealthOffset',['../ir__Tcl_8h.html#a2acb2c5cd2f8b729047f9eecf93f96af',1,'ir_Tcl.h']]], + ['ktcl112acbitlightoffset_6627',['kTcl112AcBitLightOffset',['../ir__Tcl_8h.html#ad87c878f7a30a05418a5babfc52c0e9e',1,'ir_Tcl.h']]], + ['ktcl112acbitmark_6628',['kTcl112AcBitMark',['../ir__Tcl_8h.html#a45360de532d2262246bf57cb7c08604d',1,'ir_Tcl.h']]], + ['ktcl112acbits_6629',['kTcl112AcBits',['../IRremoteESP8266_8h.html#a4a60d79056d70d3d56067b0bb2ec00f4',1,'IRremoteESP8266.h']]], + ['ktcl112acbitswinghoffset_6630',['kTcl112AcBitSwingHOffset',['../ir__Tcl_8h.html#ad807894f92249e44d1725f18de013369',1,'ir_Tcl.h']]], + ['ktcl112acbitturbooffset_6631',['kTcl112AcBitTurboOffset',['../ir__Tcl_8h.html#a7a6e09c1b4620e96820b3b3c54fb0e18',1,'ir_Tcl.h']]], + ['ktcl112accool_6632',['kTcl112AcCool',['../ir__Tcl_8h.html#a4a4b778086b3ebf856b750fe0c4bd2c0',1,'ir_Tcl.h']]], + ['ktcl112acdefaultrepeat_6633',['kTcl112AcDefaultRepeat',['../IRremoteESP8266_8h.html#a97c82cec6d72845d9ab8a201b0fa5034',1,'IRremoteESP8266.h']]], + ['ktcl112acdry_6634',['kTcl112AcDry',['../ir__Tcl_8h.html#a1d9ec40c278fedf87acb7420ef861101',1,'ir_Tcl.h']]], + ['ktcl112acfan_6635',['kTcl112AcFan',['../ir__Tcl_8h.html#ae07f3dd0a84be27bcb13ba60f4fd025b',1,'ir_Tcl.h']]], + ['ktcl112acfanauto_6636',['kTcl112AcFanAuto',['../ir__Tcl_8h.html#a099935d6d2bf6ebb28332005036c59c0',1,'ir_Tcl.h']]], + ['ktcl112acfanhigh_6637',['kTcl112AcFanHigh',['../ir__Tcl_8h.html#aab9672bac3e83b2e3b3d2cc5f1aa0e1f',1,'ir_Tcl.h']]], + ['ktcl112acfanlow_6638',['kTcl112AcFanLow',['../ir__Tcl_8h.html#a5114fe3f978672fc62c0cd16f6d46dd7',1,'ir_Tcl.h']]], + ['ktcl112acfanmed_6639',['kTcl112AcFanMed',['../ir__Tcl_8h.html#ad8f34f1972da347a169e2eb4ddf3d835',1,'ir_Tcl.h']]], + ['ktcl112acfansize_6640',['kTcl112AcFanSize',['../ir__Tcl_8h.html#a802bbb6258edf6dcdd05a383db28e9d3',1,'ir_Tcl.h']]], + ['ktcl112acgap_6641',['kTcl112AcGap',['../ir__Tcl_8h.html#a9ccdf5ce9ce325b9813dadbdc855a469',1,'ir_Tcl.h']]], + ['ktcl112achalfdegreeoffset_6642',['kTcl112AcHalfDegreeOffset',['../ir__Tcl_8h.html#a1ba7d7fa8df2243330eafce097209651',1,'ir_Tcl.h']]], + ['ktcl112achdrmark_6643',['kTcl112AcHdrMark',['../ir__Tcl_8h.html#a56f9f7daf3ada77f8f844afd46a80de9',1,'ir_Tcl.h']]], + ['ktcl112achdrmarktolerance_6644',['kTcl112AcHdrMarkTolerance',['../ir__Tcl_8h.html#ab9d980747b2ddd1b7fb04f00d71af1e7',1,'ir_Tcl.h']]], + ['ktcl112achdrspace_6645',['kTcl112AcHdrSpace',['../ir__Tcl_8h.html#a9135b4d7496383ad3a7da7c3ac7c92b4',1,'ir_Tcl.h']]], + ['ktcl112acheat_6646',['kTcl112AcHeat',['../ir__Tcl_8h.html#ae573f856f0bdf50406e9be84b1aa8ade',1,'ir_Tcl.h']]], + ['ktcl112acmodesize_6647',['kTcl112AcModeSize',['../ir__Tcl_8h.html#a07e49881d14cb1c84cfbf3695ae64580',1,'ir_Tcl.h']]], + ['ktcl112aconespace_6648',['kTcl112AcOneSpace',['../ir__Tcl_8h.html#af1e67019978260ba3f514cd895b54dad',1,'ir_Tcl.h']]], + ['ktcl112acpoweroffset_6649',['kTcl112AcPowerOffset',['../ir__Tcl_8h.html#ad36204b310ec8a069f631322d806aa7f',1,'ir_Tcl.h']]], + ['ktcl112acstatelength_6650',['kTcl112AcStateLength',['../IRremoteESP8266_8h.html#a23ba2f5af02242e14ae7eefcd066152e',1,'IRremoteESP8266.h']]], + ['ktcl112acswingvoff_6651',['kTcl112AcSwingVOff',['../ir__Tcl_8h.html#aa78e1b544f392c251093d458e5d21e12',1,'ir_Tcl.h']]], + ['ktcl112acswingvoffset_6652',['kTcl112AcSwingVOffset',['../ir__Tcl_8h.html#ab0412b0d865eaf788a5672300575b1d8',1,'ir_Tcl.h']]], + ['ktcl112acswingvon_6653',['kTcl112AcSwingVOn',['../ir__Tcl_8h.html#a5406fbabd66478d601aebc6939a3788f',1,'ir_Tcl.h']]], + ['ktcl112acswingvsize_6654',['kTcl112AcSwingVSize',['../ir__Tcl_8h.html#a7bacb40b18b280da13b2d1b781c825e5',1,'ir_Tcl.h']]], + ['ktcl112actempmax_6655',['kTcl112AcTempMax',['../ir__Tcl_8h.html#a60efbe31031e1e9c3a17c7d80cac54cb',1,'ir_Tcl.h']]], + ['ktcl112actempmin_6656',['kTcl112AcTempMin',['../ir__Tcl_8h.html#a30fe65ec015bc4d91cd35ead9cc43dcc',1,'ir_Tcl.h']]], + ['ktcl112actolerance_6657',['kTcl112AcTolerance',['../ir__Tcl_8h.html#a13bbe794b2b59763f7f93f15a3f26820',1,'ir_Tcl.h']]], + ['ktcl112aczerospace_6658',['kTcl112AcZeroSpace',['../ir__Tcl_8h.html#abc05edaeb1a4fa7e6ccf9bda1f66b483',1,'ir_Tcl.h']]], + ['ktecoauto_6659',['kTecoAuto',['../ir__Teco_8h.html#a79178aa25d9f60c0a838285369e1b910',1,'ir_Teco.h']]], + ['ktecobitmark_6660',['kTecoBitMark',['../ir__Teco_8cpp.html#a0aa2e352f4a61027b17467e92863883b',1,'ir_Teco.cpp']]], + ['ktecobits_6661',['kTecoBits',['../IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d',1,'IRremoteESP8266.h']]], + ['ktecocool_6662',['kTecoCool',['../ir__Teco_8h.html#a554686c72b6bc487d03c9461f9633a6b',1,'ir_Teco.h']]], + ['ktecodefaultrepeat_6663',['kTecoDefaultRepeat',['../IRremoteESP8266_8h.html#a095362359f34c1ee5ab71d56e6d64f64',1,'IRremoteESP8266.h']]], + ['ktecodry_6664',['kTecoDry',['../ir__Teco_8h.html#af7efcf371967eb97fd31d54016a82006',1,'ir_Teco.h']]], + ['ktecofan_6665',['kTecoFan',['../ir__Teco_8h.html#a7385fe198242c9203e3a5d5ffb7beb4d',1,'ir_Teco.h']]], + ['ktecofanauto_6666',['kTecoFanAuto',['../ir__Teco_8h.html#a43e58c0158efac1c4e5497c619b5674c',1,'ir_Teco.h']]], + ['ktecofanhigh_6667',['kTecoFanHigh',['../ir__Teco_8h.html#a0a73f5f892e7f9812793fbf5dab458dd',1,'ir_Teco.h']]], + ['ktecofanlow_6668',['kTecoFanLow',['../ir__Teco_8h.html#abac7443a86fb304376dd94a9c10e6940',1,'ir_Teco.h']]], + ['ktecofanmed_6669',['kTecoFanMed',['../ir__Teco_8h.html#a35f313943f9e2f5b69d5237fdaa64914',1,'ir_Teco.h']]], + ['ktecofanoffset_6670',['kTecoFanOffset',['../ir__Teco_8h.html#ae70841ad987ac89abaaf99b11655eaae',1,'ir_Teco.h']]], + ['ktecofansize_6671',['kTecoFanSize',['../ir__Teco_8h.html#a45734d2be952e3faa796d86245eaf241',1,'ir_Teco.h']]], + ['ktecogap_6672',['kTecoGap',['../ir__Teco_8cpp.html#a6a153d84287fba3bd11e3e5054fd7e30',1,'ir_Teco.cpp']]], + ['ktecohdrmark_6673',['kTecoHdrMark',['../ir__Teco_8cpp.html#ada983ce2d6f03949cddfe06191ab05d9',1,'ir_Teco.cpp']]], + ['ktecohdrspace_6674',['kTecoHdrSpace',['../ir__Teco_8cpp.html#acf417d42fd39dbaf06282162ab5b17e2',1,'ir_Teco.cpp']]], + ['ktecoheat_6675',['kTecoHeat',['../ir__Teco_8h.html#ab6f9dbeb2838b124be12d08fd9b209bb',1,'ir_Teco.h']]], + ['ktecohumidoffset_6676',['kTecoHumidOffset',['../ir__Teco_8h.html#ad95126f6815d24b5d1b38e44677f3d7e',1,'ir_Teco.h']]], + ['ktecolightoffset_6677',['kTecoLightOffset',['../ir__Teco_8h.html#a5dc2cb366974b2baa9f7cbfb26d90415',1,'ir_Teco.h']]], + ['ktecomaxtemp_6678',['kTecoMaxTemp',['../ir__Teco_8h.html#a1c24aa0cc4d475a5eb97d5208f4dcf06',1,'ir_Teco.h']]], + ['ktecomintemp_6679',['kTecoMinTemp',['../ir__Teco_8h.html#a54da99bfcbea5e076c3ca2934e769ab1',1,'ir_Teco.h']]], + ['ktecomodeoffset_6680',['kTecoModeOffset',['../ir__Teco_8h.html#a1aca7a8a2822cd1494dabeda5b11b9be',1,'ir_Teco.h']]], + ['ktecoonespace_6681',['kTecoOneSpace',['../ir__Teco_8cpp.html#a62eccbf6773ea8fbc18432627c62d0d5',1,'ir_Teco.cpp']]], + ['ktecopoweroffset_6682',['kTecoPowerOffset',['../ir__Teco_8h.html#a4eec88582ed29e424549497deb9eceef',1,'ir_Teco.h']]], + ['ktecoreset_6683',['kTecoReset',['../ir__Teco_8h.html#acf559a2cd772835ce46c3f673cd95806',1,'ir_Teco.h']]], + ['ktecosaveoffset_6684',['kTecoSaveOffset',['../ir__Teco_8h.html#a63d5efa7cfc84ee22d3575cc713d1f62',1,'ir_Teco.h']]], + ['ktecosleepoffset_6685',['kTecoSleepOffset',['../ir__Teco_8h.html#ae7da65034a8a84e79ebb1497e56e38fe',1,'ir_Teco.h']]], + ['ktecoswingoffset_6686',['kTecoSwingOffset',['../ir__Teco_8h.html#aaa821eb3ad9a5edadba2b83b6d2094b6',1,'ir_Teco.h']]], + ['ktecotempoffset_6687',['kTecoTempOffset',['../ir__Teco_8h.html#ae887d9c5702d63e4b4fa5250ed5bf0d9',1,'ir_Teco.h']]], + ['ktecotempsize_6688',['kTecoTempSize',['../ir__Teco_8h.html#a635db8dbba35e4326958fca6dfe67603',1,'ir_Teco.h']]], + ['ktecotimerhalfhouroffset_6689',['kTecoTimerHalfHourOffset',['../ir__Teco_8h.html#a2692a59900c10b6da6662fac5a312e04',1,'ir_Teco.h']]], + ['ktecotimeronoffset_6690',['kTecoTimerOnOffset',['../ir__Teco_8h.html#a7bcf79fa5e5280ad35c9a9512b2fdc7f',1,'ir_Teco.h']]], + ['ktecotimertenshoursoffset_6691',['kTecoTimerTensHoursOffset',['../ir__Teco_8h.html#adaa73601e31fa7217d371645d835f0ca',1,'ir_Teco.h']]], + ['ktecotimertenshourssize_6692',['kTecoTimerTensHoursSize',['../ir__Teco_8h.html#a57bf1b777b9b56aad4f224b6bba1218c',1,'ir_Teco.h']]], + ['ktecotimerunithoursoffset_6693',['kTecoTimerUnitHoursOffset',['../ir__Teco_8h.html#ac47fc38319e7e1d90d42c789b806cdbd',1,'ir_Teco.h']]], + ['ktecotimerunithourssize_6694',['kTecoTimerUnitHoursSize',['../ir__Teco_8h.html#a54ac664e32ce0d8b4d8d4d4d459dbc46',1,'ir_Teco.h']]], + ['ktecozerospace_6695',['kTecoZeroSpace',['../ir__Teco_8cpp.html#a8dc1f6ea44519a0930b48f69a83a7363',1,'ir_Teco.cpp']]], + ['ktempdownstr_6696',['kTempDownStr',['../IRtext_8cpp.html#a3fa3262c5631c9357a5723c70dc3be12',1,'kTempDownStr(): IRtext.cpp'],['../IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395',1,'kTempDownStr(): IRtext.cpp']]], + ['ktempstr_6697',['kTempStr',['../IRtext_8cpp.html#a487bd9a4225536aba2595be0b5cb8039',1,'kTempStr(): IRtext.cpp'],['../IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb',1,'kTempStr(): IRtext.cpp']]], + ['ktempupstr_6698',['kTempUpStr',['../IRtext_8cpp.html#a7c4f18322b600aaaf5a8716654d05dc3',1,'kTempUpStr(): IRtext.cpp'],['../IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86',1,'kTempUpStr(): IRtext.cpp']]], + ['kthreeletterdayofweekstr_6699',['kThreeLetterDayOfWeekStr',['../IRtext_8cpp.html#ae16da0464743313a1fbeae92dcfcebbd',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp'],['../IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp']]], + ['ktimeoutms_6700',['kTimeoutMs',['../IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b',1,'IRrecv.h']]], + ['ktimerstr_6701',['kTimerStr',['../IRtext_8cpp.html#a2b5219ba887cfbc578fb880ebada832a',1,'kTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109',1,'kTimerStr(): IRtext.cpp']]], + ['ktimesep_6702',['kTimeSep',['../IRtext_8cpp.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp'],['../IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp']]], + ['ktogglestr_6703',['kToggleStr',['../IRtext_8cpp.html#a33860b90859d19191c9759b099283b37',1,'kToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e',1,'kToggleStr(): IRtext.cpp']]], + ['ktolerance_6704',['kTolerance',['../IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272',1,'IRrecv.h']]], + ['ktopstr_6705',['kTopStr',['../IRtext_8cpp.html#a65a8bf89c9dd0277607478277c0c7088',1,'kTopStr(): IRtext.cpp'],['../IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2',1,'kTopStr(): IRtext.cpp']]], + ['ktoshibaacauto_6706',['kToshibaAcAuto',['../ir__Toshiba_8h.html#a4730189595a884ae6535805948e096aa',1,'ir_Toshiba.h']]], + ['ktoshibaacbitmark_6707',['kToshibaAcBitMark',['../ir__Toshiba_8cpp.html#adff1c244103ff274243b8e20ca209866',1,'ir_Toshiba.cpp']]], + ['ktoshibaacbits_6708',['kToshibaACBits',['../IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0',1,'IRremoteESP8266.h']]], + ['ktoshibaaccool_6709',['kToshibaAcCool',['../ir__Toshiba_8h.html#a2f30e65bb092365d1a8bcb1f3395333a',1,'ir_Toshiba.h']]], + ['ktoshibaacdry_6710',['kToshibaAcDry',['../ir__Toshiba_8h.html#a10b77d1038efc59775398789c33af91e',1,'ir_Toshiba.h']]], + ['ktoshibaacfanauto_6711',['kToshibaAcFanAuto',['../ir__Toshiba_8h.html#a69f52e19a5b0e68abda00b680fbef7f6',1,'ir_Toshiba.h']]], + ['ktoshibaacfanmax_6712',['kToshibaAcFanMax',['../ir__Toshiba_8h.html#a0f6ffde3491f464166d6064d7dfe5ba4',1,'ir_Toshiba.h']]], + ['ktoshibaacfanmed_6713',['kToshibaAcFanMed',['../ir__Toshiba_8h.html#a3ff967af7d1a30c7c5cb958eaa5cbd58',1,'ir_Toshiba.h']]], + ['ktoshibaacfanmin_6714',['kToshibaAcFanMin',['../ir__Toshiba_8h.html#ab2c5eea9ccabf2e0e56bc03baec5d898',1,'ir_Toshiba.h']]], + ['ktoshibaacfanoffset_6715',['kToshibaAcFanOffset',['../ir__Toshiba_8h.html#a8276d25876329968bbf36eac3598972c',1,'ir_Toshiba.h']]], + ['ktoshibaacfansize_6716',['kToshibaAcFanSize',['../ir__Toshiba_8h.html#a5a91c19e799721560a5a9ef77a245888',1,'ir_Toshiba.h']]], + ['ktoshibaachdrmark_6717',['kToshibaAcHdrMark',['../ir__Toshiba_8cpp.html#a2eac25ff2a381ad6690623641153a780',1,'ir_Toshiba.cpp']]], + ['ktoshibaachdrspace_6718',['kToshibaAcHdrSpace',['../ir__Toshiba_8cpp.html#a0ae9047d5a204f320c06736fa40d0a7d',1,'ir_Toshiba.cpp']]], + ['ktoshibaacheat_6719',['kToshibaAcHeat',['../ir__Toshiba_8h.html#aa9ec24f9a5e460aa7017f642ce7a4c0d',1,'ir_Toshiba.h']]], + ['ktoshibaacmaxtemp_6720',['kToshibaAcMaxTemp',['../ir__Toshiba_8h.html#a475028a2a519e3310506ceac0a5dc4e6',1,'ir_Toshiba.h']]], + ['ktoshibaacmingap_6721',['kToshibaAcMinGap',['../ir__Toshiba_8cpp.html#ade7642284aa7c6a638b9fab45610cc59',1,'ir_Toshiba.cpp']]], + ['ktoshibaacminrepeat_6722',['kToshibaACMinRepeat',['../IRremoteESP8266_8h.html#a8fca6a7c3cd608ff49cab35f24af0546',1,'IRremoteESP8266.h']]], + ['ktoshibaacmintemp_6723',['kToshibaAcMinTemp',['../ir__Toshiba_8h.html#ad0e8e76aabc38ac7ba2f13a009de98e0',1,'ir_Toshiba.h']]], + ['ktoshibaacmodeoffset_6724',['kToshibaAcModeOffset',['../ir__Toshiba_8h.html#a4e097e34b0f2dd9eaacf94d043f726d0',1,'ir_Toshiba.h']]], + ['ktoshibaacmodesize_6725',['kToshibaAcModeSize',['../ir__Toshiba_8h.html#a920d55af8e499a7c2293a7d8180104da',1,'ir_Toshiba.h']]], + ['ktoshibaaconespace_6726',['kToshibaAcOneSpace',['../ir__Toshiba_8cpp.html#a787330c9e5f9d30e8df157acc15f56dd',1,'ir_Toshiba.cpp']]], + ['ktoshibaacpoweroffset_6727',['kToshibaAcPowerOffset',['../ir__Toshiba_8h.html#adfd3caac2bd0b636508afbbf67b04dcd',1,'ir_Toshiba.h']]], + ['ktoshibaacstatelength_6728',['kToshibaACStateLength',['../IRremoteESP8266_8h.html#ad3be6a1b9241c20bb1464a2cb80b97d2',1,'IRremoteESP8266.h']]], + ['ktoshibaactempoffset_6729',['kToshibaAcTempOffset',['../ir__Toshiba_8h.html#a68be75c21288e249d7b44fe9648de91f',1,'ir_Toshiba.h']]], + ['ktoshibaactempsize_6730',['kToshibaAcTempSize',['../ir__Toshiba_8h.html#a89ec8108586e0d5b9f58a160f4db37c8',1,'ir_Toshiba.h']]], + ['ktoshibaaczerospace_6731',['kToshibaAcZeroSpace',['../ir__Toshiba_8cpp.html#ab2fc2833cfb31d872894073687eebd99',1,'ir_Toshiba.cpp']]], + ['ktrotecauto_6732',['kTrotecAuto',['../ir__Trotec_8h.html#a53b2687b96f8e69ec6f57dd2ac7a6dfa',1,'ir_Trotec.h']]], + ['ktrotecbitmark_6733',['kTrotecBitMark',['../ir__Trotec_8cpp.html#a870b2da19855eff625a2834ca7fd8765',1,'ir_Trotec.cpp']]], + ['ktrotecbits_6734',['kTrotecBits',['../IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2',1,'IRremoteESP8266.h']]], + ['ktroteccool_6735',['kTrotecCool',['../ir__Trotec_8h.html#add33a35046e4270ad9ff3b998526d5d1',1,'ir_Trotec.h']]], + ['ktrotecdefaultrepeat_6736',['kTrotecDefaultRepeat',['../IRremoteESP8266_8h.html#a4c0411462f2854a8606deca09ed15df5',1,'IRremoteESP8266.h']]], + ['ktrotecdeftemp_6737',['kTrotecDefTemp',['../ir__Trotec_8h.html#ac28d1d0ea6db18716a7d9d21e84178c0',1,'ir_Trotec.h']]], + ['ktrotecdry_6738',['kTrotecDry',['../ir__Trotec_8h.html#abdaa1836c6bc90b1d5813df028a76e21',1,'ir_Trotec.h']]], + ['ktrotecfan_6739',['kTrotecFan',['../ir__Trotec_8h.html#a9309d528d50dd542a5184a51fb101a6a',1,'ir_Trotec.h']]], + ['ktrotecfanhigh_6740',['kTrotecFanHigh',['../ir__Trotec_8h.html#ae780f0bb6b9b83f3dbcc1c1e282e5436',1,'ir_Trotec.h']]], + ['ktrotecfanlow_6741',['kTrotecFanLow',['../ir__Trotec_8h.html#aa1c3695c1becc935d2a3b2691996a17b',1,'ir_Trotec.h']]], + ['ktrotecfanmed_6742',['kTrotecFanMed',['../ir__Trotec_8h.html#abae1944f529099ff4736b6cb13bcbeda',1,'ir_Trotec.h']]], + ['ktrotecfanoffset_6743',['kTrotecFanOffset',['../ir__Trotec_8h.html#a3b9034b96268707f7b6fc45a16499479',1,'ir_Trotec.h']]], + ['ktrotecfansize_6744',['kTrotecFanSize',['../ir__Trotec_8h.html#a89d7de622d0f53f800c1a5a2887a81e4',1,'ir_Trotec.h']]], + ['ktrotecgap_6745',['kTrotecGap',['../ir__Trotec_8cpp.html#a753ba93d7b757dc58fcf1b4a6bb65ff6',1,'ir_Trotec.cpp']]], + ['ktrotecgapend_6746',['kTrotecGapEnd',['../ir__Trotec_8cpp.html#a5fcc4a020bcebfe90abe12d4a47de372',1,'ir_Trotec.cpp']]], + ['ktrotechdrmark_6747',['kTrotecHdrMark',['../ir__Trotec_8cpp.html#a809faed7ee2fef78a5b8271a2c5ddd10',1,'ir_Trotec.cpp']]], + ['ktrotechdrspace_6748',['kTrotecHdrSpace',['../ir__Trotec_8cpp.html#a5d42cd98bf737dd8161572afa393be1e',1,'ir_Trotec.cpp']]], + ['ktrotecintro1_6749',['kTrotecIntro1',['../ir__Trotec_8h.html#aabc5c6a9b4867c25d84ffe2839e88564',1,'ir_Trotec.h']]], + ['ktrotecintro2_6750',['kTrotecIntro2',['../ir__Trotec_8h.html#ac33de8b2fc4b70bb272a56f6bbb68e34',1,'ir_Trotec.h']]], + ['ktrotecmaxtemp_6751',['kTrotecMaxTemp',['../ir__Trotec_8h.html#abfe4004dcac892f575ec1efb09567595',1,'ir_Trotec.h']]], + ['ktrotecmaxtimer_6752',['kTrotecMaxTimer',['../ir__Trotec_8h.html#a8467d1b9983d5750a61817cacb148efd',1,'ir_Trotec.h']]], + ['ktrotecmintemp_6753',['kTrotecMinTemp',['../ir__Trotec_8h.html#a091904af9fee2384e137feab274af7f8',1,'ir_Trotec.h']]], + ['ktrotecmodeoffset_6754',['kTrotecModeOffset',['../ir__Trotec_8h.html#aa0d48802845d5cf0410550bb98e4cbb5',1,'ir_Trotec.h']]], + ['ktrotecmodesize_6755',['kTrotecModeSize',['../ir__Trotec_8h.html#ae45ea2f0f8b5d09568c0322e1735ca85',1,'ir_Trotec.h']]], + ['ktroteconespace_6756',['kTrotecOneSpace',['../ir__Trotec_8cpp.html#a570aa73a82089906971932212d99a283',1,'ir_Trotec.cpp']]], + ['ktrotecpowerbitoffset_6757',['kTrotecPowerBitOffset',['../ir__Trotec_8h.html#a11fcdfe886385de6363d06371cdcff43',1,'ir_Trotec.h']]], + ['ktrotecsleepbitoffset_6758',['kTrotecSleepBitOffset',['../ir__Trotec_8h.html#af81754a025119a3dc9924df5508b18c0',1,'ir_Trotec.h']]], + ['ktrotecstatelength_6759',['kTrotecStateLength',['../IRremoteESP8266_8h.html#ae1d2aa52fef81f03b92c35f4970728d2',1,'IRremoteESP8266.h']]], + ['ktrotectempoffset_6760',['kTrotecTempOffset',['../ir__Trotec_8h.html#a08a844aefec8d0440365c9204a01034c',1,'ir_Trotec.h']]], + ['ktrotectempsize_6761',['kTrotecTempSize',['../ir__Trotec_8h.html#a1141680a808f41513548a8747c37f975',1,'ir_Trotec.h']]], + ['ktrotectimerbitoffset_6762',['kTrotecTimerBitOffset',['../ir__Trotec_8h.html#aad59f1284ec04736a3c6629c3cd87731',1,'ir_Trotec.h']]], + ['ktroteczerospace_6763',['kTrotecZeroSpace',['../ir__Trotec_8cpp.html#a8e8f85e7b8a8157eb425316b5108d717',1,'ir_Trotec.cpp']]], + ['ktruestr_6764',['kTrueStr',['../IRtext_8cpp.html#a28a627d6f48d7d06a560f9613e4550fa',1,'kTrueStr(): IRtext.cpp'],['../IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0',1,'kTrueStr(): IRtext.cpp']]], + ['kturbostr_6765',['kTurboStr',['../IRtext_8cpp.html#a9f3f7395d980887699ac5a0c146d37d2',1,'kTurboStr(): IRtext.cpp'],['../IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8',1,'kTurboStr(): IRtext.cpp']]], + ['kunknownstr_6766',['kUnknownStr',['../IRtext_8cpp.html#a9c6c6d47ce3eb07cc607faa600978029',1,'kUnknownStr(): IRtext.cpp'],['../IRtext_8h.html#aa59176b31741b60729d4279817a7da1b',1,'kUnknownStr(): IRtext.cpp']]], + ['kunknownthreshold_6767',['kUnknownThreshold',['../IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f',1,'IRrecv.h']]], + ['kupperstr_6768',['kUpperStr',['../IRtext_8cpp.html#a887bb7c61f38014d21b025c67102fa0b',1,'kUpperStr(): IRtext.cpp'],['../IRtext_8h.html#a5aea60591627481d90688f655b2eb82a',1,'kUpperStr(): IRtext.cpp']]], + ['kupstr_6769',['kUpStr',['../IRtext_8cpp.html#ab970b3d5239f08f21a8e5e2eae49739f',1,'kUpStr(): IRtext.cpp'],['../IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a',1,'kUpStr(): IRtext.cpp']]], + ['kusedeftol_6770',['kUseDefTol',['../IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c',1,'IRrecv.h']]], + ['kvestelacauto_6771',['kVestelAcAuto',['../ir__Vestel_8h.html#a157e879cbe3b216075e3b7b2db5fdc3c',1,'ir_Vestel.h']]], + ['kvestelacbitmark_6772',['kVestelAcBitMark',['../ir__Vestel_8h.html#a70d7198002c61529956625986aa533f0',1,'ir_Vestel.h']]], + ['kvestelacbits_6773',['kVestelAcBits',['../IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7',1,'IRremoteESP8266.h']]], + ['kvestelacchecksumoffset_6774',['kVestelAcChecksumOffset',['../ir__Vestel_8h.html#ac3fa10d1dba540a82b77cc88b01f9a7e',1,'ir_Vestel.h']]], + ['kvestelacchecksumsize_6775',['kVestelAcChecksumSize',['../ir__Vestel_8h.html#a61979a3b944ce7309c5b3f5b24b0a14c',1,'ir_Vestel.h']]], + ['kvestelaccool_6776',['kVestelAcCool',['../ir__Vestel_8h.html#aa2ec681dd63a976a6b2b182ae590e020',1,'ir_Vestel.h']]], + ['kvestelacdry_6777',['kVestelAcDry',['../ir__Vestel_8h.html#a21a255842a75a932a3a0735851d9c197',1,'ir_Vestel.h']]], + ['kvestelacfan_6778',['kVestelAcFan',['../ir__Vestel_8h.html#aeabf5404a3f66fd1428b6e4c09f24c08',1,'ir_Vestel.h']]], + ['kvestelacfanauto_6779',['kVestelAcFanAuto',['../ir__Vestel_8h.html#ac2f3175c25844414de2c2489595dd851',1,'ir_Vestel.h']]], + ['kvestelacfanautocool_6780',['kVestelAcFanAutoCool',['../ir__Vestel_8h.html#ab40dc2ebe05c77e701e2d5acf16b2658',1,'ir_Vestel.h']]], + ['kvestelacfanautohot_6781',['kVestelAcFanAutoHot',['../ir__Vestel_8h.html#a95dee8baacedb7aa62edbdecf766cdc1',1,'ir_Vestel.h']]], + ['kvestelacfanhigh_6782',['kVestelAcFanHigh',['../ir__Vestel_8h.html#acae63d91ee2a2b448fe1a68b2472e4a3',1,'ir_Vestel.h']]], + ['kvestelacfanlow_6783',['kVestelAcFanLow',['../ir__Vestel_8h.html#a21ce5e539ecb764be8dbad33914f4b87',1,'ir_Vestel.h']]], + ['kvestelacfanmed_6784',['kVestelAcFanMed',['../ir__Vestel_8h.html#a265fa70e0e38caefb45ed007eb25a430',1,'ir_Vestel.h']]], + ['kvestelacfanoffset_6785',['kVestelAcFanOffset',['../ir__Vestel_8h.html#af0f1c1989322f256b7b1b5dba613feba',1,'ir_Vestel.h']]], + ['kvestelacfansize_6786',['kVestelAcFanSize',['../ir__Vestel_8h.html#ae61e23edfb71206e736497ab479c08ad',1,'ir_Vestel.h']]], + ['kvestelachdrmark_6787',['kVestelAcHdrMark',['../ir__Vestel_8h.html#a32871ab992bfee13918a50f04508a95a',1,'ir_Vestel.h']]], + ['kvestelachdrspace_6788',['kVestelAcHdrSpace',['../ir__Vestel_8h.html#a2389409048e409b411ea8416829c06ef',1,'ir_Vestel.h']]], + ['kvestelacheat_6789',['kVestelAcHeat',['../ir__Vestel_8h.html#a33d36614992862c41f5e48548b0a45f1',1,'ir_Vestel.h']]], + ['kvestelachouroffset_6790',['kVestelAcHourOffset',['../ir__Vestel_8h.html#af4c3729a4b9df092e01d74109f539cca',1,'ir_Vestel.h']]], + ['kvestelachoursize_6791',['kVestelAcHourSize',['../ir__Vestel_8h.html#a2c0fd442d92620ca062637d01258bacf',1,'ir_Vestel.h']]], + ['kvestelacion_6792',['kVestelAcIon',['../ir__Vestel_8h.html#a6a661c914fd67e261e2148d797789339',1,'ir_Vestel.h']]], + ['kvestelacionoffset_6793',['kVestelAcIonOffset',['../ir__Vestel_8h.html#a9b1cd19c4b0037714f1c47ba031edd0b',1,'ir_Vestel.h']]], + ['kvestelacmaxtemp_6794',['kVestelAcMaxTemp',['../ir__Vestel_8h.html#a4e49902b2e4fe049fd5969b4532cc7b4',1,'ir_Vestel.h']]], + ['kvestelacmintempc_6795',['kVestelAcMinTempC',['../ir__Vestel_8h.html#ae597f05d0886a5a2aa8c43db187a657b',1,'ir_Vestel.h']]], + ['kvestelacmintemph_6796',['kVestelAcMinTempH',['../ir__Vestel_8h.html#a06977d297c84adac7927c80c7b0e7297',1,'ir_Vestel.h']]], + ['kvestelacminuteoffset_6797',['kVestelAcMinuteOffset',['../ir__Vestel_8h.html#a7c5f318a30e86394af19265e73b68034',1,'ir_Vestel.h']]], + ['kvestelacminutesize_6798',['kVestelAcMinuteSize',['../ir__Vestel_8h.html#a8abd51cd0d0404ae8bb139690bf55eb0',1,'ir_Vestel.h']]], + ['kvestelacmodeoffset_6799',['kVestelAcModeOffset',['../ir__Vestel_8h.html#a5334689cb0fbeaee67133f1f86bdce58',1,'ir_Vestel.h']]], + ['kvestelacnormal_6800',['kVestelAcNormal',['../ir__Vestel_8h.html#afa4c0fafcc806cd22dfb45475631d754',1,'ir_Vestel.h']]], + ['kvestelacofftimeoffset_6801',['kVestelAcOffTimeOffset',['../ir__Vestel_8h.html#a64ce11367a28d6481801ac3ac641df4b',1,'ir_Vestel.h']]], + ['kvestelacofftimerflagoffset_6802',['kVestelAcOffTimerFlagOffset',['../ir__Vestel_8h.html#ab36bed197f2c2b65599667b4cdf8225b',1,'ir_Vestel.h']]], + ['kvestelaconespace_6803',['kVestelAcOneSpace',['../ir__Vestel_8h.html#a507a849ef5e031f40ecc0e5db6ac8dd6',1,'ir_Vestel.h']]], + ['kvestelacontimeoffset_6804',['kVestelAcOnTimeOffset',['../ir__Vestel_8h.html#a51e257abca02cb1c97de4a5418fb7e61',1,'ir_Vestel.h']]], + ['kvestelacontimerflagoffset_6805',['kVestelAcOnTimerFlagOffset',['../ir__Vestel_8h.html#a8aa66163683538129fbdaf21746a9144',1,'ir_Vestel.h']]], + ['kvestelacpoweroffset_6806',['kVestelAcPowerOffset',['../ir__Vestel_8h.html#ab1c5709fa37fc711929688bd72c300be',1,'ir_Vestel.h']]], + ['kvestelacpowersize_6807',['kVestelAcPowerSize',['../ir__Vestel_8h.html#a884236b7213902c5e7d79327effc8f97',1,'ir_Vestel.h']]], + ['kvestelacsleep_6808',['kVestelAcSleep',['../ir__Vestel_8h.html#abc4701f0a44ed48a139d192f86a7169b',1,'ir_Vestel.h']]], + ['kvestelacstatedefault_6809',['kVestelAcStateDefault',['../ir__Vestel_8h.html#a4207797ae1043280ec6364de5981a791',1,'ir_Vestel.h']]], + ['kvestelacswing_6810',['kVestelAcSwing',['../ir__Vestel_8h.html#aeb764aa28cb134348e64fde5cb4d40f0',1,'ir_Vestel.h']]], + ['kvestelacswingoffset_6811',['kVestelAcSwingOffset',['../ir__Vestel_8h.html#ad3249b7c42070013c7c81d3feb0b1a43',1,'ir_Vestel.h']]], + ['kvestelactempoffset_6812',['kVestelAcTempOffset',['../ir__Vestel_8h.html#a9cf24276d722ee54a17c8beaf2b415cd',1,'ir_Vestel.h']]], + ['kvestelactimerflagoffset_6813',['kVestelAcTimerFlagOffset',['../ir__Vestel_8h.html#a0e53cb471d133b13cfa8fd3204d70776',1,'ir_Vestel.h']]], + ['kvestelactimerhoursize_6814',['kVestelAcTimerHourSize',['../ir__Vestel_8h.html#ad52ad7c6b1efb7eee74a276dbca330e3',1,'ir_Vestel.h']]], + ['kvestelactimerminssize_6815',['kVestelAcTimerMinsSize',['../ir__Vestel_8h.html#a7696fac000df0fd5136b7cbd96393b9e',1,'ir_Vestel.h']]], + ['kvestelactimersize_6816',['kVestelAcTimerSize',['../ir__Vestel_8h.html#a43f134a4db94790c671380be29fb8e2c',1,'ir_Vestel.h']]], + ['kvestelactimestatedefault_6817',['kVestelAcTimeStateDefault',['../ir__Vestel_8h.html#aaf4d9b6a41269ede2101d45cc1549794',1,'ir_Vestel.h']]], + ['kvestelactolerance_6818',['kVestelAcTolerance',['../ir__Vestel_8h.html#a4abe236ac8a801aa03ab843c3e418711',1,'ir_Vestel.h']]], + ['kvestelacturbo_6819',['kVestelAcTurbo',['../ir__Vestel_8h.html#a85b8b744f201b1666f9608f693a61059',1,'ir_Vestel.h']]], + ['kvestelacturbosleepoffset_6820',['kVestelAcTurboSleepOffset',['../ir__Vestel_8h.html#a97c21dc060558aa4f543f2d05385f674',1,'ir_Vestel.h']]], + ['kvestelaczerospace_6821',['kVestelAcZeroSpace',['../ir__Vestel_8h.html#a2094b0ff279fb1696b51e57d657efd13',1,'ir_Vestel.h']]], + ['kwallstr_6822',['kWallStr',['../IRtext_8cpp.html#a860a71561b888c82318daad9f2c34592',1,'kWallStr(): IRtext.cpp'],['../IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29',1,'kWallStr(): IRtext.cpp']]], + ['kweeklytimerstr_6823',['kWeeklyTimerStr',['../IRtext_8cpp.html#aaf0b7bf26b4710a4c032cec9e55c545a',1,'kWeeklyTimerStr(): IRtext.cpp'],['../IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa',1,'kWeeklyTimerStr(): IRtext.cpp']]], + ['kwhirlpoolacalttempoffset_6824',['kWhirlpoolAcAltTempOffset',['../ir__Whirlpool_8h.html#a5cdc8be18d6489572d7c16dbbcc0c838',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacalttemppos_6825',['kWhirlpoolAcAltTempPos',['../ir__Whirlpool_8h.html#a019206ce06ef164cc3abb586183d0789',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacauto_6826',['kWhirlpoolAcAuto',['../ir__Whirlpool_8h.html#a2f3cc5447f8042e9c2eae0c2e0dc1b80',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacautotemp_6827',['kWhirlpoolAcAutoTemp',['../ir__Whirlpool_8h.html#a314b66dc86a7f622d73d3973d9dca86d',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacbitmark_6828',['kWhirlpoolAcBitMark',['../ir__Whirlpool_8cpp.html#a5c076ca2e18927f8b0594cb74a7de1ff',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacbits_6829',['kWhirlpoolAcBits',['../IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3',1,'IRremoteESP8266.h']]], + ['kwhirlpoolacchecksumbyte1_6830',['kWhirlpoolAcChecksumByte1',['../ir__Whirlpool_8h.html#ab199c13354730c715debbeed63182cbd',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacchecksumbyte2_6831',['kWhirlpoolAcChecksumByte2',['../ir__Whirlpool_8h.html#a37d1a2fd814ccf83062325225bddb9be',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacclockpos_6832',['kWhirlpoolAcClockPos',['../ir__Whirlpool_8h.html#ad624453fc485adaaa156bfde374208a4',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommand6thsense_6833',['kWhirlpoolAcCommand6thSense',['../ir__Whirlpool_8h.html#a48b1309aab30dd871ce047881680efa2',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandfanspeed_6834',['kWhirlpoolAcCommandFanSpeed',['../ir__Whirlpool_8h.html#a4712f7dd6c5631f6aa692eeb99fa3963',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandifeel_6835',['kWhirlpoolAcCommandIFeel',['../ir__Whirlpool_8h.html#a5cb95c379d033d7f5b0c81755f1d376f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandlight_6836',['kWhirlpoolAcCommandLight',['../ir__Whirlpool_8h.html#af6ae6f50d9dbfa610b7033181e4f7eb1',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandmode_6837',['kWhirlpoolAcCommandMode',['../ir__Whirlpool_8h.html#ab03770a941b7277a66fe65003497e183',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandofftimer_6838',['kWhirlpoolAcCommandOffTimer',['../ir__Whirlpool_8h.html#a072883e3780aa0970183ab330db26118',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandontimer_6839',['kWhirlpoolAcCommandOnTimer',['../ir__Whirlpool_8h.html#a54cbadf2ded73e66d6d12b6622249bdc',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandpos_6840',['kWhirlpoolAcCommandPos',['../ir__Whirlpool_8h.html#a1a3bc2210991ccfd418a5137dc7e0aa8',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandpower_6841',['kWhirlpoolAcCommandPower',['../ir__Whirlpool_8h.html#ac215c2827ebfe25a896d53e576b643d1',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandsleep_6842',['kWhirlpoolAcCommandSleep',['../ir__Whirlpool_8h.html#a695c9d69953ad2663512ede38e619b09',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandsuper_6843',['kWhirlpoolAcCommandSuper',['../ir__Whirlpool_8h.html#a4da2162e70a7257c5f4149e8556816d4',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandswing_6844',['kWhirlpoolAcCommandSwing',['../ir__Whirlpool_8h.html#a320e57c0727a74f049883c77233647a9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccommandtemp_6845',['kWhirlpoolAcCommandTemp',['../ir__Whirlpool_8h.html#a6e567d58af9bc3fb246e3d47a09fb065',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaccool_6846',['kWhirlpoolAcCool',['../ir__Whirlpool_8h.html#a9574c0a604ffee1df43222344f649db8',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacdefaultrepeat_6847',['kWhirlpoolAcDefaultRepeat',['../IRremoteESP8266_8h.html#a3b41358898f69d96bdeece17ead13ee0',1,'IRremoteESP8266.h']]], + ['kwhirlpoolacdry_6848',['kWhirlpoolAcDry',['../ir__Whirlpool_8h.html#ab7433a4e3e8ad7ee665ab234df43e45f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfan_6849',['kWhirlpoolAcFan',['../ir__Whirlpool_8h.html#a91ecddbde81174268fdde3679565daeb',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanauto_6850',['kWhirlpoolAcFanAuto',['../ir__Whirlpool_8h.html#a133a436db244935a812beba78a1a9d05',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanhigh_6851',['kWhirlpoolAcFanHigh',['../ir__Whirlpool_8h.html#a93affe2700e13830ff09ee16801be56d',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanlow_6852',['kWhirlpoolAcFanLow',['../ir__Whirlpool_8h.html#abdbd00636661a234d9e30521144d76e1',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanmedium_6853',['kWhirlpoolAcFanMedium',['../ir__Whirlpool_8h.html#acf1ae9526d2fd3f49d484608730f607d',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanoffset_6854',['kWhirlpoolAcFanOffset',['../ir__Whirlpool_8h.html#a2cbca4b466aab8816efa70d1653bc895',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfanpos_6855',['kWhirlpoolAcFanPos',['../ir__Whirlpool_8h.html#a02d5f4fe0837c9f9738cfb46f83c2ed9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacfansize_6856',['kWhirlpoolAcFanSize',['../ir__Whirlpool_8h.html#ae26fab46c0f06c04f4d51b61e623873c',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacgap_6857',['kWhirlpoolAcGap',['../ir__Whirlpool_8cpp.html#a5946b0c81f68442645f795f4f6518972',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolachdrmark_6858',['kWhirlpoolAcHdrMark',['../ir__Whirlpool_8cpp.html#ad2f759eb7426cfe5fb3421f101c926bb',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolachdrspace_6859',['kWhirlpoolAcHdrSpace',['../ir__Whirlpool_8cpp.html#a7a83a305cc6ebb7be7163bd1c3fb679d',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacheat_6860',['kWhirlpoolAcHeat',['../ir__Whirlpool_8h.html#a1e9290ec94cca537b5c44d2e4326b59c',1,'ir_Whirlpool.h']]], + ['kwhirlpoolachouroffset_6861',['kWhirlpoolAcHourOffset',['../ir__Whirlpool_8h.html#a8940e79b0e5b9f4bcf2a3e518cc59432',1,'ir_Whirlpool.h']]], + ['kwhirlpoolachoursize_6862',['kWhirlpoolAcHourSize',['../ir__Whirlpool_8h.html#ac50066e7e496cb7af6ecdb21cee7f2c9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaclightoffset_6863',['kWhirlpoolAcLightOffset',['../ir__Whirlpool_8h.html#a5a5fbcfa7f383fb72f96c414adea8966',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmaxtemp_6864',['kWhirlpoolAcMaxTemp',['../ir__Whirlpool_8h.html#a08171b333f214963e21a0c574783299f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmingap_6865',['kWhirlpoolAcMinGap',['../ir__Whirlpool_8cpp.html#aa6e5e114daf18d77914a08f831c37c7d',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacmintemp_6866',['kWhirlpoolAcMinTemp',['../ir__Whirlpool_8h.html#aeffef97e3247609d5731b525692f1e7b',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacminuteoffset_6867',['kWhirlpoolAcMinuteOffset',['../ir__Whirlpool_8h.html#ae22595d5d1ffdc4c6b02080cd38d14d7',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacminutesize_6868',['kWhirlpoolAcMinuteSize',['../ir__Whirlpool_8h.html#a3a5cecc4480a1cb3da19f246902ab1d9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmodeoffset_6869',['kWhirlpoolAcModeOffset',['../ir__Whirlpool_8h.html#a662d0ab4b5f2b40bc2427e2b8d18351e',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacmodepos_6870',['kWhirlpoolAcModePos',['../ir__Whirlpool_8h.html#a6a7e8449c00a260c1ef740ebc4a08d50',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacofftimerpos_6871',['kWhirlpoolAcOffTimerPos',['../ir__Whirlpool_8h.html#a48a18046ded6bae11cd87d41d615d05f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaconespace_6872',['kWhirlpoolAcOneSpace',['../ir__Whirlpool_8cpp.html#a7680ed11a0bc6b2f9340e3557681a470',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacontimerpos_6873',['kWhirlpoolAcOnTimerPos',['../ir__Whirlpool_8h.html#ad10d9924f4d57547f7dc8ea085e1666f',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacpowertoggleoffset_6874',['kWhirlpoolAcPowerToggleOffset',['../ir__Whirlpool_8h.html#a1db76f65f3f10e73a0fdee65850934a2',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacpowertogglepos_6875',['kWhirlpoolAcPowerTogglePos',['../ir__Whirlpool_8h.html#a353f4f6101a152fdcfe7f13b8f8764d8',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacsections_6876',['kWhirlpoolAcSections',['../ir__Whirlpool_8cpp.html#a75ebed07d288ac32a0138035279b41c7',1,'ir_Whirlpool.cpp']]], + ['kwhirlpoolacsleepoffset_6877',['kWhirlpoolAcSleepOffset',['../ir__Whirlpool_8h.html#a83961870cfae146cbb519560ff609fc3',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacsleeppos_6878',['kWhirlpoolAcSleepPos',['../ir__Whirlpool_8h.html#a739f14122bce3a130d441bb0a47b4666',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacstatelength_6879',['kWhirlpoolAcStateLength',['../IRremoteESP8266_8h.html#a0fff60a43f776fb999d0f1f91d88154f',1,'IRremoteESP8266.h']]], + ['kwhirlpoolacsupermask_6880',['kWhirlpoolAcSuperMask',['../ir__Whirlpool_8h.html#a1946501e50abd9e1c0a3e07007a98c24',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacsuperpos_6881',['kWhirlpoolAcSuperPos',['../ir__Whirlpool_8h.html#a68e051a102449fc6712f709b166a99b9',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacswing1offset_6882',['kWhirlpoolAcSwing1Offset',['../ir__Whirlpool_8h.html#adeba9b215f8044e64df2bf805eecaa3b',1,'ir_Whirlpool.h']]], + ['kwhirlpoolacswing2offset_6883',['kWhirlpoolAcSwing2Offset',['../ir__Whirlpool_8h.html#a3290f0b70f3eafdd885d4a08c6d5d5a3',1,'ir_Whirlpool.h']]], + ['kwhirlpoolactemppos_6884',['kWhirlpoolAcTempPos',['../ir__Whirlpool_8h.html#a15a3ef7abed2fca2881d4f5ccc969522',1,'ir_Whirlpool.h']]], + ['kwhirlpoolactimerenableoffset_6885',['kWhirlpoolAcTimerEnableOffset',['../ir__Whirlpool_8h.html#ab4694ec5e153e41f6cf56920e2291970',1,'ir_Whirlpool.h']]], + ['kwhirlpoolaczerospace_6886',['kWhirlpoolAcZeroSpace',['../ir__Whirlpool_8cpp.html#af03c9ee4d432bbce7d2ee214dd5ca095',1,'ir_Whirlpool.cpp']]], + ['kwhynterbitmark_6887',['kWhynterBitMark',['../ir__Whynter_8cpp.html#a032043e058989b6402d8af99d2c20552',1,'ir_Whynter.cpp']]], + ['kwhynterbitmarkticks_6888',['kWhynterBitMarkTicks',['../ir__Whynter_8cpp.html#acfd8f04e0453ec1b9cd85837053a47e2',1,'ir_Whynter.cpp']]], + ['kwhynterbits_6889',['kWhynterBits',['../IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98',1,'IRremoteESP8266.h']]], + ['kwhynterhdrmark_6890',['kWhynterHdrMark',['../ir__Whynter_8cpp.html#a7d62b0e658fe6f697d41d6932e4e6662',1,'ir_Whynter.cpp']]], + ['kwhynterhdrmarkticks_6891',['kWhynterHdrMarkTicks',['../ir__Whynter_8cpp.html#a34da808cebff09fc038589c035f2d2fe',1,'ir_Whynter.cpp']]], + ['kwhynterhdrspace_6892',['kWhynterHdrSpace',['../ir__Whynter_8cpp.html#ad20c874e642238e299a44ead2ea592f1',1,'ir_Whynter.cpp']]], + ['kwhynterhdrspaceticks_6893',['kWhynterHdrSpaceTicks',['../ir__Whynter_8cpp.html#a8090f73380ea212e904402555156364d',1,'ir_Whynter.cpp']]], + ['kwhyntermincommandlength_6894',['kWhynterMinCommandLength',['../ir__Whynter_8cpp.html#a5e584a8d6aa8a146c9c8e74839b28e8f',1,'ir_Whynter.cpp']]], + ['kwhyntermincommandlengthticks_6895',['kWhynterMinCommandLengthTicks',['../ir__Whynter_8cpp.html#a65e8195824053403967573b7603059e7',1,'ir_Whynter.cpp']]], + ['kwhyntermingap_6896',['kWhynterMinGap',['../ir__Whynter_8cpp.html#ad09957f4c9c76d76ab55a74f440dad5f',1,'ir_Whynter.cpp']]], + ['kwhyntermingapticks_6897',['kWhynterMinGapTicks',['../ir__Whynter_8cpp.html#a89af5f0ab7af456f58052bf9256620a2',1,'ir_Whynter.cpp']]], + ['kwhynteronespace_6898',['kWhynterOneSpace',['../ir__Whynter_8cpp.html#a78993c22d94b107a37f61cddad728003',1,'ir_Whynter.cpp']]], + ['kwhynteronespaceticks_6899',['kWhynterOneSpaceTicks',['../ir__Whynter_8cpp.html#a95a5903a8f057df2b6587a331fec6f18',1,'ir_Whynter.cpp']]], + ['kwhyntertick_6900',['kWhynterTick',['../ir__Whynter_8cpp.html#a8f704cdf6cfd11455101919d7a772389',1,'ir_Whynter.cpp']]], + ['kwhynterzerospace_6901',['kWhynterZeroSpace',['../ir__Whynter_8cpp.html#a426deb9a35a1a6afdcbcfa58c6943490',1,'ir_Whynter.cpp']]], + ['kwhynterzerospaceticks_6902',['kWhynterZeroSpaceTicks',['../ir__Whynter_8cpp.html#ae38da416cd065b561287ebd2fe0257f0',1,'ir_Whynter.cpp']]], + ['kwidestr_6903',['kWideStr',['../IRtext_8cpp.html#a19875c78e68ba6fdd78df3526f82969c',1,'kWideStr(): IRtext.cpp'],['../IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b',1,'kWideStr(): IRtext.cpp']]], + ['kwifistr_6904',['kWifiStr',['../IRtext_8cpp.html#a3f2dddbcbc03e31ed6f1081fce001ea4',1,'kWifiStr(): IRtext.cpp'],['../IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d',1,'kWifiStr(): IRtext.cpp']]], + ['kxfanstr_6905',['kXFanStr',['../IRtext_8cpp.html#ada36ab4b7555d38a76c4477971736cb7',1,'kXFanStr(): IRtext.cpp'],['../IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571',1,'kXFanStr(): IRtext.cpp']]], + ['kyesstr_6906',['kYesStr',['../IRtext_8cpp.html#a96492aa94d18702db41a639ae2a45423',1,'kYesStr(): IRtext.cpp'],['../IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae',1,'kYesStr(): IRtext.cpp']]], + ['kzepealbits_6907',['kZepealBits',['../IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296',1,'IRremoteESP8266.h']]], + ['kzepealcommandoffon_6908',['kZepealCommandOffOn',['../ir__Zepeal_8cpp.html#a37af9800da3144c218d422e54066e837',1,'ir_Zepeal.cpp']]], + ['kzepealcommandofftimer_6909',['kZepealCommandOffTimer',['../ir__Zepeal_8cpp.html#a87b136a95af4437182530d6f7cbc69ee',1,'ir_Zepeal.cpp']]], + ['kzepealcommandontimer_6910',['kZepealCommandOnTimer',['../ir__Zepeal_8cpp.html#aed4491019bb6575c113404a095e8b116',1,'ir_Zepeal.cpp']]], + ['kzepealcommandrhythm_6911',['kZepealCommandRhythm',['../ir__Zepeal_8cpp.html#aa3960b3bdaa77c060543881bdf71e46c',1,'ir_Zepeal.cpp']]], + ['kzepealcommandspeed_6912',['kZepealCommandSpeed',['../ir__Zepeal_8cpp.html#a1189a81901daaf4b8b45e8f45caf0f49',1,'ir_Zepeal.cpp']]], + ['kzepealfootermark_6913',['kZepealFooterMark',['../ir__Zepeal_8cpp.html#a83167e93978d9cec8cf2dfac980582ba',1,'ir_Zepeal.cpp']]], + ['kzepealgap_6914',['kZepealGap',['../ir__Zepeal_8cpp.html#ab5bea0fe08e14fa3d1812bea018f44f0',1,'ir_Zepeal.cpp']]], + ['kzepealhdrmark_6915',['kZepealHdrMark',['../ir__Zepeal_8cpp.html#abee2a1537cfff9481d3060fba94a4b04',1,'ir_Zepeal.cpp']]], + ['kzepealhdrspace_6916',['kZepealHdrSpace',['../ir__Zepeal_8cpp.html#ad49be13d3dd108a18e4e641a40ff0408',1,'ir_Zepeal.cpp']]], + ['kzepealminrepeat_6917',['kZepealMinRepeat',['../IRremoteESP8266_8h.html#afb5c734e808d8f108f976f0556bf6e58',1,'IRremoteESP8266.h']]], + ['kzepealonemark_6918',['kZepealOneMark',['../ir__Zepeal_8cpp.html#a4d9919883561086dd3e3060e93983480',1,'ir_Zepeal.cpp']]], + ['kzepealonespace_6919',['kZepealOneSpace',['../ir__Zepeal_8cpp.html#a88702dbff33a9dddcfd4b255637460a0',1,'ir_Zepeal.cpp']]], + ['kzepealsignature_6920',['kZepealSignature',['../ir__Zepeal_8cpp.html#a7994e564096ac01b77d9ebe3a753167d',1,'ir_Zepeal.cpp']]], + ['kzepealtolerance_6921',['kZepealTolerance',['../ir__Zepeal_8cpp.html#ab35f666ef98b24b8b4bacdf462a9fbe6',1,'ir_Zepeal.cpp']]], + ['kzepealzeromark_6922',['kZepealZeroMark',['../ir__Zepeal_8cpp.html#a94eac58ef78ea4e39687f54e381c3a00',1,'ir_Zepeal.cpp']]], + ['kzepealzerospace_6923',['kZepealZeroSpace',['../ir__Zepeal_8cpp.html#a1af802b587e8f0a88ae87ab964fde690',1,'ir_Zepeal.cpp']]], + ['kzonefollowstr_6924',['kZoneFollowStr',['../IRtext_8cpp.html#a9a112fb47e39e35d096fe09266d37db1',1,'kZoneFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f',1,'kZoneFollowStr(): IRtext.cpp']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.html new file mode 100644 index 000000000..1f6505537 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.js new file mode 100644 index 000000000..20f9d2d12 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ledflag_6925',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], + ['light_6926',['light',['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t']]], + ['llword_6927',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], + ['lword_6928',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.html new file mode 100644 index 000000000..c02d066f5 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.js new file mode 100644 index 000000000..161ca5933 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['magnitude_6929',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]], + ['mode_6930',['mode',['../structstdAc_1_1state__t.html#ae5e4b17fac2ea36300f796670337d7a7',1,'stdAc::state_t']]], + ['mode_5fstate_6931',['mode_state',['../classIRToshibaAC.html#a5bb8b6cef598bb8273369b3fa7ade1b0',1,'IRToshibaAC']]], + ['model_6932',['model',['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t']]], + ['modulation_6933',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.html new file mode 100644 index 000000000..4b866c6ce --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.js new file mode 100644 index 000000000..051529e01 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['next_6934',['next',['../classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe',1,'IRac']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.html new file mode 100644 index 000000000..84d878b81 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.js new file mode 100644 index 000000000..9f444e314 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['offtimeperiod_6935',['offTimePeriod',['../classIRsend.html#a9e45c9e4f54db86c1f3e506cd72fe4c1',1,'IRsend']]], + ['ontimeperiod_6936',['onTimePeriod',['../classIRsend.html#aaaa65f31dbea033f8130e847b0366d94',1,'IRsend']]], + ['outputoff_6937',['outputOff',['../classIRsend.html#a5e80df8b2ee534dbd6ddc30a852a2791',1,'IRsend']]], + ['outputon_6938',['outputOn',['../classIRsend.html#a4acfc45b339e724e2dbdff24762dfa7d',1,'IRsend']]], + ['overflow_6939',['overflow',['../structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58',1,'irparams_t::overflow()'],['../classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3',1,'decode_results::overflow()']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.html new file mode 100644 index 000000000..b0d9b7b20 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.js new file mode 100644 index 000000000..d2027848f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['padding_6940',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], + ['periodoffset_6941',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], + ['power_6942',['power',['../structstdAc_1_1state__t.html#ab85d37cc99bbbc4915331369c4ea622e',1,'stdAc::state_t']]], + ['powerflag_6943',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC']]], + ['protocol_6944',['protocol',['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.html new file mode 100644 index 000000000..a708dbf04 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.js b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.js new file mode 100644 index 000000000..7f57cab0a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/search/variables_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quiet_6945',['quiet',['../structstdAc_1_1state__t.html#a251ad14e187a9905137e9e4e010c3e34',1,'stdAc::state_t']]] +]; diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/splitbar.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t-members.html new file mode 100644 index 000000000..0c526f445 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t-members.html @@ -0,0 +1,87 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    irparams_t Member List
    +
    +
    + +

    This is the complete list of members for irparams_t, including all inherited members.

    + + + + + + + + + +
    bufsizeirparams_t
    overflowirparams_t
    rawbufirparams_t
    rawlenirparams_t
    rcvstateirparams_t
    recvpinirparams_t
    timeoutirparams_t
    timerirparams_t
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t.html new file mode 100644 index 000000000..74d3bcddf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structirparams__t.html @@ -0,0 +1,222 @@ + + + + + + + +IRremoteESP8266: irparams_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    irparams_t Struct Reference
    +
    +
    + +

    Information for the interrupt handler. + More...

    + +

    #include <IRrecv.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    uint8_t recvpin
     
    uint8_t rcvstate
     
    uint16_t timer
     
    uint16_t bufsize
     
    uint16_t * rawbuf
     
    uint16_t rawlen
     
    uint8_t overflow
     
    uint8_t timeout
     
    +

    Detailed Description

    +

    Information for the interrupt handler.

    +

    Member Data Documentation

    + +

    ◆ bufsize

    + +
    +
    + + + + +
    uint16_t irparams_t::bufsize
    +
    + +
    +
    + +

    ◆ overflow

    + +
    +
    + + + + +
    uint8_t irparams_t::overflow
    +
    + +
    +
    + +

    ◆ rawbuf

    + +
    +
    + + + + +
    uint16_t* irparams_t::rawbuf
    +
    + +
    +
    + +

    ◆ rawlen

    + +
    +
    + + + + +
    uint16_t irparams_t::rawlen
    +
    + +
    +
    + +

    ◆ rcvstate

    + +
    +
    + + + + +
    uint8_t irparams_t::rcvstate
    +
    + +
    +
    + +

    ◆ recvpin

    + +
    +
    + + + + +
    uint8_t irparams_t::recvpin
    +
    + +
    +
    + +

    ◆ timeout

    + +
    +
    + + + + +
    uint8_t irparams_t::timeout
    +
    + +
    +
    + +

    ◆ timer

    + +
    +
    + + + + +
    uint16_t irparams_t::timer
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t-members.html new file mode 100644 index 000000000..4a624fb26 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t-members.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    match_result_t Member List
    +
    +
    + +

    This is the complete list of members for match_result_t, including all inherited members.

    + + + + +
    datamatch_result_t
    successmatch_result_t
    usedmatch_result_t
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t.html new file mode 100644 index 000000000..db08c0b2f --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structmatch__result__t.html @@ -0,0 +1,142 @@ + + + + + + + +IRremoteESP8266: match_result_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    match_result_t Struct Reference
    +
    +
    + +

    Results from a data match. + More...

    + +

    #include <IRrecv.h>

    + + + + + + + + +

    +Public Attributes

    bool success
     
    uint64_t data
     
    uint16_t used
     
    +

    Detailed Description

    +

    Results from a data match.

    +

    Member Data Documentation

    + +

    ◆ data

    + +
    +
    + + + + +
    uint64_t match_result_t::data
    +
    + +
    +
    + +

    ◆ success

    + +
    +
    + + + + +
    bool match_result_t::success
    +
    + +
    +
    + +

    ◆ used

    + +
    +
    + + + + +
    uint16_t match_result_t::used
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t-members.html new file mode 100644 index 000000000..00b774f43 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t-members.html @@ -0,0 +1,101 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    stdAc::state_t Member List
    +
    + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t.html new file mode 100644 index 000000000..28ece11ce --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/structstdAc_1_1state__t.html @@ -0,0 +1,386 @@ + + + + + + + +IRremoteESP8266: stdAc::state_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    stdAc::state_t Struct Reference
    +
    +
    + +

    Structure to hold a common A/C state. + More...

    + +

    #include <IRsend.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    decode_type_t protocol
     
    int16_t model
     
    bool power
     
    stdAc::opmode_t mode
     
    float degrees
     
    bool celsius
     
    stdAc::fanspeed_t fanspeed
     
    stdAc::swingv_t swingv
     
    stdAc::swingh_t swingh
     
    bool quiet
     
    bool turbo
     
    bool econo
     
    bool light
     
    bool filter
     
    bool clean
     
    bool beep
     
    int16_t sleep
     
    int16_t clock
     
    +

    Detailed Description

    +

    Structure to hold a common A/C state.

    +

    Member Data Documentation

    + +

    ◆ beep

    + +
    +
    + + + + +
    bool stdAc::state_t::beep
    +
    + +
    +
    + +

    ◆ celsius

    + +
    +
    + + + + +
    bool stdAc::state_t::celsius
    +
    + +
    +
    + +

    ◆ clean

    + +
    +
    + + + + +
    bool stdAc::state_t::clean
    +
    + +
    +
    + +

    ◆ clock

    + +
    +
    + + + + +
    int16_t stdAc::state_t::clock
    +
    + +
    +
    + +

    ◆ degrees

    + +
    +
    + + + + +
    float stdAc::state_t::degrees
    +
    + +
    +
    + +

    ◆ econo

    + +
    +
    + + + + +
    bool stdAc::state_t::econo
    +
    + +
    +
    + +

    ◆ fanspeed

    + +
    +
    + + + + +
    stdAc::fanspeed_t stdAc::state_t::fanspeed
    +
    + +
    +
    + +

    ◆ filter

    + +
    +
    + + + + +
    bool stdAc::state_t::filter
    +
    + +
    +
    + +

    ◆ light

    + +
    +
    + + + + +
    bool stdAc::state_t::light
    +
    + +
    +
    + +

    ◆ mode

    + +
    +
    + + + + +
    stdAc::opmode_t stdAc::state_t::mode
    +
    + +
    +
    + +

    ◆ model

    + +
    +
    + + + + +
    int16_t stdAc::state_t::model
    +
    + +
    +
    + +

    ◆ power

    + +
    +
    + + + + +
    bool stdAc::state_t::power
    +
    + +
    +
    + +

    ◆ protocol

    + +
    +
    + + + + +
    decode_type_t stdAc::state_t::protocol
    +
    + +
    +
    + +

    ◆ quiet

    + +
    +
    + + + + +
    bool stdAc::state_t::quiet
    +
    + +
    +
    + +

    ◆ sleep

    + +
    +
    + + + + +
    int16_t stdAc::state_t::sleep
    +
    + +
    +
    + +

    ◆ swingh

    + +
    +
    + + + + +
    stdAc::swingh_t stdAc::state_t::swingh
    +
    + +
    +
    + +

    ◆ swingv

    + +
    +
    + + + + +
    stdAc::swingv_t stdAc::state_t::swingv
    +
    + +
    +
    + +

    ◆ turbo

    + +
    +
    + + + + +
    bool stdAc::state_t::turbo
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/sync_off.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/sync_on.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_a.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_b.png b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tabs.css b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tabs.css new file mode 100644 index 000000000..7d45d36c1 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/todo.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/todo.html new file mode 100644 index 000000000..8331a61db --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/todo.html @@ -0,0 +1,99 @@ + + + + + + + +IRremoteESP8266: Todo List + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    Todo List
    +
    +
    +
    +
    Member IRrecv::decodeLasertag (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)
    +
    Convert to using matchManchester() if we can.
    +
    Member IRrecv::decodeRC5 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)
    +
    Serious testing of the RC-5X and strict aspects needs to be done.
    +
    Member IRrecv::decodeRC6 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)
    +
    Testing of the strict compliance aspects.
    +
    Member IRrecv::decodeSharp (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
    +
    Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
    +
    Member IRrecv::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)
    +
    Clean up and optimise this. It is just "get it working code" atm.
    +
    Member IRSamsungAc::getSwing (void)
    +
    (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
    +
    Member IRSamsungAc::setSwing (const bool on)
    +
    (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
    +
    Member IRsend::sendLasertag (uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)
    +
    Convert this to use sendManchester() if we can.`
    +
    Member IRsend::sendRC5 (const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)
    +
    Testing of the RC-5X components.
    +
    Member IRsend::sendSAMSUNG (const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)
    +
    Confirm that is actually how Samsung sends a repeat. The refdoc doesn't indicate it is true.
    +
    +
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest-members.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest-members.html new file mode 100644 index 000000000..0976ba9fe --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest-members.html @@ -0,0 +1,87 @@ + + + + + + + +IRremoteESP8266: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    magiquest Member List
    +
    +
    + +

    This is the complete list of members for magiquest, including all inherited members.

    + + + + + + + + + +
    bytemagiquest
    cmdmagiquest
    llwordmagiquest
    lwordmagiquest
    magnitudemagiquest
    paddingmagiquest
    scrapmagiquest
    wand_idmagiquest
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest.html new file mode 100644 index 000000000..fb5f336ff --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/unionmagiquest.html @@ -0,0 +1,223 @@ + + + + + + + +IRremoteESP8266: magiquest Union Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    magiquest Union Reference
    +
    +
    + +

    MagiQuest packet is both Wand ID and magnitude of swish and flick. + More...

    + +

    #include <ir_Magiquest.h>

    + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    uint64_t llword
     
    uint8_t byte [8]
     
    uint32_t lword [2]
     
    struct {
       uint16_t   magnitude
     
       uint32_t   wand_id
     
       uint8_t   padding
     
       uint8_t   scrap
     
    cmd
     
    +

    Detailed Description

    +

    MagiQuest packet is both Wand ID and magnitude of swish and flick.

    +

    Member Data Documentation

    + +

    ◆ byte

    + +
    +
    + + + + +
    uint8_t magiquest::byte[8]
    +
    + +
    +
    + +

    ◆ cmd

    + +
    +
    + + + + +
    struct { ... } magiquest::cmd
    +
    + +
    +
    + +

    ◆ llword

    + +
    +
    + + + + +
    uint64_t magiquest::llword
    +
    + +
    +
    + +

    ◆ lword

    + +
    +
    + + + + +
    uint32_t magiquest::lword[2]
    +
    + +
    +
    + +

    ◆ magnitude

    + +
    +
    + + + + +
    uint16_t magiquest::magnitude
    +
    + +
    +
    + +

    ◆ padding

    + +
    +
    + + + + +
    uint8_t magiquest::padding
    +
    + +
    +
    + +

    ◆ scrap

    + +
    +
    + + + + +
    uint8_t magiquest::scrap
    +
    + +
    +
    + +

    ◆ wand_id

    + +
    +
    + + + + +
    uint32_t magiquest::wand_id
    +
    + +
    +
    +
    The documentation for this union was generated from the following file: +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h.html new file mode 100644 index 000000000..30e00c752 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h.html @@ -0,0 +1,82 @@ + + + + + + + +IRremoteESP8266: src/locale/zh-CN.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    zh-CN.h File Reference
    +
    + + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h_source.html b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h_source.html new file mode 100644 index 000000000..a5b0277da --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen/html/zh-CN_8h_source.html @@ -0,0 +1,545 @@ + + + + + + + +IRremoteESP8266: src/locale/zh-CN.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    IRremoteESP8266 +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    zh-CN.h
    +
    +
    +Go to the documentation of this file.
    1 // Copyright 2020 - MiaoYi (@Caffreyfans)
    +
    2 // Locale/language file for China / Simplified.
    +
    3 // This file will override the default values located in `defaults.h`.
    +
    4 #ifndef LOCALE_ZH_CN_H_
    +
    5 #define LOCALE_ZH_CN_H_
    +
    6 
    +
    7 #ifndef D_STR_UNKNOWN
    +
    8 #define D_STR_UNKNOWN "未知"
    +
    9 #endif // D_STR_UNKNOWN
    +
    10 #ifndef D_STR_PROTOCOL
    +
    11 #define D_STR_PROTOCOL "协议"
    +
    12 #endif // D_STR_PROTOCOL
    +
    13 #ifndef D_STR_POWER
    +
    14 #define D_STR_POWER "电源"
    +
    15 #endif // D_STR_POWER
    +
    16 #ifndef D_STR_PREVIOUS
    +
    17 #define D_STR_PREVIOUS "以前"
    +
    18 #endif // D_STR_PREVIOUS
    +
    19 #ifndef D_STR_ON
    +
    20 #define D_STR_ON "开"
    +
    21 #endif // D_STR_ON
    +
    22 #ifndef D_STR_OFF
    +
    23 #define D_STR_OFF "关"
    +
    24 #endif // D_STR_OFF
    +
    25 #ifndef D_STR_MODE
    +
    26 #define D_STR_MODE "模式"
    +
    27 #endif // D_STR_MODE
    +
    28 #ifndef D_STR_TOGGLE
    +
    29 #define D_STR_TOGGLE "切换"
    +
    30 #endif // D_STR_TOGGLE
    +
    31 #ifndef D_STR_TURBO
    +
    32 #define D_STR_TURBO "强力"
    +
    33 #endif // D_STR_TURBO
    +
    34 #ifndef D_STR_SUPER
    +
    35 #define D_STR_SUPER "超级"
    +
    36 #endif // D_STR_SUPER
    +
    37 #ifndef D_STR_SLEEP
    +
    38 #define D_STR_SLEEP "睡眠"
    +
    39 #endif // D_STR_SLEEP
    +
    40 #ifndef D_STR_LIGHT
    +
    41 #define D_STR_LIGHT "灯光"
    +
    42 #endif // D_STR_LIGHT
    +
    43 #ifndef D_STR_POWERFUL
    +
    44 #define D_STR_POWERFUL "强劲模式"
    +
    45 #endif // D_STR_POWERFUL
    +
    46 #ifndef D_STR_QUIET
    +
    47 #define D_STR_QUIET "安静"
    +
    48 #endif // D_STR_QUIET
    +
    49 #ifndef D_STR_ECONO
    +
    50 #define D_STR_ECONO "经济"
    +
    51 #endif // D_STR_ECONO
    +
    52 #ifndef D_STR_SWING
    +
    53 #define D_STR_SWING "扫风"
    +
    54 #endif // D_STR_SWING
    +
    55 #ifndef D_STR_SWINGH
    +
    56 #define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first!
    +
    57 #endif // D_STR_SWINGH
    +
    58 #ifndef D_STR_SWINGV
    +
    59 #define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
    +
    60 #endif // D_STR_SWINGV
    +
    61 #ifndef D_STR_BEEP
    +
    62 #define D_STR_BEEP "蜂鸣"
    +
    63 #endif // D_STR_BEEP
    +
    64 #ifndef D_STR_MOULD
    +
    65 #define D_STR_MOULD "模子"
    +
    66 #endif // D_STR_MOULD
    +
    67 #ifndef D_STR_CLEAN
    +
    68 #define D_STR_CLEAN "清洁"
    +
    69 #endif // D_STR_CLEAN
    +
    70 #ifndef D_STR_PURIFY
    +
    71 #define D_STR_PURIFY "净化"
    +
    72 #endif // D_STR_PURIFY
    +
    73 #ifndef D_STR_TIMER
    +
    74 #define D_STR_TIMER "计时器"
    +
    75 #endif // D_STR_TIMER
    +
    76 #ifndef D_STR_ONTIMER
    +
    77 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
    +
    78 #endif // D_STR_ONTIMER
    +
    79 #ifndef D_STR_OFFTIMER
    +
    80 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
    +
    81 #endif // D_STR_OFFTIMER
    +
    82 #ifndef D_STR_CLOCK
    +
    83 #define D_STR_CLOCK "时钟"
    +
    84 #endif // D_STR_CLOCK
    +
    85 #ifndef D_STR_COMMAND
    +
    86 #define D_STR_COMMAND "命令"
    +
    87 #endif // D_STR_COMMAND
    +
    88 #ifndef D_STR_XFAN
    +
    89 #define D_STR_XFAN "XFan"
    +
    90 #endif // D_STR_XFAN
    +
    91 #ifndef D_STR_HEALTH
    +
    92 #define D_STR_HEALTH "健康"
    +
    93 #endif // D_STR_HEALTH
    +
    94 #ifndef D_STR_MODEL
    +
    95 #define D_STR_MODEL "模式"
    +
    96 #endif // D_STR_MODEL
    +
    97 #ifndef D_STR_TEMP
    +
    98 #define D_STR_TEMP "温度"
    +
    99 #endif // D_STR_TEMP
    +
    100 #ifndef D_STR_IFEEL
    +
    101 #define D_STR_IFEEL "IFeel"
    +
    102 #endif // D_STR_IFEEL
    +
    103 #ifndef D_STR_HUMID
    +
    104 #define D_STR_HUMID "湿度"
    +
    105 #endif // D_STR_HUMID
    +
    106 #ifndef D_STR_SAVE
    +
    107 #define D_STR_SAVE "保存"
    +
    108 #endif // D_STR_SAVE
    +
    109 #ifndef D_STR_EYE
    +
    110 #define D_STR_EYE "眼"
    +
    111 #endif // D_STR_EYE
    +
    112 #ifndef D_STR_FOLLOW
    +
    113 #define D_STR_FOLLOW "跟随"
    +
    114 #endif // D_STR_FOLLOW
    +
    115 #ifndef D_STR_ION
    +
    116 #define D_STR_ION "Ion"
    +
    117 #endif // D_STR_ION
    +
    118 #ifndef D_STR_FRESH
    +
    119 #define D_STR_FRESH "刷新"
    +
    120 #endif // D_STR_FRESH
    +
    121 #ifndef D_STR_HOLD
    +
    122 #define D_STR_HOLD "保持"
    +
    123 #endif // D_STR_HOLD
    +
    124 #ifndef D_STR_8C_HEAT
    +
    125 #define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
    +
    126 #endif // D_STR_8C_HEAT
    +
    127 #ifndef D_STR_BUTTON
    +
    128 #define D_STR_BUTTON "按钮"
    +
    129 #endif // D_STR_BUTTON
    +
    130 #ifndef D_STR_NIGHT
    +
    131 #define D_STR_NIGHT "夜间"
    +
    132 #endif // D_STR_NIGHT
    +
    133 #ifndef D_STR_SILENT
    +
    134 #define D_STR_SILENT "安静"
    +
    135 #endif // D_STR_SILENT
    +
    136 #ifndef D_STR_FILTER
    +
    137 #define D_STR_FILTER "过滤"
    +
    138 #endif // D_STR_FILTER
    +
    139 #ifndef D_STR_3D
    +
    140 #define D_STR_3D "3D"
    +
    141 #endif // D_STR_3D
    +
    142 #ifndef D_STR_CELSIUS
    +
    143 #define D_STR_CELSIUS "摄氏度"
    +
    144 #endif // D_STR_CELSIUS
    +
    145 #ifndef D_STR_UP
    +
    146 #define D_STR_UP "上"
    +
    147 #endif // D_STR_UP
    +
    148 #ifndef D_STR_TEMPUP
    +
    149 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
    +
    150 #endif // D_STR_TEMPUP
    +
    151 #ifndef D_STR_DOWN
    +
    152 #define D_STR_DOWN "下"
    +
    153 #endif // D_STR_DOWN
    +
    154 #ifndef D_STR_TEMPDOWN
    +
    155 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
    +
    156 #endif // D_STR_TEMPDOWN
    +
    157 #ifndef D_STR_CHANGE
    +
    158 #define D_STR_CHANGE "改变"
    +
    159 #endif // D_STR_CHANGE
    +
    160 #ifndef D_STR_START
    +
    161 #define D_STR_START "开始"
    +
    162 #endif // D_STR_START
    +
    163 #ifndef D_STR_STOP
    +
    164 #define D_STR_STOP "结束"
    +
    165 #endif // D_STR_STOP
    +
    166 #ifndef D_STR_MOVE
    +
    167 #define D_STR_MOVE "移动"
    +
    168 #endif // D_STR_MOVE
    +
    169 #ifndef D_STR_SET
    +
    170 #define D_STR_SET "设置"
    +
    171 #endif // D_STR_SET
    +
    172 #ifndef D_STR_CANCEL
    +
    173 #define D_STR_CANCEL "取消"
    +
    174 #endif // D_STR_CANCEL
    +
    175 #ifndef D_STR_COMFORT
    +
    176 #define D_STR_COMFORT "舒适"
    +
    177 #endif // D_STR_COMFORT
    +
    178 #ifndef D_STR_SENSOR
    +
    179 #define D_STR_SENSOR "传感器"
    +
    180 #endif // D_STR_SENSOR
    +
    181 #ifndef D_STR_WEEKLY
    +
    182 #define D_STR_WEEKLY "每周"
    +
    183 #endif // D_STR_WEEKLY
    +
    184 #ifndef D_STR_WEEKLYTIMER
    +
    185 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
    +
    186 #endif // D_STR_WEEKLYTIMER
    +
    187 #ifndef D_STR_WIFI
    +
    188 #define D_STR_WIFI "WiFi"
    +
    189 #endif // D_STR_WIFI
    +
    190 #ifndef D_STR_LAST
    +
    191 #define D_STR_LAST "最近"
    +
    192 #endif // D_STR_LAST
    +
    193 #ifndef D_STR_FAST
    +
    194 #define D_STR_FAST "快"
    +
    195 #endif // D_STR_FAST
    +
    196 #ifndef D_STR_SLOW
    +
    197 #define D_STR_SLOW "慢"
    +
    198 #endif // D_STR_SLOW
    +
    199 #ifndef D_STR_AIRFLOW
    +
    200 #define D_STR_AIRFLOW "空气流动"
    +
    201 #endif // D_STR_AIRFLOW
    +
    202 #ifndef D_STR_STEP
    +
    203 #define D_STR_STEP "步"
    +
    204 #endif // D_STR_STEP
    +
    205 #ifndef D_STR_NA
    +
    206 #define D_STR_NA "不适用"
    +
    207 #endif // D_STR_NA
    +
    208 #ifndef D_STR_OUTSIDE
    +
    209 #define D_STR_OUTSIDE "室外"
    +
    210 #endif // D_STR_OUTSIDE
    +
    211 #ifndef D_STR_LOUD
    +
    212 #define D_STR_LOUD "大声"
    +
    213 #endif // D_STR_LOUD
    +
    214 #ifndef D_STR_UPPER
    +
    215 #define D_STR_UPPER "更高"
    +
    216 #endif // D_STR_UPPER
    +
    217 #ifndef D_STR_LOWER
    +
    218 #define D_STR_LOWER "更低"
    +
    219 #endif // D_STR_LOWER
    +
    220 #ifndef D_STR_BREEZE
    +
    221 #define D_STR_BREEZE "微风"
    +
    222 #endif // D_STR_BREEZE
    +
    223 #ifndef D_STR_CIRCULATE
    +
    224 #define D_STR_CIRCULATE "流通"
    +
    225 #endif // D_STR_CIRCULATE
    +
    226 #ifndef D_STR_CEILING
    +
    227 #define D_STR_CEILING "天花板"
    +
    228 #endif // D_STR_CEILING
    +
    229 #ifndef D_STR_WALL
    +
    230 #define D_STR_WALL "墙"
    +
    231 #endif // D_STR_WALL
    +
    232 #ifndef D_STR_ROOM
    +
    233 #define D_STR_ROOM "房间"
    +
    234 #endif // D_STR_ROOM
    +
    235 #ifndef D_STR_6THSENSE
    +
    236 #define D_STR_6THSENSE "第六感"
    +
    237 #endif // D_STR_6THSENSE
    +
    238 #ifndef D_STR_ZONEFOLLOW
    +
    239 #define D_STR_ZONEFOLLOW "区域跟随"
    +
    240 #endif // D_STR_ZONEFOLLOW
    +
    241 #ifndef D_STR_FIXED
    +
    242 #define D_STR_FIXED "固定"
    +
    243 #endif // D_STR_FIXED
    +
    244 
    +
    245 #ifndef D_STR_AUTO
    +
    246 #define D_STR_AUTO "自动"
    +
    247 #endif // D_STR_AUTO
    +
    248 #ifndef D_STR_AUTOMATIC
    +
    249 #define D_STR_AUTOMATIC "自动的"
    +
    250 #endif // D_STR_AUTOMATIC
    +
    251 #ifndef D_STR_MANUAL
    +
    252 #define D_STR_MANUAL "手动"
    +
    253 #endif // D_STR_MANUAL
    +
    254 #ifndef D_STR_COOL
    +
    255 #define D_STR_COOL "制冷"
    +
    256 #endif // D_STR_COOL
    +
    257 #ifndef D_STR_HEAT
    +
    258 #define D_STR_HEAT "加热"
    +
    259 #endif // D_STR_HEAT
    +
    260 #ifndef D_STR_FAN
    +
    261 #define D_STR_FAN "风扇"
    +
    262 #endif // D_STR_FAN
    +
    263 #ifndef D_STR_FANONLY
    +
    264 #define D_STR_FANONLY "仅风扇"
    +
    265 #endif // D_STR_FANONLY
    +
    266 #ifndef D_STR_DRY
    +
    267 #define D_STR_DRY "干燥"
    +
    268 #endif // D_STR_DRY
    +
    269 
    +
    270 #ifndef D_STR_MAX
    +
    271 #define D_STR_MAX "最大"
    +
    272 #endif // D_STR_MAX
    +
    273 #ifndef D_STR_MAXIMUM
    +
    274 #define D_STR_MAXIMUM "最小"
    +
    275 #endif // D_STR_MAXIMUM
    +
    276 #ifndef D_STR_MIN
    +
    277 #define D_STR_MIN "最低"
    +
    278 #endif // D_STR_MIN
    +
    279 #ifndef D_STR_MINIMUM
    +
    280 #define D_STR_MINIMUM "最低"
    +
    281 #endif // D_STR_MINIMUM
    +
    282 #ifndef D_STR_MED
    +
    283 #define D_STR_MED "中"
    +
    284 #endif // D_STR_MED
    +
    285 #ifndef D_STR_MEDIUM
    +
    286 #define D_STR_MEDIUM "中"
    +
    287 #endif // D_STR_MEDIUM
    +
    288 
    +
    289 #ifndef D_STR_HIGHEST
    +
    290 #define D_STR_HIGHEST "最高"
    +
    291 #endif // D_STR_HIGHEST
    +
    292 #ifndef D_STR_HIGH
    +
    293 #define D_STR_HIGH "高"
    +
    294 #endif // D_STR_HIGH
    +
    295 #ifndef D_STR_HI
    +
    296 #define D_STR_HI "嗨"
    +
    297 #endif // D_STR_HI
    +
    298 #ifndef D_STR_MID
    +
    299 #define D_STR_MID "中"
    +
    300 #endif // D_STR_MID
    +
    301 #ifndef D_STR_MIDDLE
    +
    302 #define D_STR_MIDDLE "居中"
    +
    303 #endif // D_STR_MIDDLE
    +
    304 #ifndef D_STR_LOW
    +
    305 #define D_STR_LOW "低"
    +
    306 #endif // D_STR_LOW
    +
    307 #ifndef D_STR_LO
    +
    308 #define D_STR_LO "低"
    +
    309 #endif // D_STR_LO
    +
    310 #ifndef D_STR_LOWEST
    +
    311 #define D_STR_LOWEST "最低"
    +
    312 #endif // D_STR_LOWEST
    +
    313 #ifndef D_STR_RIGHT
    +
    314 #define D_STR_RIGHT "右"
    +
    315 #endif // D_STR_RIGHT
    +
    316 #ifndef D_STR_MAXRIGHT
    +
    317 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
    +
    318 #endif // D_STR_MAXRIGHT
    +
    319 #ifndef D_STR_RIGHTMAX_NOSPACE
    +
    320 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
    +
    321 #endif // D_STR_RIGHTMAX_NOSPACE
    +
    322 #ifndef D_STR_LEFT
    +
    323 #define D_STR_LEFT "左"
    +
    324 #endif // D_STR_LEFT
    +
    325 #ifndef D_STR_MAXLEFT
    +
    326 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
    +
    327 #endif // D_STR_MAXLEFT
    +
    328 #ifndef D_STR_LEFTMAX_NOSPACE
    +
    329 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
    +
    330 #endif // D_STR_LEFTMAX_NOSPACE
    +
    331 #ifndef D_STR_WIDE
    +
    332 #define D_STR_WIDE "扫风"
    +
    333 #endif // D_STR_WIDE
    +
    334 #ifndef D_STR_CENTRE
    +
    335 #define D_STR_CENTRE "中间"
    +
    336 #endif // D_STR_CENTRE
    +
    337 #ifndef D_STR_TOP
    +
    338 #define D_STR_TOP "上部"
    +
    339 #endif // D_STR_TOP
    +
    340 #ifndef D_STR_BOTTOM
    +
    341 #define D_STR_BOTTOM "底部"
    +
    342 #endif // D_STR_BOTTOM
    +
    343 
    +
    344 // Compound words/phrases/descriptions from pre-defined words.
    +
    345 // Note: Obviously these need to be defined *after* their component words.
    +
    346 #ifndef D_STR_EYEAUTO
    +
    347 #define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
    +
    348 #endif // D_STR_EYEAUTO
    +
    349 #ifndef D_STR_LIGHTTOGGLE
    +
    350 #define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
    +
    351 #endif // D_STR_LIGHTTOGGLE
    +
    352 #ifndef D_STR_OUTSIDEQUIET
    +
    353 #define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
    +
    354 #endif // D_STR_OUTSIDEQUIET
    +
    355 #ifndef D_STR_POWERTOGGLE
    +
    356 #define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
    +
    357 #endif // D_STR_POWERTOGGLE
    +
    358 #ifndef D_STR_PREVIOUSPOWER
    +
    359 #define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER
    +
    360 #endif // D_STR_PREVIOUSPOWER
    +
    361 #ifndef D_STR_SENSORTEMP
    +
    362 #define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
    +
    363 #endif // D_STR_SENSORTEMP
    +
    364 #ifndef D_STR_SLEEP_TIMER
    +
    365 #define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
    +
    366 #endif // D_STR_SLEEP_TIMER
    +
    367 #ifndef D_STR_SWINGVMODE
    +
    368 #define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
    +
    369 #endif // D_STR_SWINGVMODE
    +
    370 #ifndef D_STR_SWINGVTOGGLE
    +
    371 #define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
    +
    372 #endif // D_STR_SWINGVTOGGLE
    +
    373 
    +
    374 // Separators
    +
    375 #ifndef D_CHR_TIME_SEP
    +
    376 #define D_CHR_TIME_SEP ':'
    +
    377 #endif // D_CHR_TIME_SEP
    +
    378 #ifndef D_STR_SPACELBRACE
    +
    379 #define D_STR_SPACELBRACE " ("
    +
    380 #endif // D_STR_SPACELBRACE
    +
    381 #ifndef D_STR_COMMASPACE
    +
    382 #define D_STR_COMMASPACE ", "
    +
    383 #endif // D_STR_COMMASPACE
    +
    384 #ifndef D_STR_COLONSPACE
    +
    385 #define D_STR_COLONSPACE ": "
    +
    386 #endif // D_STR_COLONSPACE
    +
    387 
    +
    388 #ifndef D_STR_DAY
    +
    389 #define D_STR_DAY "天"
    +
    390 #endif // D_STR_DAY
    +
    391 #ifndef D_STR_DAYS
    +
    392 #define D_STR_DAYS D_STR_DAY "s"
    +
    393 #endif // D_STR_DAYS
    +
    394 #ifndef D_STR_HOUR
    +
    395 #define D_STR_HOUR "时"
    +
    396 #endif // D_STR_HOUR
    +
    397 #ifndef D_STR_HOURS
    +
    398 #define D_STR_HOURS D_STR_HOUR "s"
    +
    399 #endif // D_STR_HOURS
    +
    400 #ifndef D_STR_MINUTE
    +
    401 #define D_STR_MINUTE "分"
    +
    402 #endif // D_STR_MINUTE
    +
    403 #ifndef D_STR_MINUTES
    +
    404 #define D_STR_MINUTES D_STR_MINUTE "s"
    +
    405 #endif // D_STR_MINUTES
    +
    406 #ifndef D_STR_SECOND
    +
    407 #define D_STR_SECOND "秒"
    +
    408 #endif // D_STR_SECOND
    +
    409 #ifndef D_STR_SECONDS
    +
    410 #define D_STR_SECONDS D_STR_SECOND "s"
    +
    411 #endif // D_STR_SECONDS
    +
    412 #ifndef D_STR_NOW
    +
    413 #define D_STR_NOW "现在"
    +
    414 #endif // D_STR_NOW
    +
    415 /* This is not three letter days. Disabled.
    +
    416 #ifndef D_STR_THREELETTERDAYS
    +
    417 #define D_STR_THREELETTERDAYS "周一至周末"
    +
    418 #endif // D_STR_THREELETTERDAYS
    +
    419 */
    +
    420 
    +
    421 #ifndef D_STR_YES
    +
    422 #define D_STR_YES "是"
    +
    423 #endif // D_STR_YES
    +
    424 #ifndef D_STR_NO
    +
    425 #define D_STR_NO "否"
    +
    426 #endif // D_STR_NO
    +
    427 #ifndef D_STR_TRUE
    +
    428 #define D_STR_TRUE "正确"
    +
    429 #endif // D_STR_TRUE
    +
    430 #ifndef D_STR_FALSE
    +
    431 #define D_STR_FALSE "错误"
    +
    432 #endif // D_STR_FALSE
    +
    433 
    +
    434 #ifndef D_STR_REPEAT
    +
    435 #define D_STR_REPEAT "重复"
    +
    436 #endif // D_STR_REPEAT
    +
    437 #ifndef D_STR_CODE
    +
    438 #define D_STR_CODE "代码"
    +
    439 #endif // D_STR_CODE
    +
    440 #ifndef D_STR_BITS
    +
    441 #define D_STR_BITS "位"
    +
    442 #endif // D_STR_BITS
    +
    443 
    +
    444 // IRrecvDumpV2+
    +
    445 #ifndef D_STR_TIMESTAMP
    +
    446 #define D_STR_TIMESTAMP "时间戳记"
    +
    447 #endif // D_STR_TIMESTAMP
    +
    448 #ifndef D_STR_LIBRARY
    +
    449 #define D_STR_LIBRARY "库文件"
    +
    450 #endif // D_STR_LIBRARY
    +
    451 #ifndef D_STR_MESGDESC
    +
    452 #define D_STR_MESGDESC "等等信息"
    +
    453 #endif // D_STR_MESGDESC
    +
    454 #ifndef D_STR_IRRECVDUMP_STARTUP
    +
    455 #define D_STR_IRRECVDUMP_STARTUP \
    +
    456  "IRrecvDump 运行当中,等待红外信息输入位于引脚 %d"
    +
    457 #endif // D_STR_IRRECVDUMP_STARTUP
    +
    458 #ifndef D_WARN_BUFFERFULL
    +
    459 #define D_WARN_BUFFERFULL \
    +
    460  "警告: 红外编码数组过大(>= %d). " \
    +
    461  "在解决此问题之前,不应信任此结果. " \
    +
    462  "编辑并增加 `kCaptureBufferSize` 变量."
    +
    463 #endif // D_WARN_BUFFERFULL
    +
    464 
    +
    465 #endif // LOCALE_ZH_CN_H_
    +
    + + + + diff --git a/lib/IRremoteESP8266-2.7.8/docs/doxygen_index.md b/lib/IRremoteESP8266-2.7.8/docs/doxygen_index.md new file mode 100644 index 000000000..95607645e --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/docs/doxygen_index.md @@ -0,0 +1,60 @@ +# IRremoteESP8266 Library API Documentation {#mainpage} + +## Getting Started + +### The basics +For sending messages, look at the IRsend class. + +For receiving messages, look at the IRrecv & decode_results classes. + +### Air Conditioners +For _generic_ Air Conditioner control, look at the IRac class & the +stdAc::state_t structure. + +For _detailed_ Air Conditioner control, you need to determine what protocol the +library detects your remote/Air Conditioner to be, look into the appropriate +`src/ir_Protocol.[h|cpp]` files and use the appropriate class object. +e.g. if `IRrecvDumpV2` (or better) detects the protocol as `KELVINATOR`, +open the `src/ir_Kelvinator.*` files, and examine the IRKelvinatorAC class the +methods available to create/decode/send `KELVINATOR` messages with all the +abilities the library offers. You can also select it from the +[Classes](annotated.html) menu above. + +Various native constants & options for a given Protocol's class object can be +found in the associated header file for that protocol. + +## Examples +Most of the common uses of this library's APIs have demonstration code +available under the [examples](https://github.com/crankyoldgit/IRremoteESP8266/tree/master/examples) +directory. It ranges from trivial examples to complex real-world project code. + +## Tuning +The most commonly used & needed knobs for controlling aspects of this library +are available via run-time class methods or at class-object instantiation. +Again, you are referred to the IRsend & IRrecv classes. + +### Advanced +Certain addition constants and options are available as compile-time tweaks. +You should inspect [IRremoteESP8266.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRremoteESP8266.h), +[IRsend.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRsend.h), +& [IRrecv.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRrecv.h) +for General, Sending, & Receiving tweaks respectively. + +#### Protocol timings +Generally you should never need to adjust the timing parameters for a given +protocol or device. However, occasionally some individual devices just want to +be special. +If you are having problems decoding/receiving a message, look into the +`tolerance`, `kTolerance`, or IRrecv::setTolerance constants/methods etc first. +However, if your problems is sending, or adjusting the tolerance doesn't work +you may need to tweak per-protocol timing values. These are stored as +constants in the `ir_ProtocolName.cpp` file for the given protocol. This is +typically a step of last resort. + +#### Reducing code size & flash usage. +You can disable most protocols by either modifying the appropriate `#‍define`s +in [IRremoteESP8266.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRremoteESP8266.h) +or passing the appropriate compile-time flags, as documented in the same file. + +Avoid using the A/C classes, especially the IRac class as they will force the +compiler to include large amounts of code you may not need. diff --git a/lib/IRremoteESP8266-2.7.7/examples/BlynkIrRemote/BlynkIrRemote.ino b/lib/IRremoteESP8266-2.7.8/examples/BlynkIrRemote/BlynkIrRemote.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/BlynkIrRemote/BlynkIrRemote.ino rename to lib/IRremoteESP8266-2.7.8/examples/BlynkIrRemote/BlynkIrRemote.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/BlynkIrRemote/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/BlynkIrRemote/platformio.ini similarity index 96% rename from lib/IRremoteESP8266-2.7.7/examples/BlynkIrRemote/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/BlynkIrRemote/platformio.ini index 58f6b0f30..c89beccfa 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/BlynkIrRemote/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/BlynkIrRemote/platformio.ini @@ -7,6 +7,7 @@ lib_ldf_mode = deep+ lib_ignore = examples framework = arduino platform = espressif8266 +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [common] diff --git a/lib/IRremoteESP8266-2.7.7/examples/CommonAcControl/CommonAcControl.ino b/lib/IRremoteESP8266-2.7.8/examples/CommonAcControl/CommonAcControl.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/CommonAcControl/CommonAcControl.ino rename to lib/IRremoteESP8266-2.7.8/examples/CommonAcControl/CommonAcControl.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/CommonAcControl/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/CommonAcControl/platformio.ini new file mode 100644 index 000000000..b71195045 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/CommonAcControl/platformio.ini @@ -0,0 +1,26 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev + +; Build the program forcing the compiler to treat all warnings as errors. +[env:shakedown_all_protocols] +platform = espressif8266 +board = nodemcuv2 +build_flags = + ${env.build_flags} + -Werror diff --git a/lib/IRremoteESP8266-2.7.7/examples/ControlSamsungAC/ControlSamsungAC.ino b/lib/IRremoteESP8266-2.7.8/examples/ControlSamsungAC/ControlSamsungAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/ControlSamsungAC/ControlSamsungAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/ControlSamsungAC/ControlSamsungAC.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRGCSendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/ControlSamsungAC/platformio.ini similarity index 92% rename from lib/IRremoteESP8266-2.7.7/examples/IRGCSendDemo/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/ControlSamsungAC/platformio.ini index e6f6320da..6bda1bb71 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/IRGCSendDemo/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/ControlSamsungAC/platformio.ini @@ -6,6 +6,7 @@ lib_extra_dirs = ../../ lib_ldf_mode = deep+ lib_ignore = examples framework = arduino +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [env:nodemcuv2] diff --git a/lib/IRremoteESP8266-2.7.7/examples/DumbIRRepeater/DumbIRRepeater.ino b/lib/IRremoteESP8266-2.7.8/examples/DumbIRRepeater/DumbIRRepeater.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/DumbIRRepeater/DumbIRRepeater.ino rename to lib/IRremoteESP8266-2.7.8/examples/DumbIRRepeater/DumbIRRepeater.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/CommonAcControl/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/DumbIRRepeater/platformio.ini similarity index 92% rename from lib/IRremoteESP8266-2.7.7/examples/CommonAcControl/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/DumbIRRepeater/platformio.ini index e6f6320da..6bda1bb71 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/CommonAcControl/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/DumbIRRepeater/platformio.ini @@ -6,6 +6,7 @@ lib_extra_dirs = ../../ lib_ldf_mode = deep+ lib_ignore = examples framework = arduino +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [env:nodemcuv2] diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRGCSendDemo/IRGCSendDemo.ino b/lib/IRremoteESP8266-2.7.8/examples/IRGCSendDemo/IRGCSendDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRGCSendDemo/IRGCSendDemo.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRGCSendDemo/IRGCSendDemo.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/ControlSamsungAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRGCSendDemo/platformio.ini similarity index 92% rename from lib/IRremoteESP8266-2.7.7/examples/ControlSamsungAC/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/IRGCSendDemo/platformio.ini index e6f6320da..6bda1bb71 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/ControlSamsungAC/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/IRGCSendDemo/platformio.ini @@ -6,6 +6,7 @@ lib_extra_dirs = ../../ lib_ldf_mode = deep+ lib_ignore = examples framework = arduino +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [env:nodemcuv2] diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRGCTCPServer/IRGCTCPServer.ino b/lib/IRremoteESP8266-2.7.8/examples/IRGCTCPServer/IRGCTCPServer.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRGCTCPServer/IRGCTCPServer.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRGCTCPServer/IRGCTCPServer.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/DumbIRRepeater/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRGCTCPServer/platformio.ini similarity index 92% rename from lib/IRremoteESP8266-2.7.7/examples/DumbIRRepeater/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/IRGCTCPServer/platformio.ini index e6f6320da..6bda1bb71 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/DumbIRRepeater/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/IRGCTCPServer/platformio.ini @@ -6,6 +6,7 @@ lib_extra_dirs = ../../ lib_ldf_mode = deep+ lib_ignore = examples framework = arduino +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [env:nodemcuv2] diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRMQTTServer/IRMQTTServer.h b/lib/IRremoteESP8266-2.7.8/examples/IRMQTTServer/IRMQTTServer.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRMQTTServer/IRMQTTServer.h rename to lib/IRremoteESP8266-2.7.8/examples/IRMQTTServer/IRMQTTServer.h diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRMQTTServer/IRMQTTServer.ino b/lib/IRremoteESP8266-2.7.8/examples/IRMQTTServer/IRMQTTServer.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRMQTTServer/IRMQTTServer.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRMQTTServer/IRMQTTServer.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRMQTTServer/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRMQTTServer/platformio.ini similarity index 97% rename from lib/IRremoteESP8266-2.7.7/examples/IRMQTTServer/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/IRMQTTServer/platformio.ini index 1a22b09af..7920c930e 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/IRMQTTServer/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/IRMQTTServer/platformio.ini @@ -8,6 +8,7 @@ lib_ignore = examples build_flags = -DMQTT_MAX_PACKET_SIZE=768 ; -D_IR_LOCALE_=en-AU framework = arduino platform = espressif8266 +monitor_speed = 115200 [common] lib_deps_builtin = diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRServer/IRServer.ino b/lib/IRremoteESP8266-2.7.8/examples/IRServer/IRServer.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRServer/IRServer.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRServer/IRServer.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/IRServer/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRServer/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/IRServer/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDemo/IRrecvDemo.ino b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDemo/IRrecvDemo.ino similarity index 95% rename from lib/IRremoteESP8266-2.7.7/examples/IRrecvDemo/IRrecvDemo.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRrecvDemo/IRrecvDemo.ino index 945f94055..2ae2e1410 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDemo/IRrecvDemo.ino +++ b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDemo/IRrecvDemo.ino @@ -2,7 +2,7 @@ * IRremoteESP8266: IRrecvDemo - demonstrates receiving IR codes with IRrecv * This is very simple teaching code to show you how to use the library. * If you are trying to decode your Infra-Red remote(s) for later replay, - * use the IRrecvDumpV2.ino example code instead of this. + * use the IRrecvDumpV2.ino (or later) example code instead of this. * An IR detector/demodulator must be connected to the input kRecvPin. * Copyright 2009 Ken Shirriff, http://arcfn.com * Example circuit diagram: diff --git a/lib/IRremoteESP8266-2.7.8/examples/IRrecvDemo/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDemo/platformio.ini new file mode 100644 index 000000000..7130e886a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDemo/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +build_flags = ; -D_IR_LOCALE_=en-AU +monitor_speed = 115200 + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDump/IRrecvDump.ino b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDump/IRrecvDump.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRrecvDump/IRrecvDump.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRrecvDump/IRrecvDump.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/IRrecvDump/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDump/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDump/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV2/IRrecvDumpV2.ino b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV2/IRrecvDumpV2.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV2/IRrecvDumpV2.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV2/IRrecvDumpV2.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV3/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV2/platformio.ini similarity index 81% rename from lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV3/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV2/platformio.ini index 62fa06d3a..fb04eb4b1 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV3/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV2/platformio.ini @@ -10,6 +10,7 @@ framework = arduino lib_extra_dirs = ../../ lib_ldf_mode = deep+ lib_ignore = examples +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [env:nodemcuv2] @@ -50,3 +51,8 @@ build_flags = -D_IR_LOCALE_=it-IT ; Italian [env:zh-CN] build_flags = -D_IR_LOCALE_=zh-CN ; Chinese (Simplified) + +; Build the library with all protocols disabled to flush out #if/#ifdef issues & +; any compiler warnings, by turning them into errors. +[env:shakedown_no_protocols] +build_flags = -D_IR_ENABLE_DEFAULT_=false -Werror diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV3/BaseOTA.h b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV3/BaseOTA.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV3/BaseOTA.h rename to lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV3/BaseOTA.h diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV3/IRrecvDumpV3.ino b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV3/IRrecvDumpV3.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV3/IRrecvDumpV3.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV3/IRrecvDumpV3.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV2/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV3/platformio.ini similarity index 97% rename from lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV2/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV3/platformio.ini index 62fa06d3a..95a90ac86 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/IRrecvDumpV2/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/IRrecvDumpV3/platformio.ini @@ -10,6 +10,7 @@ framework = arduino lib_extra_dirs = ../../ lib_ldf_mode = deep+ lib_ignore = examples +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [env:nodemcuv2] diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRsendDemo/IRsendDemo.ino b/lib/IRremoteESP8266-2.7.8/examples/IRsendDemo/IRsendDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRsendDemo/IRsendDemo.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRsendDemo/IRsendDemo.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/IRsendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRsendDemo/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/IRsendDemo/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/IRsendProntoDemo/IRsendProntoDemo.ino b/lib/IRremoteESP8266-2.7.8/examples/IRsendProntoDemo/IRsendProntoDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/IRsendProntoDemo/IRsendProntoDemo.ino rename to lib/IRremoteESP8266-2.7.8/examples/IRsendProntoDemo/IRsendProntoDemo.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/IRsendProntoDemo/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/IRsendProntoDemo/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/IRsendProntoDemo/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino b/lib/IRremoteESP8266-2.7.8/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino rename to lib/IRremoteESP8266-2.7.8/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/JVCPanasonicSendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/JVCPanasonicSendDemo/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/JVCPanasonicSendDemo/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/LGACSend/LGACSend.ino b/lib/IRremoteESP8266-2.7.8/examples/LGACSend/LGACSend.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/LGACSend/LGACSend.ino rename to lib/IRremoteESP8266-2.7.8/examples/LGACSend/LGACSend.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/LGACSend/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/LGACSend/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/LGACSend/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/SmartIRRepeater/SmartIRRepeater.ino b/lib/IRremoteESP8266-2.7.8/examples/SmartIRRepeater/SmartIRRepeater.ino similarity index 99% rename from lib/IRremoteESP8266-2.7.7/examples/SmartIRRepeater/SmartIRRepeater.ino rename to lib/IRremoteESP8266-2.7.8/examples/SmartIRRepeater/SmartIRRepeater.ino index 576abb516..d35c4cef6 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/SmartIRRepeater/SmartIRRepeater.ino +++ b/lib/IRremoteESP8266-2.7.8/examples/SmartIRRepeater/SmartIRRepeater.ino @@ -121,8 +121,10 @@ void loop() { uint16_t *raw_array = resultToRawArray(&results); // Find out how many elements are in the array. size = getCorrectedRawLength(&results); +#if SEND_RAW // Send it out via the IR LED circuit. irsend.sendRaw(raw_array, size, kFrequency); +#endif // SEND_RAW // Deallocate the memory allocated by resultToRawArray(). delete [] raw_array; } else if (hasACState(protocol)) { // Does the message require a state[]? diff --git a/lib/IRremoteESP8266-2.7.8/examples/SmartIRRepeater/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/SmartIRRepeater/platformio.ini new file mode 100644 index 000000000..0e8f173f7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/SmartIRRepeater/platformio.ini @@ -0,0 +1,36 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev + +; Build the program forcing the compiler to treat all warnings as errors. +[env:shakedown_all_protocols] +platform = espressif8266 +board = nodemcuv2 +build_flags = + ${env.build_flags} + -Werror + +; Disable all protocols to see if we can force any errors. +; Build the program forcing the compiler to treat all warnings as errors. +[env:shakedown_no_protocols] +platform = espressif8266 +board = nodemcuv2 +build_flags = + ${env.build_flags} + -Werror + -D_IR_ENABLE_DEFAULT_=false diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnArgoAC/TurnOnArgoAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnArgoAC/TurnOnArgoAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnArgoAC/TurnOnArgoAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnArgoAC/TurnOnArgoAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnArgoAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnArgoAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnArgoAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnDaikinAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnDaikinAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnDaikinAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnFujitsuAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnFujitsuAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnFujitsuAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnGreeAC/TurnOnGreeAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnGreeAC/TurnOnGreeAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnGreeAC/TurnOnGreeAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnGreeAC/TurnOnGreeAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnGreeAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnGreeAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnGreeAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnKelvinatorAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnKelvinatorAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnKelvinatorAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiHeavyAc/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiHeavyAc/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnMitsubishiHeavyAc/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnPanasonicAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnPanasonicAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnPanasonicAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnToshibaAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnToshibaAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnToshibaAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino b/lib/IRremoteESP8266-2.7.8/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino rename to lib/IRremoteESP8266-2.7.8/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino diff --git a/lib/IRremoteESP8266-2.7.8/examples/TurnOnTrotecAC/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/TurnOnTrotecAC/platformio.ini new file mode 100644 index 000000000..6bda1bb71 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/examples/TurnOnTrotecAC/platformio.ini @@ -0,0 +1,18 @@ +[platformio] +src_dir = . + +[env] +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +monitor_speed = 115200 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/README.md b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/README.md similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/README.md rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/README.md diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/Web-AC-control.ino b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/Web-AC-control.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/Web-AC-control.ino rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/Web-AC-control.ino diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/platformio.ini b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/platformio.ini similarity index 96% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/platformio.ini rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/platformio.ini index 731442831..19ff9c277 100644 --- a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/platformio.ini @@ -6,6 +6,7 @@ lib_extra_dirs = ../../ lib_ldf_mode = deep+ lib_ignore = examples framework = arduino +monitor_speed = 115200 build_flags = ; -D_IR_LOCALE_=en-AU [common] diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/printscreen.png b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/printscreen.png similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/printscreen.png rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/printscreen.png diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/favicon.ico b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/favicon.ico similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/favicon.ico rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/favicon.ico diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_1_off.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_1_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_1_off.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_1_off.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_1_on.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_1_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_1_on.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_1_on.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_2_off.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_2_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_2_off.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_2_off.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_2_on.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_2_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_2_on.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_2_on.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_3_off.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_3_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_3_off.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_3_off.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_3_on.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_3_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_3_on.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_3_on.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_4_off.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_4_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_4_off.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_4_off.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_4_on.svg b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_4_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/level_4_on.svg rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/level_4_on.svg diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/ui.html b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/ui.html similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/ui.html rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/ui.html diff --git a/lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/ui.js b/lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/ui.js similarity index 100% rename from lib/IRremoteESP8266-2.7.7/examples/Web-AC-control/upload/ui.js rename to lib/IRremoteESP8266-2.7.8/examples/Web-AC-control/upload/ui.js diff --git a/lib/IRremoteESP8266-2.7.7/keywords.txt b/lib/IRremoteESP8266-2.7.8/keywords.txt similarity index 95% rename from lib/IRremoteESP8266-2.7.7/keywords.txt rename to lib/IRremoteESP8266-2.7.8/keywords.txt index 907cba220..c05482770 100644 --- a/lib/IRremoteESP8266-2.7.7/keywords.txt +++ b/lib/IRremoteESP8266-2.7.8/keywords.txt @@ -22,7 +22,9 @@ IRAmcorAc KEYWORD1 IRArgoAC KEYWORD1 +IRCarrierAc64 KEYWORD1 IRCoolixAC KEYWORD1 +IRCoronaAc KEYWORD1 IRDaikin128 KEYWORD1 IRDaikin152 KEYWORD1 IRDaikin160 KEYWORD1 @@ -41,6 +43,7 @@ IRHaierACYRW02 KEYWORD1 IRHitachiAc KEYWORD1 IRHitachiAc1 KEYWORD1 IRHitachiAc3 KEYWORD1 +IRHitachiAc344: KEYWORD1 IRHitachiAc424 KEYWORD1 IRKelvinatorAC KEYWORD1 IRLgAc KEYWORD1 @@ -85,15 +88,19 @@ whirlpool_ac_remote_model_t KEYWORD1 # Methods and Functions (KEYWORD2) ####################################### +_cancelOffTimer KEYWORD2 +_cancelOnTimer KEYWORD2 _delayMicroseconds KEYWORD2 _getTime KEYWORD2 _getTimer KEYWORD2 _matchGeneric KEYWORD2 _sendSony KEYWORD2 _setMode KEYWORD2 +_setPower KEYWORD2 _setTemp KEYWORD2 _setTime KEYWORD2 _setTimer KEYWORD2 +_toString KEYWORD2 _validTolerance KEYWORD2 add KEYWORD2 addBoolToString KEYWORD2 @@ -114,7 +121,6 @@ buildState KEYWORD2 calcBlockChecksum KEYWORD2 calcChecksum KEYWORD2 calcFirstChecksum KEYWORD2 -calcLGChecksum KEYWORD2 calcSecondChecksum KEYWORD2 calcUSecPeriod KEYWORD2 calculateChecksum KEYWORD2 @@ -122,6 +128,7 @@ calibrate KEYWORD2 cancelOffTimer KEYWORD2 cancelOnTimer KEYWORD2 cancelTimers KEYWORD2 +carrier64 KEYWORD2 celsiusToFahrenheit KEYWORD2 checkZjsSig KEYWORD2 checkZmsSig KEYWORD2 @@ -138,6 +145,7 @@ convertSwingH KEYWORD2 convertSwingV KEYWORD2 coolix KEYWORD2 copyIrParams KEYWORD2 +corona KEYWORD2 countBits KEYWORD2 crudeNoiseFilter KEYWORD2 daikin KEYWORD2 @@ -157,6 +165,7 @@ decodeCOOLIX KEYWORD2 decodeCarrierAC KEYWORD2 decodeCarrierAC40 KEYWORD2 decodeCarrierAC64 KEYWORD2 +decodeCoronaAc KEYWORD2 decodeDISH KEYWORD2 decodeDaikin KEYWORD2 decodeDaikin128 KEYWORD2 @@ -191,6 +200,7 @@ decodeLutron KEYWORD2 decodeMWM KEYWORD2 decodeMagiQuest KEYWORD2 decodeMidea KEYWORD2 +decodeMidea24 KEYWORD2 decodeMitsubishi KEYWORD2 decodeMitsubishi112 KEYWORD2 decodeMitsubishi136 KEYWORD2 @@ -223,6 +233,7 @@ decodeTrotec KEYWORD2 decodeVestelAc KEYWORD2 decodeWhirlpoolAC KEYWORD2 decodeWhynter KEYWORD2 +decodeZepeal KEYWORD2 defaultBits KEYWORD2 delonghiac KEYWORD2 disableIRIn KEYWORD2 @@ -311,6 +322,7 @@ getOnTimer KEYWORD2 getOnTimerEnabled KEYWORD2 getOutsideQuiet KEYWORD2 getPower KEYWORD2 +getPowerButton KEYWORD2 getPowerSpecial KEYWORD2 getPowerToggle KEYWORD2 getPowerful KEYWORD2 @@ -320,6 +332,7 @@ getRClevel KEYWORD2 getRaw KEYWORD2 getRoomTemp KEYWORD2 getSave KEYWORD2 +getSectionByte KEYWORD2 getSensor KEYWORD2 getSensorTemp KEYWORD2 getSilent KEYWORD2 @@ -371,6 +384,7 @@ hasInvertedStates KEYWORD2 hasStateChanged KEYWORD2 hitachi KEYWORD2 hitachi1 KEYWORD2 +hitachi344 KEYWORD2 hitachi424 KEYWORD2 htmlEscape KEYWORD2 initState KEYWORD2 @@ -400,6 +414,7 @@ matchData KEYWORD2 matchGeneric KEYWORD2 matchGenericConstBitTime KEYWORD2 matchManchester KEYWORD2 +matchManchesterData KEYWORD2 matchMark KEYWORD2 matchSpace KEYWORD2 midea KEYWORD2 @@ -438,6 +453,7 @@ sendCOOLIX KEYWORD2 sendCarrierAC KEYWORD2 sendCarrierAC40 KEYWORD2 sendCarrierAC64 KEYWORD2 +sendCoronaAc KEYWORD2 sendDISH KEYWORD2 sendDaikin KEYWORD2 sendDaikin128 KEYWORD2 @@ -466,6 +482,7 @@ sendHitachiAC KEYWORD2 sendHitachiAC1 KEYWORD2 sendHitachiAC2 KEYWORD2 sendHitachiAc3 KEYWORD2 +sendHitachiAc344 KEYWORD2 sendHitachiAc424 KEYWORD2 sendInax KEYWORD2 sendJVC KEYWORD2 @@ -480,6 +497,7 @@ sendMagiQuest KEYWORD2 sendManchester KEYWORD2 sendManchesterData KEYWORD2 sendMidea KEYWORD2 +sendMidea24 KEYWORD2 sendMitsubishi KEYWORD2 sendMitsubishi112 KEYWORD2 sendMitsubishi136 KEYWORD2 @@ -520,6 +538,7 @@ sendTrotec KEYWORD2 sendVestelAc KEYWORD2 sendWhirlpoolAC KEYWORD2 sendWhynter KEYWORD2 +sendZepeal KEYWORD2 serialPrintUint64 KEYWORD2 set3D KEYWORD2 set8CHeat KEYWORD2 @@ -579,6 +598,7 @@ setOnTimerActive KEYWORD2 setOnTimerEnabled KEYWORD2 setOutsideQuiet KEYWORD2 setPower KEYWORD2 +setPowerButton KEYWORD2 setPowerSpecial KEYWORD2 setPowerToggle KEYWORD2 setPowerful KEYWORD2 @@ -651,6 +671,7 @@ uint64ToString KEYWORD2 uint8ToBcd KEYWORD2 updateSavedState KEYWORD2 validChecksum KEYWORD2 +validSection KEYWORD2 vestel KEYWORD2 whirlpool KEYWORD2 xorBytes KEYWORD2 @@ -701,6 +722,7 @@ CARRIER_AC64 LITERAL1 CARRIER_AC_BITS LITERAL1 COOLIX LITERAL1 COOLIX_BITS LITERAL1 +CORONA_AC LITERAL1 DAIKIN LITERAL1 DAIKIN128 LITERAL1 DAIKIN152 LITERAL1 @@ -730,6 +752,7 @@ DECODE_CARRIER_AC LITERAL1 DECODE_CARRIER_AC40 LITERAL1 DECODE_CARRIER_AC64 LITERAL1 DECODE_COOLIX LITERAL1 +DECODE_CORONA_AC LITERAL1 DECODE_DAIKIN LITERAL1 DECODE_DAIKIN128 LITERAL1 DECODE_DAIKIN152 LITERAL1 @@ -756,6 +779,7 @@ DECODE_HITACHI_AC LITERAL1 DECODE_HITACHI_AC1 LITERAL1 DECODE_HITACHI_AC2 LITERAL1 DECODE_HITACHI_AC3 LITERAL1 +DECODE_HITACHI_AC344 LITERAL1 DECODE_HITACHI_AC424 LITERAL1 DECODE_INAX LITERAL1 DECODE_JVC LITERAL1 @@ -766,6 +790,7 @@ DECODE_LG LITERAL1 DECODE_LUTRON LITERAL1 DECODE_MAGIQUEST LITERAL1 DECODE_MIDEA LITERAL1 +DECODE_MIDEA24 LITERAL1 DECODE_MITSUBISHI LITERAL1 DECODE_MITSUBISHI112 LITERAL1 DECODE_MITSUBISHI136 LITERAL1 @@ -800,6 +825,7 @@ DECODE_TROTEC LITERAL1 DECODE_VESTEL_AC LITERAL1 DECODE_WHIRLPOOL_AC LITERAL1 DECODE_WHYNTER LITERAL1 +DECODE_ZEPEAL LITERAL1 DELONGHI_AC LITERAL1 DENON LITERAL1 DENON_48_BITS LITERAL1 @@ -932,6 +958,7 @@ HITACHI_AC2 LITERAL1 HITACHI_AC2_BITS LITERAL1 HITACHI_AC2_STATE_LENGTH LITERAL1 HITACHI_AC3 LITERAL1 +HITACHI_AC344 LITERAL1 HITACHI_AC424 LITERAL1 HITACHI_AC_BITS LITERAL1 HITACHI_AC_STATE_LENGTH LITERAL1 @@ -964,6 +991,7 @@ LUTRON LITERAL1 MAGIQUEST LITERAL1 MAGIQUEST_BITS LITERAL1 MIDEA LITERAL1 +MIDEA24 LITERAL1 MIDEA_AC_AUTO LITERAL1 MIDEA_AC_COOL LITERAL1 MIDEA_AC_DRY LITERAL1 @@ -1046,6 +1074,7 @@ SEND_CARRIER_AC LITERAL1 SEND_CARRIER_AC40 LITERAL1 SEND_CARRIER_AC64 LITERAL1 SEND_COOLIX LITERAL1 +SEND_CORONA_AC LITERAL1 SEND_DAIKIN LITERAL1 SEND_DAIKIN128 LITERAL1 SEND_DAIKIN152 LITERAL1 @@ -1071,6 +1100,7 @@ SEND_HITACHI_AC LITERAL1 SEND_HITACHI_AC1 LITERAL1 SEND_HITACHI_AC2 LITERAL1 SEND_HITACHI_AC3 LITERAL1 +SEND_HITACHI_AC344 LITERAL1 SEND_HITACHI_AC424 LITERAL1 SEND_INAX LITERAL1 SEND_JVC LITERAL1 @@ -1081,6 +1111,7 @@ SEND_LG LITERAL1 SEND_LUTRON LITERAL1 SEND_MAGIQUEST LITERAL1 SEND_MIDEA LITERAL1 +SEND_MIDEA24 LITERAL1 SEND_MITSUBISHI LITERAL1 SEND_MITSUBISHI112 LITERAL1 SEND_MITSUBISHI136 LITERAL1 @@ -1116,6 +1147,7 @@ SEND_TROTEC LITERAL1 SEND_VESTEL_AC LITERAL1 SEND_WHIRLPOOL_AC LITERAL1 SEND_WHYNTER LITERAL1 +SEND_ZEPEAL LITERAL1 SHARP LITERAL1 SHARP_AC LITERAL1 SHARP_BITS LITERAL1 @@ -1162,6 +1194,7 @@ WHYNTER LITERAL1 WHYNTER_BITS LITERAL1 YAW1F LITERAL1 YBOFB LITERAL1 +ZEPEAL LITERAL1 k3DStr LITERAL1 k6thSenseStr LITERAL1 k8CHeatStr LITERAL1 @@ -1299,6 +1332,7 @@ kButtonStr LITERAL1 kCancelStr LITERAL1 kCarrierAc40BitMark LITERAL1 kCarrierAc40Bits LITERAL1 +kCarrierAc40Gap LITERAL1 kCarrierAc40HdrMark LITERAL1 kCarrierAc40HdrSpace LITERAL1 kCarrierAc40MinRepeat LITERAL1 @@ -1306,11 +1340,38 @@ kCarrierAc40OneSpace LITERAL1 kCarrierAc40ZeroSpace LITERAL1 kCarrierAc64BitMark LITERAL1 kCarrierAc64Bits LITERAL1 +kCarrierAc64ChecksumOffset LITERAL1 +kCarrierAc64ChecksumSize LITERAL1 +kCarrierAc64Cool LITERAL1 +kCarrierAc64Fan LITERAL1 +kCarrierAc64FanAuto LITERAL1 +kCarrierAc64FanHigh LITERAL1 +kCarrierAc64FanLow LITERAL1 +kCarrierAc64FanMedium LITERAL1 +kCarrierAc64FanOffset LITERAL1 +kCarrierAc64FanSize LITERAL1 kCarrierAc64Gap LITERAL1 kCarrierAc64HdrMark LITERAL1 kCarrierAc64HdrSpace LITERAL1 +kCarrierAc64Heat LITERAL1 +kCarrierAc64MaxTemp LITERAL1 kCarrierAc64MinRepeat LITERAL1 +kCarrierAc64MinTemp LITERAL1 +kCarrierAc64ModeOffset LITERAL1 +kCarrierAc64ModeSize LITERAL1 +kCarrierAc64OffTimerEnableOffset LITERAL1 +kCarrierAc64OffTimerOffset LITERAL1 +kCarrierAc64OnTimerEnableOffset LITERAL1 +kCarrierAc64OnTimerOffset LITERAL1 kCarrierAc64OneSpace LITERAL1 +kCarrierAc64PowerOffset LITERAL1 +kCarrierAc64SleepOffset LITERAL1 +kCarrierAc64SwingVOffset LITERAL1 +kCarrierAc64TempOffset LITERAL1 +kCarrierAc64TempSize LITERAL1 +kCarrierAc64TimerMax LITERAL1 +kCarrierAc64TimerMin LITERAL1 +kCarrierAc64TimerSize LITERAL1 kCarrierAc64ZeroSpace LITERAL1 kCarrierAcBitMark LITERAL1 kCarrierAcBits LITERAL1 @@ -1391,6 +1452,61 @@ kCoolixUnknown LITERAL1 kCoolixZeroSpace LITERAL1 kCoolixZeroSpaceTicks LITERAL1 kCoolixZoneFollowMaskOffset LITERAL1 +kCoronaAcAutoD0 LITERAL1 +kCoronaAcAutoD1 LITERAL1 +kCoronaAcBitMark LITERAL1 +kCoronaAcBits LITERAL1 +kCoronaAcBitsShort LITERAL1 +kCoronaAcFanAuto LITERAL1 +kCoronaAcFanHigh LITERAL1 +kCoronaAcFanLow LITERAL1 +kCoronaAcFanMedium LITERAL1 +kCoronaAcFanOffset LITERAL1 +kCoronaAcFanSize LITERAL1 +kCoronaAcFreq LITERAL1 +kCoronaAcHdrMark LITERAL1 +kCoronaAcHdrSpace LITERAL1 +kCoronaAcMaxTemp LITERAL1 +kCoronaAcMinTemp LITERAL1 +kCoronaAcModeCool LITERAL1 +kCoronaAcModeDry LITERAL1 +kCoronaAcModeFan LITERAL1 +kCoronaAcModeHeat LITERAL1 +kCoronaAcModeOffset LITERAL1 +kCoronaAcModeSize LITERAL1 +kCoronaAcOffTimerSection LITERAL1 +kCoronaAcOnTimerSection LITERAL1 +kCoronaAcOneSpace LITERAL1 +kCoronaAcOverhead LITERAL1 +kCoronaAcOverheadShort LITERAL1 +kCoronaAcPowerButtonOffset LITERAL1 +kCoronaAcPowerOffset LITERAL1 +kCoronaAcPowerSaveOffset LITERAL1 +kCoronaAcSectionBytes LITERAL1 +kCoronaAcSectionData0Base LITERAL1 +kCoronaAcSectionData0InvPos LITERAL1 +kCoronaAcSectionData0Pos LITERAL1 +kCoronaAcSectionData1InvPos LITERAL1 +kCoronaAcSectionData1Pos LITERAL1 +kCoronaAcSectionHeader0 LITERAL1 +kCoronaAcSectionHeader0Pos LITERAL1 +kCoronaAcSectionHeader1 LITERAL1 +kCoronaAcSectionHeader1Pos LITERAL1 +kCoronaAcSectionLabelBase LITERAL1 +kCoronaAcSectionLabelPos LITERAL1 +kCoronaAcSections LITERAL1 +kCoronaAcSettingsSection LITERAL1 +kCoronaAcSpaceGap LITERAL1 +kCoronaAcStateLength LITERAL1 +kCoronaAcStateLengthShort LITERAL1 +kCoronaAcSwingVToggleOffset LITERAL1 +kCoronaAcTempOffset LITERAL1 +kCoronaAcTempSize LITERAL1 +kCoronaAcTimerMax LITERAL1 +kCoronaAcTimerOff LITERAL1 +kCoronaAcTimerUnitsPerMin LITERAL1 +kCoronaAcZeroSpace LITERAL1 +kCoronaTolerance LITERAL1 kDaikin128Auto LITERAL1 kDaikin128BitCeiling LITERAL1 kDaikin128BitEcono LITERAL1 @@ -1844,11 +1960,9 @@ kDishZeroSpaceTicks LITERAL1 kDisplayTempStr LITERAL1 kDoshishaBitMark LITERAL1 kDoshishaBits LITERAL1 -kDoshishaFreq LITERAL1 kDoshishaHdrMark LITERAL1 kDoshishaHdrSpace LITERAL1 kDoshishaOneSpace LITERAL1 -kDoshishaOverhead LITERAL1 kDoshishaZeroSpace LITERAL1 kDownStr LITERAL1 kDry LITERAL1 @@ -2233,6 +2347,37 @@ kHitachiAc1TempSize LITERAL1 kHitachiAc1TimerSize LITERAL1 kHitachiAc2Bits LITERAL1 kHitachiAc2StateLength LITERAL1 +kHitachiAc344Bits LITERAL1 +kHitachiAc344ButtonFan LITERAL1 +kHitachiAc344ButtonPowerMode LITERAL1 +kHitachiAc344ButtonSwingH LITERAL1 +kHitachiAc344ButtonSwingV LITERAL1 +kHitachiAc344ButtonTempDown LITERAL1 +kHitachiAc344ButtonTempUp LITERAL1 +kHitachiAc344Cool LITERAL1 +kHitachiAc344Dry LITERAL1 +kHitachiAc344Fan LITERAL1 +kHitachiAc344FanAuto LITERAL1 +kHitachiAc344FanHigh LITERAL1 +kHitachiAc344FanLow LITERAL1 +kHitachiAc344FanMax LITERAL1 +kHitachiAc344FanMedium LITERAL1 +kHitachiAc344FanMin LITERAL1 +kHitachiAc344Heat LITERAL1 +kHitachiAc344MaxTemp LITERAL1 +kHitachiAc344MinTemp LITERAL1 +kHitachiAc344StateLength LITERAL1 +kHitachiAc344SwingHAuto LITERAL1 +kHitachiAc344SwingHByte LITERAL1 +kHitachiAc344SwingHLeft LITERAL1 +kHitachiAc344SwingHLeftMax LITERAL1 +kHitachiAc344SwingHMiddle LITERAL1 +kHitachiAc344SwingHOffset LITERAL1 +kHitachiAc344SwingHRight LITERAL1 +kHitachiAc344SwingHRightMax LITERAL1 +kHitachiAc344SwingHSize LITERAL1 +kHitachiAc344SwingVByte LITERAL1 +kHitachiAc344SwingVOffset LITERAL1 kHitachiAc3BitMark LITERAL1 kHitachiAc3Bits LITERAL1 kHitachiAc3HdrMark LITERAL1 @@ -2247,6 +2392,7 @@ kHitachiAc424Bits LITERAL1 kHitachiAc424ButtonByte LITERAL1 kHitachiAc424ButtonFan LITERAL1 kHitachiAc424ButtonPowerMode LITERAL1 +kHitachiAc424ButtonSwingH LITERAL1 kHitachiAc424ButtonSwingV LITERAL1 kHitachiAc424ButtonTempDown LITERAL1 kHitachiAc424ButtonTempUp LITERAL1 @@ -2512,6 +2658,9 @@ kMediumStr LITERAL1 kMidStr LITERAL1 kMiddle LITERAL1 kMiddleStr LITERAL1 +kMidea24Bits LITERAL1 +kMidea24MinGap LITERAL1 +kMidea24MinRepeat LITERAL1 kMideaACAuto LITERAL1 kMideaACCelsiusOffset LITERAL1 kMideaACCool LITERAL1 @@ -2995,6 +3144,7 @@ kPioneerOneSpaceTicks LITERAL1 kPioneerTick LITERAL1 kPioneerZeroSpace LITERAL1 kPioneerZeroSpaceTicks LITERAL1 +kPowerButtonStr LITERAL1 kPowerStr LITERAL1 kPowerToggleStr LITERAL1 kPowerfulStr LITERAL1 @@ -3053,8 +3203,6 @@ kRcmmRptLengthTicks LITERAL1 kRcmmTick LITERAL1 kRcmmTolerance LITERAL1 kRcz01ChannelMask LITERAL1 -kRcz01CheckExpected LITERAL1 -kRcz01CheckMask LITERAL1 kRcz01CommandLevel1 LITERAL1 kRcz01CommandLevel2 LITERAL1 kRcz01CommandLevel3 LITERAL1 @@ -3068,6 +3216,8 @@ kRcz01CommandOn LITERAL1 kRcz01CommandSwitchChannel LITERAL1 kRcz01CommandTimmer30 LITERAL1 kRcz01CommandTimmer60 LITERAL1 +kRcz01Signature LITERAL1 +kRcz01SignatureMask LITERAL1 kRepeat LITERAL1 kRepeatStr LITERAL1 kRight LITERAL1 @@ -3583,4 +3733,21 @@ kWideStr LITERAL1 kWifiStr LITERAL1 kXFanStr LITERAL1 kYesStr LITERAL1 +kZepealBits LITERAL1 +kZepealCommandOffOn LITERAL1 +kZepealCommandOffTimer LITERAL1 +kZepealCommandOnTimer LITERAL1 +kZepealCommandRhythm LITERAL1 +kZepealCommandSpeed LITERAL1 +kZepealFooterMark LITERAL1 +kZepealGap LITERAL1 +kZepealHdrMark LITERAL1 +kZepealHdrSpace LITERAL1 +kZepealMinRepeat LITERAL1 +kZepealOneMark LITERAL1 +kZepealOneSpace LITERAL1 +kZepealSignature LITERAL1 +kZepealTolerance LITERAL1 +kZepealZeroMark LITERAL1 +kZepealZeroSpace LITERAL1 kZoneFollowStr LITERAL1 diff --git a/lib/IRremoteESP8266-2.7.7/library.json b/lib/IRremoteESP8266-2.7.8/library.json similarity index 98% rename from lib/IRremoteESP8266-2.7.7/library.json rename to lib/IRremoteESP8266-2.7.8/library.json index abf2f8070..c92323c46 100644 --- a/lib/IRremoteESP8266-2.7.7/library.json +++ b/lib/IRremoteESP8266-2.7.8/library.json @@ -1,6 +1,6 @@ { "name": "IRremoteESP8266", - "version": "2.7.7", + "version": "2.7.8", "keywords": "infrared, ir, remote, esp8266, esp32", "description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)", "repository": diff --git a/lib/IRremoteESP8266-2.7.7/library.properties b/lib/IRremoteESP8266-2.7.8/library.properties similarity index 97% rename from lib/IRremoteESP8266-2.7.7/library.properties rename to lib/IRremoteESP8266-2.7.8/library.properties index 16c4f3bc6..785252195 100644 --- a/lib/IRremoteESP8266-2.7.7/library.properties +++ b/lib/IRremoteESP8266-2.7.8/library.properties @@ -1,5 +1,5 @@ name=IRremoteESP8266 -version=2.7.7 +version=2.7.8 author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto, Christian Nilsson sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32) diff --git a/lib/IRremoteESP8266-2.7.7/platformio.ini b/lib/IRremoteESP8266-2.7.8/platformio.ini similarity index 94% rename from lib/IRremoteESP8266-2.7.7/platformio.ini rename to lib/IRremoteESP8266-2.7.8/platformio.ini index 67dbeb606..76c2f3b40 100644 --- a/lib/IRremoteESP8266-2.7.7/platformio.ini +++ b/lib/IRremoteESP8266-2.7.8/platformio.ini @@ -9,6 +9,7 @@ lib_ignore = examples framework = arduino platform = espressif8266 build_flags = ; -D_IR_LOCALE_=en-AU +monitor_speed = 115200 [env:nodemcuv2] board = nodemcuv2 diff --git a/lib/IRremoteESP8266-2.7.7/pylintrc b/lib/IRremoteESP8266-2.7.8/pylintrc similarity index 100% rename from lib/IRremoteESP8266-2.7.7/pylintrc rename to lib/IRremoteESP8266-2.7.8/pylintrc diff --git a/lib/IRremoteESP8266-2.7.7/src/CPPLINT.cfg b/lib/IRremoteESP8266-2.7.8/src/CPPLINT.cfg similarity index 100% rename from lib/IRremoteESP8266-2.7.7/src/CPPLINT.cfg rename to lib/IRremoteESP8266-2.7.8/src/CPPLINT.cfg diff --git a/lib/IRremoteESP8266-2.7.7/src/IRac.cpp b/lib/IRremoteESP8266-2.7.8/src/IRac.cpp similarity index 68% rename from lib/IRremoteESP8266-2.7.7/src/IRac.cpp rename to lib/IRremoteESP8266-2.7.8/src/IRac.cpp index 3e56b0a46..fda16aba5 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRac.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/IRac.cpp @@ -2,7 +2,7 @@ // Provide a universal/standard interface for sending A/C nessages. // It does not provide complete and maximum granular control but tries -// to off most common functionallity across all supported devices. +// to offer most common functionality across all supported devices. #include "IRac.h" #ifndef UNIT_TEST @@ -18,7 +18,9 @@ #include "IRutils.h" #include "ir_Amcor.h" #include "ir_Argo.h" +#include "ir_Carrier.h" #include "ir_Coolix.h" +#include "ir_Corona.h" #include "ir_Daikin.h" #include "ir_Electra.h" #include "ir_Fujitsu.h" @@ -40,6 +42,10 @@ #include "ir_Vestel.h" #include "ir_Whirlpool.h" +/// Class constructor +/// @param[in] pin Gpio pin to use when transmitting IR messages. +/// @param[in] inverted true, gpio output defaults to high. false, to low. +/// @param[in] use_modulation true means use frequency modulation. false, don't. IRac::IRac(const uint16_t pin, const bool inverted, const bool use_modulation) { _pin = pin; _inverted = inverted; @@ -48,6 +54,29 @@ IRac::IRac(const uint16_t pin, const bool inverted, const bool use_modulation) { this->markAsSent(); } +/// Initialse the given state with the supplied settings. +/// @param[out] state A Ptr to where the settings will be stored. +/// @param[in] vendor The vendor/protocol type. +/// @param[in] model The A/C model if applicable. +/// @param[in] power The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] celsius Temperature units. True is Celsius, False is Fahrenheit. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc +/// @param[in] beep Enable/Disable beeps when receiving IR messages. +/// @param[in] sleep Nr. of minutes for sleep mode. +/// -1 is Off, >= 0 is on. Some devices it is the nr. of mins to run for. +/// Others it may be the time to enter/exit sleep mode. +/// i.e. Time in Nr. of mins since midnight. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. void IRac::initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, @@ -78,6 +107,9 @@ void IRac::initState(stdAc::state_t *state, state->clock = clock; } +/// Initialse the given state with the supplied settings. +/// @param[out] state A Ptr to where the settings will be stored. +/// @note Sets all the parameters to reasonable base/automatic defaults. void IRac::initState(stdAc::state_t *state) { initState(state, decode_type_t::UNKNOWN, -1, false, stdAc::opmode_t::kOff, 25, true, // 25 degrees Celsius @@ -86,11 +118,18 @@ void IRac::initState(stdAc::state_t *state) { false, -1, -1); } +/// Get the current internal A/C climate state. +/// @return A Ptr to a state containing the current (to be sent) settings. stdAc::state_t IRac::getState(void) { return next; } +/// Get the previous internal A/C climate state that should have already been +/// sent to the device. i.e. What the A/C unit should already be set to. +/// @return A Ptr to a state containing the previously sent settings. stdAc::state_t IRac::getStatePrev(void) { return _prev; } -// Is the given protocol supported by the IRac class? +/// Is the given protocol supported by the IRac class? +/// @param[in] protocol The vendor/protocol type. +/// @return true if the protocol is supported by this class, otherwise false. bool IRac::isProtocolSupported(const decode_type_t protocol) { switch (protocol) { #if SEND_AMCOR @@ -99,9 +138,15 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) { #if SEND_ARGO case decode_type_t::ARGO: #endif +#if SEND_CARRIER_AC64 + case decode_type_t::CARRIER_AC64: +#endif // SEND_CARRIER_AC64 #if SEND_COOLIX case decode_type_t::COOLIX: #endif +#if SEND_CORONA_AC + case decode_type_t::CORONA_AC: +#endif #if SEND_DAIKIN case decode_type_t::DAIKIN: #endif @@ -153,6 +198,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) { #if SEND_HITACHI_AC1 case decode_type_t::HITACHI_AC1: #endif +#if SEND_HITACHI_AC344 + case decode_type_t::HITACHI_AC344: +#endif #if SEND_HITACHI_AC424 case decode_type_t::HITACHI_AC424: #endif @@ -209,13 +257,25 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) { #if SEND_WHIRLPOOL_AC case decode_type_t::WHIRLPOOL_AC: #endif +// Note: Compiler Warning is disabled because someone could disable all +// the protocols before this and it is then unreachable. +// "-Wswitch-unreachable" not used as it appears to be an unknown option. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wall" return true; +#pragma GCC diagnostic pop default: return false; } } #if SEND_AMCOR +/// Send an Amcor A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRAmcorAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. void IRac::amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan) { @@ -238,6 +298,16 @@ void IRac::amcor(IRAmcorAc *ac, #endif // SEND_AMCOR #if SEND_ARGO +/// Send an Argo A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRArgoAC object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] sleep Nr. of minutes for sleep mode. +/// @note -1 is Off, >= 0 is on. void IRac::argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, @@ -260,7 +330,53 @@ void IRac::argo(IRArgoAC *ac, } #endif // SEND_ARGO +#if SEND_CARRIER_AC64 +/// Send a Carrier 64-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRCarrierAc64 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] sleep Nr. of minutes for sleep mode. +/// @note -1 is Off, >= 0 is on. +void IRac::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) { + ac->begin(); + ac->setPower(on); + ac->setMode(ac->convertMode(mode)); + ac->setTemp(degrees); + ac->setFan(ac->convertFan(fan)); + ac->setSwingV((int8_t)swingv >= 0); + // No Quiet setting available. + // No Light setting available. + // No Filter setting available. + // No Turbo setting available. + // No Economy setting available. + // No Clean setting available. + // No Beep setting available. + ac->setSleep(sleep >= 0); // Convert to a boolean. + ac->send(); +} +#endif // SEND_CARRIER_AC64 + #if SEND_COOLIX +/// Send a Coolix A/C message with the supplied settings. +/// @note May result in multiple messages being sent. +/// @param[in, out] ac A Ptr to an IRCoolixAC object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc +/// @param[in] sleep Nr. of minutes for sleep mode. +/// @note -1 is Off, >= 0 is on. void IRac::coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -312,7 +428,51 @@ void IRac::coolix(IRCoolixAC *ac, } #endif // SEND_COOLIX +#if SEND_CORONA_AC +/// Send a Corona A/C message with the supplied settings. +/// @note May result in multiple messages being sent. +/// @param[in, out] ac A Ptr to an IRCoronaAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] econo Run the device in economical mode. +void IRac::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) { + ac->begin(); + ac->setPower(on); + ac->setMode(ac->convertMode(mode)); + ac->setTemp(degrees); + ac->setFan(ac->convertFan(fan)); + ac->setSwingVToggle(swingv != stdAc::swingv_t::kOff); + // No Quiet setting available. + // No Light setting available. + // No Filter setting available. + // No Turbo setting available. + ac->setEcono(econo); + // No Clean setting available. + // No Beep setting available. + // No Sleep setting available. + ac->send(); +} +#endif // SEND_CARRIER_AC64 + #if SEND_DAIKIN +/// Send a Daikin A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikinESP object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc void IRac::daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -340,6 +500,19 @@ void IRac::daikin(IRDaikinESP *ac, #endif // SEND_DAIKIN #if SEND_DAIKIN128 +/// Send a Daikin 128-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikin128 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. void IRac::daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -367,6 +540,16 @@ void IRac::daikin128(IRDaikin128 *ac, #endif // SEND_DAIKIN128 #if SEND_DAIKIN152 +/// Send a Daikin 152-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikin152 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] econo Run the device in economical mode. void IRac::daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -393,6 +576,13 @@ void IRac::daikin152(IRDaikin152 *ac, #endif // SEND_DAIKIN152 #if SEND_DAIKIN160 +/// Send a Daikin 160-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikin160 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. void IRac::daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -408,6 +598,13 @@ void IRac::daikin160(IRDaikin160 *ac, #endif // SEND_DAIKIN160 #if SEND_DAIKIN176 +/// Send a Daikin 176-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikin176 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingh The horizontal swing setting. void IRac::daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -423,6 +620,23 @@ void IRac::daikin176(IRDaikin176 *ac, #endif // SEND_DAIKIN176 #if SEND_DAIKIN2 +/// Send a Daikin2 A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikin2 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc +/// @param[in] beep Enable/Disable beeps when receiving IR messages. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. void IRac::daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -452,6 +666,16 @@ void IRac::daikin2(IRDaikin2 *ac, #endif // SEND_DAIKIN2 #if SEND_DAIKIN216 +/// Send a Daikin 216-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikin216 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. void IRac::daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -471,6 +695,17 @@ void IRac::daikin216(IRDaikin216 *ac, #endif // SEND_DAIKIN216 #if SEND_DAIKIN64 +/// Send a Daikin 64-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDaikin64 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. void IRac::daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -492,6 +727,15 @@ void IRac::daikin64(IRDaikin64 *ac, #endif // SEND_DAIKIN64 #if SEND_DELONGHI_AC +/// Send a Delonghi A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRDelonghiAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] celsius Temperature units. True is Celsius, False is Fahrenheit. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. void IRac::delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, @@ -508,6 +752,17 @@ void IRac::delonghiac(IRDelonghiAc *ac, #endif // SEND_DELONGHI_AC #if SEND_ELECTRA_AC +/// Send an Electra A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRElectraAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] lighttoggle Should we toggle the LED/Display? +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc void IRac::electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -536,6 +791,20 @@ void IRac::electra(IRElectraAc *ac, #endif // SEND_ELECTRA_AC #if SEND_FUJITSU_AC +/// Send a Fujitsu A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRFujitsuAC object to use. +/// @param[in] model The A/C model to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc void IRac::fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -589,6 +858,16 @@ void IRac::fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, #endif // SEND_FUJITSU_AC #if SEND_GOODWEATHER +/// Send a Goodweather A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRGoodweatherAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. void IRac::goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -618,6 +897,19 @@ void IRac::goodweather(IRGoodweatherAc *ac, #endif // SEND_GOODWEATHER #if SEND_GREE +/// Send a Gree A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRGreeAC object to use. +/// @param[in] model The A/C model to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] celsius Temperature units. True is Celsius, False is Fahrenheit. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. void IRac::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, @@ -646,6 +938,16 @@ void IRac::gree(IRGreeAC *ac, const gree_ac_remote_model_t model, #endif // SEND_GREE #if SEND_HAIER_AC +/// Send a Haier A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRGreeAC object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. void IRac::haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, @@ -673,6 +975,16 @@ void IRac::haier(IRHaierAC *ac, #endif // SEND_HAIER_AC #if SEND_HAIER_AC_YRW02 +/// Send a Haier YRWO2 A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRHaierACYRW02 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. void IRac::haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -697,6 +1009,14 @@ void IRac::haierYrwo2(IRHaierACYRW02 *ac, #endif // SEND_HAIER_AC_YRW02 #if SEND_HITACHI_AC +/// Send a Hitachi A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRHitachiAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. void IRac::hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -721,6 +1041,19 @@ void IRac::hitachi(IRHitachiAc *ac, #endif // SEND_HITACHI_AC #if SEND_HITACHI_AC1 +/// Send a Hitachi1 A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRHitachiAc1 object to use. +/// @param[in] model The A/C model to use. +/// @param[in] on The power setting. +/// @param[in] power_toggle The power toggle setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] swing_toggle The swing_toggle setting. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. +/// @note The sleep mode used is the "Sleep 2" setting. void IRac::hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, @@ -751,7 +1084,49 @@ void IRac::hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, } #endif // SEND_HITACHI_AC1 +#if SEND_HITACHI_AC344 +/// Send a Hitachi 344-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRHitachiAc344 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +void IRac::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) { + ac->begin(); + ac->setMode(ac->convertMode(mode)); + ac->setTemp(degrees); + ac->setFan(ac->convertFan(fan)); + ac->setSwingH(ac->convertSwingH(swingh)); + ac->setPower(on); + // No Quiet setting available. + // No Turbo setting available. + // No Light setting available. + // No Filter setting available. + // No Clean setting available. + // No Beep setting available. + // No Sleep setting available. + // No Clock setting available. + + // SwingVToggle is special. Needs to be last method called. + ac->setSwingVToggle(swingv != stdAc::swingv_t::kOff); + ac->send(); +} +#endif // SEND_HITACHI_AC344 + #if SEND_HITACHI_AC424 +/// Send a Hitachi 424-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRHitachiAc424 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. void IRac::hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -777,6 +1152,19 @@ void IRac::hitachi424(IRHitachiAc424 *ac, #endif // SEND_HITACHI_AC424 #if SEND_KELVINATOR +/// Send a Kelvinator A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRKelvinatorAC object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. XFan, dry filters etc void IRac::kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -804,6 +1192,13 @@ void IRac::kelvinator(IRKelvinatorAC *ac, #endif // SEND_KELVINATOR #if SEND_LG +/// Send a LG A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRLgAc object to use. +/// @param[in] model The A/C model to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. void IRac::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) { @@ -828,6 +1223,15 @@ void IRac::lg(IRLgAc *ac, const lg_ac_remote_model_t model, #endif // SEND_LG #if SEND_MIDEA +/// Send a Midea A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRMideaAC object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] celsius Temperature units. True is Celsius, False is Fahrenheit. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. void IRac::midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, @@ -853,6 +1257,17 @@ void IRac::midea(IRMideaAC *ac, #endif // SEND_MIDEA #if SEND_MITSUBISHI_AC +/// Send a Mitsubishi A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRMitsubishiAC object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. +/// @note Clock can only be set in 10 minute increments. i.e. % 10. void IRac::mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -879,6 +1294,15 @@ void IRac::mitsubishi(IRMitsubishiAC *ac, #endif // SEND_MITSUBISHI_AC #if SEND_MITSUBISHI112 +/// Send a Mitsubishi 112-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRMitsubishi112 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. void IRac::mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -907,6 +1331,14 @@ void IRac::mitsubishi112(IRMitsubishi112 *ac, #endif // SEND_MITSUBISHI112 #if SEND_MITSUBISHI136 +/// Send a Mitsubishi 136-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRMitsubishi136 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. void IRac::mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -931,6 +1363,17 @@ void IRac::mitsubishi136(IRMitsubishi136 *ac, #endif // SEND_MITSUBISHI136 #if SEND_MITSUBISHIHEAVY +/// Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRMitsubishiHeavy88Ac object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc void IRac::mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -958,6 +1401,20 @@ void IRac::mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, ac->send(); } +/// Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRMitsubishiHeavy152Ac object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. void IRac::mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -988,6 +1445,18 @@ void IRac::mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, #endif // SEND_MITSUBISHIHEAVY #if SEND_NEOCLIMA +/// Send a Neoclima A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRNeoclimaAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. void IRac::neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -1015,6 +1484,19 @@ void IRac::neoclima(IRNeoclimaAc *ac, #endif // SEND_NEOCLIMA #if SEND_PANASONIC_AC +/// Send a Panasonic A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRPanasonicAc object to use. +/// @param[in] model The A/C model to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. void IRac::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, @@ -1043,6 +1525,22 @@ void IRac::panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, #endif // SEND_PANASONIC_AC #if SEND_SAMSUNG_AC +/// Send a Samsung A/C message with the supplied settings. +/// @note Multiple IR messages may be generated & sent. +/// @param[in, out] ac A Ptr to an IRSamsungAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc +/// @param[in] beep Enable/Disable beeps when receiving IR messages. +/// @param[in] prevpower The power setting from the previous A/C state. +/// @param[in] forcepower Do we force send the special power message? void IRac::samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -1075,6 +1573,18 @@ void IRac::samsung(IRSamsungAc *ac, #endif // SEND_SAMSUNG_AC #if SEND_SHARP_AC +/// Send a Sharp A/C message with the supplied settings. +/// @note Multiple IR messages may be generated & sent. +/// @param[in, out] ac A Ptr to an IRSharpAc object to use. +/// @param[in] on The power setting. +/// @param[in] prev_power The power setting from the previous A/C state. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc void IRac::sharp(IRSharpAc *ac, const bool on, const bool prev_power, const stdAc::opmode_t mode, @@ -1115,6 +1625,18 @@ void IRac::sharp(IRSharpAc *ac, #endif // SEND_SHARP_AC #if SEND_TCL112AC +/// Send a TCL 112-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRTcl112Ac object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. void IRac::tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -1142,6 +1664,15 @@ void IRac::tcl112(IRTcl112Ac *ac, #endif // SEND_TCL112AC #if SEND_TECO +/// Send a Teco A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRTecoAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. void IRac::teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, @@ -1166,6 +1697,12 @@ void IRac::teco(IRTecoAc *ac, #endif // SEND_TECO #if SEND_TOSHIBA_AC +/// Send a Toshiba A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRToshibaAC object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. void IRac::toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan) { @@ -1189,6 +1726,13 @@ void IRac::toshiba(IRToshibaAC *ac, #endif // SEND_TOSHIBA_AC #if SEND_TROTEC +/// Send a Trotec A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRTrotecESP object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. void IRac::trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, @@ -1213,6 +1757,19 @@ void IRac::trotec(IRTrotecESP *ac, #endif // SEND_TROTEC #if SEND_VESTEL_AC +/// Send a Vestel A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRVestelAc object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. +/// @param[in] sendNormal Do we send a Normal settings message at all? +/// i.e In addition to the clock/time/timer message void IRac::vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -1242,6 +1799,18 @@ void IRac::vestel(IRVestelAc *ac, #endif // SEND_VESTEL_AC #if SEND_WHIRLPOOL_AC +/// Send a Whirlpool A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRWhirlpoolAc object to use. +/// @param[in] model The A/C model to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, > 0 is on. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. void IRac::whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -1268,12 +1837,11 @@ void IRac::whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, } #endif // SEND_WHIRLPOOL_AC -// Create a new state base on the provided state that has been suitably fixed. -// Args: -// state: The state_t structure describing the desired a/c state. -// -// Returns: -// A stdAc::state_t with the needed settings. +/// Create a new state base on the provided state that has been suitably fixed. +/// @note This is for use with Home Assistant, which requires mode to be off if +/// the power is off. +/// @param[in] state The state_t structure describing the desired a/c state. +/// @return A stdAc::state_t with the needed settings. stdAc::state_t IRac::cleanState(const stdAc::state_t state) { stdAc::state_t result = state; // A hack for Home Assistant, it appears to need/want an Off opmode. @@ -1282,14 +1850,11 @@ stdAc::state_t IRac::cleanState(const stdAc::state_t state) { return result; } -// Create a new state base on desired & previous states but handle -// any state changes for options that need to be toggled. -// Args: -// desired: The state_t structure describing the desired a/c state. -// prev: Ptr to the previous state_t structure. -// -// Returns: -// A stdAc::state_t with the needed settings. +/// Create a new state base on desired & previous states but handle +/// any state changes for options that need to be toggled. +/// @param[in] desired The state_t structure describing the desired a/c state. +/// @param[in] prev A Ptr to the previous state_t structure. +/// @return A stdAc::state_t with the needed settings. stdAc::state_t IRac::handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev) { stdAc::state_t result = desired; @@ -1316,6 +1881,8 @@ stdAc::state_t IRac::handleToggles(const stdAc::state_t desired, case decode_type_t::ELECTRA_AC: result.light = desired.light ^ prev->light; break; + case decode_type_t::CORONA_AC: + case decode_type_t::HITACHI_AC344: case decode_type_t::HITACHI_AC424: case decode_type_t::MIDEA: case decode_type_t::SHARP_AC: @@ -1341,29 +1908,30 @@ stdAc::state_t IRac::handleToggles(const stdAc::state_t desired, return result; } -// Send A/C message for a given device using common A/C settings. -// Args: -// vendor: The type of A/C protocol to use. -// model: The specific model of A/C if supported/applicable. -// on: Should the unit be powered on? (or in some cases, toggled) -// mode: What operating mode should the unit perform? e.g. Cool, Heat etc. -// degrees: What temperature should the unit be set to? -// celsius: Use degrees Celsius, otherwise Fahrenheit. -// fan: Fan speed. -// The following args are all "if supported" by the underlying A/C classes. -// swingv: Control the vertical swing of the vanes. -// swingh: Control the horizontal swing of the vanes. -// quiet: Set the unit to quiet (fan) operation mode. -// turbo: Set the unit to turbo operating mode. e.g. Max fan & cooling etc. -// econo: Set the unit to economical operating mode. -// light: Turn on the display/LEDs etc. -// filter: Turn on any particle/ion/allergy filter etc. -// clean: Turn on any settings to reduce mold etc. (Not self-clean mode.) -// beep: Control if the unit beeps upon receiving commands. -// sleep: Nr. of mins of sleep mode, or use sleep mode. (< 0 means off.) -// clock: Nr. of mins past midnight to set the clock to. (< 0 means off.) -// Returns: -// boolean: True, if accepted/converted/attempted. False, if unsupported. +/// Send A/C message for a given device using common A/C settings. +/// @param[in] vendor The vendor/protocol type. +/// @param[in] model The A/C model if applicable. +/// @param[in] power The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] celsius Temperature units. True is Celsius, False is Fahrenheit. +/// @param[in] fan The speed setting for the fan. +/// @note The following are all "if supported" by the underlying A/C classes. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] econo Run the device in economical mode. +/// @param[in] light Turn on the LED/Display mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc +/// @param[in] beep Enable/Disable beeps when receiving IR messages. +/// @param[in] sleep Nr. of minutes for sleep mode. +/// -1 is Off, >= 0 is on. Some devices it is the nr. of mins to run for. +/// Others it may be the time to enter/exit sleep mode. +/// i.e. Time in Nr. of mins since midnight. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. +/// @return True, if accepted/converted/attempted etc. False, if unsupported. bool IRac::sendAc(const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, @@ -1379,17 +1947,14 @@ bool IRac::sendAc(const decode_type_t vendor, const int16_t model, return this->sendAc(to_send, &to_send); } -// Send A/C message for a given device using state_t structures. -// Args: -// desired: The state_t structure describing the desired new a/c state. -// prev: Ptr to the previous state_t structure. -// -// Returns: -// boolean: True, if accepted/converted/attempted. False, if unsupported. +/// Send A/C message for a given device using state_t structures. +/// @param[in] desired The state_t structure describing the desired new ac state +/// @param[in] prev A Ptr to the state_t structure containing the previous state +/// @return True, if accepted/converted/attempted etc. False, if unsupported. bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { // Convert the temp from Fahrenheit to Celsius if we are not in Celsius mode. - float degC = desired.celsius ? desired.degrees - : fahrenheitToCelsius(desired.degrees); + float degC __attribute__((unused)) = + desired.celsius ? desired.degrees : fahrenheitToCelsius(desired.degrees); // special `state_t` that is required to be sent based on that. stdAc::state_t send = this->handleToggles(this->cleanState(desired), prev); // Per vendor settings & setup. @@ -1411,6 +1976,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { break; } #endif // SEND_ARGO +#if SEND_CARRIER_AC64 + case CARRIER_AC64: + { + IRCarrierAc64 ac(_pin, _inverted, _modulation); + carrier64(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv, + send.sleep); + break; + } +#endif // SEND_CARRIER_AC64 #if SEND_COOLIX case COOLIX: { @@ -1420,6 +1994,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { break; } #endif // SEND_COOLIX +#if SEND_CORONA_AC + case CORONA_AC: + { + IRCoronaAc ac(_pin, _inverted, _modulation); + corona(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv, + send.econo); + break; + } +#endif // SEND_CORONA_AC #if SEND_DAIKIN case DAIKIN: { @@ -1585,6 +2168,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { break; } #endif // SEND_HITACHI_AC1 +#if SEND_HITACHI_AC344 + case HITACHI_AC344: + { + IRHitachiAc344 ac(_pin, _inverted, _modulation); + hitachi344(&ac, send.power, send.mode, degC, send.fanspeed, + send.swingv, send.swingh); + break; + } +#endif // SEND_HITACHI_AC344 #if SEND_HITACHI_AC424 case HITACHI_AC424: { @@ -1766,24 +2358,24 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { return true; // Success. } -// Update the previous state to the current one. +/// Update the previous state to the current one. void IRac::markAsSent(void) { _prev = next; } -// Send an A/C message based soley on our internal state. -// -// Returns: -// boolean: True, if accepted/converted/attempted. False, if unsupported. +/// Send an A/C message based soley on our internal state. +/// @return True, if accepted/converted/attempted. False, if unsupported. bool IRac::sendAc(void) { bool success = this->sendAc(next, &_prev); if (success) this->markAsSent(); return success; } -// Compare two AirCon states. -// Returns: True if they differ, False if they don't. -// Note: Excludes clock. +/// Compare two AirCon states. +/// @note The comparison excludes the clock. +/// @param a A state_t to be compared. +/// @param b A state_t to be compared. +/// @return True if they differ, False if they don't. bool IRac::cmpStates(const stdAc::state_t a, const stdAc::state_t b) { return a.protocol != b.protocol || a.model != b.model || a.power != b.power || a.mode != b.mode || a.degrees != b.degrees || a.celsius != b.celsius || @@ -1793,10 +2385,17 @@ bool IRac::cmpStates(const stdAc::state_t a, const stdAc::state_t b) { a.clean != b.clean || a.beep != b.beep || a.sleep != b.sleep; } +/// Check if the internal state has changed from what was previously sent. +/// @note The comparison excludes the clock. +/// @return True if it has changed, False if not. bool IRac::hasStateChanged(void) { return cmpStates(next, _prev); } +/// Convert the supplied str into the appropriate enum. +/// @param[in] str A Ptr to a C-style string to be converted. +/// @param[in] def The enum to return if no conversion was possible. +/// @return The equivilent enum. stdAc::opmode_t IRac::strToOpmode(const char *str, - const stdAc::opmode_t def) { + const stdAc::opmode_t def) { if (!strcasecmp(str, kAutoStr) || !strcasecmp(str, kAutomaticStr)) return stdAc::opmode_t::kAuto; @@ -1821,6 +2420,10 @@ stdAc::opmode_t IRac::strToOpmode(const char *str, return def; } +/// Convert the supplied str into the appropriate enum. +/// @param[in] str A Ptr to a C-style string to be converted. +/// @param[in] def The enum to return if no conversion was possible. +/// @return The equivilent enum. stdAc::fanspeed_t IRac::strToFanspeed(const char *str, const stdAc::fanspeed_t def) { if (!strcasecmp(str, kAutoStr) || @@ -1848,6 +2451,10 @@ stdAc::fanspeed_t IRac::strToFanspeed(const char *str, return def; } +/// Convert the supplied str into the appropriate enum. +/// @param[in] str A Ptr to a C-style string to be converted. +/// @param[in] def The enum to return if no conversion was possible. +/// @return The equivilent enum. stdAc::swingv_t IRac::strToSwingV(const char *str, const stdAc::swingv_t def) { if (!strcasecmp(str, kAutoStr) || @@ -1885,6 +2492,10 @@ stdAc::swingv_t IRac::strToSwingV(const char *str, return def; } +/// Convert the supplied str into the appropriate enum. +/// @param[in] str A Ptr to a C-style string to be converted. +/// @param[in] def The enum to return if no conversion was possible. +/// @return The equivilent enum. stdAc::swingh_t IRac::strToSwingH(const char *str, const stdAc::swingh_t def) { if (!strcasecmp(str, kAutoStr) || @@ -1920,7 +2531,11 @@ stdAc::swingh_t IRac::strToSwingH(const char *str, return def; } -// Assumes str is the model code or an integer >= 1. +/// Convert the supplied str into the appropriate enum. +/// @note Assumes str is the model code or an integer >= 1. +/// @param[in] str A Ptr to a C-style string to be converted. +/// @param[in] def The enum to return if no conversion was possible. +/// @return The equivilent enum. int16_t IRac::strToModel(const char *str, const int16_t def) { // Gree if (!strcasecmp(str, "YAW1F")) { @@ -1972,6 +2587,10 @@ int16_t IRac::strToModel(const char *str, const int16_t def) { } } +/// Convert the supplied str into the appropriate boolean value. +/// @param[in] str A Ptr to a C-style string to be converted. +/// @param[in] def The boolean value to return if no conversion was possible. +/// @return The equivilent boolean value. bool IRac::strToBool(const char *str, const bool def) { if (!strcasecmp(str, kOnStr) || !strcasecmp(str, "1") || @@ -1987,10 +2606,16 @@ bool IRac::strToBool(const char *str, const bool def) { return def; } +/// Convert the supplied boolean into the appropriate String. +/// @param[in] value The boolean value to be converted. +/// @return The equivilent String for the locale. String IRac::boolToString(const bool value) { return value ? kOnStr : kOffStr; } +/// Convert the supplied operation mode into the appropriate String. +/// @param[in] mode The enum to be converted. +/// @return The equivilent String for the locale. String IRac::opmodeToString(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kOff: @@ -2010,6 +2635,9 @@ String IRac::opmodeToString(const stdAc::opmode_t mode) { } } +/// Convert the supplied fan speed enum into the appropriate String. +/// @param[in] speed The enum to be converted. +/// @return The equivilent String for the locale. String IRac::fanspeedToString(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kAuto: @@ -2029,6 +2657,9 @@ String IRac::fanspeedToString(const stdAc::fanspeed_t speed) { } } +/// Convert the supplied enum into the appropriate String. +/// @param[in] swingv The enum to be converted. +/// @return The equivilent String for the locale. String IRac::swingvToString(const stdAc::swingv_t swingv) { switch (swingv) { case stdAc::swingv_t::kOff: @@ -2050,6 +2681,9 @@ String IRac::swingvToString(const stdAc::swingv_t swingv) { } } +/// Convert the supplied enum into the appropriate String. +/// @param[in] swingh The enum to be converted. +/// @return The equivilent String for the locale. String IRac::swinghToString(const stdAc::swingh_t swingh) { switch (swingh) { case stdAc::swingh_t::kOff: @@ -2074,11 +2708,11 @@ String IRac::swinghToString(const stdAc::swingh_t swingh) { } namespace IRAcUtils { - // Display the human readable state of an A/C message if we can. - // Args: - // result: A Ptr to the captured `decode_results` that contains an A/C mesg. - // Returns: - // A string with the human description of the A/C message. "" if we can't. + /// Display the human readable state of an A/C message if we can. + /// @param[in] result A Ptr to the captured `decode_results` that contains an + /// A/C mesg. + /// @return A string with the human description of the A/C message. + /// An empty string if we can't. String resultAcToString(const decode_results * const result) { switch (result->decode_type) { #if DECODE_AMCOR @@ -2095,6 +2729,13 @@ namespace IRAcUtils { return ac.toString(); } #endif // DECODE_ARGO +#if DECODE_CARRIER_AC64 + case decode_type_t::CARRIER_AC64: { + IRCarrierAc64 ac(kGpioUnused); + ac.setRaw(result->value); // CARRIER_AC64 uses value instead of state. + return ac.toString(); + } +#endif // DECODE_CARRIER_AC64 #if DECODE_DAIKIN case decode_type_t::DAIKIN: { IRDaikinESP ac(0); @@ -2290,6 +2931,13 @@ namespace IRAcUtils { return ac.toString(); } #endif // DECODE_COOLIX +#if DECODE_CORONA_AC + case decode_type_t::CORONA_AC: { + IRCoronaAc ac(kGpioUnused); + ac.setRaw(result->state, result->bits / 8); + return ac.toString(); + } +#endif // DECODE_CORONA_AC #if DECODE_PANASONIC_AC case decode_type_t::PANASONIC_AC: { if (result->bits > kPanasonicAcShortBits) { @@ -2314,6 +2962,13 @@ namespace IRAcUtils { return ac.toString(); } #endif // DECODE_HITACHI_AC1 +#if DECODE_HITACHI_AC344 + case decode_type_t::HITACHI_AC344: { + IRHitachiAc344 ac(kGpioUnused); + ac.setRaw(result->state); + return ac.toString(); + } +#endif // DECODE_HITACHI_AC344 #if DECODE_HITACHI_AC424 case decode_type_t::HITACHI_AC424: { IRHitachiAc424 ac(0); @@ -2369,17 +3024,20 @@ namespace IRAcUtils { } } - // Convert a valid IR A/C remote message that we understand enough into a - // Common A/C state. - // - // Args: - // decode: A PTR to a successful raw IR decode object. - // result: A PTR to a state structure to store the result in. - // prev: A PTR to a state structure which has the prev. state. (optional) - // Returns: - // A boolean indicating success or failure. + /// Convert a valid IR A/C remote message that we understand enough into a + /// Common A/C state. + /// @param[in] decode A PTR to a successful raw IR decode object. + /// @param[in] result A PTR to a state structure to store the result in. + /// @param[in] prev A PTR to a state structure which has the prev. state. + /// @return A boolean indicating success or failure. bool decodeToState(const decode_results *decode, stdAc::state_t *result, - const stdAc::state_t *prev) { + const stdAc::state_t *prev +/// @cond IGNORE +// *prev flagged as "unused" due to potential compiler warning when some +// protocols that use it are disabled. It really is used. + __attribute__((unused)) +/// @endcond + ) { if (decode == NULL || result == NULL) return false; // Safety check. switch (decode->decode_type) { #if DECODE_AMCOR @@ -2406,6 +3064,22 @@ namespace IRAcUtils { break; } #endif // DECODE_COOLIX +#if DECODE_CORONA_AC + case decode_type_t::CORONA_AC: { + IRCoronaAc ac(kGpioUnused); + ac.setRaw(decode->state, decode->bits / 8); + *result = ac.toCommon(); + break; + } +#endif // DECODE_CARRIER_AC64 +#if DECODE_CARRIER_AC64 + case decode_type_t::CARRIER_AC64: { + IRCarrierAc64 ac(kGpioUnused); + ac.setRaw(decode->value); // Uses value instead of state. + *result = ac.toCommon(); + break; + } +#endif // DECODE_CARRIER_AC64 #if DECODE_DAIKIN case decode_type_t::DAIKIN: { IRDaikinESP ac(kGpioUnused); @@ -2542,6 +3216,14 @@ namespace IRAcUtils { break; } #endif // DECODE_HITACHI_AC1 +#if DECODE_HITACHI_AC344 + case decode_type_t::HITACHI_AC344: { + IRHitachiAc344 ac(kGpioUnused); + ac.setRaw(decode->state); + *result = ac.toCommon(); + break; + } +#endif // DECODE_HITACHI_AC344 #if DECODE_HITACHI_AC424 case decode_type_t::HITACHI_AC424: { IRHitachiAc424 ac(kGpioUnused); diff --git a/lib/IRremoteESP8266-2.7.7/src/IRac.h b/lib/IRremoteESP8266-2.7.8/src/IRac.h similarity index 94% rename from lib/IRremoteESP8266-2.7.7/src/IRac.h rename to lib/IRremoteESP8266-2.7.8/src/IRac.h index 42c59321c..01365a180 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRac.h +++ b/lib/IRremoteESP8266-2.7.8/src/IRac.h @@ -9,7 +9,9 @@ #include "IRremoteESP8266.h" #include "ir_Amcor.h" #include "ir_Argo.h" +#include "ir_Carrier.h" #include "ir_Coolix.h" +#include "ir_Corona.h" #include "ir_Daikin.h" #include "ir_Delonghi.h" #include "ir_Fujitsu.h" @@ -86,7 +88,7 @@ class IRac { stdAc::state_t getState(void); stdAc::state_t getStatePrev(void); bool hasStateChanged(void); - stdAc::state_t next; // The state we want the device to be in after we send. + stdAc::state_t next; ///< The state we want the device to be in after we send #ifndef UNIT_TEST private: @@ -106,6 +108,12 @@ class IRac { const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep = -1); #endif // SEND_ARGO +#if SEND_CARRIER_AC64 +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); +#endif // SEND_CARRIER_AC64 #if SEND_COOLIX void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -114,6 +122,12 @@ class IRac { const bool turbo, const bool light, const bool clean, const int16_t sleep = -1); #endif // SEND_COOLIX +#if SEND_CORONA_AC + 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); +#endif // SEND_CORONA_AC #if SEND_DAIKIN void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, @@ -242,6 +256,13 @@ void electra(IRElectraAc *ac, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep = -1); #endif // SEND_HITACHI_AC1 +#if SEND_HITACHI_AC344 + 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); +#endif // SEND_HITACHI_AC344 #if SEND_HITACHI_AC424 void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, diff --git a/lib/IRremoteESP8266-2.7.7/src/IRrecv.cpp b/lib/IRremoteESP8266-2.7.8/src/IRrecv.cpp similarity index 61% rename from lib/IRremoteESP8266-2.7.7/src/IRrecv.cpp rename to lib/IRremoteESP8266-2.7.8/src/IRrecv.cpp index 316cf59c6..efddcc17c 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRrecv.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/IRrecv.cpp @@ -62,11 +62,19 @@ irparams_t *irparams_save; // A copy of the interrupt state while decoding. #ifndef UNIT_TEST #if defined(ESP8266) +/// Interrupt handler for when the timer runs out. +/// It signals to the library that capturing of IR data has stopped. +/// @param[in] arg Unused. (ESP8266 Only) static void USE_IRAM_ATTR read_timeout(void *arg __attribute__((unused))) { os_intr_lock(); #endif // ESP8266 +/// @cond IGNORE #if defined(ESP32) +/// Interrupt handler for when the timer runs out. +/// It signals to the library that capturing of IR data has stopped. +/// @note ESP32 version static void USE_IRAM_ATTR read_timeout(void) { +/// @endcond portENTER_CRITICAL(&irremote_mux); #endif // ESP32 if (irparams.rawlen) irparams.rcvstate = kStopState; @@ -78,6 +86,7 @@ static void USE_IRAM_ATTR read_timeout(void) { #endif // ESP32 } +/// Interrupt handler for changes on the GPIO pin handling incoming IR messages. static void USE_IRAM_ATTR gpio_intr() { uint32_t now = micros(); static uint32_t start = 0; @@ -128,17 +137,17 @@ static void USE_IRAM_ATTR gpio_intr() { // Start of IRrecv class ------------------- -// Class constructor -// Args: -// recvpin: GPIO pin the IR receiver module's data pin is connected to. -// bufsize: Nr. of entries to have in the capture buffer. (Default: kRawBuf) -// timeout: Nr. of milli-Seconds of no signal before we stop capturing data. -// (Default: kTimeoutMs) -// save_buffer: Use a second (save) buffer to decode from. (Default: false) -// timer_num: Which ESP32 timer number to use? ESP32 only, otherwise unused. -// (Range: 0-3. Default: kDefaultESP32Timer) -// Returns: -// An IRrecv class object. +/// Class constructor +/// Args: +/// @param[in] recvpin The GPIO pin the IR receiver module's data pin is +/// connected to. +/// @param[in] bufsize Nr. of entries to have in the capture buffer. +/// (Default: kRawBuf) +/// @param[in] timeout Nr. of milli-Seconds of no signal before we stop +/// capturing data. (Default: kTimeoutMs) +/// @param[in] save_buffer Use a second (save) buffer to decode from. +/// (Default: false) +/// @param[in] timer_num Nr. of the ESP32 timer to use (0 to 3) (ESP32 Only) #if defined(ESP32) IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize, const uint8_t timeout, const bool save_buffer, @@ -146,8 +155,20 @@ IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize, // There are only 4 timers. 0 to 3. _timer_num = std::min(timer_num, (uint8_t)3); #else // ESP32 +/// @cond IGNORE +/// Class constructor +/// Args: +/// @param[in] recvpin The GPIO pin the IR receiver module's data pin is +/// connected to. +/// @param[in] bufsize Nr. of entries to have in the capture buffer. +/// (Default: kRawBuf) +/// @param[in] timeout Nr. of milli-Seconds of no signal before we stop +/// capturing data. (Default: kTimeoutMs) +/// @param[in] save_buffer Use a second (save) buffer to decode from. +/// (Default: false) IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize, const uint8_t timeout, const bool save_buffer) { +/// @endcond #endif // ESP32 irparams.recvpin = recvpin; irparams.bufsize = bufsize; @@ -185,24 +206,25 @@ IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize, _tolerance = kTolerance; } -// Class destructor +/// Class destructor +/// Cleans up after the object is no longer needed. +/// e.g. Frees up all memory used by the various buffers, and disables any +/// timers or interrupts used. IRrecv::~IRrecv(void) { + disableIRIn(); +#if defined(ESP32) + if (timer != NULL) timerEnd(timer); // Cleanup the ESP32 timeout timer. +#endif // ESP32 delete[] irparams.rawbuf; if (irparams_save != NULL) { delete[] irparams_save->rawbuf; delete irparams_save; } - disableIRIn(); -#if defined(ESP32) - if (timer != NULL) timerEnd(timer); // Cleanup the ESP32 timeout timer. -#endif // ESP32 } -// Set up and (re)start the IR capture mechanism. -// -// Args: -// pullup: A flag indicating should the GPIO use the internal pullup resistor. -// (Default: `false`. i.e. No.) +/// Set up and (re)start the IR capture mechanism. +/// @param[in] pullup A flag indicating should the GPIO use the internal pullup +/// resistor. (Default: `false`. i.e. No.) void IRrecv::enableIRIn(const bool pullup) { // ESP32's seem to require explicitly setting the GPIO to INPUT etc. // This wasn't required on the ESP8266s, but it shouldn't hurt to make sure. @@ -237,6 +259,8 @@ void IRrecv::enableIRIn(const bool pullup) { #endif // UNIT_TEST } +/// Stop collection of any received IR data. +/// Disable any timers and interrupts. void IRrecv::disableIRIn(void) { #ifndef UNIT_TEST #if defined(ESP8266) @@ -249,6 +273,10 @@ void IRrecv::disableIRIn(void) { #endif // UNIT_TEST } +/// Resume collection of received IR data. +/// @note This is required if `decode()` is successful and `save_buffer` was +/// not set when the class was instanciated. +/// @see IRrecv class constructor void IRrecv::resume(void) { irparams.rcvstate = kIdleState; irparams.rawlen = 0; @@ -258,14 +286,12 @@ void IRrecv::resume(void) { #endif // ESP32 } -// Make a copy of the interrupt state & buffer data. -// Needed because irparams is marked as volatile, thus memcpy() isn't allowed. -// Only call this when you know the interrupt handlers won't modify anything. -// i.e. In kStopState. -// -// Args: -// src: Pointer to an irparams_t structure to copy from. -// dst: Pointer to an irparams_t structure to copy to. +/// Make a copy of the interrupt state & buffer data. +/// Needed because irparams is marked as volatile, thus memcpy() isn't allowed. +/// Only call this when you know the interrupt handlers won't modify anything. +/// i.e. In kStopState. +/// @param[in] src Pointer to an irparams_t structure to copy from. +/// @param[out] dst Pointer to an irparams_t structure to copy to. void IRrecv::copyIrParams(volatile irparams_t *src, irparams_t *dst) { // Typecast src and dst addresses to (char *) char *csrc = (char *)src; // NOLINT(readability/casting) @@ -287,31 +313,35 @@ void IRrecv::copyIrParams(volatile irparams_t *src, irparams_t *dst) { for (uint16_t i = 0; i < dst->bufsize; i++) dst->rawbuf[i] = src->rawbuf[i]; } -// Obtain the maximum number of entries possible in the capture buffer. -// i.e. It's size. +/// Obtain the maximum number of entries possible in the capture buffer. +/// i.e. It's size. +/// @return The size of the buffer that is in use by the object. uint16_t IRrecv::getBufSize(void) { return irparams.bufsize; } #if DECODE_HASH -// Set the minimum length we will consider for reporting UNKNOWN message types. +/// Set the minimum length we will consider for reporting UNKNOWN message types. +/// @param[in] length Min nr. of mark/space pulses required to be considered. void IRrecv::setUnknownThreshold(const uint16_t length) { _unknown_threshold = length; } #endif // DECODE_HASH -// Set the base tolerance percentage for matching incoming IR messages. +/// Set the base tolerance percentage for matching incoming IR messages. +/// @param[in] percent An integer percentage. (0-100) void IRrecv::setTolerance(const uint8_t percent) { _tolerance = std::min(percent, (uint8_t)100); } -// Get the base tolerance percentage for matching incoming IR messages. +/// Get the base tolerance percentage for matching incoming IR messages. +/// @return A integer percentage. uint8_t IRrecv::getTolerance(void) { return _tolerance; } #if ENABLE_NOISE_FILTER_OPTION -// Remove or merge pulses in the capture buffer that are too short. -// Args: -// results: Ptr to the decode_results we are going to filter/modify. -// floor: Only allow values in the buffer large than this. (in micro seconds) +/// Remove or merge pulses in the capture buffer that are too short. +/// @param[in,out] results Ptr to the decode_results we are going to filter. +/// @param[in] floor Only allow values in the buffer large than this. +/// (in microSeconds) void IRrecv::crudeNoiseFilter(decode_results *results, const uint16_t floor) { if (floor == 0) return; // Nothing to do. const uint16_t kTickFloor = floor / kRawTick; @@ -338,49 +368,44 @@ void IRrecv::crudeNoiseFilter(decode_results *results, const uint16_t floor) { } #endif // ENABLE_NOISE_FILTER_OPTION -// Decodes the received IR message. -// If the interrupt state is saved, we will immediately resume waiting -// for the next IR message to avoid missing messages. -// Note: There is a trade-off here. Saving the state means less time lost until -// we can receiving the next message vs. using more RAM. Choose appropriately. -// -// Args: -// results: A pointer to where the decoded IR message will be stored. -// save: A pointer to an irparams_t instance in which to save -// the interrupt's memory/state. NULL means don't save it. -// max_skip: Maximum Nr. of pulses at the begining of a capture we can skip -// when attempting to find a protocol we can successfully decode. -// This parameter can dramatically improve detection of protocols -// when there is light IR interference just before an incoming IR -// message, however, it comes at a steep performace price. -// CAUTION: Increasing this value will dramatically (linnearly) -// increase the cpu time & usage to decode protocols. -// e.g. 0 -> 1 will be a 2x increase in cpu usage/time. -// 0 -> 2 will be a 3x increase etc. -// If you are going to do this, consider disabling -// protocol decoding for protocols you are not expecting. -// (Default is 0. No skipping.) -// noise_floor: Pulses below this size (in usecs) will be removed or merged -// prior to any decoding. This is to try to remove noise/poor -// readings & slighly increase the chances of a successful -// decode but at the cost of data fidelity & integrity. -// (Defaults to 0 usecs. i.e. Don't filter; which is safe!) -// DANGER: **Here Be Dragons!** -// If you set the `filter_floor` value too high, it **WILL** -// break decoding of some protocols. You have been warned! -// **Any** non-zero value has the potential to **cook** the -// captured raw data. i.e. The data is going to lie to you. -// It may obscure hardware, circuit, & environment issues thus -// making it impossible to support you accurately or -// confidently. -// Values of <= 50 usecs will probably be safe. -// 51 - 100 usecs **might** be okay. -// 100 - 150 usecs is "Danger, Will Robinson!". -// 150 - 200 usecs expect broken protocols. -// At 200+ usecs, you **have** protocols you can't decode!! -// -// Returns: -// A boolean indicating if an IR message is ready or not. +/// Decodes the received IR message. +/// If the interrupt state is saved, we will immediately resume waiting +/// for the next IR message to avoid missing messages. +/// @note There is a trade-off here. Saving the state means less time lost until +/// we can receiving the next message vs. using more RAM. Choose appropriately. +/// @param[out] results A PTR to where the decoded IR message will be stored. +/// @param[out] save A PTR to an irparams_t instance in which to save +/// the interrupt's memory/state. NULL means don't save it. +/// @param[in] max_skip Maximum Nr. of pulses at the begining of a capture we +/// can skip when attempting to find a protocol we can successfully decode. +/// This parameter can dramatically improve detection of protocols +/// when there is light IR interference just before an incoming IR +/// message, however, it comes at a steep performace price. +/// (Default is 0. No skipping.) +/// @warning Increasing the `max_skip` value will dramatically (linearly) +/// increase the cpu time & usage to decode protocols. +/// e.g. 0 -> 1 will be a 2x increase in cpu usage/time. +/// 0 -> 2 will be a 3x increase etc. +/// If you are going to do this, consider disabling protocol decoding for +/// protocols you are not expecting. +/// @param[in] noise_floor Pulses below this size (in usecs) will be removed or +/// merged prior to any decoding. This is to try to remove noise/poor +/// readings & slighly increase the chances of a successful decode but at the +/// cost of data fidelity & integrity. +/// (Defaults to 0 usecs. i.e. Don't filter; which is safe!) +/// @warning DANGER: **Here Be Dragons!** +/// If you set the `noise_floor` value too high, it **WILL** break decoding +/// of some protocols. You have been warned! +/// **Any** non-zero value has the potential to **cook** the captured raw data +/// i.e. The raw data is going to lie to you. +/// It may obscure hardware, circuit, & environment issues thus making it +/// impossible to support you accurately or confidently. +/// Values of <= 50 usecs will probably be safe. +/// 51 - 100 usecs **might** be okay. +/// 100 - 150 usecs is "Danger, Will Robinson!". +/// 150 - 200 usecs expect broken protocols. +/// At 200+ usecs, you **have** protocols you can't decode!! +/// @return A boolean indicating if an IR message is ready or not. bool IRrecv::decode(decode_results *results, irparams_t *save, uint8_t max_skip, uint16_t noise_floor) { // Proceed only if an IR message been received. @@ -663,6 +688,12 @@ bool IRrecv::decode(decode_results *results, irparams_t *save, decodeHitachiAc3(results, offset, kHitachiAc3MinBits)) return true; #endif // DECODE_HITACHI_AC3 +#if DECODE_HITACHI_AC344 + // HitachiAC344 should be checked before HitachiAC + DPRINTLN("Attempting Hitachi AC344 decode"); + if (decodeHitachiAC(results, offset, kHitachiAc344Bits, true, false)) + return true; +#endif // DECODE_HITACHI_AC344 #if DECODE_HITACHI_AC2 // HitachiAC2 should be checked before HitachiAC DPRINTLN("Attempting Hitachi AC2 decode"); @@ -809,6 +840,18 @@ bool IRrecv::decode(decode_results *results, irparams_t *save, DPRINTLN("Attempting Carrier 64bit decode"); if (decodeCarrierAC64(results, offset)) return true; #endif // DECODE_CARRIER_AC64 +#if DECODE_CORONA_AC + DPRINTLN("Attempting CoronaAc decode"); + if (decodeCoronaAc(results, offset)) return true; +#endif // DECODE_CORONA_AC +#if DECODE_MIDEA24 + DPRINTLN("Attempting Midea-Nec decode"); + if (decodeMidea24(results, offset)) return true; +#endif // DECODE_MIDEA24 +#if DECODE_ZEPEAL + DPRINTLN("Attempting Zepeal decode"); + if (decodeZepeal(results, offset)) return true; +#endif // DECODE_ZEPEAL // Typically new protocols are added above this line. } #if DECODE_HASH @@ -825,19 +868,17 @@ bool IRrecv::decode(decode_results *results, irparams_t *save, return false; } -// Convert the tolerance percentage into something valid. +/// Convert the tolerance percentage into something valid. +/// @param[in] percentage An integer percentage. uint8_t IRrecv::_validTolerance(const uint8_t percentage) { return (percentage > 100) ? _tolerance : percentage; } -// Calculate the lower bound of the nr. of ticks. -// -// Args: -// usecs: Nr. of uSeconds. -// tolerance: Percent as an integer. e.g. 10 is 10% -// delta: A non-scaling amount to reduce usecs by. -// Returns: -// Nr. of ticks. +/// Calculate the lower bound of the nr. of ticks. +/// @param[in] usecs Nr. of uSeconds. +/// @param[in] tolerance Percent as an integer. e.g. 10 is 10% +/// @param[in] delta A non-scaling amount to reduce usecs by. +/// @return Nr. of ticks. uint32_t IRrecv::ticksLow(const uint32_t usecs, const uint8_t tolerance, const uint16_t delta) { // max() used to ensure the result can't drop below 0 before the cast. @@ -846,31 +887,24 @@ uint32_t IRrecv::ticksLow(const uint32_t usecs, const uint8_t tolerance, 0)); } -// Calculate the upper bound of the nr. of ticks. -// -// Args: -// usecs: Nr. of uSeconds. -// tolerance: Percent as an integer. e.g. 10 is 10% -// delta: A non-scaling amount to increase usecs by. -// Returns: -// Nr. of ticks. +/// Calculate the upper bound of the nr. of ticks. +/// @param[in] usecs Nr. of uSeconds. +/// @param[in] tolerance Percent as an integer. e.g. 10 is 10% +/// @param[in] delta A non-scaling amount to increase usecs by. +/// @return Nr. of ticks. uint32_t IRrecv::ticksHigh(const uint32_t usecs, const uint8_t tolerance, const uint16_t delta) { return ((uint32_t)(usecs * (1.0 + _validTolerance(tolerance) / 100.0)) + 1 + delta); } -// Check if we match a pulse(measured) with the desired within -// +/-tolerance percent and/or +/- a fixed delta range. -// -// Args: -// measured: The recorded period of the signal pulse. -// desired: The expected period (in useconds) we are matching against. -// tolerance: A percentage expressed as an integer. e.g. 10 is 10%. -// delta: A non-scaling (+/-) error margin (in useconds). -// -// Returns: -// Boolean: true if it matches, false if it doesn't. +/// Check if we match a pulse(measured) with the desired within +/// +/-tolerance percent and/or +/- a fixed delta range. +/// @param[in] measured The recorded period of the signal pulse. +/// @param[in] desired The expected period (in usecs) we are matching against. +/// @param[in] tolerance A percentage expressed as an integer. e.g. 10 is 10%. +/// @param[in] delta A non-scaling (+/-) error margin (in useconds). +/// @return A Boolean. true if it matches, false if it doesn't. bool IRrecv::match(uint32_t measured, uint32_t desired, uint8_t tolerance, uint16_t delta) { measured *= kRawTick; // Convert to uSecs. @@ -895,18 +929,13 @@ bool IRrecv::match(uint32_t measured, uint32_t desired, uint8_t tolerance, measured <= ticksHigh(desired, tolerance, delta)); } -// Check if we match a pulse(measured) of at least desired within -// tolerance percent and/or a fixed delta margin. -// -// Args: -// measured: The recorded period of the signal pulse. -// desired: The expected period (in useconds) we are matching against. -// tolerance: A percentage expressed as an integer. e.g. 10 is 10%. -// delta: A non-scaling amount to reduce usecs by. - -// -// Returns: -// Boolean: true if it matches, false if it doesn't. +/// Check if we match a pulse(measured) of at least desired within +/// tolerance percent and/or a fixed delta margin. +/// @param[in] measured The recorded period of the signal pulse. +/// @param[in] desired The expected period (in usecs) we are matching against. +/// @param[in] tolerance A percentage expressed as an integer. e.g. 10 is 10%. +/// @param[in] delta A non-scaling amount to reduce usecs by. +/// @return A Boolean. true if it matches, false if it doesn't. bool IRrecv::matchAtLeast(uint32_t measured, uint32_t desired, uint8_t tolerance, uint16_t delta) { measured *= kRawTick; // Convert to uSecs. @@ -942,17 +971,13 @@ bool IRrecv::matchAtLeast(uint32_t measured, uint32_t desired, tolerance, delta); } -// Check if we match a mark signal(measured) with the desired within -// +/-tolerance percent, after an expected is excess is added. -// -// Args: -// measured: The recorded period of the signal pulse. -// desired: The expected period (in useconds) we are matching against. -// tolerance: A percentage expressed as an integer. e.g. 10 is 10%. -// excess: Nr. of useconds. -// -// Returns: -// Boolean: true if it matches, false if it doesn't. +/// Check if we match a mark signal(measured) with the desired within +/// +/-tolerance percent, after an expected is excess is added. +/// @param[in] measured The recorded period of the signal pulse. +/// @param[in] desired The expected period (in usecs) we are matching against. +/// @param[in] tolerance A percentage expressed as an integer. e.g. 10 is 10%. +/// @param[in] excess A non-scaling amount to reduce usecs by. +/// @return A Boolean. true if it matches, false if it doesn't. bool IRrecv::matchMark(uint32_t measured, uint32_t desired, uint8_t tolerance, int16_t excess) { DPRINT("Matching MARK "); @@ -965,17 +990,13 @@ bool IRrecv::matchMark(uint32_t measured, uint32_t desired, uint8_t tolerance, return match(measured, desired + excess, tolerance); } -// Check if we match a space signal(measured) with the desired within -// +/-tolerance percent, after an expected is excess is removed. -// -// Args: -// measured: The recorded period of the signal pulse. -// desired: The expected period (in useconds) we are matching against. -// tolerance: A percentage expressed as an integer. e.g. 10 is 10%. -// excess: Nr. of useconds. -// -// Returns: -// Boolean: true if it matches, false if it doesn't. +/// Check if we match a space signal(measured) with the desired within +/// +/-tolerance percent, after an expected is excess is removed. +/// @param[in] measured The recorded period of the signal pulse. +/// @param[in] desired The expected period (in usecs) we are matching against. +/// @param[in] tolerance A percentage expressed as an integer. e.g. 10 is 10%. +/// @param[in] excess A non-scaling amount to reduce usecs by. +/// @return A Boolean. true if it matches, false if it doesn't. bool IRrecv::matchSpace(uint32_t measured, uint32_t desired, uint8_t tolerance, int16_t excess) { DPRINT("Matching SPACE "); @@ -988,23 +1009,12 @@ bool IRrecv::matchSpace(uint32_t measured, uint32_t desired, uint8_t tolerance, return match(measured, desired - excess, tolerance); } -/* ----------------------------------------------------------------------- - * hashdecode - decode an arbitrary IR code. - * Instead of decoding using a standard encoding scheme - * (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value. - * - * The algorithm: look at the sequence of MARK signals, and see if each one - * is shorter (0), the same length (1), or longer (2) than the previous. - * Do the same with the SPACE signals. Hash the resulting sequence of 0's, - * 1's, and 2's to a 32-bit value. This will give a unique value for each - * different code (probably), for most code systems. - * - * http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html - */ - -// Compare two tick values, returning 0 if newval is shorter, -// 1 if newval is equal, and 2 if newval is longer -// Use a tolerance of 20% +#if DECODE_HASH +/// Compare two tick values. +/// @param[in] oldval Nr. of ticks. +/// @param[in] newval Nr. of ticks. +/// @return 0 if newval is shorter, 1 if it is equal, & 2 if it is longer. +/// @note Use a tolerance of 20% uint16_t IRrecv::compare(const uint16_t oldval, const uint16_t newval) { if (newval < oldval * 0.8) return 0; @@ -1014,11 +1024,18 @@ uint16_t IRrecv::compare(const uint16_t oldval, const uint16_t newval) { return 1; } -#if DECODE_HASH -/* Converts the raw code values into a 32-bit hash code. - * Hopefully this code is unique for each button. - * This isn't a "real" decoding, just an arbitrary value. - */ +/// Decode any arbitrary IR message into a 32-bit code value. +/// Instead of decoding using a standard encoding scheme +/// (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value. +/// +/// The algorithm: look at the sequence of MARK signals, and see if each one +/// is shorter (0), the same length (1), or longer (2) than the previous. +/// Do the same with the SPACE signals. Hash the resulting sequence of 0's, +/// 1's, and 2's to a 32-bit value. This will give a unique value for each +/// different code (probably), for most code systems. +/// @see http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html +/// @note This isn't a "real" decoding, just an arbitrary value. +/// Hopefully this code is unique for each button. bool IRrecv::decodeHash(decode_results *results) { // Require at least some samples to prevent triggering on noise if (results->rawlen < _unknown_threshold) return false; @@ -1041,23 +1058,21 @@ bool IRrecv::decodeHash(decode_results *results) { } #endif // DECODE_HASH -// Match & decode the typical data section of an IR message. -// The data value is stored in the least significant bits reguardless of the -// bit ordering requested. -// -// Args: -// data_ptr: A pointer to where we are at in the capture buffer. -// nbits: Nr. of data bits we expect. -// onemark: Nr. of uSeconds in an expected mark signal for a '1' bit. -// onespace: Nr. of uSeconds in an expected space signal for a '1' bit. -// zeromark: Nr. of uSeconds in an expected mark signal for a '0' bit. -// zerospace: Nr. of uSeconds in an expected space signal for a '0' bit. -// tolerance: Percentage error margin to allow. (Def: kUseDefTol) -// excess: Nr. of useconds. (Def: kMarkExcess) -// MSBfirst: Bit order to save the data in. (Def: true) -// Returns: -// A match_result_t structure containing the success (or not), the data value, -// and how many buffer entries were used. +/// Match & decode the typical data section of an IR message. +/// The data value is stored in the least significant bits reguardless of the +/// bit ordering requested. +/// @param[in] data_ptr A pointer to where we are at in the capture buffer. +/// @param[in] nbits Nr. of data bits we expect. +/// @param[in] onemark Nr. of uSeconds in an expected mark signal for a '1' bit. +/// @param[in] onespace Nr. of uSecs in an expected space signal for a '1' bit. +/// @param[in] zeromark Nr. of uSecs in an expected mark signal for a '0' bit. +/// @param[in] zerospace Nr. of uSecs in an expected space signal for a '0' bit. +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @return A match_result_t structure containing the success (or not), the +/// data value, and how many buffer entries were used. match_result_t IRrecv::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, @@ -1084,24 +1099,22 @@ match_result_t IRrecv::matchData( return result; } -// Match & decode the typical data section of an IR message. -// The bytes are stored at result_ptr. The first byte in the result equates to -// the first byte encountered, and so on. -// -// Args: -// data_ptr: A pointer to where we are at in the capture buffer. -// result_ptr: A pointer to where to start storing the bytes we decoded. -// remaining: The size of the capture buffer are remaining. -// nbytes: Nr. of data bytes we expect. -// onemark: Nr. of uSeconds in an expected mark signal for a '1' bit. -// onespace: Nr. of uSeconds in an expected space signal for a '1' bit. -// zeromark: Nr. of uSeconds in an expected mark signal for a '0' bit. -// zerospace: Nr. of uSeconds in an expected space signal for a '0' bit. -// tolerance: Percentage error margin to allow. (Def: kUseDefTol) -// excess: Nr. of useconds. (Def: kMarkExcess) -// MSBfirst: Bit order to save the data in. (Def: true) -// Returns: -// A uint16_t: If successful, how many buffer entries were used. Otherwise 0. +/// Match & decode the typical data section of an IR message. +/// The bytes are stored at result_ptr. The first byte in the result equates to +/// the first byte encountered, and so on. +/// @param[in] data_ptr A pointer to where we are at in the capture buffer. +/// @param[out] result_ptr A ptr to where to start storing the bytes we decoded. +/// @param[in] remaining The size of the capture buffer remaining. +/// @param[in] nbytes Nr. of data bytes we expect. +/// @param[in] onemark Nr. of uSeconds in an expected mark signal for a '1' bit. +/// @param[in] onespace Nr. of uSecs in an expected space signal for a '1' bit. +/// @param[in] zeromark Nr. of uSecs in an expected mark signal for a '0' bit. +/// @param[in] zerospace Nr. of uSecs in an expected space signal for a '0' bit. +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @return If successful, how many buffer entries were used. Otherwise 0. uint16_t IRrecv::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, @@ -1122,33 +1135,36 @@ uint16_t IRrecv::matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr, return offset; } -// Match & decode a generic/typical IR message. -// The data is stored in result_bits_ptr or result_bytes_ptr depending on flag -// `use_bits`. -// Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip -// that requirement. -// -// Args: -// data_ptr: A pointer to where we are at in the capture buffer. -// result_bits_ptr: A pointer to where to start storing the bits we decoded. -// result_bytes_ptr: A pointer to where to start storing the bytes we decoded. -// use_bits: A flag indicating if we are to decode bits or bytes. -// remaining: The size of the capture buffer are remaining. -// nbits: Nr. of data bits we expect. -// hdrmark: Nr. of uSeconds for the expected header mark signal. -// hdrspace: Nr. of uSeconds for the expected header space signal. -// onemark: Nr. of uSeconds in an expected mark signal for a '1' bit. -// onespace: Nr. of uSeconds in an expected space signal for a '1' bit. -// zeromark: Nr. of uSeconds in an expected mark signal for a '0' bit. -// zerospace: Nr. of uSeconds in an expected space signal for a '0' bit. -// footermark: Nr. of uSeconds for the expected footer mark signal. -// footerspace: Nr. of uSeconds for the expected footer space/gap signal. -// atleast: Is the match on the footerspace a matchAtLeast or matchSpace? -// tolerance: Percentage error margin to allow. (Def: kUseDefTol) -// excess: Nr. of useconds. (Def: kMarkExcess) -// MSBfirst: Bit order to save the data in. (Def: true) -// Returns: -// A uint16_t: If successful, how many buffer entries were used. Otherwise 0. +/// Match & decode a generic/typical IR message. +/// The data is stored in result_bits_ptr or result_bytes_ptr depending on flag +/// `use_bits`. +/// @note Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean +/// skip that requirement. +/// +/// @param[in] data_ptr A pointer to where we are at in the capture buffer. +/// @param[out] result_bits_ptr A pointer to where to start storing the bits we +/// decoded. +/// @param[out] result_bytes_ptr A pointer to where to start storing the bytes +/// we decoded. +/// @param[in] use_bits A flag indicating if we are to decode bits or bytes. +/// @param[in] remaining The size of the capture buffer remaining. +/// @param[in] nbits Nr. of data bits we expect. +/// @param[in] hdrmark Nr. of uSeconds for the expected header mark signal. +/// @param[in] hdrspace Nr. of uSeconds for the expected header space signal. +/// @param[in] onemark Nr. of uSeconds in an expected mark signal for a '1' bit. +/// @param[in] onespace Nr. of uSecs in an expected space signal for a '1' bit. +/// @param[in] zeromark Nr. of uSecs in an expected mark signal for a '0' bit. +/// @param[in] zerospace Nr. of uSecs in an expected space signal for a '0' bit. +/// @param[in] footermark Nr. of uSeconds for the expected footer mark signal. +/// @param[in] footerspace Nr. of uSeconds for the expected footer space/gap +/// signal. +/// @param[in] atleast Is the match on the footerspace a matchAtLeast or +/// matchSpace? +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @return If successful, how many buffer entries were used. Otherwise 0. uint16_t IRrecv::_matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_bytes_ptr, @@ -1224,30 +1240,31 @@ uint16_t IRrecv::_matchGeneric(volatile uint16_t *data_ptr, return offset; } -// Match & decode a generic/typical <= 64bit IR message. -// The data is stored at result_ptr. -// Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip -// that requirement. -// -// Args: -// data_ptr: A pointer to where we are at in the capture buffer. -// result_ptr: A pointer to where to start storing the bits we decoded. -// remaining: The size of the capture buffer are remaining. -// nbits: Nr. of data bits we expect. -// hdrmark: Nr. of uSeconds for the expected header mark signal. -// hdrspace: Nr. of uSeconds for the expected header space signal. -// onemark: Nr. of uSeconds in an expected mark signal for a '1' bit. -// onespace: Nr. of uSeconds in an expected space signal for a '1' bit. -// zeromark: Nr. of uSeconds in an expected mark signal for a '0' bit. -// zerospace: Nr. of uSeconds in an expected space signal for a '0' bit. -// footermark: Nr. of uSeconds for the expected footer mark signal. -// footerspace: Nr. of uSeconds for the expected footer space/gap signal. -// atleast: Is the match on the footerspace a matchAtLeast or matchSpace? -// tolerance: Percentage error margin to allow. (Def: kUseDefTol) -// excess: Nr. of useconds. (Def: kMarkExcess) -// MSBfirst: Bit order to save the data in. (Def: true) -// Returns: -// A uint16_t: If successful, how many buffer entries were used. Otherwise 0. +/// Match & decode a generic/typical <= 64bit IR message. +/// The data is stored at result_ptr. +/// @note Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean +/// skip that requirement. +/// +/// @param[in] data_ptr: A pointer to where we are at in the capture buffer. +/// @param[out] result_ptr A ptr to where to start storing the bits we decoded. +/// @param[in] remaining The size of the capture buffer remaining. +/// @param[in] nbits Nr. of data bits we expect. +/// @param[in] hdrmark Nr. of uSeconds for the expected header mark signal. +/// @param[in] hdrspace Nr. of uSeconds for the expected header space signal. +/// @param[in] onemark Nr. of uSeconds in an expected mark signal for a '1' bit. +/// @param[in] onespace Nr. of uSecs in an expected space signal for a '1' bit. +/// @param[in] zeromark Nr. of uSecs in an expected mark signal for a '0' bit. +/// @param[in] zerospace Nr. of uSecs in an expected space signal for a '0' bit. +/// @param[in] footermark Nr. of uSeconds for the expected footer mark signal. +/// @param[in] footerspace Nr. of uSeconds for the expected footer space/gap +/// signal. +/// @param[in] atleast Is the match on the footerspace a matchAtLeast or +/// matchSpace? +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @return If successful, how many buffer entries were used. Otherwise 0. uint16_t IRrecv::matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, @@ -1270,31 +1287,31 @@ uint16_t IRrecv::matchGeneric(volatile uint16_t *data_ptr, tolerance, excess, MSBfirst); } -// Match & decode a generic/typical > 64bit IR message. -// The bytes are stored at result_ptr. The first byte in the result equates to -// the first byte encountered, and so on. -// Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip -// that requirement. -// -// Args: -// data_ptr: A pointer to where we are at in the capture buffer. -// result_ptr: A pointer to where to start storing the bytes we decoded. -// remaining: The size of the capture buffer are remaining. -// nbits: Nr. of data bits we expect. -// hdrmark: Nr. of uSeconds for the expected header mark signal. -// hdrspace: Nr. of uSeconds for the expected header space signal. -// onemark: Nr. of uSeconds in an expected mark signal for a '1' bit. -// onespace: Nr. of uSeconds in an expected space signal for a '1' bit. -// zeromark: Nr. of uSeconds in an expected mark signal for a '0' bit. -// zerospace: Nr. of uSeconds in an expected space signal for a '0' bit. -// footermark: Nr. of uSeconds for the expected footer mark signal. -// footerspace: Nr. of uSeconds for the expected footer space/gap signal. -// atleast: Is the match on the footerspace a matchAtLeast or matchSpace? -// tolerance: Percentage error margin to allow. (Def: kUseDefTol) -// excess: Nr. of useconds. (Def: kMarkExcess) -// MSBfirst: Bit order to save the data in. (Def: true) -// Returns: -// A uint16_t: If successful, how many buffer entries were used. Otherwise 0. +/// Match & decode a generic/typical > 64bit IR message. +/// The bytes are stored at result_ptr. The first byte in the result equates to +/// the first byte encountered, and so on. +/// @note Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean +/// skip that requirement. +/// @param[in] data_ptr: A pointer to where we are at in the capture buffer. +/// @param[out] result_ptr A ptr to where to start storing the bytes we decoded. +/// @param[in] remaining The size of the capture buffer remaining. +/// @param[in] nbits Nr. of data bits we expect. +/// @param[in] hdrmark Nr. of uSeconds for the expected header mark signal. +/// @param[in] hdrspace Nr. of uSeconds for the expected header space signal. +/// @param[in] onemark Nr. of uSeconds in an expected mark signal for a '1' bit. +/// @param[in] onespace Nr. of uSecs in an expected space signal for a '1' bit. +/// @param[in] zeromark Nr. of uSecs in an expected mark signal for a '0' bit. +/// @param[in] zerospace Nr. of uSecs in an expected space signal for a '0' bit. +/// @param[in] footermark Nr. of uSeconds for the expected footer mark signal. +/// @param[in] footerspace Nr. of uSeconds for the expected footer space/gap +/// signal. +/// @param[in] atleast Is the match on the footerspace a matchAtLeast or +/// matchSpace? +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @return If successful, how many buffer entries were used. Otherwise 0. uint16_t IRrecv::matchGeneric(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, @@ -1317,31 +1334,31 @@ uint16_t IRrecv::matchGeneric(volatile uint16_t *data_ptr, tolerance, excess, MSBfirst); } -// Match & decode a generic/typical constant bit time <= 64bit IR message. -// The data is stored at result_ptr. -// Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip -// that requirement. -// -// Args: -// data_ptr: A pointer to where we are at in the capture buffer. -// result_ptr: A pointer to where to start storing the bits we decoded. -// remaining: The size of the capture buffer are remaining. -// nbits: Nr. of data bits we expect. -// hdrmark: Nr. of uSeconds for the expected header mark signal. -// hdrspace: Nr. of uSeconds for the expected header space signal. -// one: Nr. of uSeconds in an expected mark signal for a '1' bit. -// zero: Nr. of uSeconds in an expected mark signal for a '0' bit. -// footermark: Nr. of uSeconds for the expected footer mark signal. -// footerspace: Nr. of uSeconds for the expected footer space/gap signal. -// atleast: Is the match on the footerspace a matchAtLeast or matchSpace? -// tolerance: Percentage error margin to allow. (Def: kUseDefTol) -// excess: Nr. of useconds. (Def: kMarkExcess) -// MSBfirst: Bit order to save the data in. (Def: true) -// Returns: -// A uint16_t: If successful, how many buffer entries were used. Otherwise 0. -// -// Note: one + zero add up to the total time for a bit. -// e.g. mark(one) + space(zero) is a `1`, mark(zero) + space(one) is a `0`. +/// Match & decode a generic/typical constant bit time <= 64bit IR message. +/// The data is stored at result_ptr. +/// @note Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean +/// skip that requirement. +/// @param[in] data_ptr A pointer to where we are at in the capture buffer. +/// @note `data_ptr` is assumed to be pointing to a "Mark", not a "Space". +/// @param[out] result_ptr A ptr to where to start storing the bits we decoded. +/// @param[in] remaining The size of the capture buffer remaining. +/// @param[in] nbits Nr. of data bits we expect. +/// @param[in] hdrmark Nr. of uSeconds for the expected header mark signal. +/// @param[in] hdrspace Nr. of uSeconds for the expected header space signal. +/// @param[in] one Nr. of uSeconds in an expected mark signal for a '1' bit. +/// @param[in] zero Nr. of uSeconds in an expected mark signal for a '0' bit. +/// @param[in] footermark Nr. of uSeconds for the expected footer mark signal. +/// @param[in] footerspace Nr. of uSeconds for the expected footer space/gap +/// signal. +/// @param[in] atleast Is the match on the footerspace a matchAtLeast or +/// matchSpace? +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @return If successful, how many buffer entries were used. Otherwise 0. +/// @note Parameters one + zero add up to the total time for a bit. +/// e.g. mark(one) + space(zero) is a `1`, mark(zero) + space(one) is a `0`. uint16_t IRrecv::matchGenericConstBitTime(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, @@ -1403,33 +1420,32 @@ uint16_t IRrecv::matchGenericConstBitTime(volatile uint16_t *data_ptr, return offset; } -// Match & decode a Manchester Code <= 64bit IR message. -// The data is stored at result_ptr. -// Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip -// that requirement. -// -// Args: -// data_ptr: A pointer to where we are at in the capture buffer. -// NOTE: It is assumed to be pointing to a "Mark", not a "Space". -// result_ptr: A pointer to where to start storing the bits we decoded. -// remaining: The size of the capture buffer are remaining. -// nbits: Nr. of data bits we expect. -// hdrmark: Nr. of uSeconds for the expected header mark signal. -// hdrspace: Nr. of uSeconds for the expected header space signal. -// half_period: Nr. of uSeconds for half the clock's period. (1/2 wavelength) -// footermark: Nr. of uSeconds for the expected footer mark signal. -// footerspace: Nr. of uSeconds for the expected footer space/gap signal. -// atleast: Is the match on the footerspace a matchAtLeast or matchSpace? -// tolerance: Percentage error margin to allow. (Def: kUseDefTol) -// excess: Nr. of useconds. (Def: kMarkExcess) -// MSBfirst: Bit order to save the data in. (Def: true) -// GEThomas: Use G.E. Thomas (true/default) or IEEE 802.3 (false) convention? -// Returns: -// A uint16_t: If successful, how many buffer entries were used. Otherwise 0. -// -// Ref: -// https://en.wikipedia.org/wiki/Manchester_code -// http://ww1.microchip.com/downloads/en/AppNotes/Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf +/// Match & decode a Manchester Code <= 64bit IR message. +/// The data is stored at result_ptr. +/// @note Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean +/// skip that requirement. +/// @param[in] data_ptr A pointer to where we are at in the capture buffer. +/// @note `data_ptr` is assumed to be pointing to a "Mark", not a "Space". +/// @param[out] result_ptr A ptr to where to start storing the bits we decoded. +/// @param[in] remaining The size of the capture buffer remaining. +/// @param[in] nbits Nr. of data bits we expect. +/// @param[in] hdrmark Nr. of uSeconds for the expected header mark signal. +/// @param[in] hdrspace Nr. of uSeconds for the expected header space signal. +/// @param[in] half_period Nr. of uSeconds for half the clock's period. +/// i.e. 1/2 wavelength +/// @param[in] footermark Nr. of uSeconds for the expected footer mark signal. +/// @param[in] footerspace Nr. of uSeconds for the expected footer space/gap +/// signal. +/// @param[in] atleast Is the match on the footerspace a matchAtLeast or +/// matchSpace? +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @param[in] GEThomas Use G.E. Thomas (true) or IEEE 802.3 (false) convention? +/// @return If successful, how many buffer entries were used. Otherwise 0. +/// @see https://en.wikipedia.org/wiki/Manchester_code +/// @see http://ww1.microchip.com/downloads/en/AppNotes/Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf uint16_t IRrecv::matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, @@ -1445,15 +1461,12 @@ uint16_t IRrecv::matchManchester(volatile const uint16_t *data_ptr, const bool MSBfirst, const bool GEThomas) { uint16_t offset = 0; - uint64_t data = 0; - uint16_t nr_of_half_periods = GEThomas; - // 2 per bit, and 4 extra for the timing sync. - uint16_t expected_half_periods = 2 * nbits + 4; - bool currentBit = false; + uint16_t bank = 0; + uint16_t entry = 0; // Calculate how much remaining buffer is required. - // Shortest case. Longest case is 2 * nbits. - uint16_t min_remaining = nbits + 2; + // Shortest case is nbits. Longest case is 2 * nbits. + uint16_t min_remaining = nbits; if (hdrmark) min_remaining++; if (hdrspace) min_remaining++; @@ -1464,86 +1477,45 @@ uint16_t IRrecv::matchManchester(volatile const uint16_t *data_ptr, if (remaining < min_remaining) return 0; // Nope, so abort. // Header - if (hdrmark && !matchMark(*(data_ptr + offset++), hdrmark, tolerance, excess)) - return 0; - // Manchester Code always has a guaranteed 2x half_period (T2) at the start - // of the data section. e.g. a sync header. If it is a GEThomas-style, then - // it is space(T);mark(2xT);space(T), thus we need to check for that space - // plus any requested "header" space. - if ((hdrspace || GEThomas) && - !matchSpace(*(data_ptr + offset++), - hdrspace + ((GEThomas) ? half_period : 0), tolerance, excess)) - return 0; - - // Data - // Loop until we find a 'long' pulse. This is the timing sync per protocol. - while ((offset < remaining) && (nr_of_half_periods < expected_half_periods) && - !match(*(data_ptr + offset), half_period * 2, tolerance, excess)) { - // Was it not a short pulse? - if (!match(*(data_ptr + offset), half_period, tolerance, excess)) - return 0; - nr_of_half_periods++; - offset++; - } - - // Data (cont.) - - // We are now pointing to the first 'long' pulse. - // Loop through the buffer till we run out of buffer, or nr of half periods. - while (offset < remaining && nr_of_half_periods < expected_half_periods) { - // Only if there is enough half_periods left for a long pulse & - // Is it a 'long' pulse? - if (nr_of_half_periods < expected_half_periods - 1 && - match(*(data_ptr + offset), half_period * 2, tolerance, excess)) { - // Yes, so invert the value we will append. - currentBit = !currentBit; - nr_of_half_periods += 2; // A 'long' pulse is two half periods. - offset++; - // Append the bit value. - data <<= 1; - data |= currentBit; - } else if (match(*(data_ptr + offset), half_period, tolerance, excess)) { - // or is it part of a 'short' pulse pair? - nr_of_half_periods++; - offset++; - // Look for the second half of the 'short' pulse pair. - // Do we have enough buffer or nr of half periods? - if (offset < remaining && nr_of_half_periods < expected_half_periods) { - // We do, so look for it. - if (match(*(data_ptr + offset), half_period, tolerance, excess)) { - // Found it! - nr_of_half_periods++; - // No change of the polarity of the bit we will append. - // Append the bit value. - data <<= 1; - data |= currentBit; - offset++; - } else { - // It's not what we expected. - return 0; - } + if (hdrmark) { + entry = *(data_ptr + offset++); + if (!hdrspace) { // If we have no Header Space ... + // Do we have a data 'mark' half period merged with the header mark? + if (matchMark(entry, hdrmark + half_period, + tolerance, excess)) { + // Looks like we do. + bank = entry * kRawTick - hdrmark; + } else if (!matchMark(entry, hdrmark, tolerance, excess)) { + return 0; // It's not a normal header mark, so fail. } - } else if (nr_of_half_periods == expected_half_periods - 1 && - matchAtLeast(*(data_ptr + offset), half_period, tolerance, - excess)) { - // Special case when we are at the end of the expected nr of periods. - // i.e. The pulse could be merged with the footer. - nr_of_half_periods++; - break; - } else { - // It's neither, so abort. - return 0; + } else if (!matchMark(entry, hdrmark, tolerance, excess)) { + return 0; // It's not a normal header mark, so fail. + } + } + if (hdrspace) { + entry = *(data_ptr + offset++); + // Check to see if the header space has merged with a data space half period + if (matchSpace(entry, hdrspace + half_period, tolerance, excess)) { + // Looks like we do. + bank = entry * kRawTick - hdrspace; + } else if (!matchSpace(entry, hdrspace, tolerance, excess)) { + return 0; // It's not a normal header space, so fail. } } - // Did we collect the expected amount of data? - if (nr_of_half_periods < expected_half_periods) return 0; + if (!match(bank / kRawTick, half_period, tolerance, excess)) bank = 0; + // Data + uint16_t used = matchManchesterData(data_ptr + offset, result_ptr, + remaining - offset, nbits, half_period, + bank, tolerance, excess, MSBfirst, + GEThomas); + if (!used) return 0; // Data did match. + offset += used; // Footer if (footermark && !(matchMark(*(data_ptr + offset), footermark + half_period, tolerance, excess) || - matchMark(*(data_ptr + offset), footermark, - tolerance, excess))) + matchMark(*(data_ptr + offset), footermark, tolerance, excess))) return 0; offset++; // If we have something still to match & haven't reached the end of the buffer @@ -1552,15 +1524,127 @@ uint16_t IRrecv::matchManchester(volatile const uint16_t *data_ptr, if (!matchAtLeast(*(data_ptr + offset), footerspace, tolerance, excess)) return 0; } else { - if (!matchSpace(*(data_ptr + offset), footerspace, tolerance, excess)) + if (!matchSpace(*(data_ptr + offset), footerspace, tolerance, excess) && + !matchSpace(*(data_ptr + offset), footerspace + half_period, + tolerance, excess)) return 0; } offset++; } + return offset; +} + +/// Match & decode a Manchester Code data (<= 64bits. +/// @param[in] data_ptr A pointer to where we are at in the capture buffer. +/// @note `data_ptr` is assumed to be pointing to a "Mark", not a "Space". +/// @param[out] result_ptr A ptr to where to start storing the bits we decoded. +/// @param[in] remaining The size of the capture buffer remaining. +/// @param[in] nbits Nr. of data bits we expect. +/// @param[in] half_period Nr. of uSeconds for half the clock's period. +/// i.e. 1/2 wavelength +/// @param[in] tolerance Percentage error margin to allow. (Default: kUseDefTol) +/// @param[in] starting_balance Amount of uSeconds to assume exists prior to +/// the current value pointed too. +/// @param[in] excess Nr. of uSeconds. (Def: kMarkExcess) +/// @param[in] MSBfirst Bit order to save the data in. (Def: true) +/// true is Most Significant Bit First Order, false is Least Significant First +/// @param[in] GEThomas Use G.E. Thomas (true) or IEEE 802.3 (false) convention? +/// @return If successful, how many buffer entries were used. Otherwise 0. +/// @see https://en.wikipedia.org/wiki/Manchester_code +/// @see http://ww1.microchip.com/downloads/en/AppNotes/Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf +/// @todo Clean up and optimise this. It is just "get it working code" atm. +uint16_t IRrecv::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, + const uint8_t tolerance, + const int16_t excess, + const bool MSBfirst, + const bool GEThomas) { + uint16_t offset = 0; + uint64_t data = 0; + uint16_t nr_half_periods = 0; + const uint16_t expected_half_periods = nbits * 2; + // Flip the bit if we have a starting balance. ie. Carry over from the header. + bool currentBit = starting_balance ? !GEThomas : GEThomas; + const uint16_t raw_half_period = half_period / kRawTick; + + // Calculate how much remaining buffer is required. + // Shortest case is nbits. Longest case is 2 * nbits. + uint16_t min_remaining = nbits; + + // Check if there is enough capture buffer to possibly have the message. + if (remaining < min_remaining) return 0; // Nope, so abort. + + // Convert to ticks. Optimisation: Saves on math/extra instructions later. + uint16_t bank = starting_balance / kRawTick; + + // Data + // Loop through the buffer till we run out of buffer, or nr of half periods. + // Possible patterns are: + // short + short = 1 bit (Add the value of the previous bit again) + // short + long + short = 2 bits (Add the previous bit again, then flip & add) + // short + long + long + short = 3 bits (add prev, flip & add, flip & add) + // We can't start with a long. + // + // The general approach is thus: + // Check we have a short interval, next or in the bank. + // If the next timing value is long, act according and reset the bank to + // a short balance. + // or + // If it is short, act accordingly and declare the bank empty. + // Repeat. + while ((offset < remaining || bank) && + nr_half_periods < expected_half_periods) { + // Get the next entry if we haven't anything existing to process. + if (!bank) bank = *(data_ptr + offset++); + // Check if we don't have a short interval. + if (!match(bank, half_period, tolerance, excess)) return 0; // Not valid. + // We've succeeded in matching half a period, so count it. + nr_half_periods++; + // We've now used up our bank, so refill it with the next item, unless we + // are at the end of the capture buffer. + // If we are assume a single half period of "space". + if (offset < remaining) + bank = *(data_ptr + offset++); + else if (offset == remaining) + bank = raw_half_period; + else + return 0; // We are out of buffer, so abort! + + // Shift the data along and add our new bit. + data <<= 1; + data |= currentBit; + + // Check if we have a long interval. + if (match(bank, half_period * 2, tolerance, excess)) { + // It is, so flip the bit we need to append, and remove a half_period of + // time from the bank. + currentBit = !currentBit; + bank -= raw_half_period; + } else if (match(bank, half_period, tolerance, excess)) { + // It is a short interval, so eat up all the time and move on. + bank = 0; + } else if (nr_half_periods == expected_half_periods - 1 && + matchAtLeast(bank, half_period, tolerance, excess)) { + // We are at the end of the data & it is a short interval, so eat up all + // the time and move on. + bank = 0; + // Reduce the offset as we are at the end of the data doing a + // matchAtLeast() because we could be processing part of a footer. + offset--; + } else { + // The length isn't what we expected (neither long or short), so bail. + return 0; + } + nr_half_periods++; + } // Clean up and process the data. if (!MSBfirst) data = reverseBits(data, nbits); - // Trim the data to size to remove timing sync. + // Trim the data to size. *result_ptr = GETBITS64(data, 0, nbits); return offset; } diff --git a/lib/IRremoteESP8266-2.7.7/src/IRrecv.h b/lib/IRremoteESP8266-2.7.8/src/IRrecv.h similarity index 93% rename from lib/IRremoteESP8266-2.7.7/src/IRrecv.h rename to lib/IRremoteESP8266-2.7.8/src/IRrecv.h index 2894683ac..36da8df1b 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRrecv.h +++ b/lib/IRremoteESP8266-2.7.8/src/IRrecv.h @@ -64,7 +64,8 @@ const uint16_t kStateSizeMax = 0; #endif // Types -// information for the interrupt handler + +/// Information for the interrupt handler typedef struct { uint8_t recvpin; // pin for IR data from detector uint8_t rcvstate; // state machine @@ -78,7 +79,7 @@ typedef struct { uint8_t timeout; // Nr. of milliSeconds before we give up. } irparams_t; -// results from a data match +/// Results from a data match typedef struct { bool success; // Was the match successful? uint64_t data; // The data found. @@ -87,7 +88,7 @@ typedef struct { // Classes -// Results returned from the decoder +/// Results returned from the decoder class decode_results { public: decode_type_t decode_type; // NEC, SONY, RC5, UNKNOWN @@ -109,7 +110,7 @@ class decode_results { bool repeat; // Is the result a repeat code? }; -// main class for receiving IR +/// Class for receiving IR messages. class IRrecv { public: #if defined(ESP32) @@ -235,6 +236,16 @@ class IRrecv { const uint8_t tolerance = kUseDefTol, const int16_t excess = kMarkExcess, const bool MSBfirst = true); + 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); uint16_t matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, @@ -251,7 +262,7 @@ class IRrecv { const bool GEThomas = true); void crudeNoiseFilter(decode_results *results, const uint16_t floor = 0); bool decodeHash(decode_results *results); -#if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || SEND_SANYO) +#if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO) bool decodeNEC(decode_results *results, uint16_t offset = kStartOffset, const uint16_t nbits = kNECBits, const bool strict = true); #endif @@ -311,9 +322,9 @@ class IRrecv { #endif #if (DECODE_RC5 || DECODE_R6 || DECODE_LASERTAG || DECODE_MWM) int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used, - uint16_t bitTime, uint8_t tolerance = kUseDefTol, - int16_t excess = kMarkExcess, uint16_t delta = 0, - uint8_t maxwidth = 3); + uint16_t bitTime, const uint8_t tolerance = kUseDefTol, + const int16_t excess = kMarkExcess, + const uint16_t delta = 0, const uint8_t maxwidth = 3); #endif #if DECODE_RC5 bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset, @@ -470,7 +481,12 @@ class IRrecv { bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset, const uint16_t nbits = kMideaBits, const bool strict = true); -#endif +#endif // DECODE_MIDEA +#if DECODE_MIDEA24 + bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset, + const uint16_t nbits = kMidea24Bits, + const bool strict = true); +#endif // DECODE_MIDEA24 #if DECODE_FUJITSU_AC bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset, const uint16_t nbits = kFujitsuAcBits, @@ -520,10 +536,10 @@ class IRrecv { const uint16_t nbits = kHaierACYRW02Bits, const bool strict = true); #endif -#if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2) +#if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC344) bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset, const uint16_t nbits = kHitachiAcBits, - const bool strict = true); + const bool strict = true, const bool MSBfirst = true); #endif #if DECODE_HITACHI_AC1 bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset, @@ -635,6 +651,16 @@ class IRrecv { const uint16_t nbits = kMultibracketsBits, const bool strict = true); #endif // DECODE_MULTIBRACKETS +#if DECODE_CORONA_AC + bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset, + const uint16_t nbits = kCoronaAcBitsShort, + const bool strict = true); +#endif // DECODE_CORONA_AC +#if DECODE_ZEPEAL +bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset, + const uint16_t nbits = kZepealBits, + const bool strict = true); +#endif // DECODE_ZEPEAL }; #endif // IRRECV_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/IRremoteESP8266.h b/lib/IRremoteESP8266-2.7.8/src/IRremoteESP8266.h similarity index 94% rename from lib/IRremoteESP8266-2.7.7/src/IRremoteESP8266.h rename to lib/IRremoteESP8266-2.7.8/src/IRremoteESP8266.h index deef5e5e5..4490baa3b 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRremoteESP8266.h +++ b/lib/IRremoteESP8266-2.7.8/src/IRremoteESP8266.h @@ -52,7 +52,7 @@ #endif // UNIT_TEST // Library Version -#define _IRREMOTEESP8266_VERSION_ "2.7.7" +#define _IRREMOTEESP8266_VERSION_ "2.7.8" // Set the language & locale for the library. See the `locale` dir for options. #ifndef _IR_LOCALE_ @@ -369,6 +369,13 @@ #define SEND_MIDEA _IR_ENABLE_DEFAULT_ #endif // SEND_MIDEA +#ifndef DECODE_MIDEA24 +#define DECODE_MIDEA24 _IR_ENABLE_DEFAULT_ +#endif // DECODE_MIDEA24 +#ifndef SEND_MIDEA24 +#define SEND_MIDEA24 _IR_ENABLE_DEFAULT_ +#endif // SEND_MIDEA24 + #ifndef DECODE_LASERTAG #define DECODE_LASERTAG _IR_ENABLE_DEFAULT_ #endif // DECODE_LASERTAG @@ -432,6 +439,13 @@ #define SEND_HITACHI_AC3 _IR_ENABLE_DEFAULT_ #endif // SEND_HITACHI_AC3 +#ifndef DECODE_HITACHI_AC344 +#define DECODE_HITACHI_AC344 _IR_ENABLE_DEFAULT_ +#endif // DECODE_HITACHI_AC344 +#ifndef SEND_HITACHI_AC344 +#define SEND_HITACHI_AC344 _IR_ENABLE_DEFAULT_ +#endif // SEND_HITACHI_AC344 + #ifndef DECODE_HITACHI_AC424 #define DECODE_HITACHI_AC424 _IR_ENABLE_DEFAULT_ #endif // DECODE_HITACHI_AC424 @@ -635,6 +649,20 @@ #define SEND_MULTIBRACKETS _IR_ENABLE_DEFAULT_ #endif // SEND_MULTIBRACKETS +#ifndef DECODE_CORONA_AC +#define DECODE_CORONA_AC _IR_ENABLE_DEFAULT_ +#endif // DECODE_CORONA_AC +#ifndef SEND_CORONA_AC +#define SEND_CORONA_AC _IR_ENABLE_DEFAULT_ +#endif // SEND_CORONA_AC + +#ifndef DECODE_ZEPEAL +#define DECODE_ZEPEAL _IR_ENABLE_DEFAULT_ +#endif // DECODE_ZEPEAL +#ifndef SEND_ZEPEAL +#define SEND_ZEPEAL _IR_ENABLE_DEFAULT_ +#endif // SEND_ZEPEAL + #if (DECODE_ARGO || DECODE_DAIKIN || DECODE_FUJITSU_AC || DECODE_GREE || \ DECODE_KELVINATOR || DECODE_MITSUBISHI_AC || DECODE_TOSHIBA_AC || \ DECODE_TROTEC || DECODE_HAIER_AC || DECODE_HITACHI_AC || \ @@ -645,7 +673,10 @@ DECODE_DAIKIN216 || DECODE_SHARP_AC || DECODE_DAIKIN160 || \ DECODE_NEOCLIMA || DECODE_DAIKIN176 || DECODE_DAIKIN128 || \ DECODE_AMCOR || DECODE_DAIKIN152 || DECODE_MITSUBISHI136 || \ - DECODE_MITSUBISHI112 || DECODE_HITACHI_AC424 || DECODE_HITACHI_AC3) + DECODE_MITSUBISHI112 || DECODE_HITACHI_AC424 || DECODE_HITACHI_AC3 || \ + DECODE_HITACHI_AC344 || DECODE_CORONA_AC) + // Add any DECODE to the above if it uses result->state (see kStateSizeMax) + // you might also want to add the protocol to hasACState function #define DECODE_AC true // We need some common infrastructure for decoding A/Cs. #else #define DECODE_AC false // We don't need that infrastructure. @@ -675,11 +706,11 @@ #ifndef ENABLE_NOISE_FILTER_OPTION #define ENABLE_NOISE_FILTER_OPTION true #endif // ENABLE_NOISE_FILTER_OPTION -/* - * Always add to the end of the list and should never remove entries - * or change order. Projects may save the type number for later usage - * so numbering should always stay the same. - */ + +/// Enumerator for defining and numbering of supported IR protocol. +/// @note Always add to the end of the list and should never remove entries +/// or change order. Projects may save the type number for later usage +/// so numbering should always stay the same. enum decode_type_t { UNKNOWN = -1, UNUSED = 0, @@ -767,15 +798,19 @@ enum decode_type_t { MULTIBRACKETS, CARRIER_AC40, CARRIER_AC64, + HITACHI_AC344, // 85 + CORONA_AC, + MIDEA24, + ZEPEAL, // Add new entries before this one, and update it to point to the last entry. - kLastDecodeType = CARRIER_AC64, + kLastDecodeType = ZEPEAL, }; // Message lengths & required repeat values const uint16_t kNoRepeat = 0; const uint16_t kSingleRepeat = 1; -const uint16_t kAirwellBits = 32; +const uint16_t kAirwellBits = 34; const uint16_t kAirwellMinRepeats = 2; const uint16_t kAiwaRcT501Bits = 15; const uint16_t kAiwaRcT501MinRepeats = kSingleRepeat; @@ -794,6 +829,10 @@ const uint16_t kCarrierAc40Bits = 40; const uint16_t kCarrierAc40MinRepeat = 2; const uint16_t kCarrierAc64Bits = 64; const uint16_t kCarrierAc64MinRepeat = kNoRepeat; +const uint16_t kCoronaAcStateLengthShort = 7; +const uint16_t kCoronaAcStateLength = kCoronaAcStateLengthShort * 3; +const uint16_t kCoronaAcBitsShort = kCoronaAcStateLengthShort * 8; +const uint16_t kCoronaAcBits = kCoronaAcStateLength * 8; const uint16_t kDaikinStateLength = 35; const uint16_t kDaikinBits = kDaikinStateLength * 8; const uint16_t kDaikinStateLengthShort = kDaikinStateLength - 8; @@ -861,6 +900,8 @@ const uint16_t kHitachiAc3StateLength = 27; const uint16_t kHitachiAc3Bits = kHitachiAc3StateLength * 8; const uint16_t kHitachiAc3MinStateLength = 15; const uint16_t kHitachiAc3MinBits = kHitachiAc3MinStateLength * 8; +const uint16_t kHitachiAc344StateLength = 43; +const uint16_t kHitachiAc344Bits = kHitachiAc344StateLength * 8; const uint16_t kHitachiAc424StateLength = 53; const uint16_t kHitachiAc424Bits = kHitachiAc424StateLength * 8; const uint16_t kInaxBits = 24; @@ -880,6 +921,8 @@ const uint16_t kLutronBits = 35; const uint16_t kMagiquestBits = 56; const uint16_t kMideaBits = 48; const uint16_t kMideaMinRepeat = kNoRepeat; +const uint16_t kMidea24Bits = 24; +const uint16_t kMidea24MinRepeat = kSingleRepeat; const uint16_t kMitsubishiBits = 16; // TODO(anyone): Verify that the Mitsubishi repeat is really needed. // Based on marcosamarinho's code. @@ -964,6 +1007,8 @@ const uint16_t kWhirlpoolAcBits = kWhirlpoolAcStateLength * 8; const uint16_t kWhirlpoolAcDefaultRepeat = kNoRepeat; const uint16_t kWhynterBits = 32; const uint8_t kVestelAcBits = 56; +const uint16_t kZepealBits = 16; +const uint16_t kZepealMinRepeat = 4; // Legacy defines. (Deprecated) diff --git a/lib/IRremoteESP8266-2.7.7/src/IRsend.cpp b/lib/IRremoteESP8266-2.7.8/src/IRsend.cpp similarity index 65% rename from lib/IRremoteESP8266-2.7.7/src/IRsend.cpp rename to lib/IRremoteESP8266-2.7.8/src/IRsend.cpp index 8995e2d33..d3e097839 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRsend.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/IRsend.cpp @@ -15,25 +15,16 @@ #endif #include "IRtimer.h" -// Originally from https://github.com/shirriff/Arduino-IRremote/ -// Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for -// sending IR code on ESP8266 - -// IRsend ---------------------------------------------------------------------- -// Create an IRsend object. -// -// Args: -// IRsendPin: Which GPIO pin to use when sending an IR command. -// inverted: *DANGER* Optional flag to invert the output. (default = false) -// e.g. LED is illuminated when GPIO is LOW rather than HIGH. -// Setting this to something other than the default could -// easily destroy your IR LED if you are overdriving it. -// Unless you *REALLY* know what you are doing, don't change this. -// use_modulation: Do we do frequency modulation during transmission? -// i.e. If not, assume a 100% duty cycle. Ignore attempts -// to change the duty cycle etc. -// Returns: -// An IRsend object. +/// Constructor for an IRsend object. +/// @param[in] IRsendPin Which GPIO pin to use when sending an IR command. +/// @param[in] inverted Optional flag to invert the output. (default = false) +/// e.g. LED is illuminated when GPIO is LOW rather than HIGH. +/// @warning Setting `inverted` to something other than the default could +/// easily destroy your IR LED if you are overdriving it. +/// Unless you *REALLY* know what you are doing, don't change this. +/// @param[in] use_modulation Do we do frequency modulation during transmission? +/// i.e. If not, assume a 100% duty cycle. Ignore attempts to change the +/// duty cycle etc. IRsend::IRsend(uint16_t IRsendPin, bool inverted, bool use_modulation) : IRpin(IRsendPin), periodOffset(kPeriodOffset) { if (inverted) { @@ -50,7 +41,7 @@ IRsend::IRsend(uint16_t IRsendPin, bool inverted, bool use_modulation) _dutycycle = kDutyMax; } -// Enable the pin for output. +/// Enable the pin for output. void IRsend::begin() { #ifndef UNIT_TEST pinMode(IRpin, OUTPUT); @@ -58,27 +49,25 @@ void IRsend::begin() { ledOff(); // Ensure the LED is in a known safe state when we start. } -// Turn off the IR LED. +/// Turn off the IR LED. void IRsend::ledOff() { #ifndef UNIT_TEST digitalWrite(IRpin, outputOff); #endif } -// Turn on the IR LED. +/// Turn on the IR LED. void IRsend::ledOn() { #ifndef UNIT_TEST digitalWrite(IRpin, outputOn); #endif } -// Calculate the period for a given frequency. (T = 1/f) -// -// Args: -// freq: Frequency in Hz. -// use_offset: Should we use the calculated offset or not? -// Returns: -// nr. of uSeconds. +/// Calculate the period for a given frequency. +/// @param[in] hz Frequency in Hz. +/// @param[in] use_offset Should we use the calculated offset or not? +/// @return nr. of uSeconds. +/// @note (T = 1/f) uint32_t IRsend::calcUSecPeriod(uint32_t hz, bool use_offset) { if (hz == 0) hz = 1; // Avoid Zero hz. Divide by Zero is nasty. uint32_t period = @@ -90,17 +79,16 @@ uint32_t IRsend::calcUSecPeriod(uint32_t hz, bool use_offset) { return std::max((uint32_t)1, period); } -// Set the output frequency modulation and duty cycle. -// -// Args: -// freq: The freq we want to modulate at. Assumes < 1000 means kHz else Hz. -// duty: Percentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. -// This is ignored if modulation is disabled at object instantiation. -// -// Note: -// Integer timing functions & math mean we can't do fractions of -// microseconds timing. Thus minor changes to the freq & duty values may have -// limited effect. You've been warned. +/// Set the output frequency modulation and duty cycle. +/// @param[in] freq The freq we want to modulate at. +/// Assumes < 1000 means kHz else Hz. +/// @param[in] duty Percentage duty cycle of the LED. +/// e.g. 25 = 25% = 1/4 on, 3/4 off. +/// If you are not sure, try 50 percent. +/// This is ignored if modulation is disabled at object instantiation. +/// @note Integer timing functions & math mean we can't do fractions of +/// microseconds timing. Thus minor changes to the freq & duty values may have +/// limited effect. You've been warned. void IRsend::enableIROut(uint32_t freq, uint8_t duty) { // Set the duty cycle to use if we want freq. modulation. if (modulation) { @@ -121,9 +109,8 @@ void IRsend::enableIROut(uint32_t freq, uint8_t duty) { } #if ALLOW_DELAY_CALLS -// An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds(). -// Args: -// usec: Nr. of uSeconds to delay for. +/// An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds(). +/// @param[in] usec Nr. of uSeconds to delay for. void IRsend::_delayMicroseconds(uint32_t usec) { // delayMicroseconds() is only accurate to 16383us. // Ref: https://www.arduino.cc/en/Reference/delayMicroseconds @@ -141,13 +128,10 @@ void IRsend::_delayMicroseconds(uint32_t usec) { } } #else // ALLOW_DELAY_CALLS -// A version of delayMicroseconds() that handles large values and does NOT use -// the watch-dog friendly delay() calls where appropriate. -// Args: -// usec: Nr. of uSeconds to delay for. -// -// NOTE: Use this only if you know what you are doing as it may cause the WDT -// to reset the ESP8266. +/// A version of delayMicroseconds() that handles large values and does NOT use +/// the watch-dog friendly delay() calls where appropriate. +/// @note Use this only if you know what you are doing as it may cause the WDT +/// to reset the ESP8266. void IRsend::_delayMicroseconds(uint32_t usec) { for (; usec > kMaxAccurateUsecDelay; usec -= kMaxAccurateUsecDelay) #ifndef UNIT_TEST @@ -157,22 +141,19 @@ void IRsend::_delayMicroseconds(uint32_t usec) { } #endif // ALLOW_DELAY_CALLS -// Modulate the IR LED for the given period (usec) and at the duty cycle set. -// -// Args: -// usec: The period of time to modulate the IR LED for, in microseconds. -// Returns: -// Nr. of pulses actually sent. -// -// Note: -// The ESP8266 has no good way to do hardware PWM, so we have to do it all -// in software. There is a horrible kludge/brilliant hack to use the second -// serial TX line to do fairly accurate hardware PWM, but it is only -// available on a single specific GPIO and only available on some modules. -// e.g. It's not available on the ESP-01 module. -// Hence, for greater compatibility & choice, we don't use that method. -// Ref: -// https://www.analysir.com/blog/2017/01/29/updated-esp8266-nodemcu-backdoor-upwm-hack-for-ir-signals/ +/// Modulate the IR LED for the given period (usec) and at the duty cycle set. +/// @param[in] usec The period of time to modulate the IR LED for, in +/// microseconds. +/// @return Nr. of pulses actually sent. +/// @note +/// The ESP8266 has no good way to do hardware PWM, so we have to do it all +/// in software. There is a horrible kludge/brilliant hack to use the second +/// serial TX line to do fairly accurate hardware PWM, but it is only +/// available on a single specific GPIO and only available on some modules. +/// e.g. It's not available on the ESP-01 module. +/// Hence, for greater compatibility & choice, we don't use that method. +/// Ref: +/// https://www.analysir.com/blog/2017/01/29/updated-esp8266-nodemcu-backdoor-upwm-hack-for-ir-signals/ uint16_t IRsend::mark(uint16_t usec) { // Handle the simple case of no required frequency modulation. if (!modulation || _dutycycle >= 100) { @@ -206,31 +187,23 @@ uint16_t IRsend::mark(uint16_t usec) { return counter; } -// Turn the pin (LED) off for a given time. -// Sends an IR space for the specified number of microseconds. -// A space is no output, so the PWM output is disabled. -// -// Args: -// time: Time in microseconds (us). +/// Turn the pin (LED) off for a given time. +/// Sends an IR space for the specified number of microseconds. +/// A space is no output, so the PWM output is disabled. +/// @param[in] time Time in microseconds (us). void IRsend::space(uint32_t time) { ledOff(); if (time == 0) return; _delayMicroseconds(time); } -// Calculate & set any offsets to account for execution times. -// -// Args: -// hz: The frequency to calibrate at >= 1000Hz. Default is 38000Hz. -// -// Returns: -// The calculated period offset (in uSeconds) which is now in use. e.g. -5. -// -// Status: Stable / Working. -// -// NOTE: -// This will generate an 65535us mark() IR LED signal. -// This only needs to be called once, if at all. +/// Calculate & set any offsets to account for execution times during sending. +/// +/// @param[in] hz The frequency to calibrate at >= 1000Hz. Default is 38000Hz. +/// @return The calculated period offset (in uSeconds) which is now in use. +/// e.g. -5. +/// @note This will generate an 65535us mark() IR LED signal. +/// This only needs to be called once, if at all. int8_t IRsend::calibrate(uint16_t hz) { if (hz < 1000) // Were we given kHz? Supports the old call usage. hz *= 1000; @@ -259,18 +232,17 @@ int8_t IRsend::calibrate(uint16_t hz) { return periodOffset; } -// Generic method for sending data that is common to most protocols. -// Will send leading or trailing 0's if the nbits is larger than the number -// of bits in data. -// -// Args: -// onemark: Nr. of usecs for the led to be pulsed for a '1' bit. -// onespace: Nr. of usecs for the led to be fully off for a '1' bit. -// zeromark: Nr. of usecs for the led to be pulsed for a '0' bit. -// zerospace: Nr. of usecs for the led to be fully off for a '0' bit. -// data: The data to be transmitted. -// nbits: Nr. of bits of data to be sent. -// MSBfirst: Flag for bit transmission order. Defaults to MSB->LSB order. +/// Generic method for sending data that is common to most protocols. +/// Will send leading or trailing 0's if the nbits is larger than the number +/// of bits in data. +/// @param[in] onemark Nr. of usecs for the led to be pulsed for a '1' bit. +/// @param[in] onespace Nr. of usecs for the led to be fully off for a '1' bit. +/// @param[in] zeromark Nr. of usecs for the led to be pulsed for a '0' bit. +/// @param[in] zerospace Nr. of usecs for the led to be fully off for a '0' bit. +/// @param[in] data The data to be transmitted. +/// @param[in] nbits Nr. of bits of data to be sent. +/// @param[in] MSBfirst Flag for bit transmission order. +/// Defaults to MSB->LSB order. void IRsend::sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark, uint32_t zerospace, uint64_t data, uint16_t nbits, bool MSBfirst) { @@ -304,35 +276,34 @@ void IRsend::sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark, } } -// Generic method for sending simple protocol messages. -// Will send leading or trailing 0's if the nbits is larger than the number -// of bits in data. -// -// Args: -// headermark: Nr. of usecs for the led to be pulsed for the header mark. -// A value of 0 means no header mark. -// headerspace: Nr. of usecs for the led to be off after the header mark. -// A value of 0 means no header space. -// onemark: Nr. of usecs for the led to be pulsed for a '1' bit. -// onespace: Nr. of usecs for the led to be fully off for a '1' bit. -// zeromark: Nr. of usecs for the led to be pulsed for a '0' bit. -// zerospace: Nr. of usecs for the led to be fully off for a '0' bit. -// footermark: Nr. of usecs for the led to be pulsed for the footer mark. -// A value of 0 means no footer mark. -// gap: Nr. of usecs for the led to be off after the footer mark. -// This is effectively the gap between messages. -// A value of 0 means no gap space. -// data: The data to be transmitted. -// nbits: Nr. of bits of data to be sent. -// frequency: The frequency we want to modulate at. -// Assumes < 1000 means kHz otherwise it is in Hz. -// Most common value is 38000 or 38, for 38kHz. -// MSBfirst: Flag for bit transmission order. Defaults to MSB->LSB order. -// repeat: Nr. of extra times the message will be sent. -// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages -// dutycycle: Percentage duty cycle of the LED. -// e.g. 25 = 25% = 1/4 on, 3/4 off. -// If you are not sure, try 50 percent. +/// Generic method for sending simple protocol messages. +/// Will send leading or trailing 0's if the nbits is larger than the number +/// of bits in data. +/// @param[in] headermark Nr. of usecs for the led to be pulsed for the header +/// mark. A value of 0 means no header mark. +/// @param[in] headerspace Nr. of usecs for the led to be off after the header +/// mark. A value of 0 means no header space. +/// @param[in] onemark Nr. of usecs for the led to be pulsed for a '1' bit. +/// @param[in] onespace Nr. of usecs for the led to be fully off for a '1' bit. +/// @param[in] zeromark Nr. of usecs for the led to be pulsed for a '0' bit. +/// @param[in] zerospace Nr. of usecs for the led to be fully off for a '0' bit. +/// @param[in] footermark Nr. of usecs for the led to be pulsed for the footer +/// mark. A value of 0 means no footer mark. +/// @param[in] gap Nr. of usecs for the led to be off after the footer mark. +/// This is effectively the gap between messages. +/// A value of 0 means no gap space. +/// @param[in] data The data to be transmitted. +/// @param[in] nbits Nr. of bits of data to be sent. +/// @param[in] frequency The frequency we want to modulate at. (Hz/kHz) +/// @param[in] MSBfirst Flag for bit transmission order. +/// Defaults to MSB->LSB order. +/// @param[in] repeat Nr. of extra times the message will be sent. +/// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages +/// @param[in] dutycycle Percentage duty cycle of the LED. +/// e.g. 25 = 25% = 1/4 on, 3/4 off. +/// If you are not sure, try 50 percent. +/// @note Assumes a frequency < 1000 means kHz otherwise it is in Hz. +/// Most common value is 38000 or 38, for 38kHz. void IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, @@ -345,36 +316,36 @@ void IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, dutycycle); } -// Generic method for sending simple protocol messages. -// Will send leading or trailing 0's if the nbits is larger than the number -// of bits in data. -// -// Args: -// headermark: Nr. of usecs for the led to be pulsed for the header mark. -// A value of 0 means no header mark. -// headerspace: Nr. of usecs for the led to be off after the header mark. -// A value of 0 means no header space. -// onemark: Nr. of usecs for the led to be pulsed for a '1' bit. -// onespace: Nr. of usecs for the led to be fully off for a '1' bit. -// zeromark: Nr. of usecs for the led to be pulsed for a '0' bit. -// zerospace: Nr. of usecs for the led to be fully off for a '0' bit. -// footermark: Nr. of usecs for the led to be pulsed for the footer mark. -// A value of 0 means no footer mark. -// gap: Min. nr. of usecs for the led to be off after the footer mark. -// This is effectively the absolute minimum gap between messages. -// mesgtime: Min. nr. of usecs a single message needs to be. -// This is effectively the min. total length of a single message. -// data: The data to be transmitted. -// nbits: Nr. of bits of data to be sent. -// frequency: The frequency we want to modulate at. -// Assumes < 1000 means kHz otherwise it is in Hz. -// Most common value is 38000 or 38, for 38kHz. -// MSBfirst: Flag for bit transmission order. Defaults to MSB->LSB order. -// repeat: Nr. of extra times the message will be sent. -// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages -// dutycycle: Percentage duty cycle of the LED. -// e.g. 25 = 25% = 1/4 on, 3/4 off. -// If you are not sure, try 50 percent. +/// Generic method for sending simple protocol messages. +/// Will send leading or trailing 0's if the nbits is larger than the number +/// of bits in data. +/// @param[in] headermark Nr. of usecs for the led to be pulsed for the header +/// mark. A value of 0 means no header mark. +/// @param[in] headerspace Nr. of usecs for the led to be off after the header +/// mark. A value of 0 means no header space. +/// @param[in] onemark Nr. of usecs for the led to be pulsed for a '1' bit. +/// @param[in] onespace Nr. of usecs for the led to be fully off for a '1' bit. +/// @param[in] zeromark Nr. of usecs for the led to be pulsed for a '0' bit. +/// @param[in] zerospace Nr. of usecs for the led to be fully off for a '0' bit. +/// @param[in] footermark Nr. of usecs for the led to be pulsed for the footer +/// mark. A value of 0 means no footer mark. +/// @param[in] gap Nr. of usecs for the led to be off after the footer mark. +/// This is effectively the gap between messages. +/// A value of 0 means no gap space. +/// @param[in] mesgtime Min. nr. of usecs a single message needs to be. +/// This is effectively the min. total length of a single message. +/// @param[in] data The data to be transmitted. +/// @param[in] nbits Nr. of bits of data to be sent. +/// @param[in] frequency The frequency we want to modulate at. (Hz/kHz) +/// @param[in] MSBfirst Flag for bit transmission order. +/// Defaults to MSB->LSB order. +/// @param[in] repeat Nr. of extra times the message will be sent. +/// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages +/// @param[in] dutycycle Percentage duty cycle of the LED. +/// e.g. 25 = 25% = 1/4 on, 3/4 off. +/// If you are not sure, try 50 percent. +/// @note Assumes a frequency < 1000 means kHz otherwise it is in Hz. +/// Most common value is 38000 or 38, for 38kHz. void IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, @@ -409,33 +380,32 @@ void IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, } } -// Generic method for sending simple protocol messages. -// -// Args: -// headermark: Nr. of usecs for the led to be pulsed for the header mark. -// A value of 0 means no header mark. -// headerspace: Nr. of usecs for the led to be off after the header mark. -// A value of 0 means no header space. -// onemark: Nr. of usecs for the led to be pulsed for a '1' bit. -// onespace: Nr. of usecs for the led to be fully off for a '1' bit. -// zeromark: Nr. of usecs for the led to be pulsed for a '0' bit. -// zerospace: Nr. of usecs for the led to be fully off for a '0' bit. -// footermark: Nr. of usecs for the led to be pulsed for the footer mark. -// A value of 0 means no footer mark. -// gap: Nr. of usecs for the led to be off after the footer mark. -// This is effectively the gap between messages. -// A value of 0 means no gap space. -// dataptr: Pointer to the data to be transmitted. -// nbytes: Nr. of bytes of data to be sent. -// frequency: The frequency we want to modulate at. -// Assumes < 1000 means kHz otherwise it is in Hz. -// Most common value is 38000 or 38, for 38kHz. -// MSBfirst: Flag for bit transmission order. Defaults to MSB->LSB order. -// repeat: Nr. of extra times the message will be sent. -// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages -// dutycycle: Percentage duty cycle of the LED. -// e.g. 25 = 25% = 1/4 on, 3/4 off. -// If you are not sure, try 50 percent. +/// Generic method for sending simple protocol messages. +/// @param[in] headermark Nr. of usecs for the led to be pulsed for the header +/// mark. A value of 0 means no header mark. +/// @param[in] headerspace Nr. of usecs for the led to be off after the header +/// mark. A value of 0 means no header space. +/// @param[in] onemark Nr. of usecs for the led to be pulsed for a '1' bit. +/// @param[in] onespace Nr. of usecs for the led to be fully off for a '1' bit. +/// @param[in] zeromark Nr. of usecs for the led to be pulsed for a '0' bit. +/// @param[in] zerospace Nr. of usecs for the led to be fully off for a '0' bit. +/// @param[in] footermark Nr. of usecs for the led to be pulsed for the footer +/// mark. A value of 0 means no footer mark. +/// @param[in] gap Nr. of usecs for the led to be off after the footer mark. +/// This is effectively the gap between messages. +/// A value of 0 means no gap space. +/// @param[in] dataptr Pointer to the data to be transmitted. +/// @param[in] nbytes Nr. of bytes of data to be sent. +/// @param[in] frequency The frequency we want to modulate at. (Hz/kHz) +/// @param[in] MSBfirst Flag for bit transmission order. +/// Defaults to MSB->LSB order. +/// @param[in] repeat Nr. of extra times the message will be sent. +/// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages +/// @param[in] dutycycle Percentage duty cycle of the LED. +/// e.g. 25 = 25% = 1/4 on, 3/4 off. +/// If you are not sure, try 50 percent. +/// @note Assumes a frequency < 1000 means kHz otherwise it is in Hz. +/// Most common value is 38000 or 38, for 38kHz. void IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, @@ -462,16 +432,16 @@ void IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, } } -// Generic method for sending Manchester code data. -// Will send leading or trailing 0's if the nbits is larger than the number -// of bits in data. -// -// Args: -// half_period: Nr. of uSeconds for half the clock's period. (1/2 wavelength) -// data: The data to be transmitted. -// nbits: Nr. of bits of data to be sent. -// MSBfirst: Flag for bit transmission order. Defaults to MSB->LSB order. -// GEThomas: Use G.E. Thomas (true/default) or IEEE 802.3 (false). +/// Generic method for sending Manchester code data. +/// Will send leading or trailing 0's if the nbits is larger than the number +/// of bits in data. +/// @param[in] half_period Nr. of uSeconds for half the clock's period. +/// (1/2 wavelength) +/// @param[in] data The data to be transmitted. +/// @param[in] nbits Nr. of bits of data to be sent. +/// @param[in] MSBfirst Flag for bit transmission order. +/// Defaults to MSB->LSB order. +/// @param[in] GEThomas Use G.E. Thomas (true/default) or IEEE 802.3 (false). void IRsend::sendManchesterData(const uint16_t half_period, const uint64_t data, const uint16_t nbits, const bool MSBfirst, @@ -508,32 +478,31 @@ void IRsend::sendManchesterData(const uint16_t half_period, } } -// Generic method for sending Manchester code messages. -// Will send leading or trailing 0's if the nbits is larger than the number -// of bits in data. -// -// Args: -// headermark: Nr. of usecs for the led to be pulsed for the header mark. -// A value of 0 means no header mark. -// headerspace: Nr. of usecs for the led to be off after the header mark. -// A value of 0 means no header space. -// half_period: Nr. of uSeconds for half the clock's period. (1/2 wavelength) -// footermark: Nr. of usecs for the led to be pulsed for the footer mark. -// A value of 0 means no footer mark. -// gap: Min. nr. of usecs for the led to be off after the footer mark. -// This is effectively the absolute minimum gap between messages. -// data: The data to be transmitted. -// nbits: Nr. of bits of data to be sent. -// frequency: The frequency we want to modulate at. -// Assumes < 1000 means kHz otherwise it is in Hz. -// Most common value is 38000 or 38, for 38kHz. -// MSBfirst: Flag for bit transmission order. Defaults to MSB->LSB order. -// repeat: Nr. of extra times the message will be sent. -// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages -// dutycycle: Percentage duty cycle of the LED. -// e.g. 25 = 25% = 1/4 on, 3/4 off. -// If you are not sure, try 50 percent. -// GEThomas: Use G.E. Thomas (true/default) or IEEE 802.3 (false). +/// Generic method for sending Manchester code messages. +/// Will send leading or trailing 0's if the nbits is larger than the number +/// @param[in] headermark Nr. of usecs for the led to be pulsed for the header +/// mark. A value of 0 means no header mark. +/// @param[in] headerspace Nr. of usecs for the led to be off after the header +/// mark. A value of 0 means no header space. +/// @param[in] half_period Nr. of uSeconds for half the clock's period. +/// (1/2 wavelength) +/// @param[in] footermark Nr. of usecs for the led to be pulsed for the footer +/// mark. A value of 0 means no footer mark. +/// @param[in] gap Min. nr. of usecs for the led to be off after the footer +/// mark. This is effectively the absolute minimum gap between messages. +/// @param[in] data The data to be transmitted. +/// @param[in] nbits Nr. of bits of data to be sent. +/// @param[in] frequency The frequency we want to modulate at. (Hz/kHz) +/// @param[in] MSBfirst Flag for bit transmission order. +/// Defaults to MSB->LSB order. +/// @param[in] repeat Nr. of extra times the message will be sent. +/// e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages +/// @param[in] dutycycle Percentage duty cycle of the LED. +/// e.g. 25 = 25% = 1/4 on, 3/4 off. +/// If you are not sure, try 50 percent. +/// @param[in] GEThomas Use G.E. Thomas (true/default) or IEEE 802.3 (false). +/// @note Assumes a frequency < 1000 means kHz otherwise it is in Hz. +/// Most common value is 38000 or 38, for 38kHz. void IRsend::sendManchester(const uint16_t headermark, const uint32_t headerspace, const uint16_t half_period, @@ -550,9 +519,6 @@ void IRsend::sendManchester(const uint16_t headermark, // Header if (headermark) mark(headermark); if (headerspace) space(headerspace); - // Data Marker/sync - // This guarantees a double width half_period. i.e. a Period or T2. - sendManchesterData(half_period, 0b01, 2, true, GEThomas); // Data sendManchesterData(half_period, data, nbits, MSBfirst, GEThomas); // Footer @@ -562,20 +528,14 @@ void IRsend::sendManchester(const uint16_t headermark, } #if SEND_RAW -// Send a raw IRremote message. -// -// Args: -// buf: An array of uint16_t's that has microseconds elements. -// len: Nr. of elements in the buf[] array. -// hz: Frequency to send the message at. (kHz < 1000; Hz >= 1000) -// -// Status: STABLE / Known working. -// -// Notes: -// Even elements are Mark times (On), Odd elements are Space times (Off). -// -// Ref: -// examples/IRrecvDumpV2/IRrecvDumpV2.ino +/// Send a raw IRremote message. +/// +/// @param[in] buf An array of uint16_t's that has microseconds elements. +/// @param[in] len Nr. of elements in the buf[] array. +/// @param[in] hz Frequency to send the message at. (kHz < 1000; Hz >= 1000) +/// @note Even elements are Mark times (On), Odd elements are Space times (Off). +/// Ref: +/// examples/IRrecvDumpV2/IRrecvDumpV2.ino (or later) void IRsend::sendRaw(const uint16_t buf[], const uint16_t len, const uint16_t hz) { // Set IR carrier frequency @@ -591,11 +551,9 @@ void IRsend::sendRaw(const uint16_t buf[], const uint16_t len, } #endif // SEND_RAW -// Get the minimum number of repeats for a given protocol. -// Args: -// protocol: Protocol number/type of the message you want to send. -// Returns: -// int16_t: The number of repeats required. +/// Get the minimum number of repeats for a given protocol. +/// @param[in] protocol Protocol number/type of the message you want to send. +/// @return The number of repeats required. uint16_t IRsend::minRepeats(const decode_type_t protocol) { switch (protocol) { // Single repeats @@ -604,6 +562,7 @@ uint16_t IRsend::minRepeats(const decode_type_t protocol) { case COOLIX: case GICABLE: case INAX: + case MIDEA24: case MITSUBISHI: case MITSUBISHI2: case MITSUBISHI_AC: @@ -626,16 +585,16 @@ uint16_t IRsend::minRepeats(const decode_type_t protocol) { return kSonyMinRepeat + 1; case SYMPHONY: return kSymphonyDefaultRepeat; + case ZEPEAL: + return kZepealMinRepeat; default: return kNoRepeat; } } -// Get the default number of bits for a given protocol. -// Args: -// protocol: Protocol number/type you want the default nr. of bits for. -// Returns: -// int16_t: The number of bits. +/// Get the default number of bits for a given protocol. +/// @param[in] protocol Protocol number/type you want the default bit size for. +/// @return The number of bits. uint16_t IRsend::defaultBits(const decode_type_t protocol) { switch (protocol) { case MULTIBRACKETS: @@ -656,6 +615,7 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { case LEGOPF: case MITSUBISHI: case MITSUBISHI2: + case ZEPEAL: return 16; case RC6: case SONY: @@ -663,13 +623,13 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { return 20; case COOLIX: case INAX: + case MIDEA24: case NIKAI: case RCMM: return 24; case LG: case LG2: return 28; - case AIRWELL: case CARRIER_AC: case EPSON: case NEC: @@ -678,6 +638,8 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { case SHERWOOD: case WHYNTER: return 32; + case AIRWELL: + return 34; case LUTRON: case TECO: return 35; @@ -703,6 +665,8 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { return 64; case ARGO: return kArgoBits; + case CORONA_AC: + return kCoronaAcBits; case DAIKIN: return kDaikinBits; case DAIKIN128: @@ -735,6 +699,8 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { return kHitachiAc2Bits; case HITACHI_AC3: return kHitachiAc3Bits; + case HITACHI_AC344: + return kHitachiAc344Bits; case HITACHI_AC424: return kHitachiAc424Bits; case KELVINATOR: @@ -773,18 +739,17 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { } } -// Send a simple (up to 64 bits) IR message of a given type. -// An unknown/unsupported type will do nothing. -// Args: -// type: Protocol number/type of the message you want to send. -// data: The data you want to send (up to 64 bits). -// nbits: How many bits long the message is to be. -// repeat: How many repeats to do? -// Returns: -// bool: True if it is a type we can attempt to send, false if not. +/// Send a simple (up to 64 bits) IR message of a given type. +/// An unknown/unsupported type will send nothing. +/// @param[in] type Protocol number/type of the message you want to send. +/// @param[in] data The data you want to send (up to 64 bits). +/// @param[in] nbits How many bits long the message is to be. +/// @param[in] repeat How many repeats to do? +/// @return True if it is a type we can attempt to send, false if not. bool IRsend::send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat) { - uint16_t min_repeat = std::max(IRsend::minRepeats(type), repeat); + uint16_t min_repeat __attribute__((unused)) = + std::max(IRsend::minRepeats(type), repeat); switch (type) { #if SEND_AIRWELL case AIRWELL: @@ -903,7 +868,12 @@ bool IRsend::send(const decode_type_t type, const uint64_t data, case MIDEA: sendMidea(data, nbits, min_repeat); break; -#endif +#endif // SEND_MIDEA +#if SEND_MIDEA24 + case MIDEA24: + sendMidea24(data, nbits, min_repeat); + break; +#endif // SEND_MIDEA24 #if SEND_MITSUBISHI case MITSUBISHI: sendMitsubishi(data, nbits, min_repeat); @@ -1008,6 +978,11 @@ bool IRsend::send(const decode_type_t type, const uint64_t data, case WHYNTER: sendWhynter(data, nbits, min_repeat); break; +#endif +#if SEND_ZEPEAL + case ZEPEAL: + sendZepeal(data, nbits, min_repeat); + break; #endif default: return false; @@ -1015,15 +990,13 @@ bool IRsend::send(const decode_type_t type, const uint64_t data, return true; } -// Send a complex (>= 64 bits) IR message of a given type. -// An unknown/unsupported type will do nothing. -// Args: -// type: Protocol number/type of the message you want to send. -// state: A pointer to the array of bytes that make up the state[]. -// nbytes: How many bytes are in the state. -// Returns: -// bool: True if it is a type we can attempt to send, false if not. -bool IRsend::send(const decode_type_t type, const unsigned char *state, +/// Send a complex (>= 64 bits) IR message of a given type. +/// An unknown/unsupported type will send nothing. +/// @param[in] type Protocol number/type of the message you want to send. +/// @param[in] state A pointer to the array of bytes that make up the state[]. +/// @param[in] nbytes How many bytes are in the state. +/// @return True if it is a type we can attempt to send, false if not. +bool IRsend::send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes) { switch (type) { #if SEND_AMCOR @@ -1036,6 +1009,11 @@ bool IRsend::send(const decode_type_t type, const unsigned char *state, sendArgo(state, nbytes); break; #endif // SEND_ARGO +#if SEND_CORONA_AC + case CORONA_AC: + sendCoronaAc(state, nbytes); + break; +#endif // SEND_ARGO #if SEND_DAIKIN case DAIKIN: sendDaikin(state, nbytes); @@ -1116,6 +1094,11 @@ bool IRsend::send(const decode_type_t type, const unsigned char *state, sendHitachiAc3(state, nbytes); break; #endif // SEND_HITACHI_AC3 +#if SEND_HITACHI_AC344 + case HITACHI_AC344: + sendHitachiAc344(state, nbytes); + break; +#endif // SEND_HITACHI_AC344 #if SEND_HITACHI_AC424 case HITACHI_AC424: sendHitachiAc424(state, nbytes); diff --git a/lib/IRremoteESP8266-2.7.7/src/IRsend.h b/lib/IRremoteESP8266-2.7.8/src/IRsend.h similarity index 87% rename from lib/IRremoteESP8266-2.7.7/src/IRsend.h rename to lib/IRremoteESP8266-2.7.8/src/IRsend.h index 85a3dde62..fe206583f 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRsend.h +++ b/lib/IRremoteESP8266-2.7.8/src/IRsend.h @@ -40,8 +40,9 @@ const uint16_t kMaxAccurateUsecDelay = 16383; // Usecs to wait between messages we don't know the proper gap time. const uint32_t kDefaultMessageGap = 100000; - +/// Enumerators and Structures for the Common A/C API. namespace stdAc { + /// Common A/C settings for A/C operating modes. enum class opmode_t { kOff = -1, kAuto = 0, @@ -53,6 +54,7 @@ namespace stdAc { kLastOpmodeEnum = kFan, }; + /// Common A/C settings for Fan Speeds. enum class fanspeed_t { kAuto = 0, kMin = 1, @@ -64,6 +66,7 @@ namespace stdAc { kLastFanspeedEnum = kMax, }; + /// Common A/C settings for Vertical Swing. enum class swingv_t { kOff = -1, kAuto = 0, @@ -76,6 +79,7 @@ namespace stdAc { kLastSwingvEnum = kLowest, }; + /// Common A/C settings for Horizontal Swing. enum class swingh_t { kOff = -1, kAuto = 0, // a.k.a. On. @@ -89,7 +93,7 @@ namespace stdAc { kLastSwinghEnum = kWide, }; - // Structure to hold a common A/C state. + /// Structure to hold a common A/C state. typedef struct { decode_type_t protocol; int16_t model; @@ -112,7 +116,7 @@ namespace stdAc { } state_t; }; // namespace stdAc - +/// Fujitsu A/C model numbers enum fujitsu_ac_remote_model_t { ARRAH2E = 1, // (1) AR-RAH2E, AR-RAC1E, AR-RAE1E (Default) ARDB1, // (2) AR-DB1, AR-DL10 (AR-DL10 swing doesn't work) @@ -121,16 +125,19 @@ enum fujitsu_ac_remote_model_t { ARRY4, // (5) AR-RY4 (Same as AR-RAH2E but with clean & filter) }; +/// Gree A/C model numbers enum gree_ac_remote_model_t { YAW1F = 1, // (1) Ultimate, EKOKAI, RusClimate (Default) YBOFB, // (2) Green, YBOFB2, YAPOF3 }; +/// HITACHI_AC1 A/C model numbers enum hitachi_ac1_remote_model_t { R_LT0541_HTA_A = 1, // (1) R-LT0541-HTA Remote in "A" setting. (Default) R_LT0541_HTA_B, // (2) R-LT0541-HTA Remote in "B" setting. }; +/// Panasonic A/C model numbers enum panasonic_ac_remote_model_t { kPanasonicUnknown = 0, kPanasonicLke = 1, @@ -141,11 +148,13 @@ enum panasonic_ac_remote_model_t { kPanasonicRkr = 6, }; +/// Whirlpool A/C model numbers enum whirlpool_ac_remote_model_t { DG11J13A = 1, // DG11J1-04 too DG11J191, }; +/// LG A/C model numbers enum lg_ac_remote_model_t { GE6711AR2853M = 1, // (1) LG 28-bit Protocol (default) AKB75215403, // (2) LG2 28-bit Protocol @@ -153,6 +162,11 @@ enum lg_ac_remote_model_t { // Classes + +/// Class for sending all basic IR protocols. +/// @note Originally from https://github.com/shirriff/Arduino-IRremote/ +/// Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for +/// sending IR code on ESP8266 class IRsend { public: explicit IRsend(uint16_t IRsendPin, bool inverted = false, @@ -204,9 +218,10 @@ class IRsend { static uint16_t defaultBits(const decode_type_t protocol); bool send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat = kNoRepeat); - bool send(const decode_type_t type, const uint8_t state[], + bool send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes); -#if (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO) +#if (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO || \ + SEND_MIDEA24) void sendNEC(uint64_t data, uint16_t nbits = kNECBits, uint16_t repeat = kNoRepeat); uint32_t encodeNEC(uint16_t address, uint16_t command); @@ -217,13 +232,13 @@ class IRsend { // Legacy use of this procedure was to only send a single code so call it with // repeat=0 for backward compatibility. As of v2.0 it defaults to sending // a Sony command that will be accepted be a device. - void sendSony(uint64_t data, uint16_t nbits = kSony20Bits, - uint16_t repeat = kSonyMinRepeat); - void sendSony38(uint64_t data, uint16_t nbits = kSony20Bits, - uint16_t repeat = kSonyMinRepeat + 1); - uint32_t encodeSony(uint16_t nbits, uint16_t command, uint16_t address, - uint16_t extended = 0); -#endif + void sendSony(const uint64_t data, const uint16_t nbits = kSony20Bits, + const uint16_t repeat = kSonyMinRepeat); + void sendSony38(const uint64_t data, const uint16_t nbits = kSony20Bits, + const uint16_t repeat = kSonyMinRepeat + 1); + uint32_t encodeSony(const uint16_t nbits, const uint16_t command, + const uint16_t address, const uint16_t extended = 0); +#endif // SEND_SONY #if SEND_SHERWOOD void sendSherwood(uint64_t data, uint16_t nbits = kSherwoodBits, uint16_t repeat = kSherwoodMinRepeat); @@ -275,8 +290,9 @@ class IRsend { #endif #if SEND_SANYO uint64_t encodeSanyoLC7461(uint16_t address, uint8_t command); - void sendSanyoLC7461(uint64_t data, uint16_t nbits = kSanyoLC7461Bits, - uint16_t repeat = kNoRepeat); + void sendSanyoLC7461(const uint64_t data, + const uint16_t nbits = kSanyoLC7461Bits, + const uint16_t repeat = kNoRepeat); #endif #if SEND_DISH // sendDISH() should typically be called with repeat=3 as DISH devices @@ -297,20 +313,20 @@ class IRsend { const uint8_t subdevice, const uint8_t function); #endif #if SEND_RC5 - void sendRC5(uint64_t data, uint16_t nbits = kRC5XBits, - uint16_t repeat = kNoRepeat); - uint16_t encodeRC5(uint8_t address, uint8_t command, - bool key_released = false); - uint16_t encodeRC5X(uint8_t address, uint8_t command, - bool key_released = false); - uint64_t toggleRC5(uint64_t data); + void sendRC5(const uint64_t data, uint16_t nbits = kRC5XBits, + const uint16_t repeat = kNoRepeat); + uint16_t encodeRC5(const uint8_t address, const uint8_t command, + const bool key_released = false); + uint16_t encodeRC5X(const uint8_t address, const uint8_t command, + const bool key_released = false); + uint64_t toggleRC5(const uint64_t data); #endif #if SEND_RC6 - void sendRC6(uint64_t data, uint16_t nbits = kRC6Mode0Bits, - uint16_t repeat = kNoRepeat); - uint64_t encodeRC6(uint32_t address, uint8_t command, - uint16_t mode = kRC6Mode0Bits); - uint64_t toggleRC6(uint64_t data, uint16_t nbits = kRC6Mode0Bits); + void sendRC6(const uint64_t data, const uint16_t nbits = kRC6Mode0Bits, + const uint16_t repeat = kNoRepeat); + uint64_t encodeRC6(const uint32_t address, const uint8_t command, + const uint16_t mode = kRC6Mode0Bits); + uint64_t toggleRC6(const uint64_t data, const uint16_t nbits = kRC6Mode0Bits); #endif #if SEND_RCMM void sendRCMM(uint64_t data, uint16_t nbits = kRCMMBits, @@ -321,8 +337,8 @@ class IRsend { uint16_t repeat = kCoolixDefaultRepeat); #endif #if SEND_WHYNTER - void sendWhynter(uint64_t data, uint16_t nbits = kWhynterBits, - uint16_t repeat = kNoRepeat); + void sendWhynter(const uint64_t data, const uint16_t nbits = kWhynterBits, + const uint16_t repeat = kNoRepeat); #endif #if SEND_MITSUBISHI void sendMitsubishi(uint64_t data, uint16_t nbits = kMitsubishiBits, @@ -452,11 +468,15 @@ class IRsend { #if SEND_MIDEA void sendMidea(uint64_t data, uint16_t nbits = kMideaBits, uint16_t repeat = kMideaMinRepeat); -#endif +#endif // SEND_MIDEA +#if SEND_MIDEA24 + void sendMidea24(const uint64_t data, const uint16_t nbits = kMidea24Bits, + const uint16_t repeat = kMidea24MinRepeat); +#endif // SEND_MIDEA24 #if SEND_MAGIQUEST - void sendMagiQuest(uint64_t data, uint16_t nbits = kMagiquestBits, - uint16_t repeat = kNoRepeat); - uint64_t encodeMagiQuest(uint32_t wand_id, uint16_t magnitude); + void sendMagiQuest(const uint64_t data, const uint16_t nbits = kMagiquestBits, + const uint16_t repeat = kNoRepeat); + uint64_t encodeMagiQuest(const uint32_t wand_id, const uint16_t magnitude); #endif #if SEND_LASERTAG void sendLasertag(uint64_t data, uint16_t nbits = kLasertagBits, @@ -505,6 +525,11 @@ class IRsend { // different sizes const uint16_t repeat = kHitachiAcDefaultRepeat); #endif // SEND_HITACHI_AC3 +#if SEND_HITACHI_AC344 + void sendHitachiAc344(const unsigned char data[], + const uint16_t nbytes = kHitachiAc344StateLength, + const uint16_t repeat = kHitachiAcDefaultRepeat); +#endif // SEND_HITACHI_AC344 #if SEND_HITACHI_AC424 void sendHitachiAc424(const unsigned char data[], const uint16_t nbytes = kHitachiAc424StateLength, @@ -595,6 +620,16 @@ class IRsend { const uint16_t nbits = kMultibracketsBits, const uint16_t repeat = kMultibracketsDefaultRepeat); #endif +#if SEND_CORONA_AC + void sendCoronaAc(const uint8_t data[], + const uint16_t nbytes = kCoronaAcStateLength, + const uint16_t repeat = kNoRepeat); +#endif // SEND_CORONA_AC +#if SEND_ZEPEAL + void sendZepeal(const uint64_t data, + const uint16_t nbits = kZepealBits, + const uint16_t repeat = kZepealMinRepeat); +#endif protected: #ifdef UNIT_TEST @@ -623,9 +658,9 @@ class IRsend { bool modulation; uint32_t calcUSecPeriod(uint32_t hz, bool use_offset = true); #if SEND_SONY - void _sendSony(uint64_t data, uint16_t nbits, - uint16_t repeat, uint16_t freq); -#endif + void _sendSony(const uint64_t data, const uint16_t nbits, + const uint16_t repeat, const uint16_t freq); +#endif // SEND_SONY }; #endif // IRSEND_H_ diff --git a/lib/IRremoteESP8266-2.7.8/src/IRtext.cpp b/lib/IRremoteESP8266-2.7.8/src/IRtext.cpp new file mode 100644 index 000000000..7af2ffd0b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/src/IRtext.cpp @@ -0,0 +1,268 @@ +// Copyright 2019-2020 - David Conran (@crankyoldgit) + +/// @file IRtext.cpp +/// @warning If you add or remove an entry in this file, you should run: +/// '../tools/generate_irtext_h.sh' to rebuild the `IRtext.h` file. + +#ifndef UNIT_TEST +#include +#endif // UNIT_TEST +#include "IRremoteESP8266.h" +#include "i18n.h" + +#ifndef PROGMEM +#define PROGMEM // Pretend we have the PROGMEM macro even if we really don't. +#endif + +// Common +const PROGMEM char* kUnknownStr = D_STR_UNKNOWN; ///< "Unknown" +const PROGMEM char* kProtocolStr = D_STR_PROTOCOL; ///< "Protocol" +const PROGMEM char* kPowerStr = D_STR_POWER; ///< "Power" +const PROGMEM char* kOnStr = D_STR_ON; ///< "On" +const PROGMEM char* kOffStr = D_STR_OFF; ///< "Off" +const PROGMEM char* kModeStr = D_STR_MODE; ///< "Mode" +const PROGMEM char* kToggleStr = D_STR_TOGGLE; ///< "Toggle" +const PROGMEM char* kTurboStr = D_STR_TURBO; ///< "Turbo" +const PROGMEM char* kSuperStr = D_STR_SUPER; ///< "Super" +const PROGMEM char* kSleepStr = D_STR_SLEEP; ///< "Sleep" +const PROGMEM char* kLightStr = D_STR_LIGHT; ///< "Light" +const PROGMEM char* kPowerfulStr = D_STR_POWERFUL; ///< "Powerful" +const PROGMEM char* kQuietStr = D_STR_QUIET; ///< "Quiet" +const PROGMEM char* kEconoStr = D_STR_ECONO; ///< "Econo" +const PROGMEM char* kSwingStr = D_STR_SWING; ///< "Swing" +const PROGMEM char* kSwingHStr = D_STR_SWINGH; ///< "SwingH" +const PROGMEM char* kSwingVStr = D_STR_SWINGV; ///< "SwingV" +const PROGMEM char* kBeepStr = D_STR_BEEP; ///< "Beep" +const PROGMEM char* kZoneFollowStr = D_STR_ZONEFOLLOW; ///< "Zone Follow" +const PROGMEM char* kFixedStr = D_STR_FIXED; ///< "Fixed" +const PROGMEM char* kMouldStr = D_STR_MOULD; ///< "Mould" +const PROGMEM char* kCleanStr = D_STR_CLEAN; ///< "Clean" +const PROGMEM char* kPurifyStr = D_STR_PURIFY; ///< "Purify" +const PROGMEM char* kTimerStr = D_STR_TIMER; ///< "Timer" +const PROGMEM char* kOnTimerStr = D_STR_ONTIMER; ///< "OnTimer" +const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER; ///< "OffTimer" +const PROGMEM char* kClockStr = D_STR_CLOCK; ///< "Clock" +const PROGMEM char* kCommandStr = D_STR_COMMAND; ///< "Command" +const PROGMEM char* kXFanStr = D_STR_XFAN; ///< "XFan" +const PROGMEM char* kHealthStr = D_STR_HEALTH; ///< "Health" +const PROGMEM char* kModelStr = D_STR_MODEL; ///< "Model" +const PROGMEM char* kTempStr = D_STR_TEMP; ///< "Temp" +const PROGMEM char* kIFeelStr = D_STR_IFEEL; ///< "IFeel" +const PROGMEM char* kHumidStr = D_STR_HUMID; ///< "Humid" +const PROGMEM char* kSaveStr = D_STR_SAVE; ///< "Save" +const PROGMEM char* kEyeStr = D_STR_EYE; ///< "Eye" +const PROGMEM char* kFollowStr = D_STR_FOLLOW; ///< "Follow" +const PROGMEM char* kIonStr = D_STR_ION; ///< "Ion" +const PROGMEM char* kFreshStr = D_STR_FRESH; ///< "Fresh" +const PROGMEM char* kHoldStr = D_STR_HOLD; ///< "Hold" +const PROGMEM char* kButtonStr = D_STR_BUTTON; ///< "Button" +const PROGMEM char* k8CHeatStr = D_STR_8C_HEAT; ///< "8CHeat" +const PROGMEM char* kNightStr = D_STR_NIGHT; ///< "Night" +const PROGMEM char* kSilentStr = D_STR_SILENT; ///< "Silent" +const PROGMEM char* kFilterStr = D_STR_FILTER; ///< "Filter" +const PROGMEM char* k3DStr = D_STR_3D; ///< "3D" +const PROGMEM char* kCelsiusStr = D_STR_CELSIUS; ///< "Celsius" +const PROGMEM char* kTempUpStr = D_STR_TEMPUP; ///< "Temp Up" +const PROGMEM char* kTempDownStr = D_STR_TEMPDOWN; ///< "Temp Down" +const PROGMEM char* kStartStr = D_STR_START; ///< "Start" +const PROGMEM char* kStopStr = D_STR_STOP; ///< "Stop" +const PROGMEM char* kMoveStr = D_STR_MOVE; ///< "Move" +const PROGMEM char* kSetStr = D_STR_SET; ///< "Set" +const PROGMEM char* kCancelStr = D_STR_CANCEL; ///< "Cancel" +const PROGMEM char* kUpStr = D_STR_UP; ///< "Up" +const PROGMEM char* kDownStr = D_STR_DOWN; ///< "Down" +const PROGMEM char* kChangeStr = D_STR_CHANGE; ///< "Change" +const PROGMEM char* kComfortStr = D_STR_COMFORT; ///< "Comfort" +const PROGMEM char* kSensorStr = D_STR_SENSOR; ///< "Sensor" +const PROGMEM char* kWeeklyTimerStr = D_STR_WEEKLYTIMER; ///< "WeeklyTimer" +const PROGMEM char* kWifiStr = D_STR_WIFI; ///< "Wifi" +const PROGMEM char* kLastStr = D_STR_LAST; ///< "Last" +const PROGMEM char* kFastStr = D_STR_FAST; ///< "Fast" +const PROGMEM char* kSlowStr = D_STR_SLOW; ///< "Slow" +const PROGMEM char* kAirFlowStr = D_STR_AIRFLOW; ///< "Air Flow" +const PROGMEM char* kStepStr = D_STR_STEP; ///< "Step" +const PROGMEM char* kNAStr = D_STR_NA; ///< "N/A" +const PROGMEM char* kInsideStr = D_STR_INSIDE; ///< "Inside" +const PROGMEM char* kOutsideStr = D_STR_OUTSIDE; ///< "Outside" +const PROGMEM char* kLoudStr = D_STR_LOUD; ///< "Loud" +const PROGMEM char* kLowerStr = D_STR_LOWER; ///< "Lower" +const PROGMEM char* kUpperStr = D_STR_UPPER; ///< "Upper" +const PROGMEM char* kBreezeStr = D_STR_BREEZE; ///< "Breeze" +const PROGMEM char* kCirculateStr = D_STR_CIRCULATE; ///< "Circulate" +const PROGMEM char* kCeilingStr = D_STR_CEILING; ///< "Ceiling" +const PROGMEM char* kWallStr = D_STR_WALL; ///< "Wall" +const PROGMEM char* kRoomStr = D_STR_ROOM; ///< "Room" +const PROGMEM char* k6thSenseStr = D_STR_6THSENSE; ///< "6th Sense" + +const PROGMEM char* kAutoStr = D_STR_AUTO; ///< "Auto" +const PROGMEM char* kAutomaticStr = D_STR_AUTOMATIC; ///< "Automatic" +const PROGMEM char* kManualStr = D_STR_MANUAL; ///< "Manual" +const PROGMEM char* kCoolStr = D_STR_COOL; ///< "Cool" +const PROGMEM char* kHeatStr = D_STR_HEAT; ///< "Heat" +const PROGMEM char* kFanStr = D_STR_FAN; ///< "Fan" +const PROGMEM char* kDryStr = D_STR_DRY; ///< "Dry" +const PROGMEM char* kFanOnlyStr = D_STR_FANONLY; ///< "fan_only" + +const PROGMEM char* kMaxStr = D_STR_MAX; ///< "Max" +const PROGMEM char* kMaximumStr = D_STR_MAXIMUM; ///< "Maximum" +const PROGMEM char* kMinStr = D_STR_MIN; ///< "Min" +const PROGMEM char* kMinimumStr = D_STR_MINIMUM; ///< "Minimum" +const PROGMEM char* kMedStr = D_STR_MED; ///< "Med" +const PROGMEM char* kMediumStr = D_STR_MEDIUM; ///< "Medium" + +const PROGMEM char* kHighestStr = D_STR_HIGHEST; ///< "Highest" +const PROGMEM char* kHighStr = D_STR_HIGH; ///< "High" +const PROGMEM char* kHiStr = D_STR_HI; ///< "Hi" +const PROGMEM char* kMidStr = D_STR_MID; ///< "Mid" +const PROGMEM char* kMiddleStr = D_STR_MIDDLE; ///< "Middle" +const PROGMEM char* kLowStr = D_STR_LOW; ///< "Low" +const PROGMEM char* kLoStr = D_STR_LO; ///< "Lo" +const PROGMEM char* kLowestStr = D_STR_LOWEST; ///< "Lowest" +const PROGMEM char* kMaxRightStr = D_STR_MAXRIGHT; ///< "Max Right" +const PROGMEM char* kRightMaxStr = D_STR_RIGHTMAX_NOSPACE; ///< "RightMax" +const PROGMEM char* kRightStr = D_STR_RIGHT; ///< "Right" +const PROGMEM char* kLeftStr = D_STR_LEFT; ///< "Left" +const PROGMEM char* kMaxLeftStr = D_STR_MAXLEFT; ///< "Max Left" +const PROGMEM char* kLeftMaxStr = D_STR_LEFTMAX_NOSPACE; ///< "LeftMax" +const PROGMEM char* kWideStr = D_STR_WIDE; ///< "Wide" +const PROGMEM char* kCentreStr = D_STR_CENTRE; ///< "Centre" +const PROGMEM char* kTopStr = D_STR_TOP; ///< "Top" +const PROGMEM char* kBottomStr = D_STR_BOTTOM; ///< "Bottom" + +// Compound words/phrases/descriptions from pre-defined words. +const PROGMEM char* kEyeAutoStr = D_STR_EYEAUTO; ///< "Eye Auto" +const PROGMEM char* kLightToggleStr = D_STR_LIGHTTOGGLE; ///< "Light Toggle" +const PROGMEM char* kOutsideQuietStr = D_STR_OUTSIDEQUIET; ///< "Outside Quiet" +const PROGMEM char* kPowerToggleStr = D_STR_POWERTOGGLE; ///< "Power Toggle" +const PROGMEM char* kPowerButtonStr = D_STR_POWERBUTTON; ///< "Power Button" +const PROGMEM char* kPreviousPowerStr = D_STR_PREVIOUSPOWER; ///< +///< "Previous Power" +const PROGMEM char* kDisplayTempStr = D_STR_DISPLAYTEMP; ///< "Display Temp" +const PROGMEM char* kSensorTempStr = D_STR_SENSORTEMP; ///< "Sensor Temp" +const PROGMEM char* kSleepTimerStr = D_STR_SLEEP_TIMER; ///< "Sleep Timer" +const PROGMEM char* kSwingVModeStr = D_STR_SWINGVMODE; ///< "Swing(V) Mode" +const PROGMEM char* kSwingVToggleStr = D_STR_SWINGVTOGGLE; ///< +///< "Swing(V) Toggle" + +// Separators +char kTimeSep = D_CHR_TIME_SEP; ///< ':' +const PROGMEM char* kSpaceLBraceStr = D_STR_SPACELBRACE; ///< " (" +const PROGMEM char* kCommaSpaceStr = D_STR_COMMASPACE; ///< ", " +const PROGMEM char* kColonSpaceStr = D_STR_COLONSPACE; ///< ": " + +// IRutils +// - Time +const PROGMEM char* kDayStr = D_STR_DAY; ///< "Day" +const PROGMEM char* kDaysStr = D_STR_DAYS; ///< "Days" +const PROGMEM char* kHourStr = D_STR_HOUR; ///< "Hour" +const PROGMEM char* kHoursStr = D_STR_HOURS; ///< "Hours" +const PROGMEM char* kMinuteStr = D_STR_MINUTE; ///< "Minute" +const PROGMEM char* kMinutesStr = D_STR_MINUTES; ///< "Minutes" +const PROGMEM char* kSecondStr = D_STR_SECOND; ///< "Second" +const PROGMEM char* kSecondsStr = D_STR_SECONDS; ///< "Seconds" +const PROGMEM char* kNowStr = D_STR_NOW; ///< "Now" +const PROGMEM char* kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS; ///< +///< "SunMonTueWedThuFriSat" +const PROGMEM char* kYesStr = D_STR_YES; ///< "Yes" +const PROGMEM char* kNoStr = D_STR_NO; ///< "No" +const PROGMEM char* kTrueStr = D_STR_TRUE; ///< "True" +const PROGMEM char* kFalseStr = D_STR_FALSE; ///< "False" + +const PROGMEM char* kRepeatStr = D_STR_REPEAT; ///< "Repeat" +const PROGMEM char* kCodeStr = D_STR_CODE; ///< "Code" +const PROGMEM char* kBitsStr = D_STR_BITS; ///< "Bits" + +// Protocol Names +// Needs to be in decode_type_t order. +const PROGMEM char *kAllProtocolNamesStr = + D_STR_UNUSED "\x0" + D_STR_RC5 "\x0" + D_STR_RC6 "\x0" + D_STR_NEC "\x0" + D_STR_SONY "\x0" + D_STR_PANASONIC "\x0" + D_STR_JVC "\x0" + D_STR_SAMSUNG "\x0" + D_STR_WHYNTER "\x0" + D_STR_AIWA_RC_T501 "\x0" + D_STR_LG "\x0" + D_STR_SANYO "\x0" + D_STR_MITSUBISHI "\x0" + D_STR_DISH "\x0" + D_STR_SHARP "\x0" + D_STR_COOLIX "\x0" + D_STR_DAIKIN "\x0" + D_STR_DENON "\x0" + D_STR_KELVINATOR "\x0" + D_STR_SHERWOOD "\x0" + D_STR_MITSUBISHI_AC "\x0" + D_STR_RCMM "\x0" + D_STR_SANYO_LC7461 "\x0" + D_STR_RC5X "\x0" + D_STR_GREE "\x0" + D_STR_PRONTO "\x0" + D_STR_NEC_LIKE "\x0" + D_STR_ARGO "\x0" + D_STR_TROTEC "\x0" + D_STR_NIKAI "\x0" + D_STR_RAW "\x0" + D_STR_GLOBALCACHE "\x0" + D_STR_TOSHIBA_AC "\x0" + D_STR_FUJITSU_AC "\x0" + D_STR_MIDEA "\x0" + D_STR_MAGIQUEST "\x0" + D_STR_LASERTAG "\x0" + D_STR_CARRIER_AC "\x0" + D_STR_HAIER_AC "\x0" + D_STR_MITSUBISHI2 "\x0" + D_STR_HITACHI_AC "\x0" + D_STR_HITACHI_AC1 "\x0" + D_STR_HITACHI_AC2 "\x0" + D_STR_GICABLE "\x0" + D_STR_HAIER_AC_YRW02 "\x0" + D_STR_WHIRLPOOL_AC "\x0" + D_STR_SAMSUNG_AC "\x0" + D_STR_LUTRON "\x0" + D_STR_ELECTRA_AC "\x0" + D_STR_PANASONIC_AC "\x0" + D_STR_PIONEER "\x0" + D_STR_LG2 "\x0" + D_STR_MWM "\x0" + D_STR_DAIKIN2 "\x0" + D_STR_VESTEL_AC "\x0" + D_STR_TECO "\x0" + D_STR_SAMSUNG36 "\x0" + D_STR_TCL112AC "\x0" + D_STR_LEGOPF "\x0" + D_STR_MITSUBISHI_HEAVY_88 "\x0" + D_STR_MITSUBISHI_HEAVY_152 "\x0" + D_STR_DAIKIN216 "\x0" + D_STR_SHARP_AC "\x0" + D_STR_GOODWEATHER "\x0" + D_STR_INAX "\x0" + D_STR_DAIKIN160 "\x0" + D_STR_NEOCLIMA "\x0" + D_STR_DAIKIN176 "\x0" + D_STR_DAIKIN128 "\x0" + D_STR_AMCOR "\x0" + D_STR_DAIKIN152 "\x0" + D_STR_MITSUBISHI136 "\x0" + D_STR_MITSUBISHI112 "\x0" + D_STR_HITACHI_AC424 "\x0" + D_STR_SONY_38K "\x0" + D_STR_EPSON "\x0" + D_STR_SYMPHONY "\x0" + D_STR_HITACHI_AC3 "\x0" + D_STR_DAIKIN64 "\x0" + D_STR_AIRWELL "\x0" + D_STR_DELONGHI_AC "\x0" + D_STR_DOSHISHA "\x0" + D_STR_MULTIBRACKETS "\x0" + D_STR_CARRIER_AC40 "\x0" + D_STR_CARRIER_AC64 "\x0" + D_STR_HITACHI_AC344 "\x0" + D_STR_CORONA_AC "\x0" + D_STR_MIDEA24 "\x0" + D_STR_ZEPEAL "\x0" + ///< New protocol strings should be added just above this line. + "\x0"; ///< This string requires double null termination. diff --git a/lib/IRremoteESP8266-2.7.7/src/IRtext.h b/lib/IRremoteESP8266-2.7.8/src/IRtext.h similarity index 99% rename from lib/IRremoteESP8266-2.7.7/src/IRtext.h rename to lib/IRremoteESP8266-2.7.8/src/IRtext.h index 112162f65..57ba2858b 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRtext.h +++ b/lib/IRremoteESP8266-2.7.8/src/IRtext.h @@ -107,6 +107,7 @@ extern const char* kOutsideStr; extern const char* kPowerfulStr; extern const char* kPowerStr; extern const char* kPowerToggleStr; +extern const char* kPowerButtonStr; extern const char* kPreviousPowerStr; extern const char* kProtocolStr; extern const char* kPurifyStr; diff --git a/lib/IRremoteESP8266-2.7.7/src/IRtimer.cpp b/lib/IRremoteESP8266-2.7.8/src/IRtimer.cpp similarity index 69% rename from lib/IRremoteESP8266-2.7.7/src/IRtimer.cpp rename to lib/IRremoteESP8266-2.7.8/src/IRtimer.cpp index 4173d763b..edd98a2d7 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRtimer.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/IRtimer.cpp @@ -11,10 +11,10 @@ uint32_t _IRtimer_unittest_now = 0; uint32_t _TimerMs_unittest_now = 0; #endif // UNIT_TEST -// This class performs a simple time in useconds since instantiated. -// Handles when the system timer wraps around (once). +/// Class constructor. IRtimer::IRtimer() { reset(); } +/// Resets the IRtimer object. void IRtimer::reset() { #ifndef UNIT_TEST start = micros(); @@ -23,6 +23,8 @@ void IRtimer::reset() { #endif } +/// Calculate how many microseconds have elapsed since the timer was started. +/// @return Nr. of microseconds. uint32_t IRtimer::elapsed() { #ifndef UNIT_TEST uint32_t now = micros(); @@ -35,15 +37,17 @@ uint32_t IRtimer::elapsed() { return UINT32_MAX - start + now; // Has wrapped. } -// Only used in unit testing. +/// Add time to the timer to simulate elapsed time. +/// @param[in] usecs Nr. of uSeconds to be added. +/// @note Only used in unit testing. #ifdef UNIT_TEST void IRtimer::add(uint32_t usecs) { _IRtimer_unittest_now += usecs; } #endif // UNIT_TEST -// This class performs a simple time in milli-seoncds since instantiated. -// Handles when the system timer wraps around (once). +/// Class constructor. TimerMs::TimerMs() { reset(); } +/// Resets the TimerMs object. void TimerMs::reset() { #ifndef UNIT_TEST start = millis(); @@ -52,6 +56,8 @@ void TimerMs::reset() { #endif } +/// Calculate how many milliseconds have elapsed since the timer was started. +/// @return Nr. of milliseconds. uint32_t TimerMs::elapsed() { #ifndef UNIT_TEST uint32_t now = millis(); @@ -64,7 +70,9 @@ uint32_t TimerMs::elapsed() { return UINT32_MAX - start + now; // Has wrapped. } -// Only used in unit testing. +/// Add time to the timer to simulate elapsed time. +/// @param[in] msecs Nr. of mSeconds to be added. +/// @note Only used in unit testing. #ifdef UNIT_TEST void TimerMs::add(uint32_t msecs) { _IRtimer_unittest_now += msecs; } #endif // UNIT_TEST diff --git a/lib/IRremoteESP8266-2.7.7/src/IRtimer.h b/lib/IRremoteESP8266-2.7.8/src/IRtimer.h similarity index 65% rename from lib/IRremoteESP8266-2.7.7/src/IRtimer.h rename to lib/IRremoteESP8266-2.7.8/src/IRtimer.h index d00e1d0fa..1a2215fd5 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRtimer.h +++ b/lib/IRremoteESP8266-2.7.8/src/IRtimer.h @@ -7,6 +7,9 @@ #include // Classes + +/// This class performs a simple timer in useconds since instantiated. +/// @note Handles when the system timer wraps around (once). class IRtimer { public: IRtimer(); @@ -20,6 +23,8 @@ class IRtimer { uint32_t start; }; +/// This class performs a simple timer in milli-seoncds since instantiated. +/// @note Handles when the system timer wraps around (once). class TimerMs { public: TimerMs(); diff --git a/lib/IRremoteESP8266-2.7.7/src/IRutils.cpp b/lib/IRremoteESP8266-2.7.8/src/IRutils.cpp similarity index 61% rename from lib/IRremoteESP8266-2.7.7/src/IRutils.cpp rename to lib/IRremoteESP8266-2.7.8/src/IRutils.cpp index 39d9973ed..9393fcf2d 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRutils.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/IRutils.cpp @@ -17,12 +17,10 @@ #include "IRsend.h" #include "IRtext.h" -// Reverse the order of the requested least significant nr. of bits. -// Args: -// input: Bit pattern/integer to reverse. -// nbits: Nr. of bits to reverse. -// Returns: -// The reversed bit pattern. +/// Reverse the order of the requested least significant nr. of bits. +/// @param[in] input Bit pattern/integer to reverse. +/// @param[in] nbits Nr. of bits to reverse. (LSB -> MSB) +/// @return The reversed bit pattern. uint64_t reverseBits(uint64_t input, uint16_t nbits) { if (nbits <= 1) return input; // Reversing <= 1 bits makes no change at all. // Cap the nr. of bits to rotate to the max nr. of bits in the input. @@ -37,15 +35,12 @@ uint64_t reverseBits(uint64_t input, uint16_t nbits) { return (input << nbits) | output; } -// Convert a uint64_t (unsigned long long) to a string. -// Arduino String/toInt/Serial.print() can't handle printing 64 bit values. -// -// Args: -// input: The value to print -// base: The output base. -// Returns: -// A string representation of the integer. -// Note: Based on Arduino's Print::printNumber() +/// Convert a uint64_t (unsigned long long) to a string. +/// Arduino String/toInt/Serial.print() can't handle printing 64 bit values. +/// @param[in] input The value to print +/// @param[in] base The output base. +/// @returns A String representation of the integer. +/// @note Based on Arduino's Print::printNumber() String uint64ToString(uint64_t input, uint8_t base) { String result = ""; // prevent issues if called with base <= 1 @@ -73,23 +68,18 @@ String uint64ToString(uint64_t input, uint8_t base) { } #ifdef ARDUINO -// Print a uint64_t/unsigned long long to the Serial port -// Serial.print() can't handle printing long longs. (uint64_t) -// -// Args: -// input: The value to print -// base: The output base. +/// Print a uint64_t/unsigned long long to the Serial port +/// Serial.print() can't handle printing long longs. (uint64_t) +/// @param[in] input The value to print +/// @param[in] base The output base. void serialPrintUint64(uint64_t input, uint8_t base) { Serial.print(uint64ToString(input, base)); } #endif -// Convert a C-style str to a decode_type_t -// -// Args: -// str: A C-style string containing a protocol name or number. -// Returns: -// A decode_type_t enum. +/// Convert a C-style string to a decode_type_t. +/// @param[in] str A C-style string containing a protocol name or number. +/// @return A decode_type_t enum. (decode_type_t::UNKNOWN if no match.) decode_type_t strToDecodeType(const char * const str) { const char *ptr = kAllProtocolNamesStr; uint16_t length = strlen(ptr); @@ -108,12 +98,10 @@ decode_type_t strToDecodeType(const char * const str) { return decode_type_t::UNKNOWN; } -// Convert a protocol type (enum etc) to a human readable string. -// Args: -// protocol: Nr. (enum) of the protocol. -// isRepeat: A flag indicating if it is a repeat message of the protocol. -// Returns: -// A string containing the protocol name. +/// Convert a protocol type (enum etc) to a human readable string. +/// @param[in] protocol Nr. (enum) of the protocol. +/// @param[in] isRepeat A flag indicating if it is a repeat message. +/// @return A String containing the protocol name. kUnknownStr if no match. String typeToString(const decode_type_t protocol, const bool isRepeat) { String result = ""; const char *ptr = kAllProtocolNamesStr; @@ -136,11 +124,15 @@ String typeToString(const decode_type_t protocol, const bool isRepeat) { return result; } -// Does the given protocol use a complex state as part of the decode? +/// Does the given protocol use a complex state as part of the decode? +/// @param[in] protocol The decode_type_t protocol we are enquiring about. +/// @return True if the protocol uses a state array. False if just an integer. bool hasACState(const decode_type_t protocol) { switch (protocol) { + // This is keept sorted by name case AMCOR: case ARGO: + case CORONA_AC: case DAIKIN: case DAIKIN128: case DAIKIN152: @@ -157,6 +149,7 @@ bool hasACState(const decode_type_t protocol) { case HITACHI_AC1: case HITACHI_AC2: case HITACHI_AC3: + case HITACHI_AC344: case HITACHI_AC424: case KELVINATOR: case MITSUBISHI136: @@ -179,12 +172,10 @@ bool hasACState(const decode_type_t protocol) { } } -// Return the corrected length of a 'raw' format array structure -// after over-large values are converted into multiple entries. -// Args: -// results: A ptr to a decode result. -// Returns: -// A uint16_t containing the length. +/// Return the corrected length of a 'raw' format array structure +/// after over-large values are converted into multiple entries. +/// @param[in] results A ptr to a decode_results structure. +/// @return The corrected length. uint16_t getCorrectedRawLength(const decode_results * const results) { uint16_t extended_length = results->rawlen - 1; for (uint16_t i = 0; i < results->rawlen - 1; i++) { @@ -195,8 +186,10 @@ uint16_t getCorrectedRawLength(const decode_results * const results) { return extended_length; } -// Return a string containing the key values of a decode_results structure -// in a C/C++ code style format. +/// Return a String containing the key values of a decode_results structure +/// in a C/C++ code style format. +/// @param[in] results A ptr to a decode_results structure. +/// @return A String containing the code-ified result. String resultToSourceCode(const decode_results * const results) { String output = ""; // Reserve some space for the string to reduce heap fragmentation. @@ -274,8 +267,10 @@ String resultToSourceCode(const decode_results * const results) { return output; } -// Dump out the decode_results structure. -// +/// Dump out the decode_results structure. +/// @param[in] results A ptr to a decode_results structure. +/// @return A String containing the legacy information format. +/// @deprecated This is only for those that want this legacy format. String resultToTimingInfo(const decode_results * const results) { String output = ""; String value = ""; @@ -303,8 +298,9 @@ String resultToTimingInfo(const decode_results * const results) { return output; } -// Convert the decode_results structure's value/state to simple hexadecimal. -// +/// Convert the decode_results structure's value/state to simple hexadecimal. +/// @param[in] result A ptr to a decode_results structure. +/// @return A String containing the output. String resultToHexidecimal(const decode_results * const result) { String output = F("0x"); // Reserve some space for the string to reduce heap fragmentation. @@ -322,8 +318,9 @@ String resultToHexidecimal(const decode_results * const result) { return output; } -// Dump out the decode_results structure. -// +/// Dump out the decode_results structure into a human readable format. +/// @param[in] results A ptr to a decode_results structure. +/// @return A String containing the output. String resultToHumanReadableBasic(const decode_results * const results) { String output = ""; // Reserve some space for the string to reduce heap fragmentation. @@ -346,13 +343,11 @@ String resultToHumanReadableBasic(const decode_results * const results) { return output; } -// Convert a decode_results into an array suitable for `sendRaw()`. -// Args: -// decode: A pointer to an IR decode_results structure that contains a mesg. -// Returns: -// A pointer to a dynamically allocated uint16_t sendRaw compatible array. -// Note: -// Result needs to be delete[]'ed/free()'ed (deallocated) after use by caller. +/// Convert a decode_results into an array suitable for `sendRaw()`. +/// @param[in] decode A ptr to a decode_results structure that contains a mesg. +/// @return A PTR to a dynamically allocated uint16_t sendRaw compatible array. +/// @note The returned array needs to be delete[]'ed/free()'ed (deallocated) +/// after use by caller. uint16_t* resultToRawArray(const decode_results * const decode) { uint16_t *result = new uint16_t[getCorrectedRawLength(decode)]; if (result != NULL) { // The memory was allocated successfully. @@ -371,6 +366,12 @@ uint16_t* resultToRawArray(const decode_results * const decode) { return result; } +/// Sum all the bytes of an array and return the least significant 8-bits of +/// the result. +/// @param[in] start A ptr to the start of the byte array to calculate over. +/// @param[in] length How many bytes to use in the calculation. +/// @param[in] init Starting value of the calculation to use. (Default is 0) +/// @return The 8-bit calculated result of all the bytes and init value. uint8_t sumBytes(const uint8_t * const start, const uint16_t length, const uint8_t init) { uint8_t checksum = init; @@ -379,6 +380,11 @@ uint8_t sumBytes(const uint8_t * const start, const uint16_t length, return checksum; } +/// Calculate a rolling XOR of all the bytes of an array. +/// @param[in] start A ptr to the start of the byte array to calculate over. +/// @param[in] length How many bytes to use in the calculation. +/// @param[in] init Starting value of the calculation to use. (Default is 0) +/// @return The 8-bit calculated result of all the bytes and init value. uint8_t xorBytes(const uint8_t * const start, const uint16_t length, const uint8_t init) { uint8_t checksum = init; @@ -387,14 +393,12 @@ uint8_t xorBytes(const uint8_t * const start, const uint16_t length, return checksum; } -// Count the number of bits of a certain type. -// Args: -// start: Ptr to the start of data to count bits in. -// length: How many bytes to count. -// ones: Count the binary 1 bits. False for counting the 0 bits. -// init: Start the counting from this value. -// Returns: -// Nr. of bits found. +/// Count the number of bits of a certain type in an array. +/// @param[in] start A ptr to the start of the byte array to calculate over. +/// @param[in] length How many bytes to use in the calculation. +/// @param[in] ones Count the binary nr of `1` bits. False is count the `0`s. +/// @param[in] init Starting value of the calculation to use. (Default is 0) +/// @return The nr. of bits found of the given type found in the array. uint16_t countBits(const uint8_t * const start, const uint16_t length, const bool ones, const uint16_t init) { uint16_t count = init; @@ -409,14 +413,12 @@ uint16_t countBits(const uint8_t * const start, const uint16_t length, return (length * 8) - count; } -// Count the number of bits of a certain type. -// Args: -// data: The value you want bits counted for, starting from the LSB. -// length: How many bits to count. -// ones: Count the binary 1 bits. False for counting the 0 bits. -// init: Start the counting from this value. -// Returns: -// Nr. of bits found. +/// Count the number of bits of a certain type in an Integer. +/// @param[in] data The value you want bits counted for. Starting from the LSB. +/// @param[in] length How many bits to use in the calculation? Starts at the LSB +/// @param[in] ones Count the binary nr of `1` bits. False is count the `0`s. +/// @param[in] init Starting value of the calculation to use. (Default is 0) +/// @return The nr. of bits found of the given type found in the Integer. uint16_t countBits(const uint64_t data, const uint8_t length, const bool ones, const uint16_t init) { uint16_t count = init; @@ -430,6 +432,10 @@ uint16_t countBits(const uint64_t data, const uint8_t length, const bool ones, return length - count; } +/// Invert/Flip the bits in an Integer. +/// @param[in] data The Integer that will be inverted. +/// @param[in] nbits How many bits are to be inverted. Starting from the LSB. +/// @return An Integer with the appropriate bits inverted/flipped. uint64_t invertBits(const uint64_t data, const uint16_t nbits) { // No change if we are asked to invert no bits. if (nbits == 0) return data; @@ -440,11 +446,19 @@ uint64_t invertBits(const uint64_t data, const uint16_t nbits) { return (result & ((1ULL << nbits) - 1)); } +/// Convert degrees Celsius to degrees Fahrenheit. float celsiusToFahrenheit(const float deg) { return (deg * 9.0) / 5.0 + 32.0; } +/// Convert degrees Fahrenheit to degrees Celsius. float fahrenheitToCelsius(const float deg) { return (deg - 32.0) * 5.0 / 9.0; } namespace irutils { + /// Create a String with a colon separated "label: value" pair suitable for + /// Humans. + /// @param[in] value The value to come after the label. + /// @param[in] label The label to precede the value. + /// @param[in] precomma Should the output string start with ", " or not? + /// @return The resulting String. String addLabeledString(const String value, const String label, const bool precomma) { String result = ""; @@ -454,16 +468,33 @@ namespace irutils { return result + value; } + /// Create a String with a colon separated flag suitable for Humans. + /// e.g. "Power: On" + /// @param[in] value The value to come after the label. + /// @param[in] label The label to precede the value. + /// @param[in] precomma Should the output string start with ", " or not? + /// @return The resulting String. String addBoolToString(const bool value, const String label, const bool precomma) { return addLabeledString((value ? kOnStr : kOffStr), label, precomma); } + /// Create a String with a colon separated labeled Integer suitable for + /// Humans. + /// e.g. "Foo: 23" + /// @param[in] value The value to come after the label. + /// @param[in] label The label to precede the value. + /// @param[in] precomma Should the output string start with ", " or not? + /// @return The resulting String. String addIntToString(const uint16_t value, const String label, const bool precomma) { return addLabeledString(uint64ToString(value), label, precomma); } + /// Generate the model string for a given Protocol/Model pair. + /// @param[in] protocol The IR protocol. + /// @param[in] model The model number for that protocol. + /// @return The resulting String. String modelToStr(const decode_type_t protocol, const int16_t model) { switch (protocol) { case decode_type_t::FUJITSU_AC: @@ -522,6 +553,12 @@ namespace irutils { } } + /// Create a String of human output for a given protocol model number. + /// e.g. "Model: JKE" + /// @param[in] protocol The IR protocol. + /// @param[in] model The model number for that protocol. + /// @param[in] precomma Should the output string start with ", " or not? + /// @return The resulting String. String addModelToString(const decode_type_t protocol, const int16_t model, const bool precomma) { String result = addIntToString(model, kModelStr, precomma); @@ -530,6 +567,13 @@ namespace irutils { return result + ')'; } + /// Create a String of human output for a given temperature. + /// e.g. "Temp: 25C" + /// @param[in] degrees The temperature in degrees. + /// @param[in] celsius Is the temp Celsius or Fahrenheit. + /// true is C, false is F + /// @param[in] precomma Should the output string start with ", " or not? + /// @return The resulting String. String addTempToString(const uint16_t degrees, const bool celsius, const bool precomma) { String result = addIntToString(degrees, kTempStr, precomma); @@ -537,6 +581,15 @@ namespace irutils { return result; } + /// Create a String of human output for the given operating mode. + /// e.g. "Mode: 1 (Cool)" + /// @param[in] mode The operating mode to display. + /// @param[in] automatic The numeric value for Auto mode. + /// @param[in] cool The numeric value for Cool mode. + /// @param[in] heat The numeric value for Heat mode. + /// @param[in] dry The numeric value for Dry mode. + /// @param[in] fan The numeric value for Fan mode. + /// @return The resulting String. String addModeToString(const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan) { @@ -552,6 +605,14 @@ namespace irutils { return result + ')'; } + /// Create a String of the 3-letter day of the week from a numerical day of + /// the week. e.g. "Day: 1 (Mon)" + /// @param[in] day_of_week A numerical version of the sequential day of the + /// week. e.g. Saturday = 7 etc. + /// @param[in] offset Days to offset by. + /// e.g. For different day starting the week. + /// @param[in] precomma Should the output string start with ", " or not? + /// @return The resulting String. String addDayToString(const uint8_t day_of_week, const int8_t offset, const bool precomma) { String result = addIntToString(day_of_week, kDayStr, precomma); @@ -569,6 +630,15 @@ namespace irutils { return result + ')'; } + /// Create a String of human output for the given fan speed. + /// e.g. "Fan: 0 (Auto)" + /// @param[in] speed The numeric speed of the fan to display. + /// @param[in] high The numeric value for High speed. + /// @param[in] low The numeric value for Low speed. + /// @param[in] automatic The numeric value for Auto speed. + /// @param[in] quiet The numeric value for Quiet speed. + /// @param[in] medium The numeric value for Medium speed. + /// @return The resulting String. String addFanToString(const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium) { @@ -584,11 +654,9 @@ namespace irutils { return result + ')'; } - // Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. - // Args: - // unescaped: A string containing text to make HTML safe. - // Returns: - // A string that is HTML safe. + /// Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. + /// @param[in] unescaped A String containing text to make HTML safe. + /// @return A string that is HTML safe. String htmlEscape(const String unescaped) { String result = ""; uint16_t ulen = unescaped.length(); @@ -597,55 +665,30 @@ namespace irutils { char c = unescaped[i]; switch (c) { // ';!-"<>=&#{}() are all unsafe. - case '\'': - result += F("'"); - break; - case ';': - result += F(";"); - break; - case '!': - result += F("!"); - break; - case '-': - result += F("‐"); - break; - case '\"': - result += F("""); - break; - case '<': - result += F("<"); - break; - case '>': - result += F(">"); - break; - case '=': - result += F("&#equals;"); - break; - case '&': - result += F("&"); - break; - case '#': - result += F("#"); - break; - case '{': - result += F("{"); - break; - case '}': - result += F("}"); - break; - case '(': - result += F("("); - break; - case ')': - result += F(")"); - break; - default: - result += c; + case '\'': result += F("'"); break; + case ';': result += F(";"); break; + case '!': result += F("!"); break; + case '-': result += F("‐"); break; + case '\"': result += F("""); break; + case '<': result += F("<"); break; + case '>': result += F(">"); break; + case '=': result += F("&#equals;"); break; + case '&': result += F("&"); break; + case '#': result += F("#"); break; + case '{': result += F("{"); break; + case '}': result += F("}"); break; + case '(': result += F("("); break; + case ')': result += F(")"); break; + default: result += c; } } return result; } + /// Convert a nr. of milliSeconds into a Human-readable string. + /// e.g. "1 Day 6 Hours 34 Minutes 17 Seconds" + /// @param[in] msecs Nr. of milliSeconds (ms). + /// @return A human readable string. String msToString(uint32_t const msecs) { uint32_t totalseconds = msecs / 1000; if (totalseconds == 0) return kNowStr; @@ -678,6 +721,10 @@ namespace irutils { return result; } + /// Convert a nr. of minutes into a 24h clock format Human-readable string. + /// e.g. "23:59" + /// @param[in] mins Nr. of Minutes. + /// @return A human readable string. String minsToString(const uint16_t mins) { String result = ""; result.reserve(5); // 23:59 is the typical worst case. @@ -688,13 +735,11 @@ namespace irutils { return result; } - // Sum all the nibbles together in a series of bytes. - // Args: - // start: PTR to the start of the bytes. - // length: Nr of bytes to sum the nibbles of. - // init: Starting value of the sum. - // Returns: - // A uint8_t sum of all the nibbles inc the init. + /// Sum all the nibbles together in a series of bytes. + /// @param[in] start A ptr to the start of the byte array to calculate over. + /// @param[in] length How many bytes to use in the calculation. + /// @param[in] init Starting value of the calculation to use. (Default is 0) + /// @return The 8-bit calculated result of all the bytes and init value. uint8_t sumNibbles(const uint8_t * const start, const uint16_t length, const uint8_t init) { uint8_t sum = init; @@ -704,41 +749,62 @@ namespace irutils { return sum; } + /// Sum all the nibbles together in an integer. + /// @param[in] data The integer to be summed. + /// @param[in] count The number of nibbles to sum. Starts from LSB. Max of 16. + /// @param[in] init Starting value of the calculation to use. (Default is 0) + /// @param[in] nibbleonly true, the result is 4 bits. false, it's 8 bits. + /// @return The 4/8-bit calculated result of all the nibbles and init value. + uint8_t sumNibbles(const uint64_t data, const uint8_t count, + const uint8_t init, const bool nibbleonly) { + uint8_t sum = init; + uint64_t copy = data; + const uint8_t nrofnibbles = (count < 16) ? count : (64 / 4); + for (uint8_t i = 0; i < nrofnibbles; i++, copy >>= 4) sum += copy & 0xF; + return nibbleonly ? sum & 0xF : sum; + } + + /// Convert a byte of Binary Coded Decimal(BCD) into an Integer. + /// @param[in] bcd The BCD value. + /// @return A normal Integer value. uint8_t bcdToUint8(const uint8_t bcd) { if (bcd > 0x99) return 255; // Too big. return (bcd >> 4) * 10 + (bcd & 0xF); } + /// Convert an Integer into a byte of Binary Coded Decimal(BCD). + /// @param[in] integer The number to convert. + /// @return An 8-bit BCD value. uint8_t uint8ToBcd(const uint8_t integer) { if (integer > 99) return 255; // Too big. return ((integer / 10) << 4) + (integer % 10); } - // Return the value of `position`th bit of `data`. - // Args: - // data: Value to be examined. - // position: Nr. of the nth bit to be examined. `0` is the LSB. - // size: Nr. of bits in data. + /// Return the value of `position`th bit of an Integer. + /// @param[in] data Value to be examined. + /// @param[in] position Nr. of the Nth bit to be examined. `0` is the LSB. + /// @param[in] size Nr. of bits in data. + /// @return The bit's value. bool getBit(const uint64_t data, const uint8_t position, const uint8_t size) { if (position >= size) return false; // Outside of range. return data & (1ULL << position); } - // Return the value of `position`th bit of `data`. - // Args: - // data: Value to be examined. - // position: Nr. of the nth bit to be examined. `0` is the LSB. + /// Return the value of `position`th bit of an Integer. + /// @param[in] data Value to be examined. + /// @param[in] position Nr. of the Nth bit to be examined. `0` is the LSB. + /// @return The bit's value. bool getBit(const uint8_t data, const uint8_t position) { if (position >= 8) return false; // Outside of range. return data & (1 << position); } - // Return the value of `data` with the `position`th bit changed to `on` - // Args: - // data: Value to be changed. - // position: Nr. of the bit to be changed. `0` is the LSB. - // on: Value to set the position'th bit to. - // size: Nr. of bits in data. + /// Return the value of an Integer with the `position`th bit changed. + /// @param[in] data Value to be changed. + /// @param[in] position Nr. of the bit to be changed. `0` is the LSB. + /// @param[in] on Value to set the position'th bit to. + /// @param[in] size Nr. of bits in data. + /// @return A suitably modified integer. uint64_t setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size) { if (position >= size) return data; // Outside of range. @@ -749,11 +815,11 @@ namespace irutils { return data & ~mask; } - // Return the value of `data` with the `position`th bit changed to `on` - // Args: - // data: Value to be changed. - // position: Nr. of the bit to be changed. `0` is the LSB. - // on: Value to set the position'th bit to. + /// Return the value of an Integer with the `position`th bit changed. + /// @param[in] data Value to be changed. + /// @param[in] position Nr. of the bit to be changed. `0` is the LSB. + /// @param[in] on Value to set the position'th bit to. + /// @return A suitably modified integer. uint8_t setBit(const uint8_t data, const uint8_t position, const bool on) { if (position >= 8) return data; // Outside of range. uint8_t mask = 1 << position; @@ -763,12 +829,10 @@ namespace irutils { return data & ~mask; } - // Change the value at the location `data_ptr` with the `position`th bit - // changed to `on` - // Args: - // data: Ptr to the data to be changed. - // position: Nr. of the bit to be changed. `0` is the LSB. - // on: Value to set the position'th bit to. + /// Alter the value of an Integer with the `position`th bit changed. + /// @param[in,out] data A pointer to the 8-bit integer to be changed. + /// @param[in] position Nr. of the bit to be changed. `0` is the LSB. + /// @param[in] on Value to set the position'th bit to. void setBit(uint8_t * const data, const uint8_t position, const bool on) { uint8_t mask = 1 << position; if (on) @@ -777,12 +841,10 @@ namespace irutils { *data &= ~mask; } - // Change the value at the location `data_ptr` with the `position`th bit - // changed to `on` - // Args: - // data: Ptr to the data to be changed. - // position: Nr. of the bit to be changed. `0` is the LSB. - // on: Value to set the position'th bit to. + /// Alter the value of an Integer with the `position`th bit changed. + /// @param[in,out] data A pointer to the 32-bit integer to be changed. + /// @param[in] position Nr. of the bit to be changed. `0` is the LSB. + /// @param[in] on Value to set the position'th bit to. void setBit(uint32_t * const data, const uint8_t position, const bool on) { uint32_t mask = (uint32_t)1 << position; if (on) @@ -791,12 +853,10 @@ namespace irutils { *data &= ~mask; } - // Change the value at the location `data_ptr` with the `position`th bit - // changed to `on` - // Args: - // data: Ptr to the data to be changed. - // position: Nr. of the bit to be changed. `0` is the LSB. - // on: Value to set the position'th bit to. + /// Alter the value of an Integer with the `position`th bit changed. + /// @param[in,out] data A pointer to the 64-bit integer to be changed. + /// @param[in] position Nr. of the bit to be changed. `0` is the LSB. + /// @param[in] on Value to set the position'th bit to. void setBit(uint64_t * const data, const uint8_t position, const bool on) { uint64_t mask = (uint64_t)1 << position; if (on) @@ -805,13 +865,11 @@ namespace irutils { *data &= ~mask; } - // Change the uint8_t pointed to by `dst` starting at the `offset`th bit - // and for `nbits` bits, with the contents of `data`. - // Args: - // dst: Ptr to the uint8_t to be changed. - // offset: Nr. of bits from the Least Significant Bit to be ignored. - // nbits: Nr of bits of `data` to be placed into the destination uint8_t. - // data: Value to be placed into dst. + /// Alter an uint8_t value by overwriting an arbitary given number of bits. + /// @param[in,out] dst A pointer to the value to be changed. + /// @param[in] offset Nr. of bits from the Least Significant Bit to be ignored + /// @param[in] nbits Nr of bits of data to be placed into the destination. + /// @param[in] data The value to be placed. void setBits(uint8_t * const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data) { if (offset >= 8 || !nbits) return; // Short circuit as it won't change. @@ -824,13 +882,11 @@ namespace irutils { *dst |= ((data & mask) << offset); } - // Change the uint32_t pointed to by `dst` starting at the `offset`th bit - // and for `nbits` bits, with the contents of `data`. - // Args: - // dst: Ptr to the uint32_t to be changed. - // offset: Nr. of bits from the Least Significant Bit to be ignored. - // nbits: Nr of bits of `data` to be placed into the destination uint32_t. - // data: Value to be placed into dst. + /// Alter an uint32_t value by overwriting an arbitary given number of bits. + /// @param[in,out] dst A pointer to the value to be changed. + /// @param[in] offset Nr. of bits from the Least Significant Bit to be ignored + /// @param[in] nbits Nr of bits of data to be placed into the destination. + /// @param[in] data The value to be placed. void setBits(uint32_t * const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data) { if (offset >= 32 || !nbits) return; // Short circuit as it won't change. @@ -843,13 +899,11 @@ namespace irutils { *dst |= ((data & mask) << offset); } - // Change the uint64_t pointed to by `dst` starting at the `offset`th bit - // and for `nbits` bits, with the contents of `data`. - // Args: - // dst: Ptr to the uint64_t to be changed. - // offset: Nr. of bits from the Least Significant Bit to be ignored. - // nbits: Nr of bits of `data` to be placed into the destination uint64_t. - // data: Value to be placed into dst. + /// Alter an uint64_t value by overwriting an arbitary given number of bits. + /// @param[in,out] dst A pointer to the value to be changed. + /// @param[in] offset Nr. of bits from the Least Significant Bit to be ignored + /// @param[in] nbits Nr of bits of data to be placed into the destination. + /// @param[in] data The value to be placed. void setBits(uint64_t * const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data) { if (offset >= 64 || !nbits) return; // Short circuit as it won't change. diff --git a/lib/IRremoteESP8266-2.7.7/src/IRutils.h b/lib/IRremoteESP8266-2.7.8/src/IRutils.h similarity index 95% rename from lib/IRremoteESP8266-2.7.7/src/IRutils.h rename to lib/IRremoteESP8266-2.7.8/src/IRutils.h index 34319134a..3c865dfcf 100644 --- a/lib/IRremoteESP8266-2.7.7/src/IRutils.h +++ b/lib/IRremoteESP8266-2.7.8/src/IRutils.h @@ -42,6 +42,8 @@ uint64_t invertBits(const uint64_t data, const uint16_t nbits); decode_type_t strToDecodeType(const char *str); float celsiusToFahrenheit(const float deg); float fahrenheitToCelsius(const float deg); +/// Namespace for covering common functions & procedures for advancd protocol +/// handlers namespace irutils { String addBoolToString(const bool value, const String label, const bool precomma = true); @@ -67,6 +69,8 @@ namespace irutils { String minsToString(const uint16_t mins); uint8_t sumNibbles(const uint8_t * const start, const uint16_t length, const uint8_t init = 0); + uint8_t sumNibbles(const uint64_t data, const uint8_t count = 16, + const uint8_t init = 0, const bool nibbleonly = true); uint8_t bcdToUint8(const uint8_t bcd); uint8_t uint8ToBcd(const uint8_t integer); bool getBit(const uint64_t data, const uint8_t position, diff --git a/lib/IRremoteESP8266-2.7.7/src/i18n.h b/lib/IRremoteESP8266-2.7.8/src/i18n.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/src/i18n.h rename to lib/IRremoteESP8266-2.7.8/src/i18n.h diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Airwell.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Airwell.cpp similarity index 55% rename from lib/IRremoteESP8266-2.7.7/src/ir_Airwell.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Airwell.cpp index 5eb103b84..2bf0a2db8 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Airwell.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Airwell.cpp @@ -3,35 +3,32 @@ #include "IRrecv.h" #include "IRsend.h" -// Airwell "Manchester code" based protocol. -// Some other Airwell products use the COOLIX protocol. -// +/// @file +/// @brief Airwell "Manchester code" based protocol. +/// Some other Airwell products use the COOLIX protocol. + // Supports: // Brand: Airwell, Model: RC08W remote +// Brand: Airwell, Model: RC04 remote +// Brand: Airwell, Model: DLS 21 DCI R410 AW A/C const uint8_t kAirwellOverhead = 4; const uint16_t kAirwellHalfClockPeriod = 950; // uSeconds const uint16_t kAirwellHdrMark = 3 * kAirwellHalfClockPeriod; // uSeconds -const uint16_t kAirwellHdrSpace = 4 * kAirwellHalfClockPeriod; // uSeconds +const uint16_t kAirwellHdrSpace = 3 * kAirwellHalfClockPeriod; // uSeconds const uint16_t kAirwellFooterMark = 5 * kAirwellHalfClockPeriod; // uSeconds #if SEND_AIRWELL -// Send an Airwell Manchester Code formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. -// Typically kAirwellBits. -// repeat: The number of times the command is to be repeated. -// -// Status: BETA / Appears to be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1069 +/// Send an Airwell Manchester Code formatted message. +/// Status: BETA / Appears to be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of the message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1069 void IRsend::sendAirwell(uint64_t data, uint16_t nbits, uint16_t repeat) { // Header + Data sendManchester(kAirwellHdrMark, kAirwellHdrMark, kAirwellHalfClockPeriod, - 0, 0, data, nbits, 38000, true, repeat); + 0, 0, data, nbits, 38000, true, repeat, kDutyDefault, false); // Footer mark(kAirwellHdrMark + kAirwellHalfClockPeriod); space(kDefaultMessageGap); // A guess. @@ -39,21 +36,17 @@ void IRsend::sendAirwell(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif #if DECODE_AIRWELL -// Decode the supplied Airwell "Manchester code" message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kAirwellBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Appears to be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1069 +/// Decode the supplied Airwell "Manchester code" message. +/// +/// Status: BETA / Appears to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1069 bool IRrecv::decodeAirwell(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < nbits + kAirwellOverhead - offset) @@ -69,7 +62,7 @@ bool IRrecv::decodeAirwell(decode_results *results, uint16_t offset, kAirwellHdrMark, kAirwellHdrMark, kAirwellHalfClockPeriod, kAirwellHdrMark, kAirwellHdrSpace, - true); + true, kUseDefTol, kMarkExcess, true, false); if (used == 0) return false; offset += used; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Aiwa.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Aiwa.cpp similarity index 63% rename from lib/IRremoteESP8266-2.7.7/src/ir_Aiwa.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Aiwa.cpp index 95dffe1aa..2b989c6ae 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Aiwa.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Aiwa.cpp @@ -3,15 +3,12 @@ #include "IRrecv.h" #include "IRsend.h" -// AAA IIIII W W AAA -// A A I W W A A -// AAAAA I W W W AAAAA -// A A I W W W A A -// A A IIIII WWW A A +/// @file +/// @brief Aiwa based protocol. +/// Based off the RC-T501 RCU +/// Inspired by IRremoteESP8266's implementation +/// @see https://github.com/z3t0/Arduino-IRremote -// Based off the RC-T501 RCU -// Added by David Conran. (Inspired by IRremoteESP8266's implementation: -// https://github.com/z3t0/Arduino-IRremote) // Supports: // Brand: Aiwa, Model: RC-T501 RCU @@ -23,18 +20,13 @@ const uint64_t kAiwaRcT501PreData = 0x1D8113FULL; // 26-bits const uint64_t kAiwaRcT501PostData = 1ULL; #if SEND_AIWA_RC_T501 -// Send an Aiwa RC T501 formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. -// Typically kAiwaRcT501Bits. Max is 37 = (64 - 27) -// repeat: The number of times the command is to be repeated. -// -// Status: BETA / Should work. -// -// Ref: -// http://lirc.sourceforge.net/remotes/aiwa/RC-T501 +/// Send an Aiwa RC T501 formatted message. +/// Status: BETA / Should work. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of the message to be sent. +/// Typically kAiwaRcT501Bits. Max is 37 = (64 - 27) +/// @param[in] repeat The number of times the command is to be repeated. +/// @see http://lirc.sourceforge.net/remotes/aiwa/RC-T501 void IRsend::sendAiwaRCT501(uint64_t data, uint16_t nbits, uint16_t repeat) { // Appears to be an extended NEC1 protocol. i.e. 42 bits instead of 32 bits. // So use sendNEC instead, however the twist is it has a fixed 26 bit @@ -49,28 +41,23 @@ void IRsend::sendAiwaRCT501(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif #if DECODE_AIWA_RC_T501 -// Decode the supplied Aiwa RC T501 message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kAiwaRcT501Bits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Should work. -// -// Notes: -// Aiwa RC T501 appears to be a 42 bit variant of the NEC1 protocol. -// However, we historically (original Arduino IRremote project) treats it as -// a 15 bit (data) protocol. So, we expect nbits to typically be 15, and we -// will remove the prefix and postfix from the raw data, and use that as -// the result. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/nec.php +/// Decode the supplied Aiwa RC T501 message. +/// Status: BETA / Should work. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @note +/// Aiwa RC T501 appears to be a 42 bit variant of the NEC1 protocol. +/// However, we historically (original Arduino IRremote project) treats it as +/// a 15 bit (data) protocol. So, we expect nbits to typically be 15, and we +/// will remove the prefix and postfix from the raw data, and use that as +/// the result. +/// @see http://www.sbprojects.com/knowledge/ir/nec.php +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1069 bool IRrecv::decodeAiwaRCT501(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // Compliance diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Amcor.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Amcor.cpp similarity index 68% rename from lib/IRremoteESP8266-2.7.7/src/ir_Amcor.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Amcor.cpp index b29933906..668280133 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Amcor.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Amcor.cpp @@ -1,9 +1,9 @@ // Copyright 2019 David Conran -// Supports: -// Brand: Amcor, Model: ADR-853H A/C -// Brand: Amcor, Model: TAC-495 remote -// Brand: Amcor, Model: TAC-444 remote +/// @file +/// @brief Amcor A/C protocol. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/385 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/834 #include "ir_Amcor.h" #include @@ -14,8 +14,6 @@ #include "IRutils.h" // Constants -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/385 const uint16_t kAmcorHdrMark = 8200; const uint16_t kAmcorHdrSpace = 4200; const uint16_t kAmcorOneMark = 1500; @@ -33,15 +31,11 @@ using irutils::addTempToString; using irutils::setBits; #if SEND_AMCOR -// Send a Amcor HVAC formatted message. -// -// Args: -// data: The message to be sent. -// nbytes: The byte size of the array being sent. typically kAmcorStateLength. -// repeat: The number of times the message is to be repeated. -// -// Status: STABLE / Reported as working. -// +/// Send a Amcor HVAC formatted message. +/// Status: STABLE / Reported as working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendAmcor(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { // Check if we have enough bytes to send a proper message. @@ -53,19 +47,15 @@ void IRsend::sendAmcor(const unsigned char data[], const uint16_t nbytes, #endif #if DECODE_AMCOR -// Decode the supplied Amcor HVAC message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. -// Typically kAmcorBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Reported as working. -// +/// Decode the supplied Amcor HVAC message. +/// Status: STABLE / Reported as working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeAmcor(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= 2 * nbits + kHeader - 1 + offset) @@ -99,31 +89,48 @@ bool IRrecv::decodeAmcor(decode_results *results, uint16_t offset, } #endif +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRAmcorAc::IRAmcorAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Set up hardware to be able to send a message. void IRAmcorAc::begin(void) { _irsend.begin(); } #if SEND_AMCOR +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRAmcorAc::send(const uint16_t repeat) { _irsend.sendAmcor(getRaw(), kAmcorStateLength, repeat); } #endif // SEND_AMCOR +/// Calculate the checksum for the supplied state. +/// @param[in] state The source state to generate the checksum from. +/// @param[in] length Length of the supplied state to checksum. +/// @return The checksum value. uint8_t IRAmcorAc::calcChecksum(const uint8_t state[], const uint16_t length) { return irutils::sumNibbles(state, length - 1); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The size of the state. +/// @return A boolean indicating if it's checksum is valid. bool IRAmcorAc::validChecksum(const uint8_t state[], const uint16_t length) { return (state[length - 1] == IRAmcorAc::calcChecksum(state, length)); } +/// Update the checksum value for the internal state. void IRAmcorAc::checksum(void) { remote_state[kAmcorChecksumByte] = IRAmcorAc::calcChecksum(remote_state, kAmcorStateLength); } +/// Reset the internals of the object to a known good state. void IRAmcorAc::stateReset(void) { for (uint8_t i = 1; i < kAmcorStateLength; i++) remote_state[i] = 0x0; remote_state[0] = 0x01; @@ -132,30 +139,42 @@ void IRAmcorAc::stateReset(void) { setTemp(25); // 25C } +/// Get the raw state of the object, suitable to be sent with the appropriate +/// IRsend object method. +/// @return A PTR to the internal state. uint8_t* IRAmcorAc::getRaw(void) { this->checksum(); // Ensure correct bit array before returning return remote_state; } +/// Set the raw state of the object. +/// @param[in] state The raw state from the native IR message. void IRAmcorAc::setRaw(const uint8_t state[]) { memcpy(remote_state, state, kAmcorStateLength); } +/// Set the internal state to have the power on. void IRAmcorAc::on(void) { setPower(true); } +/// Set the internal state to have the power off. void IRAmcorAc::off(void) { setPower(false); } +/// Set the internal state to have the desired power. +/// @param[in] on The desired power state. void IRAmcorAc::setPower(const bool on) { setBits(&remote_state[kAmcorPowerByte], kAmcorPowerOffset, kAmcorPowerSize, on ? kAmcorPowerOn : kAmcorPowerOff); } +/// Get the power setting from the internal state. +/// @return A boolean indicating the power setting. bool IRAmcorAc::getPower(void) { return GETBITS8(remote_state[kAmcorPowerByte], kAmcorPowerOffset, kAmcorPowerSize) == kAmcorPowerOn; } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRAmcorAc::setTemp(const uint8_t degrees) { uint8_t temp = std::max(kAmcorMinTemp, degrees); temp = std::min(kAmcorMaxTemp, temp); @@ -163,12 +182,16 @@ void IRAmcorAc::setTemp(const uint8_t degrees) { temp); } +/// Get the current temperature setting. +/// @return Get current setting for temp. in degrees celsius. uint8_t IRAmcorAc::getTemp(void) { return GETBITS8(remote_state[kAmcorTempByte], kAmcorTempOffset, kAmcorTempSize); } -// Maximum Cooling or Hearing +/// Control the current Maximum Cooling or Heating setting. (i.e. Turbo) +/// @note Only allowed in Cool or Heat mode. +/// @param[in] on The desired setting. void IRAmcorAc::setMax(const bool on) { if (on) { switch (getMode()) { @@ -182,12 +205,15 @@ void IRAmcorAc::setMax(const bool on) { on ? kAmcorMax : 0); } +/// Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on? +/// @return The current value. bool IRAmcorAc::getMax(void) { return GETBITS8(remote_state[kAmcorSpecialByte], kAmcorMaxOffset, kAmcorMaxSize) == kAmcorMax; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRAmcorAc::setFan(const uint8_t speed) { switch (speed) { case kAmcorFanAuto: @@ -202,16 +228,22 @@ void IRAmcorAc::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRAmcorAc::getFan(void) { return GETBITS8(remote_state[kAmcorModeFanByte], kAmcorFanOffset, kAmcorFanSize); } +/// Get the current operation mode setting. +/// @return The current operation mode. uint8_t IRAmcorAc::getMode(void) { return GETBITS8(remote_state[kAmcorModeFanByte], kAmcorModeOffset, kAmcorModeSize); } +/// Set the desired operation mode. +/// @param[in] mode The desired operation mode. void IRAmcorAc::setMode(const uint8_t mode) { switch (mode) { case kAmcorFan: @@ -229,7 +261,9 @@ void IRAmcorAc::setMode(const uint8_t mode) { } } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRAmcorAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: @@ -245,7 +279,9 @@ uint8_t IRAmcorAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRAmcorAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -261,7 +297,9 @@ uint8_t IRAmcorAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRAmcorAc::toCommonMode(const uint8_t mode) { switch (mode) { case kAmcorCool: return stdAc::opmode_t::kCool; @@ -272,7 +310,9 @@ stdAc::opmode_t IRAmcorAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRAmcorAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kAmcorFanMax: return stdAc::fanspeed_t::kMax; @@ -282,7 +322,8 @@ stdAc::fanspeed_t IRAmcorAc::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRAmcorAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::AMCOR; @@ -307,7 +348,8 @@ stdAc::state_t IRAmcorAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRAmcorAc::toString(void) { String result = ""; result.reserve(70); // Reserve some heap for the string to reduce fragging. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Amcor.h b/lib/IRremoteESP8266-2.7.8/src/ir_Amcor.h similarity index 85% rename from lib/IRremoteESP8266-2.7.7/src/ir_Amcor.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Amcor.h index 401bb787c..f3ac1bad6 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Amcor.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Amcor.h @@ -1,7 +1,14 @@ -// Amcor A/C -// // Copyright 2019 David Conran +/// @file +/// @brief Amcor A/C protocol. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/834 +/// @remark Kudos to ldellus; For the breakdown and mapping of the bit values. +// Supports: +// Brand: Amcor, Model: ADR-853H A/C +// Brand: Amcor, Model: TAC-495 remote +// Brand: Amcor, Model: TAC-444 remote + #ifndef IR_AMCOR_H_ #define IR_AMCOR_H_ @@ -16,18 +23,9 @@ #include "IRsend_test.h" #endif -// Supports: -// Brand: Amcor, Model: ADR-853H A/C -// Brand: Amcor, Model: TAC-495 remote -// Brand: Amcor, Model: TAC-444 remote -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/834 -// Kudos: -// ldellus: For the breakdown and mapping of the bit values. // Constants - // state[1] const uint8_t kAmcorModeFanByte = 1; // Fan Control @@ -78,6 +76,8 @@ const uint8_t kAmcorVentSize = 2; const uint8_t kAmcorChecksumByte = kAmcorStateLength - 1; // Classes + +/// Class for handling detailed Amcor A/C messages. class IRAmcorAc { public: explicit IRAmcorAc(const uint16_t pin, const bool inverted = false, @@ -86,6 +86,10 @@ class IRAmcorAc { void stateReset(); #if SEND_AMCOR void send(const uint16_t repeat = kAmcorDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_AMCOR void begin(); @@ -118,7 +122,9 @@ class IRAmcorAc { private: IRsend _irsend; #else + /// @cond IGNORE IRsendTest _irsend; + /// @endcond #endif uint8_t remote_state[kAmcorStateLength]; // The state of the IR remote. void checksum(void); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Argo.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Argo.cpp similarity index 69% rename from lib/IRremoteESP8266-2.7.7/src/ir_Argo.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Argo.cpp index 0c4656cb5..cbe32487e 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Argo.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Argo.cpp @@ -1,9 +1,8 @@ -/* -Node MCU/ESP8266 Sketch to emulate Argo Ulisse 13 DCI remote -Controls Argo Ulisse 13 DCI A/C -Copyright 2017 Schmolders -Copyright 2019 crankyoldgit -*/ +// Copyright 2017 Schmolders +// Copyright 2019 crankyoldgit +/// @file +/// @brief Argo A/C protocol. +/// Controls an Argo Ulisse 13 DCI A/C #include "ir_Argo.h" #include @@ -33,13 +32,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_ARGO -// Send an Argo A/C message. -// -// Args: -// data: An array of kArgoStateLength bytes containing the IR command. -// -// Status: BETA / Probably works. - +/// Send a Argo A/C formatted message. +/// Status: BETA / Probably works. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendArgo(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { // Check if we have enough bytes to send a proper message. @@ -51,18 +48,29 @@ void IRsend::sendArgo(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_ARGO +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRArgoAC::IRArgoAC(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Set up hardware to be able to send a message. void IRArgoAC::begin(void) { _irsend.begin(); } #if SEND_ARGO +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRArgoAC::send(const uint16_t repeat) { _irsend.sendArgo(getRaw(), kArgoStateLength, repeat); } #endif // SEND_ARGO +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The size of the state. +/// @return A boolean indicating if it's checksum is valid. uint8_t IRArgoAC::calcChecksum(const uint8_t state[], const uint16_t length) { // Corresponds to byte 11 being constant 0b01 // Only add up bytes to 9. byte 10 is 0b01 constant anyway. @@ -70,11 +78,16 @@ uint8_t IRArgoAC::calcChecksum(const uint8_t state[], const uint16_t length) { return sumBytes(state, length - 2, 2); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The size of the state. +/// @return A boolean indicating if it's checksum is valid. bool IRArgoAC::validChecksum(const uint8_t state[], const uint16_t length) { return ((state[length - 2] >> 2) + (state[length - 1] << 6)) == IRArgoAC::calcChecksum(state, length); } +/// Update the checksum for the internal state. void IRArgoAC::checksum(void) { uint8_t sum = IRArgoAC::calcChecksum(argo, kArgoStateLength); // Append sum to end of array @@ -84,6 +97,7 @@ void IRArgoAC::checksum(void) { argo[11] = sum >> 6; // Shift down 6 bits and add in two LSBs of bit 11 } +/// Reset the internals of the object to a known good state. void IRArgoAC::stateReset(void) { for (uint8_t i = 0; i < kArgoStateLength; i++) argo[i] = 0x0; @@ -102,33 +116,49 @@ void IRArgoAC::stateReset(void) { this->setFan(kArgoFanAuto); } +/// Get the raw state of the object, suitable to be sent with the appropriate +/// IRsend object method. +/// @return A PTR to the internal state. uint8_t* IRArgoAC::getRaw(void) { this->checksum(); // Ensure correct bit array before returning return argo; } +/// Set the raw state of the object. +/// @param[in] state The raw state from the native IR message. void IRArgoAC::setRaw(const uint8_t state[]) { memcpy(argo, state, kArgoStateLength); } +/// Set the internal state to have the power on. void IRArgoAC::on(void) { setPower(true); } +/// Set the internal state to have the power off. void IRArgoAC::off(void) { setPower(false); } +/// Set the internal state to have the desired power. +/// @param[in] on The desired power state. void IRArgoAC::setPower(const bool on) { setBit(&argo[9], kArgoPowerBitOffset, on); } +/// Get the power setting from the internal state. +/// @return A boolean indicating the power setting. bool IRArgoAC::getPower(void) { return GETBIT8(argo[9], kArgoPowerBitOffset); } +/// Control the current Max setting. (i.e. Turbo) +/// @param[in] on The desired setting. void IRArgoAC::setMax(const bool on) { setBit(&argo[9], kArgoMaxBitOffset, on); } +/// Is the Max (i.e. Turbo) setting on? +/// @return The current value. bool IRArgoAC::getMax(void) { return GETBIT8(argo[9], kArgoMaxBitOffset); } -// Set the temp in deg C -// Sending 0 equals +4 +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. +/// @note Sending 0 equals +4 void IRArgoAC::setTemp(const uint8_t degrees) { uint8_t temp = std::max(kArgoMinTemp, degrees); // delta 4 degrees. "If I want 12 degrees, I need to send 8" @@ -141,6 +171,8 @@ void IRArgoAC::setTemp(const uint8_t degrees) { temp >> kArgoTempLowSize); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRArgoAC::getTemp(void) { return ((GETBITS8(argo[3], kArgoTempHighOffset, kArgoTempHighSize) << kArgoTempLowSize) | @@ -148,26 +180,39 @@ uint8_t IRArgoAC::getTemp(void) { kArgoTempDelta; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] fan The desired setting. void IRArgoAC::setFan(const uint8_t fan) { setBits(&argo[3], kArgoFanOffset, kArgoFanSize, std::min(fan, kArgoFan3)); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRArgoAC::getFan(void) { return GETBITS8(argo[3], kArgoFanOffset, kArgoFanSize); } +/// Set the flap position. i.e. Swing. +/// @warning Not yet working! +/// @param[in] flap The desired setting. void IRArgoAC::setFlap(const uint8_t flap) { flap_mode = flap; // TODO(kaschmo): set correct bits for flap mode } +/// Get the flap position. i.e. Swing. +/// @warning Not yet working! +/// @return The current flap setting. uint8_t IRArgoAC::getFlap(void) { return flap_mode; } +/// Get the current operation mode setting. +/// @return The current operation mode. uint8_t IRArgoAC::getMode(void) { return GETBITS8(argo[2], kArgoModeOffset, kArgoModeSize); } +/// Set the desired operation mode. +/// @param[in] mode The desired operation mode. void IRArgoAC::setMode(const uint8_t mode) { switch (mode) { case kArgoCool: @@ -183,22 +228,34 @@ void IRArgoAC::setMode(const uint8_t mode) { } } +/// Turn on/off the Night mode. i.e. Sleep. +/// @param[in] on The desired setting. void IRArgoAC::setNight(const bool on) { setBit(&argo[9], kArgoNightBitOffset, on); } +/// Get the status of Night mode. i.e. Sleep. +/// @return true if on, false if off. bool IRArgoAC::getNight(void) { return GETBIT8(argo[9], kArgoNightBitOffset); } +/// Turn on/off the iFeel mode. +/// @param[in] on The desired setting. void IRArgoAC::setiFeel(const bool on) { setBit(&argo[9], kArgoIFeelBitOffset, on); } +/// Get the status of iFeel mode. +/// @return true if on, false if off. bool IRArgoAC::getiFeel(void) { return GETBIT8(argo[9], kArgoIFeelBitOffset); } +/// Set the time for the A/C +/// @warning Not yet working! void IRArgoAC::setTime(void) { // TODO(kaschmo): use function call from checksum to set time first } +/// Set the value for the current room temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRArgoAC::setRoomTemp(const uint8_t degrees) { uint8_t temp = std::min(degrees, kArgoMaxRoomTemp); temp = std::max(temp, kArgoTempDelta) - kArgoTempDelta; @@ -207,6 +264,8 @@ void IRArgoAC::setRoomTemp(const uint8_t degrees) { temp >> kArgoRoomTempLowSize); } +/// Get the currently stored value for the room temperature setting. +/// @return The current setting for the room temp. in degrees celsius. uint8_t IRArgoAC::getRoomTemp(void) { return ((GETBITS8(argo[4], kArgoRoomTempHighOffset, kArgoRoomTempHighSize) << kArgoRoomTempLowSize) | @@ -214,7 +273,9 @@ uint8_t IRArgoAC::getRoomTemp(void) { kArgoTempDelta; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRArgoAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: @@ -231,7 +292,9 @@ uint8_t IRArgoAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRArgoAC::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -247,7 +310,9 @@ uint8_t IRArgoAC::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRArgoAC::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: @@ -265,7 +330,9 @@ uint8_t IRArgoAC::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRArgoAC::toCommonMode(const uint8_t mode) { switch (mode) { case kArgoCool: return stdAc::opmode_t::kCool; @@ -276,7 +343,9 @@ stdAc::opmode_t IRArgoAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRArgoAC::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kArgoFan3: return stdAc::fanspeed_t::kMax; @@ -286,7 +355,8 @@ stdAc::fanspeed_t IRArgoAC::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRArgoAC::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::ARGO; @@ -311,7 +381,8 @@ stdAc::state_t IRArgoAC::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRArgoAC::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -374,22 +445,17 @@ String IRArgoAC::toString(void) { } #if DECODE_ARGO -// Decode the supplied Argo message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kArgoBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Probably works. -// -// Note: -// This decoder is based soley off sendArgo(). We have no actual captures -// to test this against. If you have one of these units, please let us know. +/// Decode the supplied Argo message. +/// Status: BETA / Probably works. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @note This decoder is based soley off sendArgo(). We have no actual captures +/// to test this against. If you have one of these units, please let us know. bool IRrecv::decodeArgo(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Argo.h b/lib/IRremoteESP8266-2.7.8/src/ir_Argo.h similarity index 91% rename from lib/IRremoteESP8266-2.7.7/src/ir_Argo.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Argo.h index af674d46f..9104a051b 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Argo.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Argo.h @@ -1,5 +1,6 @@ // Copyright 2017 Schmolders -// Adds support for Argo Ulisse 13 DCI Mobile Split ACs. +/// @file +/// @brief Support for Argo Ulisse 13 DCI Mobile Split ACs. // Supports: // Brand: Argo, Model: Ulisse 13 DCI Mobile Split A/C @@ -124,6 +125,7 @@ const uint8_t kArgoFlapFull = 7; #define ARGO_FLAP_FULL kArgoFlapFull +/// Class for handling detailed Argo A/C messages. class IRArgoAC { public: explicit IRArgoAC(const uint16_t pin, const bool inverted = false, @@ -131,6 +133,10 @@ class IRArgoAC { #if SEND_ARGO void send(const uint16_t repeat = kArgoDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_ARGO void begin(void); @@ -181,9 +187,11 @@ class IRArgoAC { #ifndef UNIT_TEST private: - IRsend _irsend; // instance of the IR send class + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; // instance of the testing IR send class + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command uint8_t argo[kArgoStateLength]; // Defined in IRremoteESP8266.h diff --git a/lib/IRremoteESP8266-2.7.8/src/ir_Carrier.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Carrier.cpp new file mode 100644 index 000000000..ab6b8176b --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Carrier.cpp @@ -0,0 +1,545 @@ +// Copyright 2018, 2020 David Conran +/// @file +/// @brief Carrier protocols. +/// @see CarrierAc https://github.com/crankyoldgit/IRremoteESP8266/issues/385 +/// @see CarrierAc64 https://github.com/crankyoldgit/IRremoteESP8266/issues/1127 + +#include "ir_Carrier.h" +#include +#include "IRac.h" +#include "IRrecv.h" +#include "IRsend.h" +#include "IRtext.h" +#include "IRutils.h" + +using irutils::addBoolToString; +using irutils::addIntToString; +using irutils::addLabeledString; +using irutils::addModeToString; +using irutils::addTempToString; +using irutils::addFanToString; +using irutils::minsToString; +using irutils::setBit; +using irutils::setBits; +using irutils::sumNibbles; + +// Constants +const uint16_t kCarrierAcHdrMark = 8532; +const uint16_t kCarrierAcHdrSpace = 4228; +const uint16_t kCarrierAcBitMark = 628; +const uint16_t kCarrierAcOneSpace = 1320; +const uint16_t kCarrierAcZeroSpace = 532; +const uint16_t kCarrierAcGap = 20000; +const uint16_t kCarrierAcFreq = 38; // kHz. (An educated guess) + +const uint16_t kCarrierAc40HdrMark = 8402; +const uint16_t kCarrierAc40HdrSpace = 4166; +const uint16_t kCarrierAc40BitMark = 547; +const uint16_t kCarrierAc40OneSpace = 1540; +const uint16_t kCarrierAc40ZeroSpace = 497; +const uint32_t kCarrierAc40Gap = 150000; ///< +///< @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1190#issuecomment-643380155 + +const uint16_t kCarrierAc64HdrMark = 8940; +const uint16_t kCarrierAc64HdrSpace = 4556; +const uint16_t kCarrierAc64BitMark = 503; +const uint16_t kCarrierAc64OneSpace = 1736; +const uint16_t kCarrierAc64ZeroSpace = 615; +const uint32_t kCarrierAc64Gap = kDefaultMessageGap; // A guess. + + +#if SEND_CARRIER_AC +/// Send a Carrier HVAC formatted message. +/// Status: STABLE / Works on real devices. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +void IRsend::sendCarrierAC(uint64_t data, uint16_t nbits, uint16_t repeat) { + for (uint16_t r = 0; r <= repeat; r++) { + uint64_t temp_data = data; + // Carrier sends the data block three times. normal + inverted + normal. + for (uint16_t i = 0; i < 3; i++) { + sendGeneric(kCarrierAcHdrMark, kCarrierAcHdrSpace, kCarrierAcBitMark, + kCarrierAcOneSpace, kCarrierAcBitMark, kCarrierAcZeroSpace, + kCarrierAcBitMark, kCarrierAcGap, temp_data, nbits, 38, true, + 0, kDutyDefault); + temp_data = invertBits(temp_data, nbits); + } + } +} +#endif + +#if DECODE_CARRIER_AC +/// Decode the supplied Carrier HVAC message. +/// @note Carrier HVAC messages contain only 32 bits, but it is sent three(3) +/// times. i.e. normal + inverted + normal +/// Status: BETA / Probably works. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +bool IRrecv::decodeCarrierAC(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + if (results->rawlen < ((2 * nbits + kHeader + kFooter) * 3) - 1 + offset) + return false; // Can't possibly be a valid Carrier message. + if (strict && nbits != kCarrierAcBits) + return false; // We expect Carrier to be 32 bits of message. + + uint64_t data = 0; + uint64_t prev_data = 0; + + for (uint8_t i = 0; i < 3; i++) { + prev_data = data; + // Match Header + Data + Footer + uint16_t used; + used = matchGeneric(results->rawbuf + offset, &data, + results->rawlen - offset, nbits, + kCarrierAcHdrMark, kCarrierAcHdrSpace, + kCarrierAcBitMark, kCarrierAcOneSpace, + kCarrierAcBitMark, kCarrierAcZeroSpace, + kCarrierAcBitMark, kCarrierAcGap, true); + if (!used) return false; + offset += used; + // Compliance. + if (strict) { + // Check if the data is an inverted copy of the previous data. + if (i > 0 && prev_data != invertBits(data, nbits)) return false; + } + } + + // Success + results->bits = nbits; + results->value = data; + results->decode_type = CARRIER_AC; + results->address = data >> 16; + results->command = data & 0xFFFF; + return true; +} +#endif // DECODE_CARRIER_AC + +#if SEND_CARRIER_AC40 +/// Send a Carrier 40bit HVAC formatted message. +/// Status: STABLE / Tested against a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbits The bit size of the message being sent. +/// @param[in] repeat The number of times the message is to be repeated. +void IRsend::sendCarrierAC40(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { + sendGeneric(kCarrierAc40HdrMark, kCarrierAc40HdrSpace, kCarrierAc40BitMark, + kCarrierAc40OneSpace, kCarrierAc40BitMark, kCarrierAc40ZeroSpace, + kCarrierAc40BitMark, kCarrierAc40Gap, + data, nbits, kCarrierAcFreq, true, repeat, kDutyDefault); +} +#endif // SEND_CARRIER_AC40 + +#if DECODE_CARRIER_AC40 +/// Decode the supplied Carrier 40-bit HVAC message. +/// Carrier HVAC messages contain only 40 bits, but it is sent three(3) times. +/// Status: STABLE / Tested against a real device. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +bool IRrecv::decodeCarrierAC40(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset) + return false; // Can't possibly be a valid Carrier message. + if (strict && nbits != kCarrierAc40Bits) + return false; // We expect Carrier to be 40 bits of message. + + if (!matchGeneric(results->rawbuf + offset, &(results->value), + results->rawlen - offset, nbits, + kCarrierAc40HdrMark, kCarrierAc40HdrSpace, + kCarrierAc40BitMark, kCarrierAc40OneSpace, + kCarrierAc40BitMark, kCarrierAc40ZeroSpace, + kCarrierAc40BitMark, kCarrierAc40Gap, true)) return false; + + // Success + results->bits = nbits; + results->decode_type = CARRIER_AC40; + results->address = 0; + results->command = 0; + return true; +} +#endif // DECODE_CARRIER_AC40 + +#if SEND_CARRIER_AC64 +/// Send a Carrier 64bit HVAC formatted message. +/// Status: STABLE / Known to be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The bit size of the message being sent. +/// @param[in] repeat The number of times the message is to be repeated. +void IRsend::sendCarrierAC64(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { + sendGeneric(kCarrierAc64HdrMark, kCarrierAc64HdrSpace, kCarrierAc64BitMark, + kCarrierAc64OneSpace, kCarrierAc64BitMark, kCarrierAc64ZeroSpace, + kCarrierAc64BitMark, kCarrierAc64Gap, + data, nbits, kCarrierAcFreq, false, repeat, kDutyDefault); +} +#endif // SEND_CARRIER_AC64 + +#if DECODE_CARRIER_AC64 +/// Decode the supplied Carrier 64-bit HVAC message. +/// Status: STABLE / Known to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +bool IRrecv::decodeCarrierAC64(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset) + return false; // Can't possibly be a valid Carrier message. + if (strict && nbits != kCarrierAc64Bits) + return false; // We expect Carrier to be 64 bits of message. + + if (!matchGeneric(results->rawbuf + offset, &(results->value), + results->rawlen - offset, nbits, + kCarrierAc64HdrMark, kCarrierAc64HdrSpace, + kCarrierAc64BitMark, kCarrierAc64OneSpace, + kCarrierAc64BitMark, kCarrierAc64ZeroSpace, + kCarrierAc64BitMark, kCarrierAc64Gap, true, + kUseDefTol, kMarkExcess, false)) return false; + + // Compliance + if (strict && !IRCarrierAc64::validChecksum(results->value)) return false; + + // Success + results->bits = nbits; + results->decode_type = CARRIER_AC64; + results->address = 0; + results->command = 0; + return true; +} +#endif // DECODE_CARRIER_AC64 + +/// Class constructor. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? +IRCarrierAc64::IRCarrierAc64(const uint16_t pin, const bool inverted, + const bool use_modulation) + : _irsend(pin, inverted, use_modulation) { stateReset(); } + +/// Reset the internal state to a fixed known good state. +/// @note The state is powered off. +void IRCarrierAc64::stateReset(void) { remote_state = 0x109000002C2A5584; } + +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @return The 4-bit checksum stored in a uint_8. +uint8_t IRCarrierAc64::calcChecksum(const uint64_t state) { + uint64_t data = GETBITS64(state, + kCarrierAc64ChecksumOffset + kCarrierAc64ChecksumSize, kCarrierAc64Bits - + (kCarrierAc64ChecksumOffset + kCarrierAc64ChecksumSize)); + uint8_t result = 0; + for (; data; data >>= 4) // Add each nibble together. + result += GETBITS64(data, 0, 4); + return result & 0xF; +} + +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. +bool IRCarrierAc64::validChecksum(const uint64_t state) { + // Validate the checksum of the given state. + return (GETBITS64(state, kCarrierAc64ChecksumOffset, + kCarrierAc64ChecksumSize) == calcChecksum(state)); +} + +/// Calculate and set the checksum values for the internal state. +void IRCarrierAc64::checksum(void) { + setBits(&remote_state, kCarrierAc64ChecksumOffset, kCarrierAc64ChecksumSize, + calcChecksum(remote_state)); +} + +/// Set up hardware to be able to send a message. +void IRCarrierAc64::begin(void) { _irsend.begin(); } + +#if SEND_CARRIER_AC64 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +void IRCarrierAc64::send(const uint16_t repeat) { + _irsend.sendCarrierAC64(getRaw(), kCarrierAc64Bits, repeat); +} +#endif // SEND_CARRIER_AC64 + +/// Get a copy of the internal state as a valid code for this protocol. +/// @return A valid code for this protocol based on the current internal state. +uint64_t IRCarrierAc64::getRaw(void) { + checksum(); // Ensure correct settings before sending. + return remote_state; +} + +/// Set the internal state from a valid code for this protocol. +/// @param[in] state A valid code for this protocol. +void IRCarrierAc64::setRaw(const uint64_t state) { remote_state = state; } + +/// Set the temp in deg C. +/// @param[in] temp The desired temperature in Celsius. +void IRCarrierAc64::setTemp(const uint8_t temp) { + uint8_t degrees = std::max(temp, kCarrierAc64MinTemp); + degrees = std::min(degrees, kCarrierAc64MaxTemp); + setBits(&remote_state, kCarrierAc64TempOffset, kCarrierAc64TempSize, + degrees - kCarrierAc64MinTemp); +} + +/// Get the current temperature from the internal state. +/// @return The current temperature in Celsius. +uint8_t IRCarrierAc64::getTemp(void) { + return GETBITS64(remote_state, kCarrierAc64TempOffset, kCarrierAc64TempSize) + + kCarrierAc64MinTemp; +} + +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRCarrierAc64::setPower(const bool on) { + setBit(&remote_state, kCarrierAc64PowerOffset, on); +} + +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. +bool IRCarrierAc64::getPower(void) { + return GETBIT64(remote_state, kCarrierAc64PowerOffset); +} + +/// Change the power setting to On. +void IRCarrierAc64::on(void) { setPower(true); } + +/// Change the power setting to Off. +void IRCarrierAc64::off(void) { setPower(false); } + +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. +uint8_t IRCarrierAc64::getMode(void) { + return GETBITS64(remote_state, kCarrierAc64ModeOffset, kCarrierAc64ModeSize); +} + +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +void IRCarrierAc64::setMode(const uint8_t mode) { + switch (mode) { + case kCarrierAc64Heat: + case kCarrierAc64Cool: + case kCarrierAc64Fan: + setBits(&remote_state, kCarrierAc64ModeOffset, kCarrierAc64ModeSize, + mode); + return; + default: + this->setMode(kCarrierAc64Cool); + } +} + +/// Convert a standard A/C mode into its native mode. +/// @param[in] mode A stdAc::opmode_t to be converted to it's native equivalent. +/// @return The corresponding native mode. +uint8_t IRCarrierAc64::convertMode(const stdAc::opmode_t mode) { + switch (mode) { + case stdAc::opmode_t::kHeat: return kCarrierAc64Heat; + case stdAc::opmode_t::kFan: return kCarrierAc64Fan; + default: return kCarrierAc64Cool; + } +} + +/// Convert a native mode to it's common stdAc::opmode_t equivalent. +/// @param[in] mode A native operation mode to be converted. +/// @return The corresponding common stdAc::opmode_t mode. +stdAc::opmode_t IRCarrierAc64::toCommonMode(const uint8_t mode) { + switch (mode) { + case kCarrierAc64Heat: return stdAc::opmode_t::kHeat; + case kCarrierAc64Fan: return stdAc::opmode_t::kFan; + default: return stdAc::opmode_t::kCool; + } +} + +/// Get the current fan speed setting. +/// @return The current fan speed. +uint8_t IRCarrierAc64::getFan(void) { + return GETBITS64(remote_state, kCarrierAc64FanOffset, kCarrierAc64FanSize); +} + +/// Set the speed of the fan. +/// @param[in] speed The desired setting. +void IRCarrierAc64::setFan(const uint8_t speed) { + if (speed > kCarrierAc64FanHigh) + setFan(kCarrierAc64FanAuto); + else + setBits(&remote_state, kCarrierAc64FanOffset, kCarrierAc64FanSize, speed); +} + +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. +uint8_t IRCarrierAc64::convertFan(const stdAc::fanspeed_t speed) { + switch (speed) { + case stdAc::fanspeed_t::kMin: + case stdAc::fanspeed_t::kLow: return kCarrierAc64FanLow; + case stdAc::fanspeed_t::kMedium: return kCarrierAc64FanMedium; + case stdAc::fanspeed_t::kHigh: + case stdAc::fanspeed_t::kMax: return kCarrierAc64FanHigh; + default: return kCarrierAc64FanAuto; + } +} + +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. +stdAc::fanspeed_t IRCarrierAc64::toCommonFanSpeed(const uint8_t speed) { + switch (speed) { + case kCarrierAc64FanHigh: return stdAc::fanspeed_t::kHigh; + case kCarrierAc64FanMedium: return stdAc::fanspeed_t::kMedium; + case kCarrierAc64FanLow: return stdAc::fanspeed_t::kLow; + default: return stdAc::fanspeed_t::kAuto; + } +} + +/// Set the Vertical Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRCarrierAc64::setSwingV(const bool on) { + setBit(&remote_state, kCarrierAc64SwingVOffset, on); +} + +/// Get the Vertical Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. +bool IRCarrierAc64::getSwingV(void) { + return GETBIT64(remote_state, kCarrierAc64SwingVOffset); +} + +/// Set the Sleep mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRCarrierAc64::setSleep(const bool on) { + if (on) { + // Sleep sets a default value in the Off timer, and disables both timers. + setOffTimer(2 * 60); + // Clear the enable bits for each timer. + _cancelOnTimer(); + _cancelOffTimer(); + } + setBit(&remote_state, kCarrierAc64SleepOffset, on); +} + +/// Get the Sleep mode of the A/C. +/// @return true, the setting is on. false, the setting is off. +bool IRCarrierAc64::getSleep(void) { + return GETBIT64(remote_state, kCarrierAc64SleepOffset); +} + +/// Clear the On Timer enable bit. +void IRCarrierAc64::_cancelOnTimer(void) { + setBit(&remote_state, kCarrierAc64OnTimerEnableOffset, false); +} + +/// Get the current On Timer time. +/// @return The number of minutes it is set for. 0 means it's off. +/// @note The A/C protocol only supports one hour increments. +uint16_t IRCarrierAc64::getOnTimer(void) { + if (GETBIT64(remote_state, kCarrierAc64OnTimerEnableOffset)) + return GETBITS64(remote_state, kCarrierAc64OnTimerOffset, + kCarrierAc64TimerSize) * 60; + else + return 0; +} + +/// Set the On Timer time. +/// @param[in] nr_of_mins Number of minutes to set the timer to. +/// (< 60 is disable). +/// @note The A/C protocol only supports one hour increments. +void IRCarrierAc64::setOnTimer(const uint16_t nr_of_mins) { + uint8_t hours = std::min((uint8_t)(nr_of_mins / 60), kCarrierAc64TimerMax); + setBit(&remote_state, kCarrierAc64OnTimerEnableOffset, hours); // Enable + setBits(&remote_state, kCarrierAc64OnTimerOffset, kCarrierAc64TimerSize, + std::max(kCarrierAc64TimerMin, hours)); // Hours + if (hours) { // If enabled, disable the Off Timer & Sleep mode. + _cancelOffTimer(); + setSleep(false); + } +} + +/// Clear the Off Timer enable bit. +void IRCarrierAc64::_cancelOffTimer(void) { + setBit(&remote_state, kCarrierAc64OffTimerEnableOffset, false); +} + +/// Get the current Off Timer time. +/// @return The number of minutes it is set for. 0 means it's off. +/// @note The A/C protocol only supports one hour increments. +uint16_t IRCarrierAc64::getOffTimer(void) { + if (GETBIT64(remote_state, kCarrierAc64OffTimerEnableOffset)) + return GETBITS64(remote_state, kCarrierAc64OffTimerOffset, + kCarrierAc64TimerSize) * 60; + else + return 0; +} + +/// Set the Off Timer time. +/// @param[in] nr_of_mins Number of minutes to set the timer to. +/// (< 60 is disable). +/// @note The A/C protocol only supports one hour increments. +void IRCarrierAc64::setOffTimer(const uint16_t nr_of_mins) { + uint8_t hours = std::min((uint8_t)(nr_of_mins / 60), kCarrierAc64TimerMax); + // The time can be changed in sleep mode, but doesn't set the flag. + setBit(&remote_state, kCarrierAc64OffTimerEnableOffset, hours && !getSleep()); + setBits(&remote_state, kCarrierAc64OffTimerOffset, kCarrierAc64TimerSize, + std::max(kCarrierAc64TimerMin, hours)); // Hours + if (hours) { // If enabled, disable the On Timer & Sleep mode. + _cancelOnTimer(); + setSleep(false); + } +} + +/// Convert the internal state into a human readable string. +/// @return The current internal state expressed as a human readable String. +String IRCarrierAc64::toString(void) { + String result = ""; + result.reserve(120); // Reserve some heap for the string to reduce fragging. + result += addBoolToString(getPower(), kPowerStr, false); + result += addModeToString(getMode(), 0xFF, kCarrierAc64Cool, + kCarrierAc64Heat, 0xFF, kCarrierAc64Fan); + result += addTempToString(getTemp()); + result += addFanToString(getFan(), kCarrierAc64FanHigh, kCarrierAc64FanLow, + kCarrierAc64FanAuto, kCarrierAc64FanAuto, + kCarrierAc64FanMedium); + result += addBoolToString(getSwingV(), kSwingVStr); + result += addBoolToString(getSleep(), kSleepStr); + result += addLabeledString(getOnTimer() + ? minsToString(getOnTimer()) : kOffStr, + kOnTimerStr); + result += addLabeledString(getOffTimer() + ? minsToString(getOffTimer()) : kOffStr, + kOffTimerStr); + return result; +} + +/// Convert the A/C state to it's common stdAc::state_t equivalent. +/// @return A stdAc::state_t state. +stdAc::state_t IRCarrierAc64::toCommon(void) { + stdAc::state_t result; + result.protocol = decode_type_t::CARRIER_AC64; + result.model = -1; // No models used. + result.power = getPower(); + result.mode = toCommonMode(getMode()); + result.celsius = true; + result.degrees = getTemp(); + result.fanspeed = toCommonFanSpeed(getFan()); + result.swingv = getSwingV() ? stdAc::swingv_t::kAuto : stdAc::swingv_t::kOff; + result.sleep = getSleep() ? 0 : -1; + // Not supported. + result.swingh = stdAc::swingh_t::kOff; + result.turbo = false; + result.quiet = false; + result.clean = false; + result.filter = false; + result.beep = false; + result.econo = false; + result.light = false; + result.clock = -1; + return result; +} diff --git a/lib/IRremoteESP8266-2.7.8/src/ir_Carrier.h b/lib/IRremoteESP8266-2.7.8/src/ir_Carrier.h new file mode 100644 index 000000000..e2f4b7895 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Carrier.h @@ -0,0 +1,131 @@ +// Copyright 2020 David Conran +/// @file +/// @brief Carrier A/C +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1127 +/// @see https://docs.google.com/spreadsheets/d/1EZy78L0cn1KDIX1aKq2biptejFqCjD5HO3tLiRvXf48/edit#gid=0 + +// Supports: +// Brand: Carrier/Surrey, Model: 42QG5A55970 remote +// Brand: Carrier/Surrey, Model: 619EGX0090E0 A/C +// Brand: Carrier/Surrey, Model: 619EGX0120E0 A/C +// Brand: Carrier/Surrey, Model: 619EGX0180E0 A/C +// Brand: Carrier/Surrey, Model: 619EGX0220E0 A/C +// Brand: Carrier/Surrey, Model: 53NGK009/012 Inverter + +#ifndef IR_CARRIER_H_ +#define IR_CARRIER_H_ + +#define __STDC_LIMIT_MACROS +#include +#ifndef UNIT_TEST +#include +#endif +#include "IRremoteESP8266.h" +#include "IRsend.h" +#ifdef UNIT_TEST +#include "IRsend_test.h" +#endif + + +// Constants + +// CARRIER_AC64 +const uint8_t kCarrierAc64ChecksumOffset = 16; +const uint8_t kCarrierAc64ChecksumSize = 4; +const uint8_t kCarrierAc64ModeOffset = kCarrierAc64ChecksumOffset + + kCarrierAc64ChecksumSize; // 20 +const uint8_t kCarrierAc64ModeSize = 2; +const uint8_t kCarrierAc64Heat = 0b01; // 1 +const uint8_t kCarrierAc64Cool = 0b10; // 2 +const uint8_t kCarrierAc64Fan = 0b11; // 3 +const uint8_t kCarrierAc64FanOffset = kCarrierAc64ModeOffset + + kCarrierAc64ModeSize; // 22 +const uint8_t kCarrierAc64FanSize = 2; +const uint8_t kCarrierAc64FanAuto = 0b00; // 0 +const uint8_t kCarrierAc64FanLow = 0b01; // 1 +const uint8_t kCarrierAc64FanMedium = 0b10; // 2 +const uint8_t kCarrierAc64FanHigh = 0b11; // 3 +const uint8_t kCarrierAc64TempOffset = kCarrierAc64FanOffset + + kCarrierAc64FanSize; // 24 +const uint8_t kCarrierAc64TempSize = 4; +const uint8_t kCarrierAc64MinTemp = 16; // Celsius +const uint8_t kCarrierAc64MaxTemp = 30; // Celsius +const uint8_t kCarrierAc64SwingVOffset = kCarrierAc64TempOffset + + kCarrierAc64TempSize + 1; // 29 +const uint8_t kCarrierAc64PowerOffset = kCarrierAc64SwingVOffset + 6 + 1; // 36 +const uint8_t kCarrierAc64OffTimerEnableOffset = + kCarrierAc64PowerOffset + 1; // 37 +const uint8_t kCarrierAc64OnTimerEnableOffset = + kCarrierAc64OffTimerEnableOffset + 1; // 38 +const uint8_t kCarrierAc64SleepOffset = + kCarrierAc64OnTimerEnableOffset + 1; // 39 +const uint8_t kCarrierAc64TimerSize = 4; +const uint8_t kCarrierAc64TimerMax = 9; // Hours. +const uint8_t kCarrierAc64TimerMin = 1; // Hours. +const uint8_t kCarrierAc64OnTimerOffset = + kCarrierAc64SleepOffset + 12 + 1; // 52 +const uint8_t kCarrierAc64OffTimerOffset = kCarrierAc64OnTimerOffset + + kCarrierAc64TimerSize + 4; // 60 + + +// Classes + +/// Class for handling detailed Carrier 64 bit A/C messages. +class IRCarrierAc64 { + public: + explicit IRCarrierAc64(const uint16_t pin, const bool inverted = false, + const bool use_modulation = true); + + void stateReset(); +#if SEND_CARRIER_AC64 + void send(const uint16_t repeat = kCarrierAc64MinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } +#endif // SEND_CARRIER_AC64 + void begin(); + static uint8_t calcChecksum(const uint64_t state); + static bool validChecksum(const uint64_t state); + void setPower(const bool on); + bool getPower(); + void on(); + void off(); + void setTemp(const uint8_t temp); + uint8_t getTemp(); + void setSwingV(const bool on); + bool getSwingV(void); + void setSleep(const bool on); + bool getSleep(void); + void setFan(const uint8_t speed); + uint8_t getFan(); + void setMode(const uint8_t mode); + uint8_t getMode(); + void setOnTimer(const uint16_t nr_of_mins); + uint16_t getOnTimer(void); + void setOffTimer(const uint16_t nr_of_mins); + uint16_t getOffTimer(void); + uint64_t getRaw(); + void setRaw(const uint64_t state); + uint8_t convertMode(const stdAc::opmode_t mode); + uint8_t convertFan(const stdAc::fanspeed_t speed); + static stdAc::opmode_t toCommonMode(const uint8_t mode); + static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); + stdAc::state_t toCommon(void); + String toString(); +#ifndef UNIT_TEST + + private: + IRsend _irsend; ///< Instance of the IR send class +#else + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif + uint64_t remote_state; ///< The state of the IR remote. + void checksum(void); + void _cancelOnTimer(void); + void _cancelOffTimer(void); +}; +#endif // IR_CARRIER_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Coolix.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Coolix.cpp similarity index 75% rename from lib/IRremoteESP8266-2.7.7/src/ir_Coolix.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Coolix.cpp index 65535442a..b33a3cf43 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Coolix.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Coolix.cpp @@ -1,5 +1,9 @@ // Copyright bakrus // Copyright 2017,2019 David Conran +// added by (send) bakrus & (decode) crankyoldgit +/// @file +/// @brief Coolix A/C / heatpump +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/484 #include "ir_Coolix.h" #include @@ -11,18 +15,6 @@ #include "IRtext.h" #include "IRutils.h" -// Coolix A/C / heatpump added by (send) bakrus & (decode) crankyoldgit -// -// Supports: -// Brand: Beko, Model: RG57K7(B)/BGEF Remote -// Brand: Beko, Model: BINR 070/071 split-type A/C -// Brand: Midea, Model: RG52D/BGE Remote -// Brand: Midea, Model: MS12FU-10HRDN1-QRD0GW(B) A/C -// Brand: Midea, Model: MSABAU-07HRFN1-QRD0GW A/C (circa 2016) -// Brand: Tokio, Model: AATOEMF17-12CHR1SW split-type RG51|50/BGE Remote -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/484 - // Constants // Pulse parms are *50-100 for the Mark and *50+100 for the space // First MARK is the one after the long gap @@ -50,17 +42,12 @@ using irutils::setBit; using irutils::setBits; #if SEND_COOLIX -// Send a Coolix message -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kCoolixBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: STABLE / Confirmed Working. -// -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_COOLIX.cpp +/// Send a Coolix message +/// Status: STABLE / Confirmed Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/z3t0/Arduino-IRremote/blob/master/ir_COOLIX.cpp void IRsend::sendCOOLIX(uint64_t data, uint16_t nbits, uint16_t repeat) { if (nbits % 8 != 0) return; // nbits is required to be a multiple of 8. @@ -94,15 +81,15 @@ void IRsend::sendCOOLIX(uint64_t data, uint16_t nbits, uint16_t repeat) { } #endif -// IRCoolixAC class -// Supports: -// RG57K7(B)/BGEF remote control for Beko BINR 070/071 split-type aircon. -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/484 +/// Class constructor. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRCoolixAC::IRCoolixAC(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Reset the internal state to a fixed known good state. void IRCoolixAC::stateReset() { setRaw(kCoolixDefaultState); clearSensorTemp(); @@ -116,9 +103,12 @@ void IRCoolixAC::stateReset() { swingVFlag = false; } +/// Set up hardware to be able to send a message. void IRCoolixAC::begin() { _irsend.begin(); } #if SEND_COOLIX +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRCoolixAC::send(const uint16_t repeat) { _irsend.sendCOOLIX(remote_state, kCoolixBits, repeat); // make sure to remove special state from remote_state @@ -127,8 +117,12 @@ void IRCoolixAC::send(const uint16_t repeat) { } #endif // SEND_COOLIX +/// Get a copy of the internal state as a valid code for this protocol. +/// @return A valid code for this protocol based on the current internal state. uint32_t IRCoolixAC::getRaw() { return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRCoolixAC::setRaw(const uint32_t new_code) { powerFlag = true; // Everything that is not the special power off mesg is On. if (!handleSpecialState(new_code)) { @@ -143,7 +137,8 @@ void IRCoolixAC::setRaw(const uint32_t new_code) { remote_state = new_code; } -// Return true if the current state is a special state. +/// Is the current state is a special state? +/// @return true, if it is. false if it isn't. bool IRCoolixAC::isSpecialState(void) { switch (remote_state) { case kCoolixClean: @@ -156,8 +151,12 @@ bool IRCoolixAC::isSpecialState(void) { } } -// Special state means commands that are not -// affecting Temperature/Mode/Fan +/// Adjust any internal settings based on the type of special state we are +/// supplied. Does nothing if it isn't a special state. +/// @param[in] data The state we need to act upon. +/// @note Special state means commands that are not affecting +/// Temperature/Mode/Fan +/// @return true, if it is a special state. false if it isn't. bool IRCoolixAC::handleSpecialState(const uint32_t data) { switch (data) { case kCoolixClean: @@ -184,12 +183,15 @@ bool IRCoolixAC::handleSpecialState(const uint32_t data) { return true; } -// must be called before every special state -// to make sure the remote_state is safe +/// Backup the current internal state as long as it isn't a special state. +/// @note: Must be called before every special state to make sure the +/// remote_state is safe void IRCoolixAC::updateSavedState(void) { if (!isSpecialState()) saved_state = remote_state; } +/// Restore the current internal state from backup as long as it isn't a +/// special state. void IRCoolixAC::recoverSavedState(void) { // If the current state is a special one, last known normal one. if (isSpecialState()) remote_state = saved_state; @@ -198,14 +200,21 @@ void IRCoolixAC::recoverSavedState(void) { if (isSpecialState()) stateReset(); } +/// Set the raw (native) temperature value. +/// @note Bypasses any checks. +/// @param[in] code The desired native temperature. void IRCoolixAC::setTempRaw(const uint8_t code) { setBits(&remote_state, kCoolixTempOffset, kCoolixTempSize, code); } +/// Get the raw (native) temperature value. +/// @return The native temperature value. uint8_t IRCoolixAC::getTempRaw() { return GETBITS32(remote_state, kCoolixTempOffset, kCoolixTempSize); } +/// Set the temperature. +/// @param[in] desired The temperature in degrees celsius. void IRCoolixAC::setTemp(const uint8_t desired) { // Range check. uint8_t temp = std::min(desired, kCoolixTempMax); @@ -213,6 +222,8 @@ void IRCoolixAC::setTemp(const uint8_t desired) { setTempRaw(kCoolixTempMap[temp - kCoolixTempMin]); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRCoolixAC::getTemp() { const uint8_t code = getTempRaw(); for (uint8_t i = 0; i < kCoolixTempRange; i++) @@ -220,10 +231,15 @@ uint8_t IRCoolixAC::getTemp() { return kCoolixTempMax; // Not a temp we expected. } +/// Set the raw (native) sensor temperature value. +/// @note Bypasses any checks or additional actions. +/// @param[in] code The desired native sensor temperature. void IRCoolixAC::setSensorTempRaw(const uint8_t code) { setBits(&remote_state, kCoolixSensorTempOffset, kCoolixSensorTempSize, code); } +/// Set the sensor temperature. +/// @param[in] desired The temperature in degrees celsius. void IRCoolixAC::setSensorTemp(const uint8_t desired) { uint8_t temp = desired; temp = std::min(temp, kCoolixSensorTempMax); @@ -232,16 +248,22 @@ void IRCoolixAC::setSensorTemp(const uint8_t desired) { setZoneFollow(true); // Setting a Sensor temp means you want to Zone Follow. } +/// Get the sensor temperature setting. +/// @return The current setting for sensor temp. in degrees celsius. uint8_t IRCoolixAC::getSensorTemp() { return GETBITS32(remote_state, kCoolixSensorTempOffset, kCoolixSensorTempSize) + kCoolixSensorTempMin; } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRCoolixAC::getPower() { // There is only an off state. Everything else is "on". return powerFlag; } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRCoolixAC::setPower(const bool on) { if (!on) { updateSavedState(); @@ -254,12 +276,17 @@ void IRCoolixAC::setPower(const bool on) { powerFlag = on; } +/// Change the power setting to On. void IRCoolixAC::on(void) { this->setPower(true); } +/// Change the power setting to Off. void IRCoolixAC::off(void) { this->setPower(false); } +/// Get the Swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRCoolixAC::getSwing() { return swingFlag; } +/// Toggle the Swing mode of the A/C. void IRCoolixAC::setSwing() { // Assumes that repeated sending "swing" toggles the action on the device. updateSavedState(); @@ -267,16 +294,22 @@ void IRCoolixAC::setSwing() { swingFlag = !swingFlag; } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRCoolixAC::getSleep() { return sleepFlag; } +/// Toggle the Sleep mode of the A/C. void IRCoolixAC::setSleep() { updateSavedState(); remote_state = kCoolixSleep; sleepFlag = !sleepFlag; } +/// Get the Turbo setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRCoolixAC::getTurbo() { return turboFlag; } +/// Toggle the Turbo mode of the A/C. void IRCoolixAC::setTurbo() { // Assumes that repeated sending "turbo" toggles the action on the device. updateSavedState(); @@ -284,8 +317,11 @@ void IRCoolixAC::setTurbo() { turboFlag = !turboFlag; } +/// Get the Led (light) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRCoolixAC::getLed() { return ledFlag; } +/// Toggle the Led (light) mode of the A/C. void IRCoolixAC::setLed() { // Assumes that repeated sending "Led" toggles the action on the device. updateSavedState(); @@ -293,29 +329,39 @@ void IRCoolixAC::setLed() { ledFlag = !ledFlag; } +/// Get the Clean setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRCoolixAC::getClean() { return cleanFlag; } +/// Toggle the Clean mode of the A/C. void IRCoolixAC::setClean() { updateSavedState(); remote_state = kCoolixClean; cleanFlag = !cleanFlag; } +/// Get the Zone Follow setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRCoolixAC::getZoneFollow() { return zoneFollowFlag; } -// Internal use only. +/// Change the Zone Follow setting. +/// @note Internal use only. +/// @param[in] on true, the setting is on. false, the setting is off. void IRCoolixAC::setZoneFollow(bool on) { zoneFollowFlag = on; setBit(&remote_state, kCoolixZoneFollowMaskOffset, on); } +/// Clear the Sensor Temperature setting.. void IRCoolixAC::clearSensorTemp() { setZoneFollow(false); setSensorTempRaw(kCoolixSensorTempIgnoreCode); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRCoolixAC::setMode(const uint8_t mode) { uint32_t actualmode = mode; switch (actualmode) { @@ -342,6 +388,8 @@ void IRCoolixAC::setMode(const uint8_t mode) { setBits(&remote_state, kCoolixModeOffset, kCoolixModeSize, actualmode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRCoolixAC::getMode() { uint8_t mode = GETBITS32(remote_state, kCoolixModeOffset, kCoolixModeSize); @@ -350,10 +398,15 @@ uint8_t IRCoolixAC::getMode() { return mode; } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRCoolixAC::getFan() { return GETBITS32(remote_state, kCoolixFanOffset, kCoolixFanSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. +/// @param[in] modecheck Do we enforce any mode limitations before setting? void IRCoolixAC::setFan(const uint8_t speed, const bool modecheck) { uint8_t newspeed = speed; switch (speed) { @@ -389,7 +442,9 @@ void IRCoolixAC::setFan(const uint8_t speed, const bool modecheck) { setBits(&remote_state, kCoolixFanOffset, kCoolixFanSize, newspeed); } -// Convert a standard A/C mode into its native mode. +/// Convert a standard A/C mode into its native mode. +/// @param[in] mode A stdAc::opmode_t to be converted to it's native equivalent. +/// @return The corresponding native mode. uint8_t IRCoolixAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kCoolixCool; @@ -400,7 +455,9 @@ uint8_t IRCoolixAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRCoolixAC::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -412,7 +469,9 @@ uint8_t IRCoolixAC::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode to it's common stdAc::opmode_t equivalent. +/// @param[in] mode A native operation mode to be converted. +/// @return The corresponding common stdAc::opmode_t mode. stdAc::opmode_t IRCoolixAC::toCommonMode(const uint8_t mode) { switch (mode) { case kCoolixCool: return stdAc::opmode_t::kCool; @@ -423,7 +482,9 @@ stdAc::opmode_t IRCoolixAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRCoolixAC::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kCoolixFanMax: return stdAc::fanspeed_t::kMax; @@ -433,8 +494,9 @@ stdAc::fanspeed_t IRCoolixAC::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. Utilise the previous -// state if supplied. +/// Convert the A/C state to it's common stdAc::state_t equivalent. +/// @param[in] prev Ptr to the previous state if required. +/// @return A stdAc::state_t state. stdAc::state_t IRCoolixAC::toCommon(const stdAc::state_t *prev) { stdAc::state_t result; // Start with the previous state if given it. @@ -492,7 +554,8 @@ stdAc::state_t IRCoolixAC::toCommon(const stdAc::state_t *prev) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal state into a human readable string. +/// @return The current internal state expressed as a human readable String. String IRCoolixAC::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -575,18 +638,15 @@ String IRCoolixAC::toString(void) { } #if DECODE_COOLIX -// Decode the supplied Coolix message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kCoolixBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Known Working. +/// Decode the supplied Coolix A/C message. +/// Status: STABLE / Known Working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeCOOLIX(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // The protocol sends the data normal + inverted, alternating on diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Coolix.h b/lib/IRremoteESP8266-2.7.8/src/ir_Coolix.h similarity index 88% rename from lib/IRremoteESP8266-2.7.7/src/ir_Coolix.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Coolix.h index 7ffcf01a9..3b95aa2e4 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Coolix.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Coolix.h @@ -2,6 +2,15 @@ // // Copyright 2018 David Conran +// Supports: +// Brand: Beko, Model: RG57K7(B)/BGEF Remote +// Brand: Beko, Model: BINR 070/071 split-type A/C +// Brand: Midea, Model: RG52D/BGE Remote +// Brand: Midea, Model: MS12FU-10HRDN1-QRD0GW(B) A/C +// Brand: Midea, Model: MSABAU-07HRFN1-QRD0GW A/C (circa 2016) +// Brand: Tokio, Model: AATOEMF17-12CHR1SW split-type RG51|50/BGE Remote +// Brand: Airwell, Model: RC08B remote + #ifndef IR_COOLIX_H_ #define IR_COOLIX_H_ @@ -16,14 +25,6 @@ #include "IRsend_test.h" #endif -// Supports: -// Brand: Beko, Model: RG57K7(B)/BGEF Remote -// Brand: Beko, Model: BINR 070/071 split-type A/C -// Brand: Midea, Model: RG52D/BGE Remote -// Brand: Midea, Model: MS12FU-10HRDN1-QRD0GW(B) A/C -// Brand: Midea, Model: MSABAU-07HRFN1-QRD0GW A/C (circa 2016) -// Brand: Tokio, Model: AATOEMF17-12CHR1SW split-type RG51|50/BGE Remote -// Brand: Airwell, Model: RC08B remote // Ref: // https://github.com/crankyoldgit/IRremoteESP8266/issues/484 // Kudos: @@ -98,14 +99,20 @@ const uint32_t kCoolixCmdFan = 0b101100101011111111100100; // 0xB2BFE4 const uint32_t kCoolixDefaultState = 0b101100100001111111001000; // 0xB21FC8 // Classes + +/// Class for handling detailed Coolix A/C messages. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/484 class IRCoolixAC { public: explicit IRCoolixAC(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(); #if SEND_COOLIX void send(const uint16_t repeat = kCoolixDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_COOLIX void begin(); @@ -144,9 +151,11 @@ class IRCoolixAC { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< Instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond #endif // internal state bool powerFlag; @@ -159,8 +168,8 @@ class IRCoolixAC { bool swingHFlag; bool swingVFlag; - uint32_t remote_state; // The state of the IR remote in IR code form. - uint32_t saved_state; // Copy of the state if we required a special mode. + uint32_t remote_state; ///< The state of the IR remote in IR code form. + uint32_t saved_state; ///< Copy of the state if we required a special mode. void setTempRaw(const uint8_t code); uint8_t getTempRaw(); void setSensorTempRaw(const uint8_t code); diff --git a/lib/IRremoteESP8266-2.7.8/src/ir_Corona.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Corona.cpp new file mode 100644 index 000000000..2ba6044bf --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Corona.cpp @@ -0,0 +1,598 @@ +// Copyright 2020 Christian Nilsson +// +/// @file +/// @brief Corona A/C protocol +/// @note Unsupported: +/// - Auto/Max button press (special format) + +#include "ir_Corona.h" +#include +#include +#include "IRac.h" +#include "IRrecv.h" +#include "IRsend.h" +#include "IRtext.h" +#include "IRutils.h" + +using irutils::addBoolToString; +using irutils::addLabeledString; +using irutils::addModeToString; +using irutils::addTempToString; +using irutils::addFanToString; +using irutils::minsToString; +using irutils::setBit; +using irutils::setBits; + +// Constants +const uint16_t kCoronaAcHdrMark = 3500; +const uint16_t kCoronaAcHdrSpace = 1680; +const uint16_t kCoronaAcBitMark = 450; +const uint16_t kCoronaAcOneSpace = 1270; +const uint16_t kCoronaAcZeroSpace = 420; +const uint16_t kCoronaAcSpaceGap = 10800; +const uint16_t kCoronaAcFreq = 38000; // Hz. +const uint16_t kCoronaAcOverheadShort = 3; +const uint16_t kCoronaAcOverhead = 11; // full message +const uint8_t kCoronaTolerance = 5; // +5% + +#if SEND_CORONA_AC +/// Send a CoronaAc formatted message. +/// Status: STABLE / Working on real device. +/// @param[in] data An array of bytes containing the IR command. +/// @param[in] nbytes Nr. of bytes of data in the array. +/// e.g. +/// @code +/// uint8_t data[kCoronaAcStateLength] = { +/// 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x37, 0xC8, +/// 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, +/// 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; +/// @endcode +/// @param[in] repeat Nr. of times the message is to be repeated. +void IRsend::sendCoronaAc(const uint8_t data[], + const uint16_t nbytes, const uint16_t repeat) { + if (nbytes < kCoronaAcSectionBytes) return; + if (kCoronaAcSectionBytes < nbytes && + nbytes < kCoronaAcStateLength) return; + for (uint16_t r = 0; r <= repeat; r++) { + uint16_t pos = 0; + // Data Section #1 - 3 loop + // e.g. + // bits = 56; bytes = 7; + // #1 *(data + pos) = {0x28, 0x61, 0x3D, 0x19, 0xE6, 0x37, 0xC8}; + // #2 *(data + pos) = {0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00}; + // #3 *(data + pos) = {0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + for (uint8_t section = 0; section < kCoronaAcSections; section++) { + sendGeneric(kCoronaAcHdrMark, kCoronaAcHdrSpace, + kCoronaAcBitMark, kCoronaAcOneSpace, + kCoronaAcBitMark, kCoronaAcZeroSpace, + kCoronaAcBitMark, kCoronaAcSpaceGap, + data + pos, kCoronaAcSectionBytes, + kCoronaAcFreq, false, kNoRepeat, kDutyDefault); + pos += kCoronaAcSectionBytes; // Adjust by how many bytes was sent + // don't send more data then what we have + if (nbytes <= pos) + break; + } + } +} +#endif // SEND_CORONA_AC + +#if DECODE_CORONA_AC +/// Decode the supplied CoronaAc message. +/// Status: STABLE / Appears to be working. +/// @param[in,out] results Ptr to the data to decode & where to store it +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +bool IRrecv::decodeCoronaAc(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + bool isLong = results->rawlen >= kCoronaAcBits * 2; + if (results->rawlen < 2 * nbits + + (isLong ? kCoronaAcOverhead : kCoronaAcOverheadShort) + - offset) + return false; // Too short a message to match. + if (strict && nbits != kCoronaAcBits && nbits != kCoronaAcBitsShort) + return false; + + uint16_t pos = 0; + uint16_t used = 0; + + // Data Section #1 - 3 loop + // e.g. + // bits = 56; bytes = 7; + // #1 *(results->state + pos) = {0x28, 0x61, 0x3D, 0x19, 0xE6, 0x37, 0xC8}; + // #2 *(results->state + pos) = {0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00}; + // #3 *(results->state + pos) = {0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + for (uint8_t section = 0; section < kCoronaAcSections; section++) { + DPRINT(uint64ToString(section)); + used = matchGeneric(results->rawbuf + offset, results->state + pos, + results->rawlen - offset, kCoronaAcBitsShort, + kCoronaAcHdrMark, kCoronaAcHdrSpace, + kCoronaAcBitMark, kCoronaAcOneSpace, + kCoronaAcBitMark, kCoronaAcZeroSpace, + kCoronaAcBitMark, kCoronaAcSpaceGap, true, + _tolerance + kCoronaTolerance, kMarkExcess, false); + if (used == 0) return false; // We failed to find any data. + // short versions section 0 is special + if (strict && !IRCoronaAc::validSection(results->state, pos, + isLong ? section : 3)) + return false; + offset += used; // Adjust for how much of the message we read. + pos += kCoronaAcSectionBytes; // Adjust by how many bytes of data was read + // don't read more data then what we have + if (results->rawlen <= offset) + break; + } + + // Re-check we got the correct size/length due to the way we read the data. + if (strict && pos * 8 != kCoronaAcBits && pos * 8 != kCoronaAcBitsShort) { + DPRINTLN("strict bit match fail"); + return false; + } + + // Success + results->decode_type = decode_type_t::CORONA_AC; + results->bits = pos * 8; + // No need to record the state as we stored it as we decoded it. + // As we use result->state, we don't record value, address, or command as it + // is a union data type. + return true; +} +#endif // DECODE_CORONA_AC + +/// Class constructor for handling detailed Corona A/C messages. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? +IRCoronaAc::IRCoronaAc(const uint16_t pin, const bool inverted, + const bool use_modulation) + : _irsend(pin, inverted, use_modulation) { stateReset(); } + +/// Reset the internal state to a fixed known good state. +/// @note The state is powered off. +void IRCoronaAc::stateReset(void) { + // known good state + remote_state[kCoronaAcSectionData0Pos] = kCoronaAcSectionData0Base; + remote_state[kCoronaAcSectionData1Pos] = 0x00; // ensure no unset mem + setPowerButton(true); // we default to this on, any timer removes it + setTemp(kCoronaAcMinTemp); + setMode(kCoronaAcModeCool); + setFan(kCoronaAcFanAuto); + setOnTimer(kCoronaAcTimerOff); + setOffTimer(kCoronaAcTimerOff); + // headers and checks are fixed in getRaw by checksum(remote_state) +} + +/// Get the byte that identifies the section +/// @param[in] section Index of the section 0-2, +/// 3 and above is used as the special case for short message +/// @return The byte used for the section +uint8_t IRCoronaAc::getSectionByte(const uint8_t section) { + // base byte + uint8_t b = kCoronaAcSectionLabelBase; + // 2 enabled bits shifted 0-2 bits depending on section + if (section >= 3) + return 0b10010000 | b; + setBits(&b, kHighNibble, kNibbleSize, 0b11 << section); + return b; +} + +/// Check that a CoronaAc Section part is valid with section byte and inverted +/// @param[in] state An array of bytes containing the section +/// @param[in] pos Where to start in the state array +/// @param[in] section Which section to work with +/// Used to get the section byte, and is validated against pos +/// @return true if section is valid, otherwise false +bool IRCoronaAc::validSection(const uint8_t state[], const uint16_t pos, + const uint8_t section) { + // sanity check, pos must match section, section 4 is at pos 0 + if ((section % kCoronaAcSections) * kCoronaAcSectionBytes != pos) + return false; + // all individual sections has the same prefix + if (state[pos + kCoronaAcSectionHeader0Pos] != kCoronaAcSectionHeader0) { + DPRINT("State "); + DPRINT(pos + kCoronaAcSectionHeader0Pos); + DPRINT(" expected 0x28 was "); + DPRINTLN(uint64ToString(state[pos + kCoronaAcSectionHeader0Pos], 16)); + return false; + } + if (state[pos + kCoronaAcSectionHeader1Pos] != kCoronaAcSectionHeader1) { + DPRINT("State "); + DPRINT(pos + kCoronaAcSectionHeader1Pos); + DPRINT(" expected 0x61 was "); + DPRINTLN(uint64ToString(state[pos + kCoronaAcSectionHeader1Pos], 16)); + return false; + } + + // checking section byte + if (state[pos + kCoronaAcSectionLabelPos] != getSectionByte(section)) { + DPRINT("check 2 not matching, got "); + DPRINT(uint64ToString(state[pos + kCoronaAcSectionLabelPos], 16)); + DPRINT(" expected "); + DPRINTLN(uint64ToString(getSectionByte(section), 16)); + return false; + } + + // checking inverts + uint8_t d0invinv = ~state[pos + kCoronaAcSectionData0InvPos]; + if (state[pos + kCoronaAcSectionData0Pos] != d0invinv) { + DPRINT("inverted 3 - 4 not matching, got "); + DPRINT(uint64ToString(state[pos + kCoronaAcSectionData0Pos], 16)); + DPRINT(" vs "); + DPRINTLN(uint64ToString(state[pos + kCoronaAcSectionData0InvPos], 16)); + return false; + } + uint8_t d1invinv = ~state[pos + kCoronaAcSectionData1InvPos]; + if (state[pos + kCoronaAcSectionData1Pos] != d1invinv) { + DPRINT("inverted 5 - 6 not matching, got "); + DPRINT(uint64ToString(state[pos + kCoronaAcSectionData1Pos], 16)); + DPRINT(" vs "); + DPRINTLN(uint64ToString(state[pos + kCoronaAcSectionData1InvPos], 16)); + return false; + } + return true; +} + +/// Calculate and set the check values for the internal state. +/// @param[in,out] data The array to be modified +void IRCoronaAc::checksum(uint8_t* data) { + uint8_t pos; + for (uint8_t section = 0; section < kCoronaAcSections; section++) { + pos = section * kCoronaAcSectionBytes; + data[pos + kCoronaAcSectionHeader0Pos] = kCoronaAcSectionHeader0; + data[pos + kCoronaAcSectionHeader1Pos] = kCoronaAcSectionHeader1; + data[pos + kCoronaAcSectionLabelPos] = getSectionByte(section); + data[pos + kCoronaAcSectionData0InvPos] = + ~data[pos + kCoronaAcSectionData0Pos]; + data[pos + kCoronaAcSectionData1InvPos] = + ~data[pos + kCoronaAcSectionData1Pos]; + } +} + +/// Set up hardware to be able to send a message. +void IRCoronaAc::begin(void) { _irsend.begin(); } + +#if SEND_CORONA_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +void IRCoronaAc::send(const uint16_t repeat) { + // if no timer, always send once without power press + if (!getOnTimer() && !getOffTimer()) { + setPowerButton(false); + _irsend.sendCoronaAc(getRaw(), kCoronaAcStateLength, repeat); + // and then with power press + setPowerButton(true); + } + _irsend.sendCoronaAc(getRaw(), kCoronaAcStateLength, repeat); +} +#endif // SEND_CORONA_AC + +/// Get a copy of the internal state as a valid code for this protocol. +/// @return A Ptr to a valid code for this protocol based on the current +/// internal state. +/// @note To get stable AC state, if no timers, send once +/// without PowerButton set, and once with +uint8_t* IRCoronaAc::getRaw(void) { + checksum(remote_state); // Ensure correct check bits before sending. + return remote_state; +} + +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid state for this protocol. +/// @param[in] length of the new_code array. +void IRCoronaAc::setRaw(const uint8_t new_code[], const uint16_t length) { + memcpy(remote_state, new_code, std::min(length, kCoronaAcStateLength)); +} + +/// Set the temp in deg C. +/// @param[in] temp The desired temperature in Celsius. +void IRCoronaAc::setTemp(const uint8_t temp) { + uint8_t degrees = std::max(temp, kCoronaAcMinTemp); + degrees = std::min(degrees, kCoronaAcMaxTemp); + setBits(&remote_state[kCoronaAcSectionData1Pos], kCoronaAcTempOffset, + kCoronaAcTempSize, degrees - kCoronaAcMinTemp + 1); +} + +/// Get the current temperature from the internal state. +/// @return The current temperature in Celsius. +uint8_t IRCoronaAc::getTemp(void) { + return GETBITS8(remote_state[kCoronaAcSectionData1Pos], kCoronaAcTempOffset, + kCoronaAcTempSize) + kCoronaAcMinTemp - 1; +} + +/// Change the power setting. (in practice Standby, remote power) +/// @param[in] on true, the setting is on. false, the setting is off. +void IRCoronaAc::_setPower(const bool on) { + setBit(&remote_state[kCoronaAcSectionData1Pos], kCoronaAcPowerOffset, on); +} + +/// Change the power setting. (in practice Standby, remote power) +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note If changed, setPowerButton is also needed, +/// unless timer is or was active +void IRCoronaAc::setPower(const bool on) { + _setPower(on); + // setting power state resets timers that would cause the state + if (on) + setOnTimer(kCoronaAcTimerOff); + else + setOffTimer(kCoronaAcTimerOff); +} + +/// Get the current power setting. (in practice Standby, remote power) +/// @return true, the setting is on. false, the setting is off. +bool IRCoronaAc::getPower(void) { + return GETBIT8(remote_state[kCoronaAcSectionData1Pos], kCoronaAcPowerOffset); +} + +/// Change the power button setting. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note this sets that the AC should set power, +/// use setPower to define if the AC should end up as on or off +/// When no timer is active, the below is a truth table +/// With AC On, a command with setPower and setPowerButton gives nothing +/// With AC On, a command with setPower but not setPowerButton is ok +/// With AC Off, a command with setPower but not setPowerButton gives nothing +/// With AC Off, a command with setPower and setPowerButton is ok +void IRCoronaAc::setPowerButton(const bool on) { + setBit(&remote_state[kCoronaAcSectionData1Pos], + kCoronaAcPowerButtonOffset, on); +} + +/// Get the value of the current power button setting. +/// @return true, the setting is on. false, the setting is off. +bool IRCoronaAc::getPowerButton(void) { + return GETBIT8(remote_state[kCoronaAcSectionData1Pos], + kCoronaAcPowerButtonOffset); +} + +/// Change the power setting to On. +void IRCoronaAc::on(void) { setPower(true); } + +/// Change the power setting to Off. +void IRCoronaAc::off(void) { setPower(false); } + +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. +uint8_t IRCoronaAc::getMode(void) { + return GETBITS8(remote_state[kCoronaAcSectionData1Pos], + kCoronaAcModeOffset, kCoronaAcModeSize); +} + +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +void IRCoronaAc::setMode(const uint8_t mode) { + switch (mode) { + case kCoronaAcModeCool: + case kCoronaAcModeDry: + case kCoronaAcModeFan: + case kCoronaAcModeHeat: + setBits(&remote_state[kCoronaAcSectionData1Pos], + kCoronaAcModeOffset, kCoronaAcModeSize, + mode); + return; + default: + this->setMode(kCoronaAcModeCool); + } +} + +/// Convert a standard A/C mode into its native mode. +/// @param[in] mode A stdAc::opmode_t mode to be +/// converted to it's native equivalent +/// @return The corresponding native mode. +uint8_t IRCoronaAc::convertMode(const stdAc::opmode_t mode) { + switch (mode) { + case stdAc::opmode_t::kFan: return kCoronaAcModeFan; + case stdAc::opmode_t::kDry: return kCoronaAcModeDry; + case stdAc::opmode_t::kHeat: return kCoronaAcModeHeat; + default: return kCoronaAcModeCool; + } +} + +/// Convert a native mode to it's common stdAc::opmode_t equivalent. +/// @param[in] mode A native operation mode to be converted. +/// @return The corresponding common stdAc::opmode_t mode. +stdAc::opmode_t IRCoronaAc::toCommonMode(const uint8_t mode) { + switch (mode) { + case kCoronaAcModeFan: return stdAc::opmode_t::kFan; + case kCoronaAcModeDry: return stdAc::opmode_t::kDry; + case kCoronaAcModeHeat: return stdAc::opmode_t::kHeat; + default: return stdAc::opmode_t::kCool; + } +} + +/// Get the operating speed of the A/C Fan +/// @return The current operating fan speed setting +uint8_t IRCoronaAc::getFan(void) { + return GETBITS8(remote_state[kCoronaAcSectionData0Pos], + kCoronaAcFanOffset, kCoronaAcFanSize); +} + +/// Set the operating speed of the A/C Fan +/// @param[in] speed The desired fan speed +void IRCoronaAc::setFan(const uint8_t speed) { + if (speed > kCoronaAcFanHigh) + setFan(kCoronaAcFanAuto); + else + setBits(&remote_state[kCoronaAcSectionData0Pos], + kCoronaAcFanOffset, kCoronaAcFanSize, speed); +} + +/// Change the powersave setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRCoronaAc::setEcono(const bool on) { + setBit(&remote_state[kCoronaAcSectionData0Pos], kCoronaAcPowerSaveOffset, on); +} + +/// Get the value of the current powersave setting. +/// @return true, the setting is on. false, the setting is off. +bool IRCoronaAc::getEcono(void) { + return GETBIT8(remote_state[kCoronaAcSectionData0Pos], + kCoronaAcPowerSaveOffset); +} + +/// Convert a standard A/C Fan speed into its native fan speed. +/// @param[in] speed The desired stdAc::fanspeed_t fan speed +/// @return The given fan speed in native format +uint8_t IRCoronaAc::convertFan(const stdAc::fanspeed_t speed) { + switch (speed) { + case stdAc::fanspeed_t::kMin: + case stdAc::fanspeed_t::kLow: return kCoronaAcFanLow; + case stdAc::fanspeed_t::kMedium: return kCoronaAcFanMedium; + case stdAc::fanspeed_t::kHigh: + case stdAc::fanspeed_t::kMax: return kCoronaAcFanHigh; + default: return kCoronaAcFanAuto; + } +} + +/// Convert a native fan speed to it's common equivalent. +/// @param[in] speed The desired native fan speed +/// @return The given fan speed in stdAc::fanspeed_t format +stdAc::fanspeed_t IRCoronaAc::toCommonFanSpeed(const uint8_t speed) { + switch (speed) { + case kCoronaAcFanHigh: return stdAc::fanspeed_t::kHigh; + case kCoronaAcFanMedium: return stdAc::fanspeed_t::kMedium; + case kCoronaAcFanLow: return stdAc::fanspeed_t::kLow; + default: return stdAc::fanspeed_t::kAuto; + } +} + +/// Set the Vertical Swing toggle setting +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note This is a button press, and not a state +/// after sending it once you should turn it off +void IRCoronaAc::setSwingVToggle(const bool on) { + setBit(&remote_state[kCoronaAcSectionData0Pos], + kCoronaAcSwingVToggleOffset, on); +} + +/// Get the Vertical Swing toggle setting +/// @return true, the setting is on. false, the setting is off. +bool IRCoronaAc::getSwingVToggle(void) { + return GETBIT64(remote_state[kCoronaAcSectionData0Pos], + kCoronaAcSwingVToggleOffset); +} + +/// Set the Timer time +/// @param[in] section index of section, used for offset. +/// @param[in] nr_of_mins Number of minutes to set the timer to. +/// (non in range value is disable). +/// Valid is from 1 minute to 12 hours +void IRCoronaAc::_setTimer(const uint8_t section, const uint16_t nr_of_mins) { + // default to off + uint16_t hsecs = kCoronaAcTimerOff; + if (1 <= nr_of_mins && nr_of_mins <= kCoronaAcTimerMax) + hsecs = nr_of_mins * kCoronaAcTimerUnitsPerMin; + + uint8_t pos = section * kCoronaAcSectionBytes; + // convert 16 bit value to separate 8 bit parts + remote_state[pos + kCoronaAcSectionData1Pos] = hsecs >> 8; + remote_state[pos + kCoronaAcSectionData0Pos] = hsecs; + + // if any timer is enabled, then (remote) ac must be on (Standby) + if (hsecs != kCoronaAcTimerOff) { + _setPower(true); + setPowerButton(false); + } +} + +/// Get the current Timer time +/// @return The number of minutes it is set for. 0 means it's off. +/// @note The A/C protocol supports 2 second increments +uint16_t IRCoronaAc::_getTimer(const uint8_t section) { + uint8_t pos = section * kCoronaAcSectionBytes; + // combine separate 8 bit parts to 16 bit value + uint16_t hsecs = remote_state[pos + kCoronaAcSectionData1Pos] << 8 | + remote_state[pos + kCoronaAcSectionData0Pos]; + + if (hsecs == kCoronaAcTimerOff) + return 0; + + return hsecs / kCoronaAcTimerUnitsPerMin; +} + +/// Get the current On Timer time +/// @return The number of minutes it is set for. 0 means it's off. +uint16_t IRCoronaAc::getOnTimer(void) { + return _getTimer(kCoronaAcOnTimerSection); +} + +/// Set the On Timer time +/// @param[in] nr_of_mins Number of minutes to set the timer to. +/// (0 or kCoronaAcTimerOff is disable). +void IRCoronaAc::setOnTimer(const uint16_t nr_of_mins) { + _setTimer(kCoronaAcOnTimerSection, nr_of_mins); + // if we set a timer value, clear the other timer + if (getOnTimer()) + setOffTimer(kCoronaAcTimerOff); +} + +/// Get the current Off Timer time +/// @return The number of minutes it is set for. 0 means it's off. +uint16_t IRCoronaAc::getOffTimer(void) { + return _getTimer(kCoronaAcOffTimerSection); +} + +/// Set the Off Timer time +/// @param[in] nr_of_mins Number of minutes to set the timer to. +/// (0 or kCoronaAcTimerOff is disable). +void IRCoronaAc::setOffTimer(const uint16_t nr_of_mins) { + _setTimer(kCoronaAcOffTimerSection, nr_of_mins); + // if we set a timer value, clear the other timer + if (getOffTimer()) + setOnTimer(kCoronaAcTimerOff); +} + +/// Convert the internal state into a human readable string. +/// @return The current internal state expressed as a human readable String. +String IRCoronaAc::toString(void) { + String result = ""; + result.reserve(140); // Reserve some heap for the string to reduce fragging. + result += addBoolToString(getPower(), kPowerStr, false); + result += addBoolToString(getPowerButton(), kPowerButtonStr); + result += addModeToString(getMode(), 0xFF, kCoronaAcModeCool, + kCoronaAcModeHeat, kCoronaAcModeDry, + kCoronaAcModeFan); + result += addTempToString(getTemp()); + result += addFanToString(getFan(), kCoronaAcFanHigh, kCoronaAcFanLow, + kCoronaAcFanAuto, kCoronaAcFanAuto, + kCoronaAcFanMedium); + result += addBoolToString(getSwingVToggle(), kSwingVToggleStr); + result += addBoolToString(getEcono(), kEconoStr); + result += addLabeledString(getOnTimer() + ? minsToString(getOnTimer()) : kOffStr, + kOnTimerStr); + result += addLabeledString(getOffTimer() + ? minsToString(getOffTimer()) : kOffStr, + kOffTimerStr); + return result; +} + +/// Convert the A/C state to it's common stdAc::state_t equivalent. +/// @return A stdAc::state_t state. +stdAc::state_t IRCoronaAc::toCommon() { + stdAc::state_t result; + result.protocol = decode_type_t::CORONA_AC; + result.model = -1; // No models used. + result.power = getPower(); + result.mode = toCommonMode(getMode()); + result.celsius = true; + result.degrees = getTemp(); + result.fanspeed = toCommonFanSpeed(getFan()); + result.swingv = getSwingVToggle() ? + stdAc::swingv_t::kAuto : stdAc::swingv_t::kOff; + result.econo = getEcono(); + // Not supported. + result.sleep = -1; + result.swingh = stdAc::swingh_t::kOff; + result.turbo = false; + result.quiet = false; + result.clean = false; + result.filter = false; + result.beep = false; + result.light = false; + result.clock = -1; + return result; +} diff --git a/lib/IRremoteESP8266-2.7.8/src/ir_Corona.h b/lib/IRremoteESP8266-2.7.8/src/ir_Corona.h new file mode 100644 index 000000000..871fc4c87 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Corona.h @@ -0,0 +1,155 @@ +// Corona A/C +// +// Copyright 2020 Christian Nilsson + +// Supports: +// Brand: Corona, Model: CSH-N2211 A/C +// Brand: Corona, Model: CSH-N2511 A/C +// Brand: Corona, Model: CSH-N2811 A/C +// Brand: Corona, Model: CSH-N4011 A/C +// Brand: Corona, Model: AR-01 remote +// +// Ref: https://docs.google.com/spreadsheets/d/1zzDEUQ52y7MZ7_xCU3pdjdqbRXOwZLsbTGvKWcicqCI/ +// Ref: https://www.corona.co.jp/box/download.php?id=145060636229 + +#ifndef IR_CORONA_H_ +#define IR_CORONA_H_ + +#define __STDC_LIMIT_MACROS +#include +#ifndef UNIT_TEST +#include +#endif +#include "IRremoteESP8266.h" +#include "IRsend.h" +#ifdef UNIT_TEST +#include "IRsend_test.h" +#endif + +// Constants + +// CORONA_AC +const uint8_t kCoronaAcSectionBytes = 7; // kCoronaAcStateLengthShort +const uint8_t kCoronaAcSections = 3; +const uint8_t kCoronaAcSectionHeader0Pos = 0; +const uint8_t kCoronaAcSectionHeader0 = 0x28; +const uint8_t kCoronaAcSectionHeader1Pos = 1; +const uint8_t kCoronaAcSectionHeader1 = 0x61; +const uint8_t kCoronaAcSectionLabelPos = 2; +const uint8_t kCoronaAcSectionLabelBase = 0x0D; // 0b1101 +const uint8_t kCoronaAcSectionData0Pos = 3; +const uint8_t kCoronaAcSectionData0InvPos = 4; +const uint8_t kCoronaAcSectionData1Pos = 5; +const uint8_t kCoronaAcSectionData1InvPos = 6; +const uint8_t kCoronaAcSectionData0Base = 0x10; // D0 Pos 4 always on + +const uint8_t kCoronaAcSettingsSection = 0; +// D0 +const uint8_t kCoronaAcFanOffset = 0; // D0 LSB Pos 0-1 +const uint8_t kCoronaAcFanSize = 2; +const uint8_t kCoronaAcFanAuto = 0b00; // 0 +const uint8_t kCoronaAcFanLow = 0b01; // 1 +const uint8_t kCoronaAcFanMedium = 0b10; // 2 +const uint8_t kCoronaAcFanHigh = 0b11; // 3 + +// One bit unknown // D0 Pos 2 +const uint8_t kCoronaAcPowerSaveOffset = 3; // D0 Pos 3 +// One bit unknown always on // D0 Pos 4 +// One bit unknown // D0 Pos 5 +const uint8_t kCoronaAcSwingVToggleOffset = 6; // D0 Pos 6 +// One bit unknown // D0 MSB Pos 7 + +// D1 +/* full auto mode not supported by this code yet +const uint8_t kCoronaAcAutoD0 = 0b00010100; // only combined with power save +const uint8_t kCoronaAcAutoD1 = 0b10000011; // only combined with power +*/ +const uint8_t kCoronaAcTempOffset = 0; // D1 LSB Pos 0 +const uint8_t kCoronaAcTempSize = 4; +const uint8_t kCoronaAcMinTemp = 17; // Celsius = 0b0001 +const uint8_t kCoronaAcMaxTemp = 30; // Celsius = 0b1110 +const uint8_t kCoronaAcPowerOffset = + kCoronaAcTempOffset + kCoronaAcTempSize; // D1 Pos 4 +const uint8_t kCoronaAcPowerButtonOffset = + kCoronaAcPowerOffset + 1; // D1 Pos 5 +const uint8_t kCoronaAcModeOffset = + kCoronaAcPowerButtonOffset + 1; // D1 MSB Pos 6-7 +const uint8_t kCoronaAcModeSize = 2; +const uint8_t kCoronaAcModeHeat = 0b00; // 0 +const uint8_t kCoronaAcModeDry = 0b01; // 1 +const uint8_t kCoronaAcModeCool = 0b10; // 2 +const uint8_t kCoronaAcModeFan = 0b11; // 3 + +const uint8_t kCoronaAcOnTimerSection = 1; +const uint8_t kCoronaAcOffTimerSection = 2; +const uint16_t kCoronaAcTimerMax = 12 * 60; // 12H in Minutes +// Min value on remote is 1 hour, actual sent value can be 2 secs +const uint16_t kCoronaAcTimerOff = 0xffff; +const uint16_t kCoronaAcTimerUnitsPerMin = 30; // 30 units = 1 minute + +// Classes + +/// Class for handling detailed Corona A/C messages. +class IRCoronaAc { + public: + explicit IRCoronaAc(const uint16_t pin, const bool inverted = false, + const bool use_modulation = true); + + void stateReset(); +#if SEND_CORONA_AC + void send(const uint16_t repeat = kNoRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } +#endif // SEND_CORONA_AC + void begin(); + static bool validSection(const uint8_t state[], const uint16_t pos, + const uint8_t section); + void setPower(const bool on); + bool getPower(); + bool getPowerButton(); + void on(); + void off(); + void setTemp(const uint8_t temp); + uint8_t getTemp(); + void setSwingVToggle(const bool on); + bool getSwingVToggle(void); + void setFan(const uint8_t speed); + uint8_t getFan(); + void setMode(const uint8_t mode); + uint8_t getMode(); + void setEcono(const bool on); + bool getEcono(void); + void setOnTimer(const uint16_t nr_of_mins); + uint16_t getOnTimer(void); + void setOffTimer(const uint16_t nr_of_mins); + uint16_t getOffTimer(void); + uint8_t* getRaw(); + void setRaw(const uint8_t new_code[], + const uint16_t length = kCoronaAcStateLength); + uint8_t convertMode(const stdAc::opmode_t mode); + uint8_t convertFan(const stdAc::fanspeed_t speed); + static stdAc::opmode_t toCommonMode(const uint8_t mode); + static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); + stdAc::state_t toCommon(); + String toString(); +#ifndef UNIT_TEST + + private: + IRsend _irsend; ///< Instance of the IR send class +#else + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif + uint8_t remote_state[kCoronaAcStateLength]; ///< The state of the IR remote. + static uint8_t getSectionByte(const uint8_t section); + static void checksum(uint8_t* data); + void setPowerButton(const bool on); + void _setPower(const bool on); + void _setTimer(const uint8_t section, const uint16_t nr_of_mins); + uint16_t _getTimer(const uint8_t section); +}; +#endif // IR_CORONA_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Daikin.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Daikin.cpp similarity index 70% rename from lib/IRremoteESP8266-2.7.7/src/ir_Daikin.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Daikin.cpp index 2bc0518ec..8aa6a73a2 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Daikin.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Daikin.cpp @@ -1,13 +1,25 @@ -/* -An Arduino sketch to emulate IR Daikin ARC433** & ARC477A1 remote control unit -Read more at: -http://harizanov.com/2012/02/control-daikin-air-conditioner-over-the-internet/ +// Copyright 2016 sillyfrog +// Copyright 2017 sillyfrog, crankyoldgit +// Copyright 2018-2020 crankyoldgit +// Copyright 2019 pasna (IRDaikin160 class / Daikin176 class) -Copyright 2016 sillyfrog -Copyright 2017 sillyfrog, crankyoldgit -Copyright 2018-2019 crankyoldgit -Copyright 2019 pasna (IRDaikin160 class / Daikin176 class) -*/ +/// @file +/// @brief Support for Daikin A/C protocols. +/// @see Daikin http://harizanov.com/2012/02/control-daikin-air-conditioner-over-the-internet/ +/// @see Daikin https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote +/// @see Daikin http://rdlab.cdmt.vn/project-2013/daikin-ir-protocol +/// @see Daikin https://github.com/blafois/Daikin-IR-Reverse +/// @see Daikin128 https://github.com/crankyoldgit/IRremoteESP8266/issues/827 +/// @see Daikin152 https://github.com/crankyoldgit/IRremoteESP8266/issues/873 +/// @see Daikin152 https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.cpp +/// @see Daikin152 https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.h +/// @see Daikin160 https://github.com/crankyoldgit/IRremoteESP8266/issues/731 +/// @see Daikin2 https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit#gid=236366525&range=B25:D32 +/// @see Daikin2 https://github.com/crankyoldgit/IRremoteESP8266/issues/582 +/// @see Daikin2 https://www.daikin.co.nz/sites/default/files/daikin-split-system-US7-FTXZ25-50NV1B.pdf +/// @see Daikin216 https://github.com/crankyoldgit/IRremoteESP8266/issues/689 +/// @see Daikin216 https://github.com/danny-source/Arduino_DY_IRDaikin +/// @see Daikin64 https://github.com/crankyoldgit/IRremoteESP8266/issues/1064 #include "ir_Daikin.h" #include @@ -24,12 +36,6 @@ Copyright 2019 pasna (IRDaikin160 class / Daikin176 class) #include "IRtext.h" #include "IRutils.h" -// Constants -// Ref: -// https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote -// http://rdlab.cdmt.vn/project-2013/daikin-ir-protocol -// https://github.com/crankyoldgit/IRremoteESP8266/issues/582 - using irutils::addBoolToString; using irutils::addDayToString; using irutils::addIntToString; @@ -44,19 +50,14 @@ using irutils::setBits; using irutils::sumNibbles; using irutils::uint8ToBcd; - #if SEND_DAIKIN -// Send a Daikin A/C message. -// -// Args: -// data: An array of kDaikinStateLength bytes containing the IR command. -// -// Status: STABLE -// -// Ref: -// IRDaikinESP.cpp -// https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote -// https://github.com/blafois/Daikin-IR-Reverse +/// Send a Daikin 280-bit A/C formatted message. +/// Status: STABLE +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote +/// @see https://github.com/blafois/Daikin-IR-Reverse void IRsend::sendDaikin(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kDaikinStateLengthShort) @@ -98,24 +99,29 @@ void IRsend::sendDaikin(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_DAIKIN +/// Class constructor. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikinESP::IRDaikinESP(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikinESP::begin(void) { _irsend.begin(); } #if SEND_DAIKIN +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikinESP::send(const uint16_t repeat) { _irsend.sendDaikin(getRaw(), kDaikinStateLength, repeat); } #endif // SEND_DAIKIN -// Verify the checksums are valid for a given state. -// Args: -// state: The array to verify the checksums of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikinESP::validChecksum(uint8_t state[], const uint16_t length) { // Data #1 if (length < kDaikinSection1Length || @@ -136,7 +142,7 @@ bool IRDaikinESP::validChecksum(uint8_t state[], const uint16_t length) { return true; } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikinESP::checksum(void) { remote[kDaikinByteChecksum1] = sumBytes(remote, kDaikinSection1Length - 1); remote[kDaikinByteChecksum2] = sumBytes(remote + kDaikinSection1Length, @@ -146,6 +152,7 @@ void IRDaikinESP::checksum(void) { kDaikinSection3Length - 1); } +/// Reset the internal state to a fixed known good state. void IRDaikinESP::stateReset(void) { for (uint8_t i = 0; i < kDaikinStateLength; i++) remote[i] = 0x0; @@ -173,11 +180,16 @@ void IRDaikinESP::stateReset(void) { this->checksum(); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRDaikinESP::getRaw(void) { this->checksum(); // Ensure correct settings before sending. return remote; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length Length of the code in bytes. void IRDaikinESP::setRaw(const uint8_t new_code[], const uint16_t length) { uint8_t offset = 0; if (length == kDaikinStateLengthShort) { // Handle the "short" length case. @@ -188,28 +200,39 @@ void IRDaikinESP::setRaw(const uint8_t new_code[], const uint16_t length) { remote[i + offset] = new_code[i]; } +/// Change the power setting to On. void IRDaikinESP::on(void) { setPower(true); } +/// Change the power setting to Off. void IRDaikinESP::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setPower(const bool on) { setBit(&remote[kDaikinBytePower], kDaikinBitPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getPower(void) { return GETBIT8(remote[kDaikinBytePower], kDaikinBitPowerOffset); } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRDaikinESP::setTemp(const uint8_t temp) { uint8_t degrees = std::max(temp, kDaikinMinTemp); degrees = std::min(degrees, kDaikinMaxTemp); remote[kDaikinByteTemp] = degrees << 1; } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikinESP::getTemp(void) { return remote[kDaikinByteTemp] >> 1; } -// Set the speed of the fan, 1-5 or kDaikinFanAuto or kDaikinFanQuiet +/// Set the speed of the fan. +/// @param[in] fan The desired setting. +/// @note 1-5 or kDaikinFanAuto or kDaikinFanQuiet void IRDaikinESP::setFan(const uint8_t fan) { // Set the fan speed bits, leave low 4 bits alone uint8_t fanset; @@ -222,6 +245,8 @@ void IRDaikinESP::setFan(const uint8_t fan) { setBits(&remote[kDaikinByteFan], kDaikinFanOffset, kDaikinFanSize, fanset); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikinESP::getFan(void) { uint8_t fan = GETBITS8(remote[kDaikinByteFan], kDaikinFanOffset, kDaikinFanSize); @@ -229,10 +254,14 @@ uint8_t IRDaikinESP::getFan(void) { return fan; } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikinESP::getMode(void) { return GETBITS8(remote[kDaikinBytePower], kDaikinModeOffset, kDaikinModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRDaikinESP::setMode(const uint8_t mode) { switch (mode) { case kDaikinAuto: @@ -248,35 +277,49 @@ void IRDaikinESP::setMode(const uint8_t mode) { } } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setSwingVertical(const bool on) { setBits(&remote[kDaikinByteFan], kDaikinSwingOffset, kDaikinSwingSize, on ? kDaikinSwingOn : kDaikinSwingOff); } +/// Get the Vertical Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getSwingVertical(void) { return GETBITS8(remote[kDaikinByteFan], kDaikinSwingOffset, kDaikinSwingSize); } +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setSwingHorizontal(const bool on) { setBits(&remote[kDaikinByteSwingH], kDaikinSwingOffset, kDaikinSwingSize, on ? kDaikinSwingOn : kDaikinSwingOff); } +/// Get the Horizontal Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getSwingHorizontal(void) { return GETBITS8(remote[kDaikinByteSwingH], kDaikinSwingOffset, kDaikinSwingSize); } +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setQuiet(const bool on) { setBit(&remote[kDaikinByteSilent], kDaikinBitSilentOffset, on); // Powerful & Quiet mode being on are mutually exclusive. if (on) this->setPowerful(false); } +/// Get the Quiet mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getQuiet(void) { return GETBIT8(remote[kDaikinByteSilent], kDaikinBitSilentOffset); } +/// Set the Powerful (Turbo) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setPowerful(const bool on) { setBit(&remote[kDaikinBytePowerful], kDaikinBitPowerfulOffset, on); if (on) { @@ -286,45 +329,64 @@ void IRDaikinESP::setPowerful(const bool on) { } } +/// Get the Powerful (Turbo) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getPowerful(void) { return GETBIT8(remote[kDaikinBytePowerful], kDaikinBitPowerfulOffset); } +/// Set the Sensor mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setSensor(const bool on) { setBit(&remote[kDaikinByteSensor], kDaikinBitSensorOffset, on); } +/// Get the Sensor mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getSensor(void) { return GETBIT8(remote[kDaikinByteSensor], kDaikinBitSensorOffset); } +/// Set the Economy mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setEcono(const bool on) { setBit(&remote[kDaikinByteEcono], kDaikinBitEconoOffset, on); // Powerful & Econo mode being on are mutually exclusive. if (on) this->setPowerful(false); } +/// Get the Economical mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getEcono(void) { return GETBIT8(remote[kDaikinByteEcono], kDaikinBitEconoOffset); } +/// Set the Mould mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setMold(const bool on) { setBit(&remote[kDaikinByteMold], kDaikinBitMoldOffset, on); } +/// Get the Mould mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getMold(void) { return GETBIT8(remote[kDaikinByteMold], kDaikinBitMoldOffset); } +/// Set the Comfort mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setComfort(const bool on) { setBit(&remote[kDaikinByteComfort], kDaikinBitComfortOffset, on); } +/// Get the Comfort mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getComfort(void) { return GETBIT8(remote[kDaikinByteComfort], kDaikinBitComfortOffset); } -// starttime: Number of minutes after midnight. +/// Set the enable status & time of the On Timer. +/// @param[in] starttime The number of minutes past midnight. void IRDaikinESP::enableOnTimer(const uint16_t starttime) { setBit(&remote[kDaikinByteOnTimer], kDaikinBitOnTimerOffset); remote[kDaikinByteOnTimerMinsLow] = starttime; @@ -333,11 +395,14 @@ void IRDaikinESP::enableOnTimer(const uint16_t starttime) { kDaikinOnTimerMinsHighSize, starttime >> 8); } +/// Clear and disable the On timer. void IRDaikinESP::disableOnTimer(void) { this->enableOnTimer(kDaikinUnusedTime); setBit(&remote[kDaikinByteOnTimer], kDaikinBitOnTimerOffset, false); } +/// Get the On Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikinESP::getOnTime(void) { return (GETBITS8(remote[kDaikinByteOnTimerMinsHigh], kDaikinOnTimerMinsHighOffset, @@ -345,11 +410,14 @@ uint16_t IRDaikinESP::getOnTime(void) { remote[kDaikinByteOnTimerMinsLow]; } +/// Get the enable status of the On Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getOnTimerEnabled(void) { return GETBIT8(remote[kDaikinByteOnTimer], kDaikinBitOnTimerOffset); } -// endtime: Number of minutes after midnight. +/// Set the enable status & time of the Off Timer. +/// @param[in] endtime The number of minutes past midnight. void IRDaikinESP::enableOffTimer(const uint16_t endtime) { setBit(&remote[kDaikinByteOffTimer], kDaikinBitOffTimerOffset); remote[kDaikinByteOffTimerMinsHigh] = endtime >> kNibbleSize; @@ -357,20 +425,27 @@ void IRDaikinESP::enableOffTimer(const uint16_t endtime) { endtime); } +/// Clear and disable the Off timer. void IRDaikinESP::disableOffTimer(void) { this->enableOffTimer(kDaikinUnusedTime); setBit(&remote[kDaikinByteOffTimer], kDaikinBitOffTimerOffset, false); } +/// Get the Off Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikinESP::getOffTime(void) { return (remote[kDaikinByteOffTimerMinsHigh] << kNibbleSize) + GETBITS8(remote[kDaikinByteOffTimerMinsLow], kHighNibble, kNibbleSize); } +/// Get the enable status of the Off Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getOffTimerEnabled(void) { return GETBIT8(remote[kDaikinByteOffTimer], kDaikinBitOffTimerOffset); } +/// Set the clock on the A/C unit. +/// @param[in] mins_since_midnight Nr. of minutes past midnight. void IRDaikinESP::setCurrentTime(const uint16_t mins_since_midnight) { uint16_t mins = mins_since_midnight; if (mins > 24 * 60) mins = 0; // If > 23:59, set to 00:00 @@ -380,33 +455,46 @@ void IRDaikinESP::setCurrentTime(const uint16_t mins_since_midnight) { kDaikinClockMinsHighSize, mins >> 8); } +/// Get the clock time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikinESP::getCurrentTime(void) { return (GETBITS8(remote[kDaikinByteClockMinsHigh], kDaikinClockMinsHighOffset, kDaikinClockMinsHighSize) << 8) + remote[kDaikinByteClockMinsLow]; } +/// Set the current day of the week to be sent to the A/C unit. +/// @param[in] day_of_week The numerical representation of the day of the week. +/// @note 1 is SUN, 2 is MON, ..., 7 is SAT void IRDaikinESP::setCurrentDay(const uint8_t day_of_week) { - // 1 is SUN, 2 is MON, ..., 7 is SAT setBits(&remote[kDaikinByteClockMinsHigh], kDaikinDoWOffset, kDaikinDoWSize, day_of_week); } +/// Get the current day of the week to be sent to the A/C unit. +/// @return The numerical representation of the day of the week. +/// @note 1 is SUN, 2 is MON, ..., 7 is SAT uint8_t IRDaikinESP::getCurrentDay(void) { return GETBITS8(remote[kDaikinByteClockMinsHigh], kDaikinDoWOffset, kDaikinDoWSize); } +/// Set the enable status of the Weekly Timer. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikinESP::setWeeklyTimerEnable(const bool on) { // Bit is cleared for `on`. setBit(&remote[kDaikinByteWeeklyTimer], kDaikinBitWeeklyTimerOffset, !on); } +/// Get the enable status of the Weekly Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikinESP::getWeeklyTimerEnable(void) { return !GETBIT8(remote[kDaikinByteWeeklyTimer], kDaikinBitWeeklyTimerOffset); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikinESP::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kDaikinCool; @@ -417,7 +505,9 @@ uint8_t IRDaikinESP::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikinESP::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kDaikinFanQuiet; @@ -429,7 +519,9 @@ uint8_t IRDaikinESP::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRDaikinESP::toCommonMode(const uint8_t mode) { switch (mode) { case kDaikinCool: return stdAc::opmode_t::kCool; @@ -440,7 +532,9 @@ stdAc::opmode_t IRDaikinESP::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRDaikinESP::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kDaikinFanMax: return stdAc::fanspeed_t::kMax; @@ -453,7 +547,8 @@ stdAc::fanspeed_t IRDaikinESP::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikinESP::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::DAIKIN; @@ -480,7 +575,8 @@ stdAc::state_t IRDaikinESP::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikinESP::toString(void) { String result = ""; result.reserve(230); // Reserve some heap for the string to reduce fragging. @@ -510,20 +606,16 @@ String IRDaikinESP::toString(void) { } #if DECODE_DAIKIN -// Decode the supplied Daikin A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikinBits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Reported as working. -// -// Ref: -// https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote +/// Decode the supplied Daikin 280-bit message. (DAIKIN) +/// Status: STABLE / Reported as working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote bool IRrecv::decodeDaikin(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // Is there enough data to match successfully? @@ -588,15 +680,12 @@ bool IRrecv::decodeDaikin(decode_results *results, uint16_t offset, #endif // DECODE_DAIKIN #if SEND_DAIKIN2 -// Send a Daikin2 A/C message. -// -// Args: -// data: An array of kDaikin2StateLength bytes containing the IR command. -// -// Status: STABLE / Expected to work. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/582 +/// Send a Daikin2 (312-bit) A/C formatted message. +/// Status: STABLE / Expected to work. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/582 void IRsend::sendDaikin2(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kDaikin2Section1Length) @@ -622,34 +711,29 @@ void IRsend::sendDaikin2(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_DAIKIN2 -// Class for handling Daikin2 A/C messages. -// -// Code by crankyoldgit, Reverse engineering analysis by sheppy99 -// -// Supported Remotes: Daikin ARC477A1 remote -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/582 -// https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit?usp=sharing -// https://www.daikin.co.nz/sites/default/files/daikin-split-system-US7-FTXZ25-50NV1B.pdf +/// Class constructor. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikin2::IRDaikin2(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikin2::begin(void) { _irsend.begin(); } #if SEND_DAIKIN2 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikin2::send(const uint16_t repeat) { _irsend.sendDaikin2(getRaw(), kDaikin2StateLength, repeat); } #endif // SEND_DAIKIN2 -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikin2::validChecksum(uint8_t state[], const uint16_t length) { // Validate the checksum of section #1. if (length <= kDaikin2Section1Length - 1 || @@ -664,7 +748,7 @@ bool IRDaikin2::validChecksum(uint8_t state[], const uint16_t length) { return true; } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikin2::checksum(void) { remote_state[kDaikin2Section1Length - 1] = sumBytes( remote_state, kDaikin2Section1Length - 1); @@ -672,6 +756,7 @@ void IRDaikin2::checksum(void) { remote_state + kDaikin2Section1Length, kDaikin2Section2Length - 1); } +/// Reset the internal state to a fixed known good state. void IRDaikin2::stateReset(void) { for (uint8_t i = 0; i < kDaikin2StateLength; i++) remote_state[i] = 0x0; @@ -706,33 +791,47 @@ void IRDaikin2::stateReset(void) { checksum(); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRDaikin2::getRaw(void) { checksum(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRDaikin2::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kDaikin2StateLength); } +/// Change the power setting to On. void IRDaikin2::on(void) { setPower(true); } +/// Change the power setting to Off. void IRDaikin2::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setPower(const bool on) { setBit(&remote_state[25], kDaikinBitPowerOffset, on); setBit(&remote_state[6], kDaikin2BitPowerOffset, !on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getPower(void) { return GETBIT8(remote_state[25], kDaikinBitPowerOffset) && !GETBIT8(remote_state[6], kDaikin2BitPowerOffset); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin2::getMode(void) { return GETBITS8(remote_state[25], kHighNibble, kModeBitsSize); } +/// Set the operating mode of the A/C. +/// @param[in] desired_mode The desired operating mode. void IRDaikin2::setMode(const uint8_t desired_mode) { uint8_t mode = desired_mode; switch (mode) { @@ -747,7 +846,8 @@ void IRDaikin2::setMode(const uint8_t desired_mode) { if (mode == kDaikinCool) this->setTemp(this->getTemp()); } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] desired The temperature in degrees celsius. void IRDaikin2::setTemp(const uint8_t desired) { // The A/C has a different min temp if in cool mode. uint8_t temp = std::max( @@ -756,7 +856,9 @@ void IRDaikin2::setTemp(const uint8_t desired) { remote_state[26] = std::min(kDaikinMaxTemp, temp) << 1; } -// Set the speed of the fan, 1-5 or kDaikinFanAuto or kDaikinFanQuiet +/// Set the speed of the fan. +/// @param[in] fan The desired setting. +/// @note 1-5 or kDaikinFanAuto or kDaikinFanQuiet void IRDaikin2::setFan(const uint8_t fan) { // Set the fan speed bits, leave low 4 bits alone uint8_t fanset; @@ -769,6 +871,8 @@ void IRDaikin2::setFan(const uint8_t fan) { setBits(&remote_state[kDaikin2FanByte], kHighNibble, kNibbleSize, fanset); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikin2::getFan(void) { const uint8_t fan = GETBITS8(remote_state[kDaikin2FanByte], kHighNibble, kNibbleSize); @@ -779,8 +883,12 @@ uint8_t IRDaikin2::getFan(void) { } } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikin2::getTemp(void) { return remote_state[26] >> 1; } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] position The position/mode to set the swing to. void IRDaikin2::setSwingVertical(const uint8_t position) { switch (position) { case kDaikin2SwingVHigh: @@ -797,11 +905,15 @@ void IRDaikin2::setSwingVertical(const uint8_t position) { } } +/// Get the Vertical Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRDaikin2::getSwingVertical(void) { return GETBITS8(remote_state[18], kLowNibble, kNibbleSize); } -// Convert a standard A/C vertical swing into its native version. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin2::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: @@ -815,7 +927,9 @@ uint8_t IRDaikin2::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] setting A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRDaikin2::toCommonSwingV(const uint8_t setting) { switch (setting) { case kDaikin2SwingVHigh: return stdAc::swingv_t::kHighest; @@ -829,12 +943,18 @@ stdAc::swingv_t IRDaikin2::toCommonSwingV(const uint8_t setting) { } } +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] position The position/mode to set the swing to. void IRDaikin2::setSwingHorizontal(const uint8_t position) { remote_state[17] = position; } +/// Get the Horizontal Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRDaikin2::getSwingHorizontal(void) { return remote_state[17]; } +/// Set the clock on the A/C unit. +/// @param[in] numMins Nr. of minutes past midnight. void IRDaikin2::setCurrentTime(const uint16_t numMins) { uint16_t mins = numMins; if (numMins > 24 * 60) mins = 0; // If > 23:59, set to 00:00 @@ -842,13 +962,16 @@ void IRDaikin2::setCurrentTime(const uint16_t numMins) { setBits(&remote_state[6], kLowNibble, kNibbleSize, mins >> 8); } +/// Get the clock time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin2::getCurrentTime(void) { return (GETBITS8(remote_state[6], kLowNibble, kNibbleSize) << 8) | remote_state[5]; } -// starttime: Number of minutes after midnight. -// Note: Timer location is shared with sleep timer. +/// Set the enable status & time of the On Timer. +/// @param[in] starttime The number of minutes past midnight. +/// @note Timer location is shared with sleep timer. void IRDaikin2::enableOnTimer(const uint16_t starttime) { clearSleepTimerFlag(); setBit(&remote_state[25], kDaikinBitOnTimerOffset); // Set the On Timer flag. @@ -856,26 +979,33 @@ void IRDaikin2::enableOnTimer(const uint16_t starttime) { setBits(&remote_state[31], kLowNibble, kNibbleSize, starttime >> 8); } +/// Clear the On Timer flag. void IRDaikin2::clearOnTimerFlag(void) { setBit(&remote_state[25], kDaikinBitOnTimerOffset, false); } +/// Disable the On timer. void IRDaikin2::disableOnTimer(void) { enableOnTimer(kDaikinUnusedTime); clearOnTimerFlag(); clearSleepTimerFlag(); } +/// Get the On Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin2::getOnTime(void) { return (GETBITS8(remote_state[31], kLowNibble, kNibbleSize) << 8) + remote_state[30]; } +/// Get the enable status of the On Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getOnTimerEnabled(void) { return GETBIT8(remote_state[25], kDaikinBitOnTimerOffset); } -// endtime: Number of minutes after midnight. +/// Set the enable status & time of the Off Timer. +/// @param[in] endtime The number of minutes past midnight. void IRDaikin2::enableOffTimer(const uint16_t endtime) { // Set the Off Timer flag. setBit(&remote_state[25], kDaikinBitOffTimerOffset); @@ -883,97 +1013,137 @@ void IRDaikin2::enableOffTimer(const uint16_t endtime) { setBits(&remote_state[31], kHighNibble, kNibbleSize, endtime); } +/// Disable the Off timer. void IRDaikin2::disableOffTimer(void) { enableOffTimer(kDaikinUnusedTime); // Clear the Off Timer flag. setBit(&remote_state[25], kDaikinBitOffTimerOffset, false); } +/// Get the Off Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin2::getOffTime(void) { return (remote_state[32] << 4) + GETBITS8(remote_state[31], kHighNibble, kNibbleSize); } +/// Get the enable status of the Off Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getOffTimerEnabled(void) { return GETBIT8(remote_state[25], kDaikinBitOffTimerOffset); } +/// Get the Beep status of the A/C. +/// @return true, the setting is on. false, the setting is off. uint8_t IRDaikin2::getBeep(void) { return GETBITS8(remote_state[7], kDaikin2BeepOffset, kDaikin2BeepSize); } +/// Set the Beep mode of the A/C. +/// @param[in] beep true, the setting is on. false, the setting is off. void IRDaikin2::setBeep(const uint8_t beep) { setBits(&remote_state[7], kDaikin2BeepOffset, kDaikin2BeepSize, beep); } +/// Get the Light status of the A/C. +/// @return true, the setting is on. false, the setting is off. uint8_t IRDaikin2::getLight(void) { return GETBITS8(remote_state[7], kDaikin2LightOffset, kDaikin2LightSize); } +/// Set the Light (LED) mode of the A/C. +/// @param[in] light true, the setting is on. false, the setting is off. void IRDaikin2::setLight(const uint8_t light) { setBits(&remote_state[7], kDaikin2LightOffset, kDaikin2LightSize, light); } +/// Set the Mould (filter) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setMold(const bool on) { setBit(&remote_state[8], kDaikin2BitMoldOffset, on); } +/// Get the Mould (filter) mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getMold(void) { return GETBIT8(remote_state[8], kDaikin2BitMoldOffset); } -// Auto clean setting. +/// Set the Auto clean mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setClean(const bool on) { setBit(&remote_state[8], kDaikin2BitCleanOffset, on); } +/// Get the Auto Clean mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getClean(void) { return GETBIT8(remote_state[8], kDaikin2BitCleanOffset); } -// Fresh Air settings. +/// Set the Fresh Air mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setFreshAir(const bool on) { setBit(&remote_state[8], kDaikin2BitFreshAirOffset, on); } +/// Get the Fresh Air mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getFreshAir(void) { return GETBIT8(remote_state[8], kDaikin2BitFreshAirOffset); } +/// Set the (High) Fresh Air mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setFreshAirHigh(const bool on) { setBit(&remote_state[8], kDaikin2BitFreshAirHighOffset, on); } +/// Get the (High) Fresh Air mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getFreshAirHigh(void) { return GETBIT8(remote_state[8], kDaikin2BitFreshAirHighOffset); } +/// Set the Automatic Eye (Sensor) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setEyeAuto(bool on) { setBit(&remote_state[13], kDaikin2BitEyeAutoOffset, on); } +/// Get the Automaitc Eye (Sensor) mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getEyeAuto(void) { return GETBIT8(remote_state[13], kDaikin2BitEyeAutoOffset); } +/// Set the Eye (Sensor) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setEye(bool on) { setBit(&remote_state[36], kDaikin2BitEyeOffset, on); } +/// Get the Eye (Sensor) mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getEye(void) { return GETBIT8(remote_state[36], kDaikin2BitEyeOffset); } +/// Set the Economy mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setEcono(bool on) { setBit(&remote_state[36], kDaikinBitEconoOffset, on); } +/// Get the Economical mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getEcono(void) { return GETBIT8(remote_state[36], kDaikinBitEconoOffset); } -// sleeptime: Number of minutes. -// Note: Timer location is shared with On Timer. +/// Set the enable status & time of the Sleep Timer. +/// @param[in] sleeptime The number of minutes past midnight. +/// @note The Timer location is shared with On Timer. void IRDaikin2::enableSleepTimer(const uint16_t sleeptime) { enableOnTimer(sleeptime); clearOnTimerFlag(); @@ -981,61 +1151,85 @@ void IRDaikin2::enableSleepTimer(const uint16_t sleeptime) { setBit(&remote_state[36], kDaikin2BitSleepTimerOffset); } +/// Clear the sleep timer flag. void IRDaikin2::clearSleepTimerFlag(void) { setBit(&remote_state[36], kDaikin2BitSleepTimerOffset, false); } +/// Disable the sleep timer. void IRDaikin2::disableSleepTimer(void) { disableOnTimer(); } +/// Get the Sleep Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin2::getSleepTime(void) { return getOnTime(); } +/// Get the Sleep timer enabled status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getSleepTimerEnabled(void) { return GETBIT8(remote_state[36], kDaikin2BitSleepTimerOffset); } +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setQuiet(const bool on) { setBit(&remote_state[33], kDaikinBitSilentOffset, on); // Powerful & Quiet mode being on are mutually exclusive. if (on) setPowerful(false); } +/// Get the Quiet mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getQuiet(void) { return GETBIT8(remote_state[33], kDaikinBitSilentOffset); } +/// Set the Powerful (Turbo) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setPowerful(const bool on) { setBit(&remote_state[33], kDaikinBitPowerfulOffset, on); // Powerful & Quiet mode being on are mutually exclusive. if (on) setQuiet(false); } +/// Get the Powerful (Turbo) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getPowerful(void) { return GETBIT8(remote_state[33], kDaikinBitPowerfulOffset); } +/// Set the Purify (Filter) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin2::setPurify(const bool on) { setBit(&remote_state[36], kDaikin2BitPurifyOffset, on); } +/// Get the Purify (Filter) mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin2::getPurify(void) { return GETBIT8(remote_state[36], kDaikin2BitPurifyOffset); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin2::convertMode(const stdAc::opmode_t mode) { return IRDaikinESP::convertMode(mode); } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin2::convertFan(const stdAc::fanspeed_t speed) { return IRDaikinESP::convertFan(speed); } -// Convert a standard A/C horizontal swing into its native version. +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin2::convertSwingH(const stdAc::swingh_t position) { switch (position) { case stdAc::swingh_t::kAuto: return kDaikin2SwingHSwing; @@ -1049,7 +1243,9 @@ uint8_t IRDaikin2::convertSwingH(const stdAc::swingh_t position) { } } -// Convert a native horizontal swing to it's common equivalent. +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] setting A native position to convert. +/// @return The common horizontal swing position. stdAc::swingh_t IRDaikin2::toCommonSwingH(const uint8_t setting) { switch (setting) { case kDaikin2SwingHSwing: return stdAc::swingh_t::kAuto; @@ -1063,7 +1259,8 @@ stdAc::swingh_t IRDaikin2::toCommonSwingH(const uint8_t setting) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikin2::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::DAIKIN2; @@ -1088,7 +1285,8 @@ stdAc::state_t IRDaikin2::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikin2::toString(void) { String result = ""; result.reserve(310); // Reserve some heap for the string to reduce fragging. @@ -1205,24 +1403,15 @@ String IRDaikin2::toString(void) { } #if DECODE_DAIKIN2 -// Decode the supplied Daikin2 A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikin2Bits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Supported devices: -// - Daikin FTXZ25NV1B, FTXZ35NV1B, FTXZ50NV1B Aircon -// - Daikin ARC477A1 remote -// -// Status: STABLE / Works as expected. -// -// Ref: -// https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote +/// Decode the supplied Daikin 312-bit message. (DAIKIN2) +/// Status: STABLE / Works as expected. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeDaikin2(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * (nbits + kHeader + kFooter) + kHeader - 1 + offset) @@ -1277,19 +1466,13 @@ bool IRrecv::decodeDaikin2(decode_results *results, uint16_t offset, #endif // DECODE_DAIKIN2 #if SEND_DAIKIN216 -// Send a Daikin 216 bit A/C message. -// -// Args: -// data: An array of kDaikin216StateLength bytes containing the IR command. -// -// Status: Alpha/Untested on a real device. -// -// Supported devices: -// - Daikin ARC433B69 remote. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/689 -// https://github.com/danny-source/Arduino_DY_IRDaikin +/// Send a Daikin216 (216-bit) A/C formatted message. +/// Status: Alpha / Untested on a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/689 +/// @see https://github.com/danny-source/Arduino_DY_IRDaikin void IRsend::sendDaikin216(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kDaikin216Section1Length) @@ -1313,33 +1496,29 @@ void IRsend::sendDaikin216(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_DAIKIN216 -// Class for handling Daikin 216 bit / 27 byte A/C messages. -// -// Code by crankyoldgit. -// -// Supported Remotes: Daikin ARC433B69 remote -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/689 -// https://github.com/danny-source/Arduino_DY_IRDaikin +/// Class Constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikin216::IRDaikin216(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikin216::begin(void) { _irsend.begin(); } #if SEND_DAIKIN216 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikin216::send(const uint16_t repeat) { _irsend.sendDaikin216(getRaw(), kDaikin216StateLength, repeat); } #endif // SEND_DAIKIN216 -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikin216::validChecksum(uint8_t state[], const uint16_t length) { // Validate the checksum of section #1. if (length <= kDaikin216Section1Length - 1 || @@ -1354,7 +1533,7 @@ bool IRDaikin216::validChecksum(uint8_t state[], const uint16_t length) { return true; } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikin216::checksum(void) { remote_state[kDaikin216Section1Length - 1] = sumBytes( remote_state, kDaikin216Section1Length - 1); @@ -1362,6 +1541,7 @@ void IRDaikin216::checksum(void) { remote_state + kDaikin216Section1Length, kDaikin216Section2Length - 1); } +/// Reset the internal state to a fixed known good state. void IRDaikin216::stateReset(void) { for (uint8_t i = 0; i < kDaikin216StateLength; i++) remote_state[i] = 0x00; remote_state[0] = 0x11; @@ -1376,31 +1556,45 @@ void IRDaikin216::stateReset(void) { // remote_state[26] is a checksum byte, it will be set by checksum(). } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRDaikin216::getRaw(void) { checksum(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRDaikin216::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kDaikin216StateLength); } +/// Change the power setting to On. void IRDaikin216::on(void) { setPower(true); } +/// Change the power setting to Off. void IRDaikin216::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin216::setPower(const bool on) { setBit(&remote_state[kDaikin216BytePower], kDaikinBitPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin216::getPower(void) { return GETBIT8(remote_state[kDaikin216BytePower], kDaikinBitPowerOffset); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin216::getMode(void) { return GETBITS8(remote_state[kDaikin216ByteMode], kHighNibble, kModeBitsSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRDaikin216::setMode(const uint8_t mode) { switch (mode) { case kDaikinAuto: @@ -1416,12 +1610,15 @@ void IRDaikin216::setMode(const uint8_t mode) { } } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin216::convertMode(const stdAc::opmode_t mode) { return IRDaikinESP::convertMode(mode); } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRDaikin216::setTemp(const uint8_t temp) { uint8_t degrees = std::max(temp, kDaikinMinTemp); degrees = std::min(degrees, kDaikinMaxTemp); @@ -1429,12 +1626,16 @@ void IRDaikin216::setTemp(const uint8_t temp) { kDaikin216TempSize, degrees); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikin216::getTemp(void) { return GETBITS8(remote_state[kDaikin216ByteTemp], kDaikin216TempOffset, kDaikin216TempSize); } -// Set the speed of the fan, 1-5 or kDaikinFanAuto or kDaikinFanQuiet +/// Set the speed of the fan. +/// @param[in] fan The desired setting. +/// @note 1-5 or kDaikinFanAuto or kDaikinFanQuiet void IRDaikin216::setFan(const uint8_t fan) { // Set the fan speed bits, leave low 4 bits alone uint8_t fanset; @@ -1448,6 +1649,8 @@ void IRDaikin216::setFan(const uint8_t fan) { fanset); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikin216::getFan(void) { uint8_t fan = GETBITS8(remote_state[kDaikin216ByteFan], kHighNibble, kDaikinFanSize); @@ -1455,32 +1658,44 @@ uint8_t IRDaikin216::getFan(void) { return fan; } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin216::convertFan(const stdAc::fanspeed_t speed) { return IRDaikinESP::convertFan(speed); } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin216::setSwingVertical(const bool on) { setBits(&remote_state[kDaikin216ByteSwingV], kLowNibble, kDaikin216SwingSize, on ? kDaikin216SwingOn : kDaikin216SwingOff); } +/// Get the Vertical Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin216::getSwingVertical(void) { return GETBITS8(remote_state[kDaikin216ByteSwingV], kLowNibble, kDaikin216SwingSize); } +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin216::setSwingHorizontal(const bool on) { setBits(&remote_state[kDaikin216ByteSwingH], kLowNibble, kDaikin216SwingSize, on ? kDaikin216SwingOn : kDaikin216SwingOff); } +/// Get the Horizontal Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin216::getSwingHorizontal(void) { return GETBITS8(remote_state[kDaikin216ByteSwingH], kLowNibble, kDaikin216SwingSize); } -// This is a horrible hack till someone works out the quiet mode bit. +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note This is a horrible hack till someone works out the quiet mode bit. void IRDaikin216::setQuiet(const bool on) { if (on) { this->setFan(kDaikinFanQuiet); @@ -1491,23 +1706,30 @@ void IRDaikin216::setQuiet(const bool on) { } } -// This is a horrible hack till someone works out the quiet mode bit. +/// Get the Quiet mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. +/// @note This is a horrible hack till someone works out the quiet mode bit. bool IRDaikin216::getQuiet(void) { return this->getFan() == kDaikinFanQuiet; } +/// Set the Powerful (Turbo) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin216::setPowerful(const bool on) { setBit(&remote_state[kDaikin216BytePowerful], kDaikinBitPowerfulOffset, on); // Powerful & Quiet mode being on are mutually exclusive. if (on) this->setQuiet(false); } +/// Get the Powerful (Turbo) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin216::getPowerful(void) { return GETBIT8(remote_state[kDaikin216BytePowerful], kDaikinBitPowerfulOffset); } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikin216::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::DAIKIN216; @@ -1534,7 +1756,8 @@ stdAc::state_t IRDaikin216::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikin216::toString(void) { String result = ""; result.reserve(120); // Reserve some heap for the string to reduce fragging. @@ -1552,24 +1775,17 @@ String IRDaikin216::toString(void) { } #if DECODE_DAIKIN216 -// Decode the supplied Daikin 216 bit A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikin216Bits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Supported devices: -// - Daikin ARC433B69 remote. -// -// Status: STABLE / Should be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/689 -// https://github.com/danny-source/Arduino_DY_IRDaikin +/// Decode the supplied Daikin 216-bit message. (DAIKIN216) +/// Status: STABLE / Should be working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/689 +/// @see https://github.com/danny-source/Arduino_DY_IRDaikin bool IRrecv::decodeDaikin216(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * (nbits + kHeader + kFooter) - 1 + offset) @@ -1615,18 +1831,12 @@ bool IRrecv::decodeDaikin216(decode_results *results, uint16_t offset, #endif // DECODE_DAIKIN216 #if SEND_DAIKIN160 -// Send a Daikin 160 bit A/C message. -// -// Args: -// data: An array of kDaikin160StateLength bytes containing the IR command. -// -// Status: STABLE / Confirmed working. -// -// Supported devices: -// - Daikin ARC423A5 remote. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/731 +/// Send a Daikin160 (160-bit) A/C formatted message. +/// Status: STABLE / Confirmed working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/731 void IRsend::sendDaikin160(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kDaikin160Section1Length) @@ -1650,26 +1860,21 @@ void IRsend::sendDaikin160(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_DAIKIN160 -// Class for handling Daikin 160 bit / 20 byte A/C messages. -// -// Code by crankyoldgit. -// -// Supported Remotes: Daikin ARC423A5 remote -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/731 +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikin160::IRDaikin160(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikin160::begin(void) { _irsend.begin(); } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikin160::validChecksum(uint8_t state[], const uint16_t length) { // Validate the checksum of section #1. if (length <= kDaikin160Section1Length - 1 || @@ -1684,7 +1889,7 @@ bool IRDaikin160::validChecksum(uint8_t state[], const uint16_t length) { return true; } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikin160::checksum(void) { remote_state[kDaikin160Section1Length - 1] = sumBytes( remote_state, kDaikin160Section1Length - 1); @@ -1692,6 +1897,7 @@ void IRDaikin160::checksum(void) { remote_state + kDaikin160Section1Length, kDaikin160Section2Length - 1); } +/// Reset the internal state to a fixed known good state. void IRDaikin160::stateReset(void) { for (uint8_t i = 0; i < kDaikin160StateLength; i++) remote_state[i] = 0x00; remote_state[0] = 0x11; @@ -1712,37 +1918,53 @@ void IRDaikin160::stateReset(void) { // remote_state[19] is a checksum byte, it will be set by checksum(). } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRDaikin160::getRaw(void) { checksum(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRDaikin160::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kDaikin160StateLength); } #if SEND_DAIKIN160 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikin160::send(const uint16_t repeat) { _irsend.sendDaikin160(getRaw(), kDaikin160StateLength, repeat); } #endif // SEND_DAIKIN160 +/// Change the power setting to On. void IRDaikin160::on(void) { setPower(true); } +/// Change the power setting to Off. void IRDaikin160::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin160::setPower(const bool on) { setBit(&remote_state[kDaikin160BytePower], kDaikinBitPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin160::getPower(void) { return GETBIT8(remote_state[kDaikin160BytePower], kDaikinBitPowerOffset); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin160::getMode(void) { return GETBITS8(remote_state[kDaikin160ByteMode], kHighNibble, kModeBitsSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRDaikin160::setMode(const uint8_t mode) { switch (mode) { case kDaikinAuto: @@ -1757,12 +1979,15 @@ void IRDaikin160::setMode(const uint8_t mode) { } } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin160::convertMode(const stdAc::opmode_t mode) { return IRDaikinESP::convertMode(mode); } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRDaikin160::setTemp(const uint8_t temp) { uint8_t degrees = std::max(temp, kDaikinMinTemp); degrees = std::min(degrees, kDaikinMaxTemp) - 10; @@ -1770,12 +1995,16 @@ void IRDaikin160::setTemp(const uint8_t temp) { kDaikin160TempSize, degrees); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikin160::getTemp(void) { return GETBITS8(remote_state[kDaikin160ByteTemp], kDaikin160TempOffset, kDaikin160TempSize) + 10; } -// Set the speed of the fan, 1-5 or kDaikinFanAuto or kDaikinFanQuiet +/// Set the speed of the fan. +/// @param[in] fan The desired setting. +/// @note 1-5 or kDaikinFanAuto or kDaikinFanQuiet void IRDaikin160::setFan(const uint8_t fan) { uint8_t fanset; if (fan == kDaikinFanQuiet || fan == kDaikinFanAuto) @@ -1788,6 +2017,8 @@ void IRDaikin160::setFan(const uint8_t fan) { setBits(&remote_state[kDaikin160ByteFan], kLowNibble, kDaikinFanSize, fanset); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikin160::getFan(void) { uint8_t fan = GETBITS8(remote_state[kDaikin160ByteFan], kLowNibble, kDaikinFanSize); @@ -1795,7 +2026,9 @@ uint8_t IRDaikin160::getFan(void) { return fan; } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin160::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kDaikinFanMin; @@ -1808,6 +2041,8 @@ uint8_t IRDaikin160::convertFan(const stdAc::fanspeed_t speed) { } } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] position The position/mode to set the swing to. void IRDaikin160::setSwingVertical(const uint8_t position) { switch (position) { case kDaikin160SwingVLowest: @@ -1823,12 +2058,16 @@ void IRDaikin160::setSwingVertical(const uint8_t position) { } } +/// Get the Vertical Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRDaikin160::getSwingVertical(void) { return GETBITS8(remote_state[kDaikin160ByteSwingV], kHighNibble, kDaikinSwingSize); } -// Convert a standard A/C vertical swing into its native version. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin160::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: @@ -1842,7 +2081,9 @@ uint8_t IRDaikin160::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] setting A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRDaikin160::toCommonSwingV(const uint8_t setting) { switch (setting) { case kDaikin160SwingVHighest: return stdAc::swingv_t::kHighest; @@ -1855,7 +2096,8 @@ stdAc::swingv_t IRDaikin160::toCommonSwingV(const uint8_t setting) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikin160::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::DAIKIN160; @@ -1880,7 +2122,8 @@ stdAc::state_t IRDaikin160::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikin160::toString(void) { String result = ""; result.reserve(150); // Reserve some heap for the string to reduce fragging. @@ -1906,23 +2149,16 @@ String IRDaikin160::toString(void) { } #if DECODE_DAIKIN160 -// Decode the supplied Daikin 160 bit A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikin160Bits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Supported devices: -// - Daikin ARC423A5 remote. -// -// Status: STABLE / Confirmed working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/731 +/// Decode the supplied Daikin 160-bit message. (DAIKIN160) +/// Status: STABLE / Confirmed working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/731 bool IRrecv::decodeDaikin160(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * (nbits + kHeader + kFooter) - 1 + offset) @@ -1968,16 +2204,11 @@ bool IRrecv::decodeDaikin160(decode_results *results, uint16_t offset, #endif // DECODE_DAIKIN160 #if SEND_DAIKIN176 -// Send a Daikin 176 bit A/C message. -// -// Args: -// data: An array of kDaikin176StateLength bytes containing the IR command. -// -// Status: Alpha/Untested on a real device. -// -// Supported devices: -// - Daikin BRC4C153 remote. -// +/// Send a Daikin176 (176-bit) A/C formatted message. +/// Status: Alpha / Untested on a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendDaikin176(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kDaikin176Section1Length) @@ -2001,24 +2232,21 @@ void IRsend::sendDaikin176(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_DAIKIN176 -// Class for handling Daikin 176 bit / 22 byte A/C messages. -// -// Code by crankyoldgit. -// -// Supported Remotes: Daikin BRC4C153 remote -// +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikin176::IRDaikin176(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikin176::begin(void) { _irsend.begin(); } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikin176::validChecksum(uint8_t state[], const uint16_t length) { // Validate the checksum of section #1. if (length <= kDaikin176Section1Length - 1 || @@ -2033,7 +2261,7 @@ bool IRDaikin176::validChecksum(uint8_t state[], const uint16_t length) { return true; } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikin176::checksum(void) { remote_state[kDaikin176Section1Length - 1] = sumBytes( remote_state, kDaikin176Section1Length - 1); @@ -2041,6 +2269,7 @@ void IRDaikin176::checksum(void) { remote_state + kDaikin176Section1Length, kDaikin176Section2Length - 1); } +/// Reset the internal state to a fixed known good state. void IRDaikin176::stateReset(void) { for (uint8_t i = 0; i < kDaikin176StateLength; i++) remote_state[i] = 0x00; remote_state[0] = 0x11; @@ -2061,39 +2290,55 @@ void IRDaikin176::stateReset(void) { _saved_temp = getTemp(); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRDaikin176::getRaw(void) { checksum(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRDaikin176::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kDaikin176StateLength); _saved_temp = getTemp(); } #if SEND_DAIKIN176 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikin176::send(const uint16_t repeat) { _irsend.sendDaikin176(getRaw(), kDaikin176StateLength, repeat); } #endif // SEND_DAIKIN176 +/// Change the power setting to On. void IRDaikin176::on(void) { setPower(true); } +/// Change the power setting to Off.. void IRDaikin176::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin176::setPower(const bool on) { remote_state[kDaikin176ByteModeButton] = 0; setBit(&remote_state[kDaikin176BytePower], kDaikinBitPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin176::getPower(void) { return GETBIT8(remote_state[kDaikin176BytePower], kDaikinBitPowerOffset); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin176::getMode(void) { return GETBITS8(remote_state[kDaikin176ByteMode], kHighNibble, kModeBitsSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRDaikin176::setMode(const uint8_t mode) { uint8_t altmode = 0; switch (mode) { @@ -2111,7 +2356,9 @@ void IRDaikin176::setMode(const uint8_t mode) { remote_state[kDaikin176ByteModeButton] = kDaikin176ModeButton; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin176::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kDry: return kDaikinDry; @@ -2121,7 +2368,9 @@ uint8_t IRDaikin176::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRDaikin176::toCommonMode(const uint8_t mode) { switch (mode) { case kDaikinDry: return stdAc::opmode_t::kDry; @@ -2131,7 +2380,8 @@ stdAc::opmode_t IRDaikin176::toCommonMode(const uint8_t mode) { } } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRDaikin176::setTemp(const uint8_t temp) { uint8_t degrees = std::min(kDaikinMaxTemp, std::max(temp, kDaikinMinTemp)); _saved_temp = degrees; @@ -2145,12 +2395,16 @@ void IRDaikin176::setTemp(const uint8_t temp) { remote_state[kDaikin176ByteModeButton] = 0; } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikin176::getTemp(void) { return GETBITS8(remote_state[kDaikin176ByteTemp], kDaikin176TempOffset, kDaikin176TempSize) + 9; } -// Set the speed of the fan, 1 for Min or 3 for Max +/// Set the speed of the fan. +/// @param[in] fan The desired setting. +/// @note 1 for Min or 3 for Max void IRDaikin176::setFan(const uint8_t fan) { switch (fan) { case kDaikinFanMin: @@ -2164,11 +2418,15 @@ void IRDaikin176::setFan(const uint8_t fan) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikin176::getFan(void) { return GETBITS8(remote_state[kDaikin176ByteFan], kHighNibble, kDaikinFanSize); } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin176::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -2177,6 +2435,8 @@ uint8_t IRDaikin176::convertFan(const stdAc::fanspeed_t speed) { } } +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] position The position/mode to set the swing to. void IRDaikin176::setSwingHorizontal(const uint8_t position) { switch (position) { case kDaikin176SwingHOff: @@ -2188,12 +2448,16 @@ void IRDaikin176::setSwingHorizontal(const uint8_t position) { } } +/// Get the Horizontal Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRDaikin176::getSwingHorizontal(void) { return GETBITS8(remote_state[kDaikin176ByteSwingH], kLowNibble, kDaikinSwingSize); } -// Convert a standard A/C horizontal swing into its native version. +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin176::convertSwingH(const stdAc::swingh_t position) { switch (position) { case stdAc::swingh_t::kOff: return kDaikin176SwingHOff; @@ -2201,7 +2465,10 @@ uint8_t IRDaikin176::convertSwingH(const stdAc::swingh_t position) { default: return kDaikin176SwingHAuto; } } -// Convert a native horizontal swing to it's common equivalent. + +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] setting A native position to convert. +/// @return The common horizontal swing position. stdAc::swingh_t IRDaikin176::toCommonSwingH(const uint8_t setting) { switch (setting) { case kDaikin176SwingHOff: return stdAc::swingh_t::kOff; @@ -2211,13 +2478,16 @@ stdAc::swingh_t IRDaikin176::toCommonSwingH(const uint8_t setting) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRDaikin176::toCommonFanSpeed(const uint8_t speed) { return (speed == kDaikinFanMin) ? stdAc::fanspeed_t::kMin : stdAc::fanspeed_t::kMax; } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikin176::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::DAIKIN176; @@ -2243,7 +2513,8 @@ stdAc::state_t IRDaikin176::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikin176::toString(void) { String result = ""; result.reserve(80); // Reserve some heap for the string to reduce fragging. @@ -2270,22 +2541,15 @@ String IRDaikin176::toString(void) { } #if DECODE_DAIKIN176 -// Decode the supplied Daikin 176 bit A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikin176Bits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Supported devices: -// - Daikin BRC4C153 remote. -// -// Status: STABLE / Expected to work. -// - +/// Decode the supplied Daikin 176-bit message. (DAIKIN176) +/// Status: STABLE / Expected to work. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeDaikin176(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { @@ -2332,17 +2596,12 @@ bool IRrecv::decodeDaikin176(decode_results *results, uint16_t offset, #endif // DECODE_DAIKIN176 #if SEND_DAIKIN128 -// Send a Daikin 128 bit A/C message. -// -// Args: -// data: An array of kDaikin128StateLength bytes containing the IR command. -// -// Status: STABLE / Known Working. -// -// Supported devices: -// - Daikin BRC52B63 remote. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/827 +/// Send a Daikin128 (128-bit) A/C formatted message. +/// Status: STABLE / Known Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/827 void IRsend::sendDaikin128(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kDaikin128SectionLength) @@ -2372,19 +2631,15 @@ void IRsend::sendDaikin128(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_DAIKIN128 -// Class for handling Daikin 128 bit / 16 byte A/C messages. -// -// Code by crankyoldgit. -// Analysis by Daniel Vena -// -// Status: STABLE / Known Working. -// -// Supported Remotes: Daikin BRC52B63 remote -// +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikin128::IRDaikin128(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikin128::begin(void) { _irsend.begin(); } uint8_t IRDaikin128::calcFirstChecksum(const uint8_t state[]) { @@ -2397,11 +2652,9 @@ uint8_t IRDaikin128::calcSecondChecksum(const uint8_t state[]) { kDaikin128SectionLength - 1); } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikin128::validChecksum(uint8_t state[]) { // Validate the checksum of section #1. if (state[kDaikin128SectionLength - 1] >> 4 != calcFirstChecksum(state)) @@ -2412,7 +2665,7 @@ bool IRDaikin128::validChecksum(uint8_t state[]) { return true; } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikin128::checksum(void) { remote_state[kDaikin128SectionLength - 1] &= 0x0F; // Clear upper half. remote_state[kDaikin128SectionLength - 1] |= @@ -2420,6 +2673,7 @@ void IRDaikin128::checksum(void) { remote_state[kDaikin128StateLength - 1] = calcSecondChecksum(remote_state); } +/// Reset the internal state to a fixed known good state. void IRDaikin128::stateReset(void) { for (uint8_t i = 0; i < kDaikin128StateLength; i++) remote_state[i] = 0x00; remote_state[0] = 0x16; @@ -2428,36 +2682,50 @@ void IRDaikin128::stateReset(void) { // remote_state[15] is a checksum byte, it will be set by checksum(). } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRDaikin128::getRaw(void) { checksum(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRDaikin128::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kDaikin128StateLength); } #if SEND_DAIKIN128 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikin128::send(const uint16_t repeat) { _irsend.sendDaikin128(getRaw(), kDaikin128StateLength, repeat); } #endif // SEND_DAIKIN128 +/// Set the Power toggle setting of the A/C. +/// @param[in] toggle true, the setting is on. false, the setting is off. void IRDaikin128::setPowerToggle(const bool toggle) { setBit(&remote_state[kDaikin128BytePowerSwingSleep], kDaikin128BitPowerToggleOffset, toggle); } +/// Get the Power toggle setting of the A/C. +/// @return The current operating mode setting. bool IRDaikin128::getPowerToggle(void) { return GETBIT8(remote_state[kDaikin128BytePowerSwingSleep], kDaikin128BitPowerToggleOffset); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin128::getMode(void) { return GETBITS8(remote_state[kDaikin128ByteModeFan], kLowNibble, kDaikin128ModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRDaikin128::setMode(const uint8_t mode) { switch (mode) { case kDaikin128Auto: @@ -2477,7 +2745,9 @@ void IRDaikin128::setMode(const uint8_t mode) { setEcono(getEcono()); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin128::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kDaikin128Cool; @@ -2488,7 +2758,9 @@ uint8_t IRDaikin128::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRDaikin128::toCommonMode(const uint8_t mode) { switch (mode) { case kDaikin128Cool: return stdAc::opmode_t::kCool; @@ -2499,21 +2771,28 @@ stdAc::opmode_t IRDaikin128::toCommonMode(const uint8_t mode) { } } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRDaikin128::setTemp(const uint8_t temp) { remote_state[kDaikin128ByteTemp] = uint8ToBcd( std::min(kDaikin128MaxTemp, std::max(temp, kDaikin128MinTemp))); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikin128::getTemp(void) { return bcdToUint8(remote_state[kDaikin128ByteTemp]); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikin128::getFan(void) { return GETBITS8(remote_state[kDaikin128ByteModeFan], kHighNibble, kDaikinFanSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRDaikin128::setFan(const uint8_t speed) { uint8_t new_speed = speed; uint8_t mode = getMode(); @@ -2534,7 +2813,9 @@ void IRDaikin128::setFan(const uint8_t speed) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin128::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kDaikinFanQuiet; @@ -2546,7 +2827,9 @@ uint8_t IRDaikin128::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRDaikin128::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kDaikin128FanPowerful: return stdAc::fanspeed_t::kMax; @@ -2558,37 +2841,51 @@ stdAc::fanspeed_t IRDaikin128::toCommonFanSpeed(const uint8_t speed) { } } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin128::setSwingVertical(const bool on) { setBit(&remote_state[kDaikin128BytePowerSwingSleep], kDaikin128BitSwingOffset, on); } +/// Get the Vertical Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin128::getSwingVertical(void) { return GETBIT8(remote_state[kDaikin128BytePowerSwingSleep], kDaikin128BitSwingOffset); } +/// Set the Sleep mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin128::setSleep(const bool on) { setBit(&remote_state[kDaikin128BytePowerSwingSleep], kDaikin128BitSleepOffset, on); } +/// Get the Sleep mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin128::getSleep(void) { return GETBIT8(remote_state[kDaikin128BytePowerSwingSleep], kDaikin128BitSleepOffset); } +/// Set the Economy mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin128::setEcono(const bool on) { uint8_t mode = getMode(); setBit(&remote_state[kDaikin128ByteEconoLight], kDaikin128BitEconoOffset, on && (mode == kDaikin128Cool || mode == kDaikin128Heat)); } +/// Get the Economical mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin128::getEcono(void) { return GETBIT8(remote_state[kDaikin128ByteEconoLight], kDaikin128BitEconoOffset); } +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin128::setQuiet(const bool on) { uint8_t mode = getMode(); if (on && (mode == kDaikin128Cool || mode == kDaikin128Heat)) @@ -2597,10 +2894,14 @@ void IRDaikin128::setQuiet(const bool on) { setFan(kDaikin128FanAuto); } +/// Get the Quiet mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin128::getQuiet(void) { return getFan() == kDaikin128FanQuiet; } +/// Set the Powerful (Turbo) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin128::setPowerful(const bool on) { uint8_t mode = getMode(); if (on && (mode == kDaikin128Cool || mode == kDaikin128Heat)) @@ -2609,11 +2910,14 @@ void IRDaikin128::setPowerful(const bool on) { setFan(kDaikin128FanAuto); } +/// Get the Powerful (Turbo) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin128::getPowerful(void) { return getFan() == kDaikin128FanPowerful; } -// Set the clock in mins since midnight +/// Set the clock on the A/C unit. +/// @param[in] mins_since_midnight Nr. of minutes past midnight. void IRDaikin128::setClock(const uint16_t mins_since_midnight) { uint16_t mins = mins_since_midnight; if (mins_since_midnight >= 24 * 60) mins = 0; // Bounds check. @@ -2623,25 +2927,32 @@ void IRDaikin128::setClock(const uint16_t mins_since_midnight) { remote_state[kDaikin128ByteClockMins] = uint8ToBcd(mins % 60); } +/// Get the clock time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin128::getClock(void) { return bcdToUint8(remote_state[kDaikin128ByteClockHours]) * 60 + bcdToUint8(remote_state[kDaikin128ByteClockMins]); } +/// Set the enable status of the On Timer. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin128::setOnTimerEnabled(const bool on) { setBit(&remote_state[kDaikin128ByteOnTimer], kDaikin128BitTimerEnabledOffset, on); } +/// Get the enable status of the On Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin128::getOnTimerEnabled(void) { return GETBIT8(remote_state[kDaikin128ByteOnTimer], kDaikin128BitTimerEnabledOffset); } -// Timer is rounds down to the nearest half hour. -// Args: -// ptr: A PTR to the byte containing the Timer value to be updated. -// mins_since_midnight: The number of minutes the new timer should be set to. +/// Set the time for a timer at the given location. +/// @param[in,out] ptr Ptr to the byte containing the Timer value to be updated. +/// @param[in] mins_since_midnight The number of minutes the new timer should +/// be set to. +/// @note Timer is rounds down to the nearest half hour. void IRDaikin128::setTimer(uint8_t *ptr, const uint16_t mins_since_midnight) { uint16_t mins = mins_since_midnight; if (mins_since_midnight >= 24 * 60) mins = 0; // Bounds check. @@ -2652,43 +2963,57 @@ void IRDaikin128::setTimer(uint8_t *ptr, const uint16_t mins_since_midnight) { uint8ToBcd(mins / 60)); } -// Timer is stored in nr of half hours internally. -// Args: -// ptr: A PTR to the byte containing the Timer value. -// Returns: -// A uint16_t containing the number of minutes since midnight. +/// Get the time for a timer at the given location. +/// @param[in] ptr A Ptr to the byte containing the Timer value. +/// @return The number of minutes since midnight that the timer is set to. +/// @note Timer is stored in nr. of half hours internally. uint16_t IRDaikin128::getTimer(const uint8_t *ptr) { return bcdToUint8(GETBITS8(*ptr, kDaikin128HoursOffset, kDaikin128HoursSize)) * 60 + (GETBIT8(*ptr, kDaikin128HalfHourOffset) ? 30 : 0); } +/// Set the On Timer time for the A/C unit. +/// @param[in] mins_since_midnight Nr. of minutes past midnight. void IRDaikin128::setOnTimer(const uint16_t mins_since_midnight) { setTimer(remote_state + kDaikin128ByteOnTimer, mins_since_midnight); } +/// Get the On Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin128::getOnTimer(void) { return getTimer(remote_state + kDaikin128ByteOnTimer); } +/// Set the enable status of the Off Timer. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin128::setOffTimerEnabled(const bool on) { setBit(&remote_state[kDaikin128ByteOffTimer], kDaikin128BitTimerEnabledOffset, on); } +/// Get the enable status of the Off Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin128::getOffTimerEnabled(void) { return GETBIT8(remote_state[kDaikin128ByteOffTimer], kDaikin128BitTimerEnabledOffset); } +/// Set the Off Timer time for the A/C unit. +/// @param[in] mins_since_midnight Nr. of minutes past midnight. void IRDaikin128::setOffTimer(const uint16_t mins_since_midnight) { setTimer(remote_state + kDaikin128ByteOffTimer, mins_since_midnight); } +/// Get the Off Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin128::getOffTimer(void) { return getTimer(remote_state + kDaikin128ByteOffTimer); } +/// Set the Light toggle setting of the A/C. +/// @param[in] unit Device to show the LED (Light) Display info about. +/// @note 0 is off. void IRDaikin128::setLightToggle(const uint8_t unit) { switch (unit) { case 0: @@ -2701,11 +3026,14 @@ void IRDaikin128::setLightToggle(const uint8_t unit) { } } +/// Get the Light toggle setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin128::getLightToggle(void) { return remote_state[kDaikin128ByteEconoLight] & kDaikin128MaskLight; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikin128::toString(void) { String result = ""; result.reserve(240); // Reserve some heap for the string to reduce fragging. @@ -2738,7 +3066,9 @@ String IRDaikin128::toString(void) { return result; } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @param[in] prev Ptr to a previous state. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikin128::toCommon(const stdAc::state_t *prev) { stdAc::state_t result; if (prev != NULL) result = *prev; @@ -2766,22 +3096,16 @@ stdAc::state_t IRDaikin128::toCommon(const stdAc::state_t *prev) { } #if DECODE_DAIKIN128 -// Decode the supplied Daikin 128 bit A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikin128Bits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Supported devices: -// - Daikin BRC52B63 remote. -// -// Status: STABLE / Known Working. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/827 +/// Decode the supplied Daikin 128-bit message. (DAIKIN128) +/// Status: STABLE / Known Working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/827 bool IRrecv::decodeDaikin128(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * (nbits + kHeader) + kFooter - 1 + offset) @@ -2836,17 +3160,12 @@ bool IRrecv::decodeDaikin128(decode_results *results, uint16_t offset, #endif // DECODE_DAIKIN128 #if SEND_DAIKIN152 -// Send a Daikin 152 bit A/C message. -// -// Args: -// data: An array of kDaikin152StateLength bytes containing the IR command. -// -// Supported devices: -// - Daikin ARC480A5 remote. -// -// Status: STABLE / Known working. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/873 +/// Send a Daikin152 (152-bit) A/C formatted message. +/// Status: STABLE / Known Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/873 void IRsend::sendDaikin152(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { for (uint16_t r = 0; r <= repeat; r++) { @@ -2866,22 +3185,16 @@ void IRsend::sendDaikin152(const unsigned char data[], const uint16_t nbytes, #endif // SEND_DAIKIN152 #if DECODE_DAIKIN152 -// Decode the supplied Daikin 152 bit A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikin152Bits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Supported devices: -// - Daikin ARC480A5 remote. -// -// Status: STABLE / Known working. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/873 +/// Decode the supplied Daikin 152-bit message. (DAIKIN152) +/// Status: STABLE / Known Working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/873 bool IRrecv::decodeDaikin152(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * (5 + nbits + kFooter) + kHeader - 1 + offset) @@ -2930,34 +3243,29 @@ bool IRrecv::decodeDaikin152(decode_results *results, uint16_t offset, } #endif // DECODE_DAIKIN152 -// Class for handling Daikin 152 bit / 19 byte A/C messages. -// -// Code by crankyoldgit. -// -// Supported Remotes: Daikin ARC480A5 remote -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/873 -// https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.cpp -// https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.h +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikin152::IRDaikin152(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikin152::begin(void) { _irsend.begin(); } #if SEND_DAIKIN152 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikin152::send(const uint16_t repeat) { _irsend.sendDaikin152(getRaw(), kDaikin152StateLength, repeat); } #endif // SEND_DAIKIN152 -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikin152::validChecksum(uint8_t state[], const uint16_t length) { // Validate the checksum of the given state. if (length <= 1 || state[length - 1] != sumBytes(state, length - 1)) @@ -2966,12 +3274,13 @@ bool IRDaikin152::validChecksum(uint8_t state[], const uint16_t length) { return true; } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikin152::checksum(void) { remote_state[kDaikin152StateLength - 1] = sumBytes( remote_state, kDaikin152StateLength - 1); } +/// Reset the internal state to a fixed known good state. void IRDaikin152::stateReset(void) { for (uint8_t i = 3; i < kDaikin152StateLength; i++) remote_state[i] = 0x00; remote_state[0] = 0x11; @@ -2981,32 +3290,46 @@ void IRDaikin152::stateReset(void) { // remote_state[19] is a checksum byte, it will be set by checksum(). } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRDaikin152::getRaw(void) { checksum(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRDaikin152::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kDaikin152StateLength); } +/// Change the power setting to On. void IRDaikin152::on(void) { setPower(true); } +/// Change the power setting to Off. void IRDaikin152::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin152::setPower(const bool on) { setBit(&remote_state[kDaikin152PowerByte], kDaikinBitPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin152::getPower(void) { return GETBIT8(remote_state[kDaikin152PowerByte], kDaikinBitPowerOffset); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin152::getMode(void) { return GETBITS8(remote_state[kDaikin152ModeByte], kDaikinModeOffset, kDaikinModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRDaikin152::setMode(const uint8_t mode) { switch (mode) { case kDaikinFan: @@ -3027,12 +3350,15 @@ void IRDaikin152::setMode(const uint8_t mode) { kDaikinModeSize, mode); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin152::convertMode(const stdAc::opmode_t mode) { return IRDaikinESP::convertMode(mode); } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRDaikin152::setTemp(const uint8_t temp) { uint8_t degrees = std::max( temp, (getMode() == kDaikinHeat) ? kDaikinMinTemp : kDaikin2MinCoolTemp); @@ -3042,12 +3368,16 @@ void IRDaikin152::setTemp(const uint8_t temp) { kDaikin152TempSize, degrees); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikin152::getTemp(void) { return GETBITS8(remote_state[kDaikin152TempByte], kDaikinTempOffset, kDaikin152TempSize); } -// Set the speed of the fan, 1-5 or kDaikinFanAuto or kDaikinFanQuiet +/// Set the speed of the fan. +/// @param[in] fan The desired setting. +/// @note 1-5 or kDaikinFanAuto or kDaikinFanQuiet void IRDaikin152::setFan(const uint8_t fan) { // Set the fan speed bits, leave low 4 bits alone uint8_t fanset; @@ -3060,6 +3390,8 @@ void IRDaikin152::setFan(const uint8_t fan) { setBits(&remote_state[kDaikin152FanByte], kHighNibble, kNibbleSize, fanset); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikin152::getFan(void) { const uint8_t fan = GETBITS8(remote_state[kDaikin152FanByte], kHighNibble, kNibbleSize); @@ -3070,31 +3402,43 @@ uint8_t IRDaikin152::getFan(void) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin152::convertFan(const stdAc::fanspeed_t speed) { return IRDaikinESP::convertFan(speed); } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin152::setSwingV(const bool on) { setBits(&remote_state[kDaikin152SwingVByte], kDaikinSwingOffset, kDaikinSwingSize, on ? kDaikinSwingOn : kDaikinSwingOff); } +/// Get the Vertical Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin152::getSwingV(void) { return GETBITS8(remote_state[kDaikin152SwingVByte], kDaikinSwingOffset, kDaikinSwingSize); } +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin152::setQuiet(const bool on) { setBit(&remote_state[kDaikin152QuietByte], kDaikinBitSilentOffset, on); // Powerful & Quiet mode being on are mutually exclusive. if (on) this->setPowerful(false); } +/// Get the Quiet mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin152::getQuiet(void) { return GETBIT8(remote_state[kDaikin152QuietByte], kDaikinBitSilentOffset); } +/// Set the Powerful (Turbo) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin152::setPowerful(const bool on) { setBit(&remote_state[kDaikin152PowerfulByte], kDaikinBitPowerfulOffset, on); if (on) { @@ -3105,29 +3449,41 @@ void IRDaikin152::setPowerful(const bool on) { } } +/// Get the Powerful (Turbo) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin152::getPowerful(void) { return GETBIT8(remote_state[kDaikin152PowerfulByte], kDaikinBitPowerfulOffset); } +/// Set the Economy mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin152::setEcono(const bool on) { setBit(&remote_state[kDaikin152EconoByte], kDaikinBitEconoOffset, on); // Powerful & Econo mode being on are mutually exclusive. if (on) this->setPowerful(false); } +/// Get the Economical mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin152::getEcono(void) { return GETBIT8(remote_state[kDaikin152EconoByte], kDaikinBitEconoOffset); } +/// Set the Sensor mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin152::setSensor(const bool on) { setBit(&remote_state[kDaikin152SensorByte], kDaikin152SensorOffset, on); } +/// Get the Sensor mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin152::getSensor(void) { return GETBIT8(remote_state[kDaikin152SensorByte], kDaikin152SensorOffset); } +/// Set the Comfort mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin152::setComfort(const bool on) { setBit(&remote_state[kDaikin152ComfortByte], kDaikin152ComfortOffset, on); if (on) { @@ -3139,11 +3495,14 @@ void IRDaikin152::setComfort(const bool on) { } } +/// Get the Comfort mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin152::getComfort(void) { return GETBIT8(remote_state[kDaikin152ComfortByte], kDaikin152ComfortOffset); } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikin152::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::DAIKIN152; @@ -3169,7 +3528,8 @@ stdAc::state_t IRDaikin152::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikin152::toString(void) { String result = ""; result.reserve(180); // Reserve some heap for the string to reduce fragging. @@ -3189,17 +3549,12 @@ String IRDaikin152::toString(void) { } #if SEND_DAIKIN64 -// Send a Daikin 64 bit A/C message. -// -// Args: -// data: A uint64_t containing the IR command/code. -// -// Supported devices: -// - Daikin FFN-C. -// -// Status: Beta / Probably Working. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1064 +/// Send a Daikin64 (64-bit) A/C formatted message. +/// Status: Beta / Probably Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1064 void IRsend::sendDaikin64(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { enableIROut(kDaikin64Freq); @@ -3223,22 +3578,16 @@ void IRsend::sendDaikin64(const uint64_t data, const uint16_t nbits, #endif // SEND_DAIKIN64 #if DECODE_DAIKIN64 -// Decode the supplied Daikin 64 bit A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kDaikin64Bits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Supported devices: -// - Daikin FFN-C. -// -// Status: Beta / Probably Working. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1064 +/// Decode the supplied Daikin 64-bit message. (DAIKIN64) +/// Status: Beta / Probably Working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1064 bool IRrecv::decodeDaikin64(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * nbits + kDaikin64Overhead - offset) @@ -3280,33 +3629,28 @@ bool IRrecv::decodeDaikin64(decode_results *results, uint16_t offset, } #endif // DAIKIN64 -// Class for handling Daikin 64 bit / 19 byte A/C messages. -// -// Code by crankyoldgit. -// -// Supported Remotes: Daikin ARC480A5 remote -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/873 -// https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.cpp -// https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.h +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDaikin64::IRDaikin64(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRDaikin64::begin(void) { _irsend.begin(); } #if SEND_DAIKIN64 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDaikin64::send(const uint16_t repeat) { _irsend.sendDaikin64(getRaw(), kDaikin64Bits, repeat); } #endif // SEND_DAIKIN64 -// Calc the checksum for a given state. -// Args: -// state: The value to calc the checksum of. -// Returns: -// A 4-bit checksum stored in a uint_8. +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @return The 4-bit checksum stored in a uint_8. uint8_t IRDaikin64::calcChecksum(const uint64_t state) { uint64_t data = GETBITS64(state, 0, kDaikin64ChecksumOffset); uint8_t result = 0; @@ -3315,44 +3659,51 @@ uint8_t IRDaikin64::calcChecksum(const uint64_t state) { return result & 0xF; } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The state to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDaikin64::validChecksum(const uint64_t state) { // Validate the checksum of the given state. return (GETBITS64(state, kDaikin64ChecksumOffset, kDaikin64ChecksumSize) == calcChecksum(state)); } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRDaikin64::checksum(void) { setBits(&remote_state, kDaikin64ChecksumOffset, kDaikin64ChecksumSize, calcChecksum(remote_state)); } +/// Reset the internal state to a fixed known good state. void IRDaikin64::stateReset(void) { remote_state = kDaikin64KnownGoodState; } +/// Get a copy of the internal state as a valid code for this protocol. +/// @return A valid code for this protocol based on the current internal state. uint64_t IRDaikin64::getRaw(void) { checksum(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_state A valid code for this protocol. void IRDaikin64::setRaw(const uint64_t new_state) { remote_state = new_state; } +/// Set the Power toggle setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin64::setPowerToggle(const bool on) { setBit(&remote_state, kDaikin64PowerToggleBit, on); } +/// Get the Power toggle setting of the A/C. +/// @return The current operating mode setting. bool IRDaikin64::getPowerToggle(void) { return GETBIT64(remote_state, kDaikin64PowerToggleBit); } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRDaikin64::setTemp(const uint8_t temp) { uint8_t degrees = std::max(temp, kDaikin64MinTemp); degrees = std::min(degrees, kDaikin64MaxTemp); @@ -3360,15 +3711,21 @@ void IRDaikin64::setTemp(const uint8_t temp) { kDaikin64TempSize, uint8ToBcd(degrees)); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRDaikin64::getTemp(void) { return bcdToUint8(GETBITS64(remote_state, kDaikin64TempOffset, kDaikin64TempSize)); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDaikin64::getMode(void) { return GETBITS64(remote_state, kDaikin64ModeOffset, kDaikin64ModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRDaikin64::setMode(const uint8_t mode) { switch (mode) { case kDaikin64Fan: @@ -3382,7 +3739,9 @@ void IRDaikin64::setMode(const uint8_t mode) { setBits(&remote_state, kDaikin64ModeOffset, kDaikin64ModeSize, mode); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin64::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kDry: return kDaikin64Dry; @@ -3391,7 +3750,9 @@ uint8_t IRDaikin64::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRDaikin64::toCommonMode(const uint8_t mode) { switch (mode) { case kDaikin64Cool: return stdAc::opmode_t::kCool; @@ -3401,10 +3762,14 @@ stdAc::opmode_t IRDaikin64::toCommonMode(const uint8_t mode) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRDaikin64::getFan(void) { return GETBITS64(remote_state, kDaikin64FanOffset, kDaikin64FanSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRDaikin64::setFan(const uint8_t speed) { switch (speed) { case kDaikin64FanQuiet: @@ -3420,7 +3785,9 @@ void IRDaikin64::setFan(const uint8_t speed) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDaikin64::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kDaikin64FanQuiet; @@ -3432,7 +3799,9 @@ uint8_t IRDaikin64::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRDaikin64::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kDaikin64FanTurbo: return stdAc::fanspeed_t::kMax; @@ -3444,10 +3813,14 @@ stdAc::fanspeed_t IRDaikin64::toCommonFanSpeed(const uint8_t speed) { } } +/// Get the Turbo (Powerful) mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin64::getTurbo(void) { return getFan() == kDaikin64FanTurbo; } +/// Set the Turbo (Powerful) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin64::setTurbo(const bool on) { if (on) { setFan(kDaikin64FanTurbo); @@ -3456,10 +3829,14 @@ void IRDaikin64::setTurbo(const bool on) { } } +/// Get the Quiet mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin64::getQuiet(void) { return getFan() == kDaikin64FanQuiet; } +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin64::setQuiet(const bool on) { if (on) { setFan(kDaikin64FanQuiet); @@ -3468,22 +3845,32 @@ void IRDaikin64::setQuiet(const bool on) { } } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin64::setSwingVertical(const bool on) { setBit(&remote_state, kDaikin64SwingVBit, on); } +/// Get the Vertical Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin64::getSwingVertical(void) { return GETBIT64(remote_state, kDaikin64SwingVBit); } +/// Set the Sleep mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin64::setSleep(const bool on) { setBit(&remote_state, kDaikin64SleepBit, on); } +/// Get the Sleep mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin64::getSleep(void) { return GETBIT64(remote_state, kDaikin64SleepBit); } +/// Set the clock on the A/C unit. +/// @param[in] mins_since_midnight Nr. of minutes past midnight. void IRDaikin64::setClock(const uint16_t mins_since_midnight) { uint16_t mins = mins_since_midnight; if (mins_since_midnight >= 24 * 60) mins = 0; // Bounds check. @@ -3493,6 +3880,8 @@ void IRDaikin64::setClock(const uint16_t mins_since_midnight) { kDaikin64ClockHoursSize, uint8ToBcd(mins / 60)); // Hours } +/// Get the clock time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin64::getClock(void) { return bcdToUint8(GETBITS64(remote_state, kDaikin64ClockOffset + kDaikin64ClockMinsSize, @@ -3501,20 +3890,28 @@ uint16_t IRDaikin64::getClock(void) { kDaikin64ClockMinsSize)); } +/// Set the enable status of the On Timer. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin64::setOnTimeEnabled(const bool on) { setBit(&remote_state, kDaikin64OnTimeEnableBit, on); } +/// Get the enable status of the On Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin64::getOnTimeEnabled(void) { return GETBIT64(remote_state, kDaikin64OnTimeEnableBit); } +/// Get the On Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin64::getOnTime(void) { return bcdToUint8(GETBITS64(remote_state, kDaikin64OnTimeOffset, kDaikin64OnTimeSize)) * 60 + (GETBIT64(remote_state, kDaikin64OnTimeHalfHourBit) ? 30 : 0); } +/// Set the On Timer time for the A/C unit. +/// @param[in] mins_since_midnight Nr. of minutes past midnight. void IRDaikin64::setOnTime(const uint16_t mins_since_midnight) { uint16_t halfhours = mins_since_midnight / 30; if (mins_since_midnight >= 24 * 60) halfhours = 0; // Bounds check. @@ -3524,20 +3921,28 @@ void IRDaikin64::setOnTime(const uint16_t mins_since_midnight) { setBit(&remote_state, kDaikin64OnTimeHalfHourBit, halfhours % 2); } +/// Set the enable status of the Off Timer. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDaikin64::setOffTimeEnabled(const bool on) { setBit(&remote_state, kDaikin64OffTimeEnableBit, on); } +/// Get the enable status of the Off Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDaikin64::getOffTimeEnabled(void) { return GETBIT64(remote_state, kDaikin64OffTimeEnableBit); } +/// Get the Off Timer time to be sent to the A/C unit. +/// @return The number of minutes past midnight. uint16_t IRDaikin64::getOffTime(void) { return bcdToUint8(GETBITS64(remote_state, kDaikin64OffTimeOffset, kDaikin64OffTimeSize)) * 60 + (GETBIT64(remote_state, kDaikin64OffTimeHalfHourBit) ? 30 : 0); } +/// Set the Off Timer time for the A/C unit. +/// @param[in] mins_since_midnight Nr. of minutes past midnight. void IRDaikin64::setOffTime(const uint16_t mins_since_midnight) { uint16_t halfhours = mins_since_midnight / 30; if (mins_since_midnight >= 24 * 60) halfhours = 0; // Bounds check. @@ -3547,7 +3952,8 @@ void IRDaikin64::setOffTime(const uint16_t mins_since_midnight) { setBit(&remote_state, kDaikin64OffTimeHalfHourBit, halfhours % 2); } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDaikin64::toString(void) { String result = ""; result.reserve(120); // Reserve some heap for the string to reduce fragging. @@ -3579,7 +3985,9 @@ String IRDaikin64::toString(void) { return result; } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @param[in] prev Ptr to a previous state. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDaikin64::toCommon(const stdAc::state_t *prev) { stdAc::state_t result; if (prev != NULL) result = *prev; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Daikin.h b/lib/IRremoteESP8266-2.7.8/src/ir_Daikin.h similarity index 84% rename from lib/IRremoteESP8266-2.7.7/src/ir_Daikin.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Daikin.h index 3c6f542ff..8c11dfb9f 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Daikin.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Daikin.h @@ -1,17 +1,36 @@ // Copyright 2016 sillyfrog // Copyright 2017 sillyfrog, crankyoldgit -// Copyright 2018-2019 crankyoldgit +// Copyright 2018-2020 crankyoldgit +// Copyright 2019 pasna (IRDaikin160 class / Daikin176 class) + +/// @file +/// @brief Support for Daikin A/C protocols. +/// @see Daikin http://harizanov.com/2012/02/control-daikin-air-conditioner-over-the-internet/ +/// @see Daikin https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote +/// @see Daikin http://rdlab.cdmt.vn/project-2013/daikin-ir-protocol +/// @see Daikin https://github.com/blafois/Daikin-IR-Reverse +/// @see Daikin128 https://github.com/crankyoldgit/IRremoteESP8266/issues/827 +/// @see Daikin152 https://github.com/crankyoldgit/IRremoteESP8266/issues/873 +/// @see Daikin152 https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.cpp +/// @see Daikin152 https://github.com/ToniA/arduino-heatpumpir/blob/master/DaikinHeatpumpARC480A14IR.h +/// @see Daikin160 https://github.com/crankyoldgit/IRremoteESP8266/issues/731 +/// @see Daikin2 https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit#gid=236366525&range=B25:D32 +/// @see Daikin2 https://github.com/crankyoldgit/IRremoteESP8266/issues/582 +/// @see Daikin2 https://www.daikin.co.nz/sites/default/files/daikin-split-system-US7-FTXZ25-50NV1B.pdf +/// @see Daikin216 https://github.com/crankyoldgit/IRremoteESP8266/issues/689 +/// @see Daikin216 https://github.com/danny-source/Arduino_DY_IRDaikin +/// @see Daikin64 https://github.com/crankyoldgit/IRremoteESP8266/issues/1064 // Supports: -// Brand: Daikin, Model: ARC433** remote -// Brand: Daikin, Model: ARC477A1 remote -// Brand: Daikin, Model: FTXZ25NV1B A/C -// Brand: Daikin, Model: FTXZ35NV1B A/C -// Brand: Daikin, Model: FTXZ50NV1B A/C -// Brand: Daikin, Model: ARC433B69 remote -// Brand: Daikin, Model: ARC423A5 remote +// Brand: Daikin, Model: ARC433** remote (DAIKIN) +// Brand: Daikin, Model: ARC477A1 remote (DAIKIN2) +// Brand: Daikin, Model: FTXZ25NV1B A/C (DAIKIN2) +// Brand: Daikin, Model: FTXZ35NV1B A/C (DAIKIN2) +// Brand: Daikin, Model: FTXZ50NV1B A/C (DAIKIN2) +// Brand: Daikin, Model: ARC433B69 remote (DAIKIN216) +// Brand: Daikin, Model: ARC423A5 remote (DAIKIN160) // Brand: Daikin, Model: FTE12HV2S A/C -// Brand: Daikin, Model: BRC4C153 remote +// Brand: Daikin, Model: BRC4C153 remote (DAIKIN176) // Brand: Daikin, Model: 17 Series A/C (DAIKIN128) // Brand: Daikin, Model: FTXB12AXVJU A/C (DAIKIN128) // Brand: Daikin, Model: FTXB09AXVJU A/C (DAIKIN128) @@ -194,7 +213,7 @@ const uint16_t kDaikinGap = 29000; const uint64_t kDaikinFirstHeader64 = 0b1101011100000000000000001100010100000000001001111101101000010001; -// Another variant of the protocol for the Daikin ARC477A1 remote. + const uint16_t kDaikin2Freq = 36700; // Modulation Frequency in Hz. const uint16_t kDaikin2LeaderMark = 10024; const uint16_t kDaikin2LeaderSpace = 25180; @@ -240,8 +259,6 @@ const uint8_t kDaikin2SwingVBreeze = 0xC; const uint8_t kDaikin2SwingVCirculate = 0xD; const uint8_t kDaikin2FanByte = 28; -// Ref: -// https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit#gid=236366525&range=B25:D32 const uint8_t kDaikin2SwingHWide = 0xA3; const uint8_t kDaikin2SwingHLeftMax = 0xA8; const uint8_t kDaikin2SwingHLeft = 0xA9; @@ -253,7 +270,7 @@ const uint8_t kDaikin2SwingHSwing = 0xBF; const uint8_t kDaikin2MinCoolTemp = 18; // Min temp (in C) when in Cool mode. -// Another variant of the protocol for the Daikin ARC433B69 remote. + const uint16_t kDaikin216Freq = 38000; // Modulation Frequency in Hz. const uint16_t kDaikin216HdrMark = 3440; const uint16_t kDaikin216HdrSpace = 1750; @@ -283,7 +300,7 @@ const uint8_t kDaikin216SwingOff = 0b0000; const uint8_t kDaikin216ByteSwingH = 17; const uint8_t kDaikin216BytePowerful = 21; -// Another variant of the protocol for the Daikin ARC423A5 remote. + const uint16_t kDaikin160Freq = 38000; // Modulation Frequency in Hz. const uint16_t kDaikin160HdrMark = 5000; const uint16_t kDaikin160HdrSpace = 2145; @@ -313,7 +330,7 @@ const uint8_t kDaikin160SwingVHigh = 0x4; const uint8_t kDaikin160SwingVHighest = 0x5; const uint8_t kDaikin160SwingVAuto = 0xF; -// Another variant of the protocol for the Daikin BRC4C153 remote. + const uint16_t kDaikin176Freq = 38000; // Modulation Frequency in Hz. const uint16_t kDaikin176HdrMark = 5070; const uint16_t kDaikin176HdrSpace = 2140; @@ -344,8 +361,7 @@ const uint8_t kDaikin176ByteSwingH = 18; const uint8_t kDaikin176SwingHAuto = 0x5; const uint8_t kDaikin176SwingHOff = 0x6; -// Another variant of the protocol for the Daikin BRC52B63 remote. -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/827 + const uint16_t kDaikin128Freq = 38000; // Modulation Frequency in Hz. const uint16_t kDaikin128LeaderMark = 9800; const uint16_t kDaikin128LeaderSpace = 9800; @@ -403,8 +419,7 @@ const uint8_t kDaikin128BitWall = 0b00001000; const uint8_t kDaikin128BitCeiling = 0b00000001; const uint8_t kDaikin128MaskLight = kDaikin128BitWall | kDaikin128BitCeiling; -// Another variant of the protocol for the Daikin ARC480A5 remote. -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/873 + const uint16_t kDaikin152Freq = 38000; // Modulation Frequency in Hz. const uint8_t kDaikin152LeaderBits = 5; const uint16_t kDaikin152HdrMark = 3492; @@ -435,6 +450,7 @@ const uint8_t kDaikin152ComfortOffset = 1; // Mask 0b00000010 const uint8_t kDaikin152SensorByte = kDaikin152EconoByte; // Mask 0b00001000 const uint8_t kDaikin152SensorOffset = 3; // Mask 0b00001000 + const uint16_t kDaikin64HdrMark = kDaikin128HdrMark; const uint16_t kDaikin64BitMark = kDaikin128BitMark; const uint16_t kDaikin64HdrSpace = kDaikin128HdrSpace; @@ -500,6 +516,7 @@ const uint8_t kDaikin64ChecksumSize = 4; // Mask 0b1111 << 59 #define DAIKIN_FAN_AUTO kDaikinFanAuto #define DAIKIN_FAN_QUIET kDaikinFanQuiet +/// Class for handling detailed Daikin 280-bit A/C messages. class IRDaikinESP { public: explicit IRDaikinESP(const uint16_t pin, const bool inverted = false, @@ -507,6 +524,10 @@ class IRDaikinESP { #if SEND_DAIKIN void send(const uint16_t repeat = kDaikinDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif void begin(void); @@ -564,17 +585,20 @@ class IRDaikinESP { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command - uint8_t remote[kDaikinStateLength]; + uint8_t remote[kDaikinStateLength]; ///< The state of the IR remote. void stateReset(void); void checksum(void); }; -// Class to emulate a Daikin ARC477A1 remote. +/// Class for handling detailed Daikin 312-bit A/C messages. +/// Code by crankyoldgit, Reverse engineering analysis by sheppy99 class IRDaikin2 { public: explicit IRDaikin2(const uint16_t pin, const bool inverted = false, @@ -582,6 +606,10 @@ class IRDaikin2 { #if SEND_DAIKIN2 void send(const uint16_t repeat = kDaikin2DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif void begin(); @@ -603,8 +631,6 @@ class IRDaikin2 { void setQuiet(const bool on); bool getPowerful(); void setPowerful(const bool on); - void setSensor(const bool on); - bool getSensor(); void setEcono(const bool on); bool getEcono(); void setEye(const bool on); @@ -641,8 +667,6 @@ class IRDaikin2 { bool getFreshAirHigh(); uint8_t* getRaw(); void setRaw(const uint8_t new_code[]); - uint32_t getCommand(); - void setCommand(uint32_t value); static bool validChecksum(uint8_t state[], const uint16_t length = kDaikin2StateLength); static uint8_t convertMode(const stdAc::opmode_t mode); @@ -656,19 +680,21 @@ class IRDaikin2 { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command - uint8_t remote_state[kDaikin2StateLength]; + uint8_t remote_state[kDaikin2StateLength]; ///< The state of the IR remote. void stateReset(); void checksum(); void clearOnTimerFlag(); void clearSleepTimerFlag(); }; -// Class to emulate a Daikin ARC433B69 remote. +/// Class for handling detailed Daikin 216-bit A/C messages. class IRDaikin216 { public: explicit IRDaikin216(const uint16_t pin, const bool inverted = false, @@ -676,6 +702,10 @@ class IRDaikin216 { #if SEND_DAIKIN216 void send(const uint16_t repeat = kDaikin216DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif void begin(); @@ -708,17 +738,19 @@ class IRDaikin216 { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command - uint8_t remote_state[kDaikin216StateLength]; + uint8_t remote_state[kDaikin216StateLength]; ///< The state of the IR remote. void stateReset(); void checksum(); }; -// Class to emulate a Daikin ARC423A5 remote. +/// Class for handling detailed Daikin 160-bit A/C messages. class IRDaikin160 { public: explicit IRDaikin160(const uint16_t pin, const bool inverted = false, @@ -726,6 +758,10 @@ class IRDaikin160 { #if SEND_DAIKIN160 void send(const uint16_t repeat = kDaikin160DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif void begin(); @@ -754,17 +790,19 @@ class IRDaikin160 { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command - uint8_t remote_state[kDaikin160StateLength]; + uint8_t remote_state[kDaikin160StateLength]; ///< The state of the IR remote. void stateReset(); void checksum(); }; -// Class to emulate a Daikin BRC4C153 remote. +/// Class for handling detailed Daikin 176-bit A/C messages. class IRDaikin176 { public: explicit IRDaikin176(const uint16_t pin, const bool inverted = false, @@ -772,6 +810,10 @@ class IRDaikin176 { #if SEND_DAIKIN176 void send(const uint16_t repeat = kDaikin176DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif void begin(); @@ -803,24 +845,32 @@ class IRDaikin176 { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command - uint8_t remote_state[kDaikin176StateLength]; + uint8_t remote_state[kDaikin176StateLength]; ///< The state of the IR remote. uint8_t _saved_temp; void stateReset(); void checksum(); }; -// Class to emulate a Daikin BRC52B63 remote / Daikin 17 series A/C. +/// Class for handling detailed Daikin 128-bit A/C messages. +/// Code by crankyoldgit. +/// Analysis by Daniel Vena class IRDaikin128 { public: explicit IRDaikin128(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); #if SEND_DAIKIN128 void send(const uint16_t repeat = kDaikin128DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_DAIKIN128 void begin(); @@ -866,12 +916,14 @@ class IRDaikin128 { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command - uint8_t remote_state[kDaikin128StateLength]; + uint8_t remote_state[kDaikin128StateLength]; ///< The state of the IR remote. void stateReset(void); static uint8_t calcFirstChecksum(const uint8_t state[]); static uint8_t calcSecondChecksum(const uint8_t state[]); @@ -882,7 +934,7 @@ class IRDaikin128 { void clearSleepTimerFlag(void); }; -// Class to emulate a Daikin ARC480A5 remote. +/// Class for handling detailed Daikin 152-bit A/C messages. class IRDaikin152 { public: explicit IRDaikin152(const uint16_t pin, const bool inverted = false, @@ -890,6 +942,10 @@ class IRDaikin152 { #if SEND_DAIKIN152 void send(const uint16_t repeat = kDaikin152DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif void begin(); @@ -921,24 +977,24 @@ class IRDaikin152 { bool getComfort(void); static uint8_t convertMode(const stdAc::opmode_t mode); static uint8_t convertFan(const stdAc::fanspeed_t speed); - static stdAc::opmode_t toCommonMode(const uint8_t mode); - static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); stdAc::state_t toCommon(void); String toString(void); #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif // # of bytes per command - uint8_t remote_state[kDaikin152StateLength]; + uint8_t remote_state[kDaikin152StateLength]; ///< The state of the IR remote. void stateReset(); void checksum(); }; -// Class to emulate a Daikin DGS01 remote. +/// Class for handling detailed Daikin 64-bit A/C messages. class IRDaikin64 { public: explicit IRDaikin64(const uint16_t pin, const bool inverted = false, @@ -946,6 +1002,10 @@ class IRDaikin64 { #if SEND_DAIKIN64 void send(const uint16_t repeat = kDaikin64DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_DAIKIN64 void begin(); @@ -988,11 +1048,13 @@ class IRDaikin64 { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif - uint64_t remote_state; + uint64_t remote_state; ///< The state of the IR remote. void stateReset(); void checksum(); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Delonghi.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Delonghi.cpp similarity index 69% rename from lib/IRremoteESP8266-2.7.7/src/ir_Delonghi.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Delonghi.cpp index 7f6c3158a..df915ca35 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Delonghi.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Delonghi.cpp @@ -1,5 +1,6 @@ // Copyright 2020 David Conran -// Delonghi based protocol. +/// @file +/// @brief Delonghi based protocol. #include "ir_Delonghi.h" #include "IRrecv.h" @@ -28,18 +29,12 @@ const uint16_t kDelonghiAcOverhead = 3; #if SEND_DELONGHI_AC -// Send an Delonghi AC formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. -// Typically kDelonghiAcBits. -// repeat: The number of times the command is to be repeated. -// -// Status: STABLE / Reported as working on a real device. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1096 +/// Send a Delonghi A/C formatted message. +/// Status: STABLE / Reported as working on a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1096 void IRsend::sendDelonghiAc(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { sendGeneric(kDelonghiAcHdrMark, kDelonghiAcHdrSpace, @@ -52,21 +47,16 @@ void IRsend::sendDelonghiAc(const uint64_t data, const uint16_t nbits, #endif // SEND_DELONGHI_AC #if DECODE_DELONGHI_AC -// Decode the supplied DELONGHI_AC message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kDelonghiAcBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Expected to be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1096 +/// Decode the supplied Delonghi A/C message. +/// Status: STABLE / Expected to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1096 bool IRrecv::decodeDelonghiAc(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * nbits + kDelonghiAcOverhead - offset) @@ -98,21 +88,28 @@ bool IRrecv::decodeDelonghiAc(decode_results *results, uint16_t offset, } #endif // DECODE_DELONGHI_AC - -// Class for controlling the settings of a Delonghi A/C - +/// Class constructor. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRDelonghiAc::IRDelonghiAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Set up hardware to be able to send a message. void IRDelonghiAc::begin(void) { _irsend.begin(); } #if SEND_DELONGHI_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRDelonghiAc::send(const uint16_t repeat) { _irsend.sendDelonghiAc(getRaw(), kDelonghiAcBits, repeat); } #endif // SEND_DELONGHI_AC +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @return A valid checksum value. uint8_t IRDelonghiAc::calcChecksum(const uint64_t state) { uint8_t sum = 0; // Add up all the 8 bit chunks except for Most-significant 8 bits. @@ -122,51 +119,73 @@ uint8_t IRDelonghiAc::calcChecksum(const uint64_t state) { return sum; } +/// Verify the checksum is valid for a given state. +/// @param[in] state The state to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRDelonghiAc::validChecksum(const uint64_t state) { return (GETBITS64(state, kDelonghiAcChecksumOffset, kDelonghiAcChecksumSize) == IRDelonghiAc::calcChecksum(state)); } +/// Calculate and set the checksum values for the internal state. void IRDelonghiAc::checksum(void) { setBits(&remote_state, kDelonghiAcChecksumOffset, kDelonghiAcChecksumSize, calcChecksum(remote_state)); } +/// Reset the internal state to a fixed known good state. void IRDelonghiAc::stateReset(void) { remote_state = 0x5400000000000153; _saved_temp = 23; // DegC (Random reasonable default value) _saved_temp_units = 0; // Celsius } +/// Get a copy of the internal state as a valid code for this protocol. +/// @return A valid code for this protocol based on the current internal state. uint64_t IRDelonghiAc::getRaw(void) { checksum(); // Ensure correct bit array before returning return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] state A valid code for this protocol. void IRDelonghiAc::setRaw(const uint64_t state) { remote_state = state; } +/// Change the power setting to On. void IRDelonghiAc::on(void) { setPower(true); } +/// Change the power setting to Off. void IRDelonghiAc::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDelonghiAc::setPower(const bool on) { setBit(&remote_state, kDelonghiAcPowerBit, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRDelonghiAc::getPower(void) { return GETBIT64(remote_state, kDelonghiAcPowerBit); } +/// Change the temperature scale units. +/// @param[in] fahrenheit true, use Fahrenheit. false, use Celsius. void IRDelonghiAc::setTempUnit(const bool fahrenheit) { setBit(&remote_state, kDelonghiAcTempUnitBit, fahrenheit); } +/// Get the temperature scale unit of measure currently in use. +/// @return true, is Fahrenheit. false, is Celsius. bool IRDelonghiAc::getTempUnit(void) { return GETBIT64(remote_state, kDelonghiAcTempUnitBit); } -// Set the temp in deg C +/// Set the temperature. +/// @param[in] degrees The temperature in degrees. +/// @param[in] fahrenheit Use Fahrenheit as the temperature scale. +/// @param[in] force Do we ignore any sanity checks? void IRDelonghiAc::setTemp(const uint8_t degrees, const bool fahrenheit, const bool force) { uint8_t temp; @@ -190,12 +209,15 @@ void IRDelonghiAc::setTemp(const uint8_t degrees, const bool fahrenheit, temp); } +/// Get the current temperature setting. +/// @return The current setting for temp. in currently configured units/scale. uint8_t IRDelonghiAc::getTemp(void) { return GETBITS64(remote_state, kDelonghiAcTempOffset, kDelonghiAcTempSize) + (getTempUnit() ? kDelonghiAcTempMinF : kDelonghiAcTempMinC) - 1; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] speed The desired native setting. void IRDelonghiAc::setFan(const uint8_t speed) { // Mode fan speed rules. switch (getMode()) { @@ -222,11 +244,15 @@ void IRDelonghiAc::setFan(const uint8_t speed) { setBits(&remote_state, kDelonghiAcFanOffset, kDelonghiAcFanSize, speed); } +/// Get the current native fan speed setting. +/// @return The current fan speed. uint8_t IRDelonghiAc::getFan(void) { return GETBITS64(remote_state, kDelonghiAcFanOffset, kDelonghiAcFanSize); } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDelonghiAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -242,7 +268,9 @@ uint8_t IRDelonghiAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRDelonghiAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kDelonghiAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -252,10 +280,14 @@ stdAc::fanspeed_t IRDelonghiAc::toCommonFanSpeed(const uint8_t speed) { } } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRDelonghiAc::getMode(void) { return GETBITS64(remote_state, kDelonghiAcModeOffset, kDelonghiAcModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired native operating mode. void IRDelonghiAc::setMode(const uint8_t mode) { switch (mode) { case kDelonghiAcAuto: @@ -279,7 +311,9 @@ void IRDelonghiAc::setMode(const uint8_t mode) { if (mode == kDelonghiAcCool) setTemp(_saved_temp, _saved_temp_units); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRDelonghiAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: @@ -293,7 +327,9 @@ uint8_t IRDelonghiAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRDelonghiAc::toCommonMode(const uint8_t mode) { switch (mode) { case kDelonghiAcCool: return stdAc::opmode_t::kCool; @@ -303,36 +339,45 @@ stdAc::opmode_t IRDelonghiAc::toCommonMode(const uint8_t mode) { } } -// Aka Turbo. +/// Set the Boost (Turbo) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDelonghiAc::setBoost(const bool on) { setBit(&remote_state, kDelonghiAcBoostBit, on); } -// Aka Turbo. +/// Get the Boost (Turbo) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDelonghiAc::getBoost(void) { return GETBIT64(remote_state, kDelonghiAcBoostBit); } +/// Set the Sleep mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDelonghiAc::setSleep(const bool on) { setBit(&remote_state, kDelonghiAcSleepBit, on); } +/// Get the Sleep mode status of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRDelonghiAc::getSleep(void) { return GETBIT64(remote_state, kDelonghiAcSleepBit); } +/// Set the enable status of the On Timer. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDelonghiAc::setOnTimerEnabled(const bool on) { setBit(&remote_state, kDelonghiAcOnTimerEnableBit, on); } +/// Get the enable status of the On Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDelonghiAc::getOnTimerEnabled(void) { return GETBIT64(remote_state, kDelonghiAcOnTimerEnableBit); } -// Set the On timer to activate in nr of minutes. -// Args: -// nr_of_mins: Total nr of mins to wait before waking the device. -// (Max 23 hrs and 59 minutes. i.e. 1439 mins) +/// Set the On timer to activate in nr of minutes. +/// @param[in] nr_of_mins Total nr of mins to wait before waking the device. +/// @note Max 23 hrs and 59 minutes. i.e. 1439 mins. void IRDelonghiAc::setOnTimer(const uint16_t nr_of_mins) { uint16_t value = std::min(kDelonghiAcTimerMax, nr_of_mins); setBits(&remote_state, kDelonghiAcOnTimerMinsOffset, kDelonghiAcMinsSize, @@ -343,6 +388,8 @@ void IRDelonghiAc::setOnTimer(const uint16_t nr_of_mins) { setOnTimerEnabled(value > 0); } +/// Get the On timer time. +/// @return Total nr of mins before the device turns on. uint16_t IRDelonghiAc::getOnTimer(void) { return GETBITS64(remote_state, kDelonghiAcOnTimerHoursOffset, kDelonghiAcHoursSize) * 60 + @@ -350,18 +397,21 @@ uint16_t IRDelonghiAc::getOnTimer(void) { kDelonghiAcMinsSize); } +/// Set the enable status of the Off Timer. +/// @param[in] on true, the setting is on. false, the setting is off. void IRDelonghiAc::setOffTimerEnabled(const bool on) { setBit(&remote_state, kDelonghiAcOffTimerEnableBit, on); } +/// Get the enable status of the Off Timer. +/// @return true, the setting is on. false, the setting is off. bool IRDelonghiAc::getOffTimerEnabled(void) { return GETBIT64(remote_state, kDelonghiAcOffTimerEnableBit); } -// Set the Off timer to activate in nr of minutes. -// Args: -// nr_of_mins: Total nr of mins to wait before waking the device. -// (Max 23 hrs and 59 minutes. i.e. 1439 mins) +/// Set the Off timer to activate in nr of minutes. +/// @param[in] nr_of_mins Total nr of mins to wait before turning off the device +/// @note Max 23 hrs and 59 minutes. i.e. 1439 mins. void IRDelonghiAc::setOffTimer(const uint16_t nr_of_mins) { uint16_t value = std::min(kDelonghiAcTimerMax, nr_of_mins); setBits(&remote_state, kDelonghiAcOffTimerMinsOffset, kDelonghiAcMinsSize, @@ -372,6 +422,8 @@ void IRDelonghiAc::setOffTimer(const uint16_t nr_of_mins) { setOffTimerEnabled(value > 0); } +/// Get the Off timer time. +/// @return Total nr of mins before the device turns off. uint16_t IRDelonghiAc::getOffTimer(void) { return GETBITS64(remote_state, kDelonghiAcOffTimerHoursOffset, kDelonghiAcHoursSize) * 60 + @@ -379,7 +431,8 @@ uint16_t IRDelonghiAc::getOffTimer(void) { kDelonghiAcMinsSize); } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRDelonghiAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::DELONGHI_AC; @@ -404,7 +457,8 @@ stdAc::state_t IRDelonghiAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRDelonghiAc::toString(void) { String result = ""; result.reserve(80); // Reserve some heap for the string to reduce fragging. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Delonghi.h b/lib/IRremoteESP8266-2.7.8/src/ir_Delonghi.h similarity index 85% rename from lib/IRremoteESP8266-2.7.7/src/ir_Delonghi.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Delonghi.h index 8ba8e90f4..da3a6f618 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Delonghi.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Delonghi.h @@ -1,7 +1,13 @@ -// Delonghi A/C -// // Copyright 2020 David Conran +/// @file +/// @brief Delonghi A/C +/// @note Kudos to TheMaxxz For the breakdown and mapping of the bit values. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1096 + +// Supports: +// Brand: Delonghi, Model: PAC A95 + #ifndef IR_DELONGHI_H_ #define IR_DELONGHI_H_ @@ -16,15 +22,6 @@ #include "IRsend_test.h" #endif -// Supports: -// Brand: Delonghi, Model: PAC A95 - -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1096 - -// Kudos: -// TheMaxxz: For the breakdown and mapping of the bit values. - /* State bit map: +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+------+ @@ -100,14 +97,19 @@ const uint8_t kDelonghiAcChecksumSize = 8; // Classes + +/// Class for handling detailed Delonghi A/C messages. class IRDelonghiAc { public: explicit IRDelonghiAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(); #if SEND_DELONGHI_AC void send(const uint16_t repeat = kDelonghiAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_DELONGHI_AC void begin(); @@ -149,13 +151,15 @@ class IRDelonghiAc { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif - uint64_t remote_state; // The state of the IR remote. - uint8_t _saved_temp; // The previously user requested temp value. - uint8_t _saved_temp_units; // The previously user requested temp units. + uint64_t remote_state; ///< The state of the IR remote. + uint8_t _saved_temp; ///< The previously user requested temp value. + uint8_t _saved_temp_units; ///< The previously user requested temp units. void checksum(void); }; #endif // IR_DELONGHI_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Denon.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Denon.cpp similarity index 71% rename from lib/IRremoteESP8266-2.7.7/src/ir_Denon.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Denon.cpp index 6dd4cd839..700fd31cb 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Denon.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Denon.cpp @@ -1,17 +1,22 @@ // Copyright 2016 Massimiliano Pinto // Copyright 2017 David Conran +/// @file +/// @brief Denon support +/// Original Denon support added by https://github.com/csBlueChip +/// Ported over by Massimiliano Pinto +/// @see https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp +/// @see http://assets.denon.com/documentmaster/us/denon%20master%20ir%20hex.xls + +// Supports: +// Brand: Denon, Model: AVR-3801 A/V Receiver (probably) #include #include "IRrecv.h" #include "IRsend.h" #include "IRutils.h" -// Original Denon support added by https://github.com/csBlueChip -// Ported over by Massimiliano Pinto // Constants -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp const uint16_t kDenonTick = 263; const uint16_t kDenonHdrMarkTicks = 1; const uint16_t kDenonHdrMark = kDenonHdrMarkTicks * kDenonTick; @@ -33,21 +38,13 @@ const uint32_t kDenonMinGap = kDenonMinGapTicks * kDenonTick; const uint64_t kDenonManufacturer = 0x2A4CULL; #if SEND_DENON -// Send a Denon message -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kDenonBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: STABLE / Should be working. -// -// Notes: -// Some Denon devices use a Kaseikyo/Panasonic 48-bit format -// Others use the Sharp protocol. -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp -// http://assets.denon.com/documentmaster/us/denon%20master%20ir%20hex.xls +/// Send a Denon formatted message. +/// Status: STABLE / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Some Denon devices use a Kaseikyo/Panasonic 48-bit format +/// Others use the Sharp protocol. void IRsend::sendDenon(uint64_t data, uint16_t nbits, uint16_t repeat) { if (nbits >= kPanasonicBits) // Is this really Panasonic? sendPanasonic64(data, nbits, repeat); @@ -60,21 +57,16 @@ void IRsend::sendDenon(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif #if DECODE_DENON -// Decode a Denon message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Expected nr. of data bits. (Typically kDenonBits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Should work fine. -// -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp +/// Decode the supplied Delonghi A/C message. +/// Status: STABLE / Should work fine. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp bool IRrecv::decodeDenon(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // Compliance diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Dish.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Dish.cpp similarity index 56% rename from lib/IRremoteESP8266-2.7.7/src/ir_Dish.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Dish.cpp index 291201ed6..94f5450b8 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Dish.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Dish.cpp @@ -1,20 +1,21 @@ // Copyright Todd Treece // Copyright 2017 David Conran +/// @file +/// @brief DISH Network protocol support +/// DISH support originally by Todd Treece +/// @see http://unionbridge.org/design/ircommand +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Dish.cpp +/// @see http://www.hifi-remote.com/wiki/index.php?title=Dish + +// Supports: +// Brand: DISH NETWORK, Model: echostar 301 #include "IRrecv.h" #include "IRsend.h" #include "IRutils.h" -// DISH support originally by Todd Treece -// http://unionbridge.org/design/ircommand - -// Supports: -// Brand: DISH NETWORK, Model: echostar 301 // Constants -// Ref: -// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Dish.cpp -// http://www.hifi-remote.com/wiki/index.php?title=Dish const uint16_t kDishTick = 100; const uint16_t kDishHdrMarkTicks = 4; const uint16_t kDishHdrMark = kDishHdrMarkTicks * kDishTick; @@ -30,27 +31,20 @@ const uint16_t kDishRptSpaceTicks = kDishHdrSpaceTicks; const uint16_t kDishRptSpace = kDishRptSpaceTicks * kDishTick; #if SEND_DISH -// Send an IR command to a DISH NETWORK device. -// -// Args: -// data: The contents of the command you want to send. -// nbits: The bit size of the command being sent. -// repeat: The number of times you want the command to be repeated. -// -// Status: STABLE / Working. -// -// Note: -// Dishplayer is a different protocol. -// Typically a DISH device needs to get a command a total of at least 4 -// times to accept it. e.g. repeat=3 -// -// Here is the LIRC file I found that seems to match the remote codes from the -// oscilloscope: -// DISH NETWORK (echostar 301): -// http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx -// -// Ref: -// http://www.hifi-remote.com/wiki/index.php?title=Dish +/// Send a DISH NETWORK formatted message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Dishplayer is a different protocol. +/// Typically a DISH device needs to get a command a total of at least 4 +/// times to accept it. e.g. repeat=3 +/// +/// Here is the LIRC file I found that seems to match the remote codes from the +/// oscilloscope: +/// DISH NETWORK (echostar 301): +/// @see http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx +/// @see http://www.hifi-remote.com/wiki/index.php?title=Dish void IRsend::sendDISH(uint64_t data, uint16_t nbits, uint16_t repeat) { enableIROut(57600); // Set modulation freq. to 57.6kHz. // Header is only ever sent once. @@ -65,27 +59,21 @@ void IRsend::sendDISH(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif #if DECODE_DISH -// Decode the supplied DISH NETWORK message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. Typically kDishBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: ALPHA (untested and unconfirmed.) -// -// Note: -// Dishplayer is a different protocol. -// Typically a DISH device needs to get a command a total of at least 4 -// times to accept it. -// Ref: -// http://www.hifi-remote.com/wiki/index.php?title=Dish -// http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx -// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Dish.cpp +/// Decode the supplied DISH NETWORK message. +/// Status: ALPHA (untested and unconfirmed.) +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @note Dishplayer is a different protocol. +/// Typically a DISH device needs to get a command a total of at least 4 +/// times to accept it. +/// @see http://www.hifi-remote.com/wiki/index.php?title=Dish +/// @see http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Dish.cpp bool IRrecv::decodeDISH(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kDishBits) return false; // Not strictly compliant. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Doshisha.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Doshisha.cpp similarity index 66% rename from lib/IRremoteESP8266-2.7.7/src/ir_Doshisha.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Doshisha.cpp index 7352c2c84..0a5fadedb 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Doshisha.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Doshisha.cpp @@ -1,29 +1,28 @@ // Copyright 2020 Christian (nikize) -// Support for Doshisha protocol - -#include "IRrecv.h" -#include "IRsend.h" -#include "IRutils.h" +/// @file +/// @brief Doshisha protocol support +/// @see https://www.doshisha-led.com/ // Supports: // Brand: Doshisha, Model: CZ-S32D LED Light // Brand: Doshisha, Model: CZ-S38D LED Light // Brand: Doshisha, Model: CZ-S50D LED Light // Brand: Doshisha, Model: RCZ01 remote -// -// Ref: https://www.doshisha-led.com/ + +#include "IRrecv.h" +#include "IRsend.h" +#include "IRutils.h" + const uint16_t kDoshishaHdrMark = 3412; const uint16_t kDoshishaHdrSpace = 1722; const uint16_t kDoshishaBitMark = 420; const uint16_t kDoshishaOneSpace = 1310; const uint16_t kDoshishaZeroSpace = 452; -const uint16_t kDoshishaFreq = 38000; -const uint16_t kDoshishaOverhead = 3; // basic structure of bits, and mask -const uint64_t kRcz01CheckMask = 0xffffffff00; -const uint64_t kRcz01CheckExpected = 0x800B304800; +const uint64_t kRcz01SignatureMask = 0xffffffff00; +const uint64_t kRcz01Signature = 0x800B304800; const uint8_t kRcz01CommandMask = 0xFE; const uint8_t kRcz01ChannelMask = 0x01; @@ -46,33 +45,27 @@ const uint8_t kRcz01CommandNightLight = 0xC8; // end Known commands #if SEND_DOSHISHA -// Send an Doshisha formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. -// Typically kDelonghiAcBits. -// repeat: The number of times the command is to be repeated. -// -// Status: STABLE / working on a real device. +/// Send a Doshisha formatted message. +/// Status: STABLE / Works on real device. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendDoshisha(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { sendGeneric(kDoshishaHdrMark, kDoshishaHdrSpace, kDoshishaBitMark, kDoshishaOneSpace, kDoshishaBitMark, kDoshishaZeroSpace, kDoshishaBitMark, kDefaultMessageGap, - data, nbits, kDoshishaFreq, true, repeat, kDutyDefault); + data, nbits, 38, true, repeat, kDutyDefault); } -// Encode Doshisha combining constant values with command and channel. -// -// Args: -// command: The commandcode to be sent. -// channel: The one bit channel 0 for CH1 and 1 for CH2 -// -// Status: STABLE / Working. +/// Encode Doshisha combining constant values with command and channel. +/// Status: STABLE / Working. +/// @param[in] command The command code to be sent. +/// @param[in] channel The one bit channel 0 for CH1 and 1 for CH2 +/// @return The corresponding Doshisha code. uint64_t IRsend::encodeDoshisha(const uint8_t command, const uint8_t channel) { - uint64_t data = kRcz01CheckExpected | + uint64_t data = kRcz01Signature | (command & kRcz01CommandMask) | (channel & kRcz01ChannelMask); return data; @@ -80,20 +73,19 @@ uint64_t IRsend::encodeDoshisha(const uint8_t command, const uint8_t channel) { #endif // SEND_DOSHISHA #if DECODE_DOSHISHA -// Decode the supplied Doshisha message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kDelonghiAcBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Expected to be working. +/// Decode the supplied Doshisha message. +/// Status: STABLE / Works on real device. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeDoshisha(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { + if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset) + return false; // Can't possibly be a valid message. if (strict && nbits != kDoshishaBits) return false; @@ -110,13 +102,13 @@ bool IRrecv::decodeDoshisha(decode_results *results, uint16_t offset, // e.g. data = 0x800B3048C0, nbits = 40 // RCZ01 remote commands starts with a lead bit set - if ((data & kRcz01CheckMask) != kRcz01CheckExpected) { + if ((data & kRcz01SignatureMask) != kRcz01Signature) { DPRINT(" decodeDoshisha data "); DPRINT(uint64ToString(data, 16)); DPRINT(" masked "); - DPRINT(uint64ToString(data & kRcz01CheckMask, 16)); + DPRINT(uint64ToString(data & kRcz01SignatureMask, 16)); DPRINT(" not matching "); - DPRINT(uint64ToString(kRcz01CheckExpected, 16)); + DPRINT(uint64ToString(kRcz01Signature, 16)); DPRINTLN(" ."); return false; // expected lead bits not matching } diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Electra.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Electra.cpp similarity index 65% rename from lib/IRremoteESP8266-2.7.7/src/ir_Electra.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Electra.cpp index 16c753f35..0008a79a4 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Electra.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Electra.cpp @@ -1,4 +1,10 @@ // Copyright 2018, 2019 David Conran +/// @file +/// @brief Support for Electra A/C protocols. +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/AUXHeatpumpIR.cpp +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/527 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/642 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/778 #include "ir_Electra.h" #include @@ -8,15 +14,6 @@ #include "IRtext.h" #include "IRutils.h" -// Electra A/C added by crankyoldgit -// - -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/527 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/642 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/778 -// https://github.com/ToniA/arduino-heatpumpir/blob/master/AUXHeatpumpIR.cpp - // Constants const uint16_t kElectraAcHdrMark = 9166; const uint16_t kElectraAcBitMark = 646; @@ -35,15 +32,12 @@ using irutils::setBit; using irutils::setBits; #if SEND_ELECTRA_AC -// Send a Electra message -// -// Args: -// data: Contents of the message to be sent. (Guessing MSBF order) -// nbits: Nr. of bits of data to be sent. Typically kElectraAcBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: Alpha / Needs testing against a real device. -// +/// Send a Electra A/C formatted message. +/// Status: Alpha / Needs testing against a real device. +/// @param[in] data The message to be sent. +/// @note Guessing MSBF order. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendElectraAC(const uint8_t data[], const uint16_t nbytes, const uint16_t repeat) { for (uint16_t r = 0; r <= repeat; r++) @@ -56,13 +50,17 @@ void IRsend::sendElectraAC(const uint8_t data[], const uint16_t nbytes, } #endif - +/// Class constructor. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRElectraAc::IRElectraAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Reset the internal state to a fixed known good state. void IRElectraAc::stateReset(void) { for (uint8_t i = 1; i < kElectraAcStateLength - 2; i++) remote_state[i] = 0; remote_state[0] = 0xC3; @@ -70,54 +68,78 @@ void IRElectraAc::stateReset(void) { // [12] is the checksum. } +/// Set up hardware to be able to send a message. void IRElectraAc::begin(void) { _irsend.begin(); } +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @param[in] length The length of the state array. +/// @return The calculated checksum stored in a uint_8. uint8_t IRElectraAc::calcChecksum(const uint8_t state[], - const uint16_t length) { + const uint16_t length) { if (length == 0) return state[0]; return sumBytes(state, length - 1); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The state to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRElectraAc::validChecksum(const uint8_t state[], const uint16_t length) { if (length < 2) return true; // No checksum to compare with. Assume okay. return (state[length - 1] == calcChecksum(state, length)); } -// Update the checksum for the internal state. +/// Calculate and set the checksum values for the internal state. +/// @param[in] length The length of the state array. void IRElectraAc::checksum(uint16_t length) { if (length < 2) return; remote_state[length - 1] = calcChecksum(remote_state, length); } #if SEND_ELECTRA_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRElectraAc::send(const uint16_t repeat) { - this->checksum(); - _irsend.sendElectraAC(remote_state, kElectraAcStateLength, repeat); + _irsend.sendElectraAC(getRaw(), kElectraAcStateLength, repeat); } #endif // SEND_ELECTRA_AC +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRElectraAc::getRaw(void) { this->checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length of the code array. void IRElectraAc::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kElectraAcStateLength)); } +/// Change the power setting to On. void IRElectraAc::on(void) { this->setPower(true); } +/// Change the power setting to Off. void IRElectraAc::off(void) { this->setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRElectraAc::setPower(const bool on) { setBit(&remote_state[9], kElectraAcPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRElectraAc::getPower(void) { return GETBIT8(remote_state[9], kElectraAcPowerOffset); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRElectraAc::setMode(const uint8_t mode) { switch (mode) { case kElectraAcAuto: @@ -133,11 +155,15 @@ void IRElectraAc::setMode(const uint8_t mode) { } } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRElectraAc::getMode(void) { return GETBITS8(remote_state[6], kElectraAcModeOffset, kModeBitsSize); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRElectraAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kElectraAcCool; @@ -148,7 +174,9 @@ uint8_t IRElectraAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRElectraAc::toCommonMode(const uint8_t mode) { switch (mode) { case kElectraAcCool: return stdAc::opmode_t::kCool; @@ -159,20 +187,24 @@ stdAc::opmode_t IRElectraAc::toCommonMode(const uint8_t mode) { } } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRElectraAc::setTemp(const uint8_t temp) { uint8_t newtemp = std::max(kElectraAcMinTemp, temp); newtemp = std::min(kElectraAcMaxTemp, newtemp) - kElectraAcTempDelta; setBits(&remote_state[1], kElectraAcTempOffset, kElectraAcTempSize, newtemp); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRElectraAc::getTemp(void) { return GETBITS8(remote_state[1], kElectraAcTempOffset, kElectraAcTempSize) + kElectraAcTempDelta; } -// Set the speed of the fan, 0-3, 0 is auto, 1-3 is the speed +/// Set the speed of the fan. +/// @param[in] speed The desired setting. +/// @note 0 is auto, 1-3 is the speed void IRElectraAc::setFan(const uint8_t speed) { switch (speed) { case kElectraAcFanAuto: @@ -187,11 +219,15 @@ void IRElectraAc::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRElectraAc::getFan(void) { return GETBITS8(remote_state[4], kElectraAcFanOffset, kElectraAcFanSize); } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRElectraAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -203,7 +239,9 @@ uint8_t IRElectraAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRElectraAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kElectraAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -213,51 +251,73 @@ stdAc::fanspeed_t IRElectraAc::toCommonFanSpeed(const uint8_t speed) { } } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRElectraAc::setSwingV(const bool on) { setBits(&remote_state[1], kElectraAcSwingVOffset, kElectraAcSwingSize, on ? kElectraAcSwingOn : kElectraAcSwingOff); } +/// Get the Vertical Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRElectraAc::getSwingV(void) { return !GETBITS8(remote_state[1], kElectraAcSwingVOffset, kElectraAcSwingSize); } +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRElectraAc::setSwingH(const bool on) { setBits(&remote_state[2], kElectraAcSwingHOffset, kElectraAcSwingSize, on ? kElectraAcSwingOn : kElectraAcSwingOff); } +/// Get the Horizontal Swing mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRElectraAc::getSwingH(void) { return !GETBITS8(remote_state[2], kElectraAcSwingHOffset, kElectraAcSwingSize); } +/// Set the Light (LED) Toggle mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRElectraAc::setLightToggle(const bool on) { remote_state[11] = on ? kElectraAcLightToggleOn : kElectraAcLightToggleOff; } +/// Get the Light (LED) Toggle mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRElectraAc::getLightToggle(void) { return (remote_state[11] & kElectraAcLightToggleMask) == kElectraAcLightToggleMask; } +/// Set the Clean mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRElectraAc::setClean(const bool on) { setBit(&remote_state[9], kElectraAcCleanOffset, on); } +/// Get the Clean mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRElectraAc::getClean(void) { return GETBIT8(remote_state[9], kElectraAcCleanOffset); } +/// Set the Turbo mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRElectraAc::setTurbo(const bool on) { setBit(&remote_state[5], kElectraAcTurboOffset, on); } +/// Get the Turbo mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRElectraAc::getTurbo(void) { return GETBIT8(remote_state[5], kElectraAcTurboOffset); } -// Convert the A/C state to it's common equivalent. + +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRElectraAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::ELECTRA_AC; @@ -284,7 +344,8 @@ stdAc::state_t IRElectraAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRElectraAc::toString(void) { String result = ""; result.reserve(130); // Reserve some heap for the string to reduce fragging. @@ -304,19 +365,15 @@ String IRElectraAc::toString(void) { } #if DECODE_ELECTRA_AC -// Decode the supplied Electra A/C message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kElectraAcBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Known working. -// +/// Decode the supplied Electra A/C message. +/// Status: STABLE / Known working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeElectraAC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Electra.h b/lib/IRremoteESP8266-2.7.8/src/ir_Electra.h similarity index 85% rename from lib/IRremoteESP8266-2.7.7/src/ir_Electra.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Electra.h index 0f0e119f7..86f082a76 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Electra.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Electra.h @@ -1,6 +1,13 @@ -// Electra A/C -// // Copyright 2019 David Conran +/// @file +/// @brief Support for Electra A/C protocols. +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/AUXHeatpumpIR.cpp + +// Supports: +// Brand: AUX, Model: KFR-35GW/BpNFW=3 A/C +// Brand: AUX, Model: YKR-T/011 remote +// Brand: Electra, Model: Classic INV 17 / AXW12DCS A/C +// Brand: Electra, Model: YKR-M/003E remote #ifndef IR_ELECTRA_H_ #define IR_ELECTRA_H_ @@ -16,15 +23,6 @@ #include "IRsend_test.h" #endif -// Supports: -// Brand: AUX, Model: KFR-35GW/BpNFW=3 A/C -// Brand: AUX, Model: YKR-T/011 remote -// Brand: Electra, Model: Classic INV 17 / AXW12DCS A/C -// Brand: Electra, Model: YKR-M/003E remote - -// Ref: -// https://github.com/ToniA/arduino-heatpumpir/blob/master/AUXHeatpumpIR.cpp - // Constants // state[1] // Temp 0b11111000 @@ -78,14 +76,18 @@ const uint8_t kElectraAcLightToggleOff = 0x08; // Classes +/// Class for handling detailed Electra A/C messages. class IRElectraAc { public: explicit IRElectraAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_ELECTRA_AC void send(const uint16_t repeat = kElectraAcMinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_ELECTRA_AC void begin(void); @@ -125,12 +127,13 @@ class IRElectraAc { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< instance of the testing IR send class + /// @endcond #endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kElectraAcStateLength]; + uint8_t remote_state[kElectraAcStateLength]; ///< The state of the IR remote void checksum(const uint16_t length = kElectraAcStateLength); }; #endif // IR_ELECTRA_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Epson.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Epson.cpp similarity index 70% rename from lib/IRremoteESP8266-2.7.7/src/ir_Epson.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Epson.cpp index 40973a947..4f92704bc 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Epson.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Epson.cpp @@ -1,6 +1,11 @@ // Copyright 2020 David Conran +/// @file +/// @brief Support for Epson protocols. +/// Epson is an NEC-like protocol, except it doesn't use the NEC style repeat. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1034 -// Epson is an NEC-like protocol, except it doesn't use the NEC style repeat. +// Supports: +// Brand: Epson, Model: EN-TW9100W Projector #define __STDC_LIMIT_MACROS #include @@ -11,17 +16,11 @@ #include "ir_NEC.h" #if SEND_EPSON -// Send an Epson formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. Typically kEpsonBits. -// repeat: The number of times the command is to be repeated. -// -// Status: Beta / Probably works. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1034 +/// Send an Epson formatted message. +/// Status: Beta / Probably works. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of nbits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendEpson(uint64_t data, uint16_t nbits, uint16_t repeat) { sendGeneric(kNecHdrMark, kNecHdrSpace, kNecBitMark, kNecOneSpace, kNecBitMark, kNecZeroSpace, kNecBitMark, kNecMinGap, kNecMinCommandLength, @@ -31,27 +30,18 @@ void IRsend::sendEpson(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_EPSON #if DECODE_EPSON -// Decode the supplied Epson message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kNECBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Beta / Probably works. -// -// Notes: -// Experimental data indicates there are at least three -// messages (first + 2 repeats). We only require the first + a single repeat -// to match. This helps us distinguish it from NEC messages which are near -// identical. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1034 +/// Decode the supplied Epson message. +/// Status: Beta / Probably works. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @note Experimental data indicates there are at least three messages +/// (first + 2 repeats). We only require the first + a single repeat to match. +/// This helps us distinguish it from NEC messages which are near identical. bool IRrecv::decodeEpson(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { const uint8_t kEpsonMinMesgsForDecode = 2; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Fujitsu.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Fujitsu.cpp similarity index 79% rename from lib/IRremoteESP8266-2.7.7/src/ir_Fujitsu.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Fujitsu.cpp index 583a441ba..a4bd90fa8 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Fujitsu.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Fujitsu.cpp @@ -1,5 +1,10 @@ // Copyright 2017 Jonny Graham // Copyright 2017-2019 David Conran + +/// @file +/// @brief Support for Fujitsu A/C protocols. +/// Fujitsu A/C support added by Jonny Graham & David Conran + #include "ir_Fujitsu.h" #include #ifndef ARDUINO @@ -9,16 +14,6 @@ #include "IRtext.h" #include "IRutils.h" -// Fujitsu A/C support added by Jonny Graham & David Conran - -// Equipment it seems compatible with: -// * Fujitsu ASYG30LFCA with remote AR-RAH2E -// * Fujitsu AST9RSGCW with remote AR-DB1 -// * Fujitsu ASYG7LMCA with remote AR-REB1E -// * Fujitsu AR-RAE1E remote. -// * Fujitsu General with remote AR-JW2 -// * - // Ref: // These values are based on averages of measurements const uint16_t kFujitsuAcHdrMark = 3324; @@ -39,20 +34,16 @@ using irutils::setBit; using irutils::setBits; #if SEND_FUJITSU_AC -// Send a Fujitsu A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. Typically one of: -// kFujitsuAcStateLength -// kFujitsuAcStateLength - 1 -// kFujitsuAcStateLengthShort -// kFujitsuAcStateLengthShort - 1 -// repeat: Nr. of times the message is to be repeated. -// (Default = kFujitsuAcMinRepeat). -// -// Status: STABLE / Known Good. -// +/// Send a Fujitsu A/C formatted message. +/// Status: STABLE / Known Good. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// Typically one of: +/// kFujitsuAcStateLength, +/// kFujitsuAcStateLength - 1, +/// kFujitsuAcStateLengthShort, +/// kFujitsuAcStateLengthShort - 1 +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendFujitsuAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { sendGeneric(kFujitsuAcHdrMark, kFujitsuAcHdrSpace, kFujitsuAcBitMark, @@ -64,7 +55,11 @@ void IRsend::sendFujitsuAC(const unsigned char data[], const uint16_t nbytes, // Code to emulate Fujitsu A/C IR remote control unit. -// Initialise the object. +/// Class Constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] model The enum for the model of A/C to be emulated. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRFujitsuAC::IRFujitsuAC(const uint16_t pin, const fujitsu_ac_remote_model_t model, const bool inverted, const bool use_modulation) @@ -73,6 +68,8 @@ IRFujitsuAC::IRFujitsuAC(const uint16_t pin, this->stateReset(); } +/// Set the currently emulated model of the A/C. +/// @param[in] model An enum representing the model to support/emulate. void IRFujitsuAC::setModel(const fujitsu_ac_remote_model_t model) { _model = model; switch (model) { @@ -90,9 +87,11 @@ void IRFujitsuAC::setModel(const fujitsu_ac_remote_model_t model) { } } +/// Get the currently emulated/detected model of the A/C. +/// @return The enum representing the model of A/C. fujitsu_ac_remote_model_t IRFujitsuAC::getModel(void) { return _model; } -// Reset the state of the remote to a known good state/sequence. +/// Reset the state of the remote to a known good state/sequence. void IRFujitsuAC::stateReset(void) { _temp = 24; _fanSpeed = kFujitsuAcFanHigh; @@ -104,17 +103,19 @@ void IRFujitsuAC::stateReset(void) { this->buildState(); } -// Configure the pin for output. +/// Set up hardware to be able to send a message. void IRFujitsuAC::begin(void) { _irsend.begin(); } #if SEND_FUJITSU_AC -// Send the current desired state to the IR LED. +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRFujitsuAC::send(const uint16_t repeat) { this->buildState(); _irsend.sendFujitsuAC(remote_state, getStateLength(), repeat); } #endif // SEND_FUJITSU_AC +/// (Re)Build the state from the currently configured settings. void IRFujitsuAC::buildState(void) { remote_state[0] = 0x14; remote_state[1] = 0x63; @@ -208,6 +209,8 @@ void IRFujitsuAC::buildState(void) { } } +/// Get the length (size) of the state code for the current configuration. +/// @return The length of the state array required for this config. uint8_t IRFujitsuAC::getStateLength(void) { this->buildState(); // Force an update of the internal state. if (((_model == fujitsu_ac_remote_model_t::ARRAH2E || @@ -221,12 +224,15 @@ uint8_t IRFujitsuAC::getStateLength(void) { return _state_length; } -// Return a pointer to the internal state date of the remote. +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t* IRFujitsuAC::getRaw(void) { this->buildState(); return remote_state; } +/// Build the internal state/config from the current (raw) A/C message. +/// @param[in] length Size of the current/used (raw) A/C message array. void IRFujitsuAC::buildFromState(const uint16_t length) { switch (length) { case kFujitsuAcStateLength - 1: @@ -285,6 +291,10 @@ void IRFujitsuAC::buildFromState(const uint16_t length) { _outsideQuiet = this->getOutsideQuiet(true); } +/// Set the internal state from a valid code for this protocol. +/// @param[in] newState A valid code for this protocol. +/// @param[in] length Size of the newState array. +/// @return true, if successful; Otherwise false. (i.e. size check) bool IRFujitsuAC::setRaw(const uint8_t newState[], const uint16_t length) { if (length > kFujitsuAcStateLength) return false; for (uint16_t i = 0; i < kFujitsuAcStateLength; i++) { @@ -297,8 +307,11 @@ bool IRFujitsuAC::setRaw(const uint8_t newState[], const uint16_t length) { return true; } +/// Request the A/C to step the Horizontal Swing. void IRFujitsuAC::stepHoriz(void) { this->setCmd(kFujitsuAcCmdStepHoriz); } +/// Request the A/C to toggle the Horizontal Swing mode. +/// @param[in] update Do we need to update the general swing config? void IRFujitsuAC::toggleSwingHoriz(const bool update) { // Toggle the current setting. if (update) this->setSwing(this->getSwing() ^ kFujitsuAcSwingHoriz); @@ -306,8 +319,11 @@ void IRFujitsuAC::toggleSwingHoriz(const bool update) { this->setCmd(kFujitsuAcCmdToggleSwingHoriz); } +/// Request the A/C to step the Vertical Swing. void IRFujitsuAC::stepVert(void) { this->setCmd(kFujitsuAcCmdStepVert); } +/// Request the A/C to toggle the Vertical Swing mode. +/// @param[in] update Do we need to update the general swing config? void IRFujitsuAC::toggleSwingVert(const bool update) { // Toggle the current setting. if (update) this->setSwing(this->getSwing() ^ kFujitsuAcSwingVert); @@ -315,7 +331,8 @@ void IRFujitsuAC::toggleSwingVert(const bool update) { this->setCmd(kFujitsuAcCmdToggleSwingVert); } -// Set the requested command of the A/C. +/// Set the requested (special) command part for the A/C message. +/// @param[in] cmd The special command code. void IRFujitsuAC::setCmd(const uint8_t cmd) { switch (cmd) { case kFujitsuAcCmdTurnOff: @@ -353,39 +370,40 @@ void IRFujitsuAC::setCmd(const uint8_t cmd) { } } -// Get the special command part of the message. -// Args: -// raw: Do we need to get it from first principles from the raw data? -// Returns: -// A uint8_t containing the contents of the special command byte. +/// Set the requested (special) command part for the A/C message. +/// @param[in] raw Do we need to get it from first principles from the raw data? +/// @return The special command code. uint8_t IRFujitsuAC::getCmd(const bool raw) { if (raw) return remote_state[5]; return _cmd; } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRFujitsuAC::setPower(const bool on) { this->setCmd(on ? kFujitsuAcCmdTurnOn : kFujitsuAcCmdTurnOff); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRFujitsuAC::off(void) { this->setPower(false); } -// Set the requested power state of the A/C to on. +/// Set the requested power state of the A/C to on. void IRFujitsuAC::on(void) { this->setPower(true); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRFujitsuAC::getPower(void) { return _cmd != kFujitsuAcCmdTurnOff; } +/// Set the Outside Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRFujitsuAC::setOutsideQuiet(const bool on) { _outsideQuiet = on; this->setCmd(kFujitsuAcCmdStayOn); // No special command involved. } -// Get the status of the Outside Quiet setting. -// Args: -// raw: Do we get the result from base data? -// Returns: -// A boolean for if it is set or not. +/// Get the Outside Quiet mode status of the A/C. +/// @param[in] raw Do we get the result from base data? +/// @return true, the setting is on. false, the setting is off. bool IRFujitsuAC::getOutsideQuiet(const bool raw) { if (_state_length == kFujitsuAcStateLength && raw) { _outsideQuiet = GETBIT8(remote_state[14], kFujitsuAcOutsideQuietOffset); @@ -395,16 +413,20 @@ bool IRFujitsuAC::getOutsideQuiet(const bool raw) { return _outsideQuiet; } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRFujitsuAC::setTemp(const uint8_t temp) { _temp = std::max((uint8_t)kFujitsuAcMinTemp, temp); _temp = std::min((uint8_t)kFujitsuAcMaxTemp, _temp); this->setCmd(kFujitsuAcCmdStayOn); // No special command involved. } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRFujitsuAC::getTemp(void) { return _temp; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] fanSpeed The desired setting. void IRFujitsuAC::setFanSpeed(const uint8_t fanSpeed) { if (fanSpeed > kFujitsuAcFanQuiet) _fanSpeed = kFujitsuAcFanHigh; // Set the fan to maximum if out of range. @@ -412,9 +434,13 @@ void IRFujitsuAC::setFanSpeed(const uint8_t fanSpeed) { _fanSpeed = fanSpeed; this->setCmd(kFujitsuAcCmdStayOn); // No special command involved. } + +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRFujitsuAC::getFanSpeed(void) { return _fanSpeed; } -// Set the requested climate operation mode of the a/c unit. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRFujitsuAC::setMode(const uint8_t mode) { if (mode > kFujitsuAcModeHeat) _mode = kFujitsuAcModeHeat; // Set the mode to maximum if out of range. @@ -423,9 +449,14 @@ void IRFujitsuAC::setMode(const uint8_t mode) { this->setCmd(kFujitsuAcCmdStayOn); // No special command involved. } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRFujitsuAC::getMode(void) { return _mode; } -// Set the requested swing operation mode of the a/c unit. +/// Set the requested swing operation mode of the A/C unit. +/// @param[in] swingMode The swingMode code for the A/C. +/// Vertical, Horizon, or Both. See constants for details. +/// @note Not all models support all possible swing modes. void IRFujitsuAC::setSwing(const uint8_t swingMode) { _swingMode = swingMode; switch (_model) { @@ -446,22 +477,25 @@ void IRFujitsuAC::setSwing(const uint8_t swingMode) { this->setCmd(kFujitsuAcCmdStayOn); // No special command involved. } -// Get what the swing part of the message should be. -// Args: -// raw: Do we need to get it from first principles from the raw data? -// Returns: -// A uint8_t containing the contents of the swing state. +/// Get the requested swing operation mode of the A/C unit. +/// @param[in] raw Do we need to get it from first principles from the raw data? +/// @return The contents of the swing state/mode. uint8_t IRFujitsuAC::getSwing(const bool raw) { if (raw) _swingMode = GETBITS8(remote_state[10], kHighNibble, kFujitsuAcSwingSize); return _swingMode; } +/// Set the Clean mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRFujitsuAC::setClean(const bool on) { _clean = on; this->setCmd(kFujitsuAcCmdStayOn); // No special command involved. } +/// Get the Clean mode status of the A/C. +/// @param[in] raw Do we get the result from base data? +/// @return true, the setting is on. false, the setting is off. bool IRFujitsuAC::getClean(const bool raw) { if (raw) { return GETBIT8(remote_state[9], kFujitsuAcCleanOffset); @@ -473,11 +507,16 @@ bool IRFujitsuAC::getClean(const bool raw) { } } +/// Set the Filter mode status of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRFujitsuAC::setFilter(const bool on) { _filter = on; this->setCmd(kFujitsuAcCmdStayOn); // No special command involved. } +/// Get the Filter mode status of the A/C. +/// @param[in] raw Do we get the result from base data? +/// @return true, the setting is on. false, the setting is off. bool IRFujitsuAC::getFilter(const bool raw) { if (raw) { return GETBIT8(remote_state[14], kFujitsuAcFilterOffset); @@ -489,6 +528,10 @@ bool IRFujitsuAC::getFilter(const bool raw) { } } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRFujitsuAC::validChecksum(uint8_t state[], const uint16_t length) { uint8_t sum = 0; uint8_t sum_complement = 0; @@ -510,7 +553,9 @@ bool IRFujitsuAC::validChecksum(uint8_t state[], const uint16_t length) { return checksum == (uint8_t)(sum_complement - sum); // Does it match? } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRFujitsuAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kFujitsuAcModeCool; @@ -521,7 +566,9 @@ uint8_t IRFujitsuAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRFujitsuAC::convertFan(stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kFujitsuAcFanQuiet; @@ -533,7 +580,9 @@ uint8_t IRFujitsuAC::convertFan(stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRFujitsuAC::toCommonMode(const uint8_t mode) { switch (mode) { case kFujitsuAcModeCool: return stdAc::opmode_t::kCool; @@ -544,7 +593,9 @@ stdAc::opmode_t IRFujitsuAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRFujitsuAC::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kFujitsuAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -555,7 +606,8 @@ stdAc::fanspeed_t IRFujitsuAC::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRFujitsuAC::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::FUJITSU_AC; @@ -597,7 +649,8 @@ stdAc::state_t IRFujitsuAC::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRFujitsuAC::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -680,21 +733,15 @@ String IRFujitsuAC::toString(void) { } #if DECODE_FUJITSU_AC -// Decode a Fujitsu AC IR message if possible. -// Places successful decode information in the results pointer. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kFujitsuAcBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. -// -// Ref: -// +/// Decode the supplied Fujitsu AC IR message if possible. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeFujitsuAC(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Fujitsu.h b/lib/IRremoteESP8266-2.7.8/src/ir_Fujitsu.h similarity index 86% rename from lib/IRremoteESP8266-2.7.7/src/ir_Fujitsu.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Fujitsu.h index 17e791ac8..0c1069566 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Fujitsu.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Fujitsu.h @@ -1,13 +1,17 @@ // Copyright 2017 Jonny Graham // Copyright 2018-2019 David Conran +/// @file +/// @brief Support for Fujitsu A/C protocols. +/// Fujitsu A/C support added by Jonny Graham + // Supports: // Brand: Fujitsu, Model: AR-RAH2E remote -// Brand: Fujitsu, Model: ASYG30LFCA A/C +// Brand: Fujitsu, Model: ASYG30LFCA A/C (ARRAH2E) // Brand: Fujitsu, Model: AR-DB1 remote -// Brand: Fujitsu, Model: AST9RSGCW A/C +// Brand: Fujitsu, Model: AST9RSGCW A/C (ARDB1) // Brand: Fujitsu, Model: AR-REB1E remote -// Brand: Fujitsu, Model: ASYG7LMCA A/C +// Brand: Fujitsu, Model: ASYG7LMCA A/C (ARREB1E) // Brand: Fujitsu, Model: AR-RAE1E remote // Brand: Fujitsu, Model: AGTV14LAC A/C // Brand: Fujitsu, Model: AR-RAC1E remote @@ -32,7 +36,6 @@ #include "IRsend_test.h" #endif -// FUJITSU A/C support added by Jonny Graham // Constants const uint8_t kFujitsuAcModeAuto = 0x00; @@ -94,19 +97,22 @@ const uint8_t kFujitsuAcFilterOffset = 3; #define FUJITSU_AC_SWING_HORIZ kFujitsuAcSwingHoriz #define FUJITSU_AC_SWING_BOTH kFujitsuAcSwingBoth - +/// Class for handling detailed Fujitsu A/C messages. class IRFujitsuAC { public: explicit IRFujitsuAC(const uint16_t pin, const fujitsu_ac_remote_model_t model = ARRAH2E, const bool inverted = false, const bool use_modulation = true); - void setModel(const fujitsu_ac_remote_model_t model); fujitsu_ac_remote_model_t getModel(void); void stateReset(void); #if SEND_FUJITSU_AC void send(const uint16_t repeat = kFujitsuAcMinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_FUJITSU_AC void begin(void); @@ -149,11 +155,13 @@ class IRFujitsuAC { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< Instance of the IR send class #else - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond #endif - uint8_t remote_state[kFujitsuAcStateLength]; + uint8_t remote_state[kFujitsuAcStateLength]; ///< The state of the IR remote. uint8_t _temp; uint8_t _fanSpeed; uint8_t _mode; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_GICable.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_GICable.cpp similarity index 71% rename from lib/IRremoteESP8266-2.7.7/src/ir_GICable.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_GICable.cpp index ef68199cb..7b29d71db 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_GICable.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_GICable.cpp @@ -1,5 +1,12 @@ // Copyright 2018 David Conran -// G.I. Cable + +/// @file +/// @brief G.I. Cable +/// @see https://github.com/cyborg5/IRLib2/blob/master/IRLibProtocols/IRLib_P09_GICable.h +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/447 + +// Supports: +// Brand: G.I. Cable, Model: XRC-200 remote #define __STDC_LIMIT_MACROS #include @@ -8,10 +15,6 @@ #include "IRsend.h" #include "IRutils.h" -// Ref: -// https://github.com/cyborg5/IRLib2/blob/master/IRLibProtocols/IRLib_P09_GICable.h -// https://github.com/crankyoldgit/IRremoteESP8266/issues/447 - // Constants const uint16_t kGicableHdrMark = 9000; const uint16_t kGicableHdrSpace = 4400; @@ -26,17 +29,11 @@ const uint32_t kGicableMinGap = kGicableBits * (kGicableBitMark + kGicableOneSpace) + kGicableBitMark); #if SEND_GICABLE -// Send a raw G.I. Cable formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. -// Typically kGicableBits. -// repeat: The number of times the command is to be repeated. -// -// Status: Alpha / Untested. -// -// Ref: +/// Send a raw G.I. Cable formatted message. +/// Status: Alpha / Untested. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendGICable(uint64_t data, uint16_t nbits, uint16_t repeat) { sendGeneric(kGicableHdrMark, kGicableHdrSpace, kGicableBitMark, kGicableOneSpace, kGicableBitMark, kGicableZeroSpace, @@ -54,18 +51,15 @@ void IRsend::sendGICable(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_GICABLE #if DECODE_GICABLE -// Decode the supplied G.I. Cable message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kGicableBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Alpha / Not tested against a real device. +/// Decode the supplied G.I. Cable message. +/// Status: Alpha / Not tested against a real device. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeGICable(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kGicableBits) diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_GlobalCache.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_GlobalCache.cpp similarity index 65% rename from lib/IRremoteESP8266-2.7.7/src/ir_GlobalCache.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_GlobalCache.cpp index 8c9646970..e8ebac4af 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_GlobalCache.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_GlobalCache.cpp @@ -1,8 +1,13 @@ // Copyright 2016 Hisham Khalifa // Copyright 2017 David Conran -// Global Cache IR format sender originally added by Hisham Khalifa -// (http://www.hishamkhalifa.com) +/// @file +/// @brief Global Cache IR format sender +/// Originally added by Hisham Khalifa (http://www.hishamkhalifa.com) +/// @see https://irdb.globalcache.com/Home/Database + +// Supports: +// Brand: Global Cache, Model: Control Tower IR DB #include #include "IRsend.h" @@ -16,23 +21,17 @@ const uint8_t kGlobalCacheRptStartIndex = kGlobalCacheRptIndex + 1; const uint8_t kGlobalCacheStartIndex = kGlobalCacheRptStartIndex + 1; #if SEND_GLOBALCACHE -// Send a shortened GlobalCache (GC) IRdb/control tower formatted message. -// -// Args: -// buf: An array of uint16_t containing the shortened GlobalCache data. -// len: Nr. of entries in the buf[] array. -// -// Status: STABLE / Known working. -// -// Note: -// Global Cache format without the emitter ID or request ID. -// Starts at the frequency (Hertz), followed by nr. of times to emit (count), -// then the offset for repeats (where a repeat will start from), -// then the rest of entries are the actual IR message as units of periodic -// time. -// e.g. sendir,1:1,1,38000,1,1,9,70,9,30,9,... -> 38000,1,1,9,70,9,30,9,... -// Ref: -// https://irdb.globalcache.com/Home/Database +/// Send a shortened GlobalCache (GC) IRdb/control tower formatted message. +/// Status: STABLE / Known working. +/// @param[in] buf Array of uint16_t containing the shortened GlobalCache data. +/// @param[in] len Nr. of entries in the buf[] array. +/// @note Global Cache format without the emitter ID or request ID. +/// Starts at the frequency (Hertz), followed by nr. of times to emit (count), +/// then the offset for repeats (where a repeat will start from), +/// then the rest of entries are the actual IR message as units of periodic +/// time. +/// e.g. sendir,1:1,1,38000,1,1,9,70,9,30,9,... -> 38000,1,1,9,70,9,30,9,... +/// @see https://irdb.globalcache.com/Home/Database void IRsend::sendGC(uint16_t buf[], uint16_t len) { uint16_t hz = buf[kGlobalCacheFreqIndex]; // GC frequency is in Hz. enableIROut(hz); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Goodweather.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Goodweather.cpp similarity index 74% rename from lib/IRremoteESP8266-2.7.7/src/ir_Goodweather.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Goodweather.cpp index 97a4a9277..290f90ad8 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Goodweather.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Goodweather.cpp @@ -1,10 +1,8 @@ // Copyright 2019 ribeirodanielf // Copyright 2019 David Conran -// -// Code to emulate Goodweather protocol compatible HVAC devices. -// Should be compatible with: -// * ZH/JT-03 remote control -// +/// @file +/// @brief Support for Goodweather compatible HVAC protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/697 #include "ir_Goodweather.h" #include @@ -27,17 +25,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_GOODWEATHER -// Send a Goodweather message. -// -// Args: -// data: The raw message to be sent. -// nbits: Nr. of bits of data in the message. (Default is kGoodweatherBits) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: BETA / Needs testing on real device. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/697 +/// Send a Goodweather HVAC formatted message. +/// Status: BETA / Needs testing on real device. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendGoodweather(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { if (nbits != kGoodweatherBits) @@ -67,38 +59,57 @@ void IRsend::sendGoodweather(const uint64_t data, const uint16_t nbits, } #endif // SEND_GOODWEATHER +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRGoodweatherAc::IRGoodweatherAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Reset the internal state to a fixed known good state. void IRGoodweatherAc::stateReset(void) { remote = kGoodweatherStateInit; } +/// Set up hardware to be able to send a message. void IRGoodweatherAc::begin(void) { _irsend.begin(); } #if SEND_GOODWEATHER +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRGoodweatherAc::send(const uint16_t repeat) { _irsend.sendGoodweather(remote, kGoodweatherBits, repeat); } #endif // SEND_GOODWEATHER +/// Get a copy of the internal state as a valid code for this protocol. +/// @return A valid code for this protocol based on the current internal state. uint64_t IRGoodweatherAc::getRaw(void) { return remote; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] state A valid code for this protocol. void IRGoodweatherAc::setRaw(const uint64_t state) { remote = state; } +/// Change the power setting to On. void IRGoodweatherAc::on(void) { this->setPower(true); } +/// Change the power setting to Off. void IRGoodweatherAc::off(void) { this->setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGoodweatherAc::setPower(const bool on) { this->setCommand(kGoodweatherCmdPower); setBit(&remote, kGoodweatherBitPower, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRGoodweatherAc::getPower(void) { return GETBIT64(remote, kGoodweatherBitPower); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRGoodweatherAc::setTemp(const uint8_t temp) { uint8_t new_temp = std::max(kGoodweatherTempMin, temp); new_temp = std::min(kGoodweatherTempMax, new_temp); @@ -108,13 +119,15 @@ void IRGoodweatherAc::setTemp(const uint8_t temp) { new_temp - kGoodweatherTempMin); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRGoodweatherAc::getTemp(void) { return GETBITS64(remote, kGoodweatherBitTemp, kGoodweatherTempSize) + kGoodweatherTempMin; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRGoodweatherAc::setFan(const uint8_t speed) { switch (speed) { case kGoodweatherFanAuto: @@ -129,10 +142,14 @@ void IRGoodweatherAc::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRGoodweatherAc::getFan() { return GETBITS64(remote, kGoodweatherBitFan, kGoodweatherFanSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRGoodweatherAc::setMode(const uint8_t mode) { switch (mode) { case kGoodweatherAuto: @@ -149,37 +166,53 @@ void IRGoodweatherAc::setMode(const uint8_t mode) { } } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRGoodweatherAc::getMode() { return GETBITS64(remote, kGoodweatherBitMode, kModeBitsSize); } +/// Set the Light (LED) Toggle setting of the A/C. +/// @param[in] toggle true, the setting is on. false, the setting is off. void IRGoodweatherAc::setLight(const bool toggle) { this->setCommand(kGoodweatherCmdLight); setBit(&remote, kGoodweatherBitLight, toggle); } -bool IRGoodweatherAc::getLight() { +/// Get the Light (LED) Toggle setting of the A/C. +/// @return true, the setting is on. false, the setting is off. +bool IRGoodweatherAc::getLight(void) { return GETBIT64(remote, kGoodweatherBitLight); } +/// Set the Sleep Toggle setting of the A/C. +/// @param[in] toggle true, the setting is on. false, the setting is off. void IRGoodweatherAc::setSleep(const bool toggle) { this->setCommand(kGoodweatherCmdSleep); setBit(&remote, kGoodweatherBitSleep, toggle); } -bool IRGoodweatherAc::getSleep() { +/// Get the Sleep Toggle setting of the A/C. +/// @return true, the setting is on. false, the setting is off. +bool IRGoodweatherAc::getSleep(void) { return GETBIT64(remote, kGoodweatherBitSleep); } +/// Set the Turbo Toggle setting of the A/C. +/// @param[in] toggle true, the setting is on. false, the setting is off. void IRGoodweatherAc::setTurbo(const bool toggle) { this->setCommand(kGoodweatherCmdTurbo); setBit(&remote, kGoodweatherBitTurbo, toggle); } -bool IRGoodweatherAc::getTurbo() { +/// Get the Turbo Toggle setting of the A/C. +/// @return true, the setting is on. false, the setting is off. +bool IRGoodweatherAc::getTurbo(void) { return GETBIT64(remote, kGoodweatherBitTurbo); } +/// Set the Vertical Swing speed of the A/C. +/// @param[in] speed The speed to set the swing to. void IRGoodweatherAc::setSwing(const uint8_t speed) { switch (speed) { case kGoodweatherSwingOff: @@ -193,20 +226,28 @@ void IRGoodweatherAc::setSwing(const uint8_t speed) { } } +/// Get the Vertical Swing speed of the A/C. +/// @return The native swing speed setting. uint8_t IRGoodweatherAc::getSwing() { return GETBITS64(remote, kGoodweatherBitSwing, kGoodweatherSwingSize); } +/// Set the remote Command type/button pressed. +/// @param[in] cmd The command/button that was issued/pressed. void IRGoodweatherAc::setCommand(const uint8_t cmd) { if (cmd <= kGoodweatherCmdLight) setBits(&remote, kGoodweatherBitCommand, kGoodweatherCommandSize, cmd); } +/// Get the Command type/button pressed from the current settings +/// @return The command/button that was issued/pressed. uint8_t IRGoodweatherAc::getCommand() { return GETBITS64(remote, kGoodweatherBitCommand, kGoodweatherCommandSize); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRGoodweatherAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kGoodweatherCool; @@ -217,7 +258,9 @@ uint8_t IRGoodweatherAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRGoodweatherAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -229,7 +272,9 @@ uint8_t IRGoodweatherAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C Vertical Swing into its native version. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] swingv The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRGoodweatherAc::convertSwingV(const stdAc::swingv_t swingv) { switch (swingv) { case stdAc::swingv_t::kHighest: @@ -242,7 +287,9 @@ uint8_t IRGoodweatherAc::convertSwingV(const stdAc::swingv_t swingv) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRGoodweatherAc::toCommonMode(const uint8_t mode) { switch (mode) { case kGoodweatherCool: return stdAc::opmode_t::kCool; @@ -253,7 +300,9 @@ stdAc::opmode_t IRGoodweatherAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRGoodweatherAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kGoodweatherFanHigh: return stdAc::fanspeed_t::kMax; @@ -263,7 +312,8 @@ stdAc::fanspeed_t IRGoodweatherAc::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRGoodweatherAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::GOODWEATHER; @@ -289,7 +339,8 @@ stdAc::state_t IRGoodweatherAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRGoodweatherAc::toString(void) { String result = ""; result.reserve(150); // Reserve some heap for the string to reduce fragging. @@ -366,18 +417,15 @@ String IRGoodweatherAc::toString(void) { } #if DECODE_GOODWEATHER -// Decode the supplied Goodweather message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kGoodweatherBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Probably works. +/// Decode the supplied Goodweather message. +/// Status: BETA / Probably works. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeGoodweather(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Goodweather.h b/lib/IRremoteESP8266-2.7.8/src/ir_Goodweather.h similarity index 85% rename from lib/IRremoteESP8266-2.7.7/src/ir_Goodweather.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Goodweather.h index 7e1d6115d..1fd5579cf 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Goodweather.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Goodweather.h @@ -1,8 +1,10 @@ -// Goodweather A/C -// // Copyright 2019 ribeirodanielf // Copyright 2019 David Conran +/// @file +/// @brief Support for Goodweather compatible HVAC protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/697 + // Supports: // Brand: Goodweather, Model: ZH/JT-03 remote @@ -20,11 +22,8 @@ #include "IRsend_test.h" #endif -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/697 // Constants - // Timing const uint16_t kGoodweatherBitMark = 580; const uint16_t kGoodweatherOneSpace = 580; @@ -87,14 +86,18 @@ const uint64_t kGoodweatherStateInit = 0xD50000000000; // Classes +/// Class for handling detailed Goodweather A/C messages. class IRGoodweatherAc { public: explicit IRGoodweatherAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_GOODWEATHER void send(const uint16_t repeat = kGoodweatherMinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_GOODWEATHER void begin(void); @@ -130,10 +133,12 @@ class IRGoodweatherAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint64_t remote; // The state of the IR remote in IR code form. + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint64_t remote; ///< The state of the IR remote in IR code form. }; #endif // IR_GOODWEATHER_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Gree.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Gree.cpp similarity index 72% rename from lib/IRremoteESP8266-2.7.7/src/ir_Gree.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Gree.cpp index 66eb3a2f0..d9ff269d5 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Gree.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Gree.cpp @@ -1,11 +1,9 @@ // Copyright 2017 Ville Skyttä (scop) // Copyright 2017, 2018 David Conran -// -// Code to emulate Gree protocol compatible HVAC devices. -// Should be compatible with: -// * Heat pumps carrying the "Ultimate" brand name. -// * EKOKAI air conditioners. -// + +/// @file +/// @brief Support for Gree A/C protocols. +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/GreeHeatpumpIR.h #include "ir_Gree.h" #include @@ -21,9 +19,8 @@ #include "ir_Kelvinator.h" // Constants -// Ref: https://github.com/ToniA/arduino-heatpumpir/blob/master/GreeHeatpumpIR.h const uint16_t kGreeHdrMark = 9000; -const uint16_t kGreeHdrSpace = 4500; // See #684 and real example in unit tests +const uint16_t kGreeHdrSpace = 4500; ///< See #684 & real example in unit tests const uint16_t kGreeBitMark = 620; const uint16_t kGreeOneSpace = 1600; const uint16_t kGreeZeroSpace = 540; @@ -43,18 +40,12 @@ using irutils::setBit; using irutils::setBits; #if SEND_GREE -// Send a Gree Heat Pump message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kGreeStateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: STABLE / Working. -// -// Ref: -// https://github.com/ToniA/arduino-heatpumpir/blob/master/GreeHeatpumpIR.cpp -void IRsend::sendGree(const unsigned char data[], const uint16_t nbytes, +/// Send a Gree Heat Pump formatted message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +void IRsend::sendGree(const uint8_t data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kGreeStateLength) return; // Not enough bytes to send a proper message. @@ -77,17 +68,11 @@ void IRsend::sendGree(const unsigned char data[], const uint16_t nbytes, } } -// Send a Gree Heat Pump message. -// -// Args: -// data: The raw message to be sent. -// nbits: Nr. of bits of data in the message. (Default is kGreeBits) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: STABLE / Working. -// -// Ref: -// https://github.com/ToniA/arduino-heatpumpir/blob/master/GreeHeatpumpIR.cpp +/// Send a Gree Heat Pump formatted message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendGree(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { if (nbits != kGreeBits) @@ -119,6 +104,11 @@ void IRsend::sendGree(const uint64_t data, const uint16_t nbits, } #endif // SEND_GREE +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] model The enum of the model to be emulated. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRGreeAC::IRGreeAC(const uint16_t pin, const gree_ac_remote_model_t model, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { @@ -126,6 +116,7 @@ IRGreeAC::IRGreeAC(const uint16_t pin, const gree_ac_remote_model_t model, setModel(model); } +/// Reset the internal state to a fixed known good state. void IRGreeAC::stateReset(void) { // This resets to a known-good state to Power Off, Fan Auto, Mode Auto, 25C. for (uint8_t i = 0; i < kGreeStateLength; i++) remote_state[i] = 0x0; @@ -136,25 +127,34 @@ void IRGreeAC::stateReset(void) { remote_state[7] = 0x50; } +/// Fix up the internal state so it is correct. +/// @note Internal use only. void IRGreeAC::fixup(void) { setPower(getPower()); // Redo the power bits as they differ between models. checksum(); // Calculate the checksums } +/// Set up hardware to be able to send a message. void IRGreeAC::begin(void) { _irsend.begin(); } #if SEND_GREE +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRGreeAC::send(const uint16_t repeat) { fixup(); // Ensure correct settings before sending. _irsend.sendGree(remote_state, kGreeStateLength, repeat); } #endif // SEND_GREE +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t* IRGreeAC::getRaw(void) { fixup(); // Ensure correct settings before sending. return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRGreeAC::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kGreeStateLength); // We can only detect the difference between models when the power is on. @@ -166,24 +166,26 @@ void IRGreeAC::setRaw(const uint8_t new_code[]) { } } +/// Calculate and set the checksum values for the internal state. +/// @param[in] length The size/length of the state array to fix the checksum of. void IRGreeAC::checksum(const uint16_t length) { // Gree uses the same checksum alg. as Kelvinator's block checksum. setBits(&remote_state[length - 1], kHighNibble, kNibbleSize, IRKelvinatorAC::calcBlockChecksum(remote_state, length)); } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRGreeAC::validChecksum(const uint8_t state[], const uint16_t length) { // Top 4 bits of the last byte in the state is the state's checksum. return GETBITS8(state[length - 1], kHighNibble, kNibbleSize) == IRKelvinatorAC::calcBlockChecksum(state, length); } +/// Set the model of the A/C to emulate. +/// @param[in] model The enum of the appropriate model. void IRGreeAC::setModel(const gree_ac_remote_model_t model) { switch (model) { case gree_ac_remote_model_t::YAW1F: @@ -192,12 +194,19 @@ void IRGreeAC::setModel(const gree_ac_remote_model_t model) { } } +/// Get/Detect the model of the A/C. +/// @return The enum of the compatible model. gree_ac_remote_model_t IRGreeAC::getModel(void) { return _model; } +/// Change the power setting to On. void IRGreeAC::on(void) { setPower(true); } +/// Change the power setting to Off. void IRGreeAC::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/814 void IRGreeAC::setPower(const bool on) { setBit(&remote_state[0], kGreePower1Offset, on); // May not be needed. See #814 @@ -205,6 +214,9 @@ void IRGreeAC::setPower(const bool on) { on && _model != gree_ac_remote_model_t::YBOFB); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/814 bool IRGreeAC::getPower(void) { // See #814. Not checking/requiring: (remote_state[2] & kGreePower2Mask) return GETBIT8(remote_state[0], kGreePower1Offset); @@ -212,7 +224,7 @@ bool IRGreeAC::getPower(void) { /// Set the default temperature units to use. /// @param[in] on Use Fahrenheit as the units. -/// true is Fahrenheit, false is Celsius. +/// true is Fahrenheit, false is Celsius. void IRGreeAC::setUseFahrenheit(const bool on) { setBit(&remote_state[3], kGreeUseFahrenheitOffset, on); } @@ -226,9 +238,9 @@ bool IRGreeAC::getUseFahrenheit(void) { /// Set the temp. in degrees /// @param[in] temp Desired temperature in Degrees. /// @param[in] fahrenheit Use units of Fahrenheit and set that as units used. -/// false is Celsius (Default), true is Fahrenheit. +/// false is Celsius (Default), true is Fahrenheit. /// @note The unit actually works in Celsius with a special optional -/// "extra degree" when sing Fahrenheit. +/// "extra degree" when sending Fahrenheit. void IRGreeAC::setTemp(const uint8_t temp, const bool fahrenheit) { float safecelsius = temp; if (fahrenheit) @@ -252,21 +264,22 @@ void IRGreeAC::setTemp(const uint8_t temp, const bool fahrenheit) { (uint8_t)(safecelsius * 2) & 1); } -/// Return the set temperature +/// Get the set temperature /// @return The temperature in degrees in the current units (C/F) set. uint8_t IRGreeAC::getTemp(void) { uint8_t deg = kGreeMinTempC + GETBITS8(remote_state[1], kGreeTempOffset, kGreeTempSize); if (getUseFahrenheit()) { deg = celsiusToFahrenheit(deg); - // Retreive the "extra" fahrenheit from elsewhere in the code. + // Retrieve the "extra" fahrenheit from elsewhere in the code. if (GETBIT8(remote_state[3], kGreeTempExtraDegreeFOffset)) deg++; deg = std::max(deg, kGreeMinTempF); // Cover the fact that 61F is < 16C } return deg; } -// Set the speed of the fan, 0-3, 0 is auto, 1-3 is the speed +/// Set the speed of the fan. +/// @param[in] speed The desired setting. 0 is auto, 1-3 is the speed. void IRGreeAC::setFan(const uint8_t speed) { uint8_t fan = std::min((uint8_t)kGreeFanMax, speed); // Bounds check if (getMode() == kGreeDry) fan = 1; // DRY mode is always locked to fan 1. @@ -274,10 +287,14 @@ void IRGreeAC::setFan(const uint8_t speed) { setBits(&remote_state[0], kGreeFanOffset, kGreeFanSize, fan); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRGreeAC::getFan(void) { return GETBITS8(remote_state[0], kGreeFanOffset, kGreeFanSize); } +/// Set the operating mode of the A/C. +/// @param[in] new_mode The desired operating mode. void IRGreeAC::setMode(const uint8_t new_mode) { uint8_t mode = new_mode; switch (mode) { @@ -294,58 +311,87 @@ void IRGreeAC::setMode(const uint8_t new_mode) { setBits(&remote_state[0], kLowNibble, kModeBitsSize, mode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRGreeAC::getMode(void) { return GETBITS8(remote_state[0], kLowNibble, kModeBitsSize); } +/// Set the Light (LED) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGreeAC::setLight(const bool on) { setBit(&remote_state[2], kGreeLightOffset, on); } +/// Get the Light (LED) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getLight(void) { return GETBIT8(remote_state[2], kGreeLightOffset); } +/// Set the IFeel setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGreeAC::setIFeel(const bool on) { setBit(&remote_state[5], kGreeIFeelOffset, on); } +/// Get the IFeel setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getIFeel(void) { return GETBIT8(remote_state[5], kGreeIFeelOffset); } +/// Set the Wifi (enabled) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGreeAC::setWiFi(const bool on) { setBit(&remote_state[5], kGreeWiFiOffset, on); } +/// Get the Wifi (enabled) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getWiFi(void) { return GETBIT8(remote_state[5], kGreeWiFiOffset); } +/// Set the XFan (Mould) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGreeAC::setXFan(const bool on) { setBit(&remote_state[2], kGreeXfanOffset, on); } +/// Get the XFan (Mould) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getXFan(void) { return GETBIT8(remote_state[2], kGreeXfanOffset); } +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGreeAC::setSleep(const bool on) { setBit(&remote_state[0], kGreeSleepOffset, on); } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getSleep(void) { return GETBIT8(remote_state[0], kGreeSleepOffset); } +/// Set the Turbo setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGreeAC::setTurbo(const bool on) { setBit(&remote_state[2], kGreeTurboOffset, on); } +/// Get the Turbo setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getTurbo(void) { return GETBIT8(remote_state[2], kGreeTurboOffset); } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] automatic Do we use the automatic setting? +/// @param[in] position The position/mode to set the vanes to. void IRGreeAC::setSwingVertical(const bool automatic, const uint8_t position) { setBit(&remote_state[0], kGreeSwingAutoOffset, automatic); uint8_t new_position = position; @@ -374,23 +420,32 @@ void IRGreeAC::setSwingVertical(const bool automatic, const uint8_t position) { setBits(&remote_state[4], kLowNibble, kGreeSwingSize, new_position); } +/// Get the Vertical Swing Automatic mode setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getSwingVerticalAuto(void) { return GETBIT8(remote_state[0], kGreeSwingAutoOffset); } +/// Get the Vertical Swing position setting of the A/C. +/// @return The native position/mode. uint8_t IRGreeAC::getSwingVerticalPosition(void) { return GETBITS8(remote_state[4], kLowNibble, kGreeSwingSize); } +/// Set the timer enable setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRGreeAC::setTimerEnabled(const bool on) { setBit(&remote_state[1], kGreeTimerEnabledOffset, on); } +/// Get the timer enabled setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRGreeAC::getTimerEnabled(void) { return GETBIT8(remote_state[1], kGreeTimerEnabledOffset); } -// Returns the number of minutes the timer is set for. +/// Get the timer time value from the A/C. +/// @return The number of minutes the timer is set for. uint16_t IRGreeAC::getTimer(void) { uint16_t hrs = irutils::bcdToUint8( (GETBITS8(remote_state[1], kGreeTimerTensHrOffset, @@ -399,12 +454,10 @@ uint16_t IRGreeAC::getTimer(void) { return hrs * 60 + (GETBIT8(remote_state[1], kGreeTimerHalfHrOffset) ? 30 : 0); } -// Set the A/C's timer to turn off in X many minutes. -// Stores time internally in 30 min units. -// e.g. 5 mins means 0 (& Off), 95 mins is 90 mins (& On). Max is 24 hours. -// -// Args: -// minutes: The number of minutes the timer should be set for. +/// Set the A/C's timer to turn off in X many minutes. +/// @param[in] minutes The number of minutes the timer should be set for. +/// @note Stores time internally in 30 min units. +/// e.g. 5 mins means 0 (& Off), 95 mins is 90 mins (& On). Max is 24 hours. void IRGreeAC::setTimer(const uint16_t minutes) { uint16_t mins = std::min(kGreeTimerMax, minutes); // Bounds check. setTimerEnabled(mins >= 30); // Timer is enabled when >= 30 mins. @@ -423,16 +476,17 @@ void IRGreeAC::setTimer(const uint16_t minutes) { /// i.e. Internal, External temperature sensing. /// @param[in] mode The desired temp source to display. /// @note In order for the A/C unit properly accept these settings. You must -/// cycle (send) in the following order: -/// kGreeDisplayTempOff(0) -> kGreeDisplayTempSet(1) -> -/// kGreeDisplayTempInside(2) ->kGreeDisplayTempOutside(3) -> -/// kGreeDisplayTempOff(0). -/// The unit will no behave correctly if the changes of this setting are sent -/// out of order. -/// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1118#issuecomment-628242152 +/// cycle (send) in the following order: +/// kGreeDisplayTempOff(0) -> kGreeDisplayTempSet(1) -> +/// kGreeDisplayTempInside(2) ->kGreeDisplayTempOutside(3) -> +/// kGreeDisplayTempOff(0). +/// The unit will no behave correctly if the changes of this setting are sent +/// out of order. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1118#issuecomment-628242152 void IRGreeAC::setDisplayTempSource(const uint8_t mode) { setBits(&remote_state[5], kGreeDisplayTempOffset, kGreeDisplayTempSize, mode); } + /// Get the temperature display mode. /// i.e. Internal, External temperature sensing. /// @return The current temp source being displayed. @@ -441,7 +495,9 @@ uint8_t IRGreeAC::getDisplayTempSource(void) { kGreeDisplayTempSize); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRGreeAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kGreeCool; @@ -452,7 +508,9 @@ uint8_t IRGreeAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRGreeAC::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kGreeFanMin; @@ -464,7 +522,9 @@ uint8_t IRGreeAC::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C Vertical Swing into its native version. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] swingv The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRGreeAC::convertSwingV(const stdAc::swingv_t swingv) { switch (swingv) { case stdAc::swingv_t::kHighest: return kGreeSwingUp; @@ -476,7 +536,9 @@ uint8_t IRGreeAC::convertSwingV(const stdAc::swingv_t swingv) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRGreeAC::toCommonMode(const uint8_t mode) { switch (mode) { case kGreeCool: return stdAc::opmode_t::kCool; @@ -487,7 +549,9 @@ stdAc::opmode_t IRGreeAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRGreeAC::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kGreeFanMax: return stdAc::fanspeed_t::kMax; @@ -497,7 +561,9 @@ stdAc::fanspeed_t IRGreeAC::toCommonFanSpeed(const uint8_t speed) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] pos The enum to be converted. +/// @return The native equivilant of the enum. stdAc::swingv_t IRGreeAC::toCommonSwingV(const uint8_t pos) { switch (pos) { case kGreeSwingUp: return stdAc::swingv_t::kHighest; @@ -509,7 +575,8 @@ stdAc::swingv_t IRGreeAC::toCommonSwingV(const uint8_t pos) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRGreeAC::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::GREE; @@ -537,7 +604,8 @@ stdAc::state_t IRGreeAC::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRGreeAC::toString(void) { String result = ""; result.reserve(220); // Reserve some heap for the string to reduce fragging. @@ -593,18 +661,15 @@ String IRGreeAC::toString(void) { } #if DECODE_GREE -// Decode the supplied Gree message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kGreeBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. +/// Decode the supplied Gree HVAC message. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeGree(decode_results* results, uint16_t offset, const uint16_t nbits, bool const strict) { if (results->rawlen <= diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Gree.h b/lib/IRremoteESP8266-2.7.8/src/ir_Gree.h similarity index 89% rename from lib/IRremoteESP8266-2.7.7/src/ir_Gree.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Gree.h index 4748c4769..8fb74aa7f 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Gree.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Gree.h @@ -1,6 +1,9 @@ // Copyright 2016 David Conran -// Gree A/C -// + +/// @file +/// @brief Support for Gree A/C protocols. +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/GreeHeatpumpIR.h + // Supports: // Brand: Ultimate, Model: Heat Pump // Brand: EKOKAI, Model: A/C @@ -110,16 +113,20 @@ const uint8_t kGreeDisplayTempOutside = 0b11; // 3 #define GREE_SWING_UP_AUTO kGreeSwingUpAuto // Classes +/// Class for handling detailed Gree A/C messages. class IRGreeAC { public: explicit IRGreeAC( const uint16_t pin, const gree_ac_remote_model_t model = gree_ac_remote_model_t::YAW1F, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_GREE void send(const uint16_t repeat = kGreeDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_GREE void begin(void); @@ -171,12 +178,13 @@ class IRGreeAC { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< Instance of the IR send class #else // UNIT_TEST - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond #endif // UNIT_TEST - // The state of the IR remote in IR code form. - uint8_t remote_state[kGreeStateLength]; + uint8_t remote_state[kGreeStateLength]; ///< The state in native IR code form gree_ac_remote_model_t _model; void checksum(const uint16_t length = kGreeStateLength); void fixup(void); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Haier.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Haier.cpp similarity index 71% rename from lib/IRremoteESP8266-2.7.7/src/ir_Haier.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Haier.cpp index cac4320cf..5f2172696 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Haier.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Haier.cpp @@ -1,8 +1,13 @@ // Copyright 2018 crankyoldgit -// Code to emulate Haier protocol compatible devices. -// The specifics of reverse engineering the protocols details: -// * HSU07-HEA03 by kuzin2006. -// * YR-W02/HSU-09HMC203 by non7top. +/// @file +/// @brief Support for Haier A/C protocols. +/// The specifics of reverse engineering the protocols details: +/// * HSU07-HEA03 by kuzin2006. +/// * YR-W02/HSU-09HMC203 by non7top. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/404 +/// @see https://www.dropbox.com/s/mecyib3lhdxc8c6/IR%20data%20reverse%20engineering.xlsx?dl=0 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/485 +/// @see https://www.dropbox.com/sh/w0bt7egp0fjger5/AADRFV6Wg4wZskJVdFvzb8Z0a?dl=0&preview=haer2.ods #include "ir_Haier.h" #include @@ -13,17 +18,6 @@ #include "IRtext.h" #include "IRutils.h" -// Supported devices: -// * Haier HSU07-HEA03 Remote control. -// * Haier YR-W02 Remote control -// * Haier HSU-09HMC203 A/C unit. - -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/404 -// https://www.dropbox.com/s/mecyib3lhdxc8c6/IR%20data%20reverse%20engineering.xlsx?dl=0 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/485 -// https://www.dropbox.com/sh/w0bt7egp0fjger5/AADRFV6Wg4wZskJVdFvzb8Z0a?dl=0&preview=haer2.ods - // Constants const uint16_t kHaierAcHdr = 3000; const uint16_t kHaierAcHdrGap = 4300; @@ -43,15 +37,11 @@ using irutils::setBit; using irutils::setBits; #if (SEND_HAIER_AC || SEND_HAIER_AC_YRW02) -// Send a Haier A/C message. (HSU07-HEA03 remote) -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kHaierACStateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: STABLE / Known to be working. -// +/// Send a Haier A/C formatted message. (HSU07-HEA03 remote) +/// Status: STABLE / Known to be working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendHaierAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kHaierACStateLength) return; @@ -70,43 +60,51 @@ void IRsend::sendHaierAC(const unsigned char data[], const uint16_t nbytes, #endif // (SEND_HAIER_AC || SEND_HAIER_AC_YRW02) #if SEND_HAIER_AC_YRW02 -// Send a Haier YR-W02 remote A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kHaierACYRW02StateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: Alpha / Untested on a real device. -// +/// Send a Haier YR-W02 remote A/C formatted message. +/// Status: Alpha / Untested on a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendHaierACYRW02(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes >= kHaierACYRW02StateLength) sendHaierAC(data, nbytes, repeat); } #endif // SEND_HAIER_AC_YRW02 -// Class for emulating a Haier HSU07-HEA03 remote +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRHaierAC::IRHaierAC(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRHaierAC::begin(void) { _irsend.begin(); } #if SEND_HAIER_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRHaierAC::send(const uint16_t repeat) { _irsend.sendHaierAC(getRaw(), kHaierACStateLength, repeat); } #endif // SEND_HAIER_AC +/// Calculate and set the checksum values for the internal state. void IRHaierAC::checksum(void) { remote_state[8] = sumBytes(remote_state, kHaierACStateLength - 1); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRHaierAC::validChecksum(uint8_t state[], const uint16_t length) { if (length < 2) return false; // 1 byte of data can't have a checksum. return (state[length - 1] == sumBytes(state, length - 1)); } +/// Reset the internal state to a fixed known good state. void IRHaierAC::stateReset(void) { for (uint8_t i = 1; i < kHaierACStateLength; i++) remote_state[i] = 0x0; remote_state[0] = kHaierAcPrefix; @@ -120,15 +118,21 @@ void IRHaierAC::stateReset(void) { setCommand(kHaierAcCmdOn); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t* IRHaierAC::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRHaierAC::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kHaierACStateLength); } +/// Set the Command/Button setting of the A/C. +/// @param[in] command The value of the command/button that was pressed. void IRHaierAC::setCommand(const uint8_t command) { switch (command) { case kHaierAcCmdOff: @@ -146,10 +150,14 @@ void IRHaierAC::setCommand(const uint8_t command) { } } +/// Get the Command/Button setting of the A/C. +/// @return The value of the command/button that was pressed. uint8_t IRHaierAC::getCommand(void) { return GETBITS8(remote_state[1], kLowNibble, kNibbleSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRHaierAC::setFan(const uint8_t speed) { uint8_t new_speed = kHaierAcFanAuto; switch (speed) { @@ -164,6 +172,8 @@ void IRHaierAC::setFan(const uint8_t speed) { setBits(&remote_state[5], kLowNibble, kHaierAcSwingSize, new_speed); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRHaierAC::getFan(void) { switch (GETBITS8(remote_state[5], kLowNibble, kHaierAcSwingSize)) { case 1: return kHaierAcFanMed; @@ -173,6 +183,8 @@ uint8_t IRHaierAC::getFan(void) { } } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRHaierAC::setMode(uint8_t mode) { uint8_t new_mode = mode; setCommand(kHaierAcCmdMode); @@ -181,10 +193,14 @@ void IRHaierAC::setMode(uint8_t mode) { setBits(&remote_state[6], kHaierAcModeOffset, kModeBitsSize, new_mode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRHaierAC::getMode(void) { return GETBITS8(remote_state[6], kHaierAcModeOffset, kModeBitsSize); } +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRHaierAC::setTemp(const uint8_t degrees) { uint8_t temp = degrees; if (temp < kHaierAcMinTemp) @@ -201,33 +217,47 @@ void IRHaierAC::setTemp(const uint8_t degrees) { setBits(&remote_state[1], kHighNibble, kNibbleSize, temp - kHaierAcMinTemp); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRHaierAC::getTemp(void) { return GETBITS8(remote_state[1], kHighNibble, kNibbleSize) + kHaierAcMinTemp; } +/// Set the Health (filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHaierAC::setHealth(const bool on) { setCommand(kHaierAcCmdHealth); setBit(&remote_state[4], kHaierAcHealthBitOffset, on); } +/// Get the Health (filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHaierAC::getHealth(void) { return GETBIT8(remote_state[4], kHaierAcHealthBitOffset); } +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHaierAC::setSleep(const bool on) { setCommand(kHaierAcCmdSleep); setBit(&remote_state[7], kHaierAcSleepBitOffset, on); } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHaierAC::getSleep(void) { return GETBIT8(remote_state[7], kHaierAcSleepBitOffset); } +/// Get the Time value at the given pointer. +/// @param[in] ptr A Ptr to a location in the internal state to get the time. uint16_t IRHaierAC::getTime(const uint8_t ptr[]) { return GETBITS8(ptr[0], kHaierAcTimeOffset, kHaierAcHoursSize) * 60 + GETBITS8(ptr[1], kHaierAcTimeOffset, kHaierAcMinsSize); } +/// Get the On Timer value/setting of the A/C. +/// @return Nr of minutes the timer is set to. -1 is Off/not set etc. int16_t IRHaierAC::getOnTimer(void) { // Check if the timer is turned on. if (GETBIT8(remote_state[3], kHaierAcOnTimerOffset)) @@ -236,6 +266,8 @@ int16_t IRHaierAC::getOnTimer(void) { return -1; } +/// Get the Off Timer value/setting of the A/C. +/// @return Nr of minutes the timer is set to. -1 is Off/not set etc. int16_t IRHaierAC::getOffTimer(void) { // Check if the timer is turned on. if (GETBIT8(remote_state[3], kHaierAcOffTimerOffset)) @@ -244,8 +276,13 @@ int16_t IRHaierAC::getOffTimer(void) { return -1; } +/// Get the clock value of the A/C. +/// @return The clock time, in Nr of minutes past midnight. uint16_t IRHaierAC::getCurrTime(void) { return getTime(remote_state + 2); } +/// Set the Time value at the given pointer. +/// @param[out] ptr A Ptr to a location in the internal state to set the time. +/// @param[in] nr_mins The time expressed in total number of minutes. void IRHaierAC::setTime(uint8_t ptr[], const uint16_t nr_mins) { uint16_t mins = nr_mins; if (nr_mins > kHaierAcMaxTime) mins = kHaierAcMaxTime; @@ -253,31 +290,42 @@ void IRHaierAC::setTime(uint8_t ptr[], const uint16_t nr_mins) { setBits(ptr + 1, kHaierAcTimeOffset, kHaierAcMinsSize, mins % 60); // Minutes } +/// Set & enable the On Timer. +/// @param[in] nr_mins The time expressed in total number of minutes. void IRHaierAC::setOnTimer(const uint16_t nr_mins) { setCommand(kHaierAcCmdTimerSet); setBit(&remote_state[3], kHaierAcOnTimerOffset); setTime(remote_state + 6, nr_mins); } +/// Set & enable the Off Timer. +/// @param[in] nr_mins The time expressed in total number of minutes. void IRHaierAC::setOffTimer(const uint16_t nr_mins) { setCommand(kHaierAcCmdTimerSet); setBit(&remote_state[3], kHaierAcOffTimerOffset); setTime(remote_state + 4, nr_mins); } +/// Cancel/disable the On & Off timers. void IRHaierAC::cancelTimers(void) { setCommand(kHaierAcCmdTimerCancel); setBits(&remote_state[3], kHaierAcOffTimerOffset, 2, 0); } +/// Set the clock value for the A/C. +/// @param[in] nr_mins The clock time, in Nr of minutes past midnight. void IRHaierAC::setCurrTime(const uint16_t nr_mins) { setTime(remote_state + 2, nr_mins); } +/// Get the Vertical Swing position setting of the A/C. +/// @return The native swing mode. uint8_t IRHaierAC::getSwing(void) { return GETBITS8(remote_state[2], kHaierAcSwingOffset, kHaierAcSwingSize); } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] cmd The mode to set the vanes to. void IRHaierAC::setSwing(const uint8_t cmd) { if (cmd == getSwing()) return; // Nothing to do. switch (cmd) { @@ -291,7 +339,9 @@ void IRHaierAC::setSwing(const uint8_t cmd) { } } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHaierAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kHaierAcCool; @@ -302,7 +352,9 @@ uint8_t IRHaierAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHaierAC::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -314,7 +366,9 @@ uint8_t IRHaierAC::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHaierAC::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: @@ -327,7 +381,9 @@ uint8_t IRHaierAC::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRHaierAC::toCommonMode(const uint8_t mode) { switch (mode) { case kHaierAcCool: return stdAc::opmode_t::kCool; @@ -338,7 +394,9 @@ stdAc::opmode_t IRHaierAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRHaierAC::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kHaierAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -348,7 +406,9 @@ stdAc::fanspeed_t IRHaierAC::toCommonFanSpeed(const uint8_t speed) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] pos The enum to be converted. +/// @return The native equivilant of the enum. stdAc::swingv_t IRHaierAC::toCommonSwingV(const uint8_t pos) { switch (pos) { case kHaierAcSwingUp: return stdAc::swingv_t::kHighest; @@ -358,7 +418,8 @@ stdAc::swingv_t IRHaierAC::toCommonSwingV(const uint8_t pos) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRHaierAC::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::HAIER_AC; @@ -384,7 +445,8 @@ stdAc::state_t IRHaierAC::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRHaierAC::toString(void) { String result = ""; result.reserve(150); // Reserve some heap for the string to reduce fragging. @@ -469,29 +531,41 @@ String IRHaierAC::toString(void) { } // End of IRHaierAC class. -// Class for emulating a Haier YRW02 remote +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRHaierACYRW02::IRHaierACYRW02(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRHaierACYRW02::begin(void) { _irsend.begin(); } #if SEND_HAIER_AC_YRW02 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRHaierACYRW02::send(const uint16_t repeat) { _irsend.sendHaierACYRW02(getRaw(), kHaierACYRW02StateLength, repeat); } #endif // SEND_HAIER_AC_YRW02 +/// Calculate and set the checksum values for the internal state. void IRHaierACYRW02::checksum(void) { remote_state[kHaierACYRW02StateLength - 1] = sumBytes(remote_state, kHaierACYRW02StateLength - 1); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRHaierACYRW02::validChecksum(uint8_t state[], const uint16_t length) { if (length < 2) return false; // 1 byte of data can't have a checksum. return (state[length - 1] == sumBytes(state, length - 1)); } +/// Reset the internal state to a fixed known good state. void IRHaierACYRW02::stateReset(void) { for (uint8_t i = 1; i < kHaierACYRW02StateLength; i++) remote_state[i] = 0x0; remote_state[0] = kHaierAcYrw02Prefix; @@ -506,15 +580,21 @@ void IRHaierACYRW02::stateReset(void) { setPower(true); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t* IRHaierACYRW02::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRHaierACYRW02::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kHaierACYRW02StateLength); } +/// Set the Button/Command setting of the A/C. +/// @param[in] button The value of the button/command that was pressed. void IRHaierACYRW02::setButton(uint8_t button) { switch (button) { case kHaierAcYrw02ButtonTempUp: @@ -530,10 +610,14 @@ void IRHaierACYRW02::setButton(uint8_t button) { } } +/// Get the Button/Command setting of the A/C. +/// @return The value of the button/command that was pressed. uint8_t IRHaierACYRW02::getButton(void) { return GETBITS8(remote_state[12], kLowNibble, kNibbleSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRHaierACYRW02::setMode(uint8_t mode) { uint8_t new_mode = mode; setButton(kHaierAcYrw02ButtonMode); @@ -548,10 +632,14 @@ void IRHaierACYRW02::setMode(uint8_t mode) { setBits(&remote_state[7], kHaierAcYrw02ModeOffset, kModeBitsSize, new_mode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRHaierACYRW02::getMode(void) { return GETBITS8(remote_state[7], kHaierAcYrw02ModeOffset, kModeBitsSize); } +/// Set the temperature. +/// @param[in] celsius The temperature in degrees celsius. void IRHaierACYRW02::setTemp(const uint8_t celsius) { uint8_t temp = celsius; if (temp < kHaierAcMinTemp) @@ -568,46 +656,68 @@ void IRHaierACYRW02::setTemp(const uint8_t celsius) { setBits(&remote_state[1], kHighNibble, kNibbleSize, temp - kHaierAcMinTemp); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRHaierACYRW02::getTemp(void) { return GETBITS8(remote_state[1], kHighNibble, kNibbleSize) + kHaierAcMinTemp; } +/// Set the Health (filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHaierACYRW02::setHealth(const bool on) { setButton(kHaierAcYrw02ButtonHealth); setBit(&remote_state[3], kHaierAcYrw02HealthOffset, on); } +/// Get the Health (filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHaierACYRW02::getHealth(void) { return GETBIT8(remote_state[3], kHaierAcYrw02HealthOffset); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRHaierACYRW02::getPower(void) { return GETBIT8(remote_state[4], kHaierAcYrw02PowerOffset); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHaierACYRW02::setPower(const bool on) { setButton(kHaierAcYrw02ButtonPower); setBit(&remote_state[4], kHaierAcYrw02PowerOffset, on); } +/// Change the power setting to On. void IRHaierACYRW02::on(void) { setPower(true); } +/// Change the power setting to Off. void IRHaierACYRW02::off(void) { setPower(false); } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHaierACYRW02::getSleep(void) { return GETBIT8(remote_state[8], kHaierAcYrw02SleepOffset); } +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHaierACYRW02::setSleep(const bool on) { setButton(kHaierAcYrw02ButtonSleep); setBit(&remote_state[8], kHaierAcYrw02SleepOffset, on); } +/// Get the Turbo setting of the A/C. +/// @return The current turbo speed setting. uint8_t IRHaierACYRW02::getTurbo(void) { return GETBITS8(remote_state[6], kHaierAcYrw02TurboOffset, kHaierAcYrw02TurboSize); } +/// Set the Turbo setting of the A/C. +/// @param[in] speed The desired turbo speed setting. +/// @note Valid speeds are kHaierAcYrw02TurboOff, kHaierAcYrw02TurboLow, & +/// kHaierAcYrw02TurboHigh. void IRHaierACYRW02::setTurbo(uint8_t speed) { switch (speed) { case kHaierAcYrw02TurboOff: @@ -619,11 +729,15 @@ void IRHaierACYRW02::setTurbo(uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRHaierACYRW02::getFan(void) { return GETBITS8(remote_state[5], kHaierAcYrw02FanOffset, kHaierAcYrw02FanSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRHaierACYRW02::setFan(uint8_t speed) { switch (speed) { case kHaierAcYrw02FanLow: @@ -636,10 +750,14 @@ void IRHaierACYRW02::setFan(uint8_t speed) { } } +/// Get the Vertical Swing position setting of the A/C. +/// @return The native position/mode. uint8_t IRHaierACYRW02::getSwing(void) { return GETBITS8(remote_state[1], kLowNibble, kNibbleSize); } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] pos The position/mode to set the vanes to. void IRHaierACYRW02::setSwing(uint8_t pos) { uint8_t newpos = pos; switch (pos) { @@ -660,7 +778,9 @@ void IRHaierACYRW02::setSwing(uint8_t pos) { setBits(&remote_state[1], kLowNibble, kNibbleSize, newpos); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHaierACYRW02::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kHaierAcYrw02Cool; @@ -671,7 +791,9 @@ uint8_t IRHaierACYRW02::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHaierACYRW02::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -683,7 +805,9 @@ uint8_t IRHaierACYRW02::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHaierACYRW02::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: @@ -696,7 +820,9 @@ uint8_t IRHaierACYRW02::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRHaierACYRW02::toCommonMode(const uint8_t mode) { switch (mode) { case kHaierAcYrw02Cool: return stdAc::opmode_t::kCool; @@ -707,7 +833,9 @@ stdAc::opmode_t IRHaierACYRW02::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRHaierACYRW02::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kHaierAcYrw02FanHigh: return stdAc::fanspeed_t::kMax; @@ -717,7 +845,9 @@ stdAc::fanspeed_t IRHaierACYRW02::toCommonFanSpeed(const uint8_t speed) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] pos The enum to be converted. +/// @return The native equivilant of the enum. stdAc::swingv_t IRHaierACYRW02::toCommonSwingV(const uint8_t pos) { switch (pos) { case kHaierAcYrw02SwingTop: return stdAc::swingv_t::kHighest; @@ -729,7 +859,8 @@ stdAc::swingv_t IRHaierACYRW02::toCommonSwingV(const uint8_t pos) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRHaierACYRW02::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::HAIER_AC_YRW02; @@ -754,7 +885,8 @@ stdAc::state_t IRHaierACYRW02::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRHaierACYRW02::toString(void) { String result = ""; result.reserve(130); // Reserve some heap for the string to reduce fragging. @@ -849,19 +981,15 @@ String IRHaierACYRW02::toString(void) { // End of IRHaierACYRW02 class. #if (DECODE_HAIER_AC || DECODE_HAIER_AC_YRW02) -// Decode the supplied Haier HSU07-HEA03 remote message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kHaierACBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Known to be working. -// +/// Decode the supplied Haier HSU07-HEA03 remote message. +/// Status: STABLE / Known to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeHaierAC(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict) { @@ -899,19 +1027,15 @@ bool IRrecv::decodeHaierAC(decode_results* results, uint16_t offset, #endif // (DECODE_HAIER_AC || DECODE_HAIER_AC_YRW02) #if DECODE_HAIER_AC_YRW02 -// Decode the supplied Haier YR-W02 remote A/C message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kHaierACYRW02Bits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Appears to be working. -// +/// Decode the supplied Haier YR-W02 remote A/C message. +/// Status: BETA / Appears to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeHaierACYRW02(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict) { diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Haier.h b/lib/IRremoteESP8266-2.7.8/src/ir_Haier.h similarity index 83% rename from lib/IRremoteESP8266-2.7.7/src/ir_Haier.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Haier.h index 92eb3b05c..e1dd84e15 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Haier.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Haier.h @@ -1,10 +1,18 @@ // Copyright 2018 crankyoldgit -// The specifics of reverse engineering the protocol details by kuzin2006 +/// @file +/// @brief Support for Haier A/C protocols. +/// The specifics of reverse engineering the protocols details: +/// * HSU07-HEA03 by kuzin2006. +/// * YR-W02/HSU-09HMC203 by non7top. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/404 +/// @see https://www.dropbox.com/s/mecyib3lhdxc8c6/IR%20data%20reverse%20engineering.xlsx?dl=0 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/485 +/// @see https://www.dropbox.com/sh/w0bt7egp0fjger5/AADRFV6Wg4wZskJVdFvzb8Z0a?dl=0&preview=haer2.ods // Supports: -// Brand: Haier, Model: HSU07-HEA03 remote -// Brand: Haier, Model: YR-W02 remote -// Brand: Haier, Model: HSU-09HMC203 A/C +// Brand: Haier, Model: HSU07-HEA03 remote (HAIER_AC) +// Brand: Haier, Model: YR-W02 remote (HAIER_AC_YRW02) +// Brand: Haier, Model: HSU-09HMC203 A/C (HAIER_AC_YRW02) #ifndef IR_HAIER_H_ #define IR_HAIER_H_ @@ -18,12 +26,6 @@ #include "IRsend_test.h" #endif -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/404 -// https://www.dropbox.com/s/mecyib3lhdxc8c6/IR%20data%20reverse%20engineering.xlsx?dl=0 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/485 -// https://www.dropbox.com/sh/w0bt7egp0fjger5/AADRFV6Wg4wZskJVdFvzb8Z0a?dl=0&preview=haer2.ods - // Constants // Haier HSU07-HEA03 remote @@ -210,13 +212,18 @@ const uint8_t kHaierAcYrw02ButtonSleep = 0xB; #define HAIER_AC_YRW02_BUTTON_TURBO kHaierAcYrw02ButtonTurbo #define HAIER_AC_YRW02_BUTTON_SLEEP kHaierAcYrw02ButtonSleep +// Classes +/// Class for handling detailed Haier A/C messages. class IRHaierAC { public: explicit IRHaierAC(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - #if SEND_HAIER_AC void send(const uint16_t repeat = kHaierAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_HAIER_AC void begin(void); @@ -265,24 +272,31 @@ class IRHaierAC { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond #endif - uint8_t remote_state[kHaierACStateLength]; + uint8_t remote_state[kHaierACStateLength]; ///< The state in native code form void stateReset(void); void checksum(void); static uint16_t getTime(const uint8_t ptr[]); static void setTime(uint8_t ptr[], const uint16_t nr_mins); }; +/// Class for handling detailed Haier ACYRW02 A/C messages. class IRHaierACYRW02 { public: explicit IRHaierACYRW02(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - #if SEND_HAIER_AC_YRW02 void send(const uint16_t repeat = kHaierAcYrw02DefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_HAIER_AC_YRW02 void begin(void); @@ -312,7 +326,7 @@ class IRHaierACYRW02 { void setTurbo(const uint8_t speed); uint8_t getSwing(void); - void setSwing(const uint8_t state); + void setSwing(const uint8_t pos); uint8_t* getRaw(void); void setRaw(const uint8_t new_code[]); @@ -329,13 +343,14 @@ class IRHaierACYRW02 { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kHaierACYRW02StateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kHaierACYRW02StateLength]; ///< The state in native form void stateReset(void); void checksum(void); }; - #endif // IR_HAIER_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Hitachi.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Hitachi.cpp similarity index 60% rename from lib/IRremoteESP8266-2.7.7/src/ir_Hitachi.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Hitachi.cpp index 01cc49d28..368f9995a 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Hitachi.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Hitachi.cpp @@ -1,9 +1,12 @@ // Copyright 2018-2019 David Conran -// -// Code to emulate Hitachi protocol compatible devices. -// Should be compatible with: -// * Hitachi RAS-35THA6 remote -// +/// @file +/// @brief Support for Hitachi A/C protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/417 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/453 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/973 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1056 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1060 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1134 #include "ir_Hitachi.h" #include @@ -18,7 +21,6 @@ #include "IRutils.h" // Constants -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/417 const uint16_t kHitachiAcHdrMark = 3300; const uint16_t kHitachiAcHdrSpace = 1700; const uint16_t kHitachiAc1HdrMark = 3400; @@ -28,7 +30,6 @@ const uint16_t kHitachiAcOneSpace = 1250; const uint16_t kHitachiAcZeroSpace = 500; const uint32_t kHitachiAcMinGap = kDefaultMessageGap; // Just a guess. // Support for HitachiAc424 protocol -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/973 const uint16_t kHitachiAc424LdrMark = 29784; // Leader const uint16_t kHitachiAc424LdrSpace = 49290; // Leader const uint16_t kHitachiAc424HdrMark = 3416; // Header @@ -38,7 +39,6 @@ const uint16_t kHitachiAc424OneSpace = 1208; const uint16_t kHitachiAc424ZeroSpace = 372; // Support for HitachiAc3 protocol -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1060 const uint16_t kHitachiAc3HdrMark = 3400; // Header const uint16_t kHitachiAc3HdrSpace = 1660; // Header const uint16_t kHitachiAc3BitMark = 460; @@ -56,45 +56,34 @@ using irutils::minsToString; using irutils::setBit; using irutils::setBits; -#if (SEND_HITACHI_AC || SEND_HITACHI_AC2) -// Send a Hitachi A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kHitachiAcStateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: STABLE / Working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/417 +#if (SEND_HITACHI_AC || SEND_HITACHI_AC2 || SEND_HITACHI_AC344) +/// Send a Hitachi 28-byte/224-bit A/C formatted message. (HITACHI_AC) +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/417 void IRsend::sendHitachiAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kHitachiAcStateLength) return; // Not enough bytes to send a proper message. + + const bool MSBfirst = (nbytes == kHitachiAc344StateLength) ? false : true; sendGeneric(kHitachiAcHdrMark, kHitachiAcHdrSpace, kHitachiAcBitMark, kHitachiAcOneSpace, kHitachiAcBitMark, kHitachiAcZeroSpace, - kHitachiAcBitMark, kHitachiAcMinGap, data, nbytes, 38, true, + kHitachiAcBitMark, kHitachiAcMinGap, data, nbytes, 38, MSBfirst, repeat, 50); } -#endif // (SEND_HITACHI_AC || SEND_HITACHI_AC2) +#endif // (SEND_HITACHI_AC || SEND_HITACHI_AC2 || SEND_HITACHI_AC344) #if SEND_HITACHI_AC1 -// Send a Hitachi A/C 13-byte message. -// -// For devices: -// Hitachi A/C Series VI (Circa 2007) / Remote: LT0541-HTA -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kHitachiAc1StateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: STABLE / Confirmed Working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/453 -// Basically the same as sendHitatchiAC() except different size and header. +/// Send a Hitachi 13 byte/224-bit A/C formatted message. (HITACHI_AC1) +/// Status: STABLE / Confirmed Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Basically the same as sendHitatchiAC() except different size & header. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/453 void IRsend::sendHitachiAC1(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kHitachiAc1StateLength) @@ -107,21 +96,12 @@ void IRsend::sendHitachiAC1(const unsigned char data[], const uint16_t nbytes, #endif // SEND_HITACHI_AC1 #if SEND_HITACHI_AC2 -// Send a Hitachi A/C 53-byte message. -// -// For devices: -// Hitachi A/C Series VI (Circa 2007) / Remote: LT0541-HTA -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kHitachiAc2StateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: STABLE / Expected to work. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/417 -// Basically the same as sendHitatchiAC() except different size. +/// Send a Hitachi 53 byte/424-bit A/C formatted message. (HITACHI_AC2) +/// Basically the same as sendHitatchiAC() except different size. +/// Status: STABLE / Expected to work. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendHitachiAC2(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kHitachiAc2StateLength) @@ -130,14 +110,31 @@ void IRsend::sendHitachiAC2(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_HITACHI_AC2 -// Class for handling the remote control on a Hitachi 28 byte A/C message. -// Inspired by: -// https://github.com/ToniA/arduino-heatpumpir/blob/master/HitachiHeatpumpIR.cpp +#if SEND_HITACHI_AC344 +/// Send a Hitachi A/C 43-byte/344-bit message. (HITACHI_AC344) +/// Basically the same as sendHitatchiAC() except different size. +/// Status: Beta / Probably works. +/// @param[in] data An array of bytes containing the IR command. +/// @param[in] nbytes Nr. of bytes of data in the array. +/// @param[in] repeat Nr. of times the message is to be repeated. (Default = 0). +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1134 +void IRsend::sendHitachiAc344(const unsigned char data[], const uint16_t nbytes, + const uint16_t repeat) { + if (nbytes < kHitachiAc344StateLength) + return; // Not enough bytes to send a proper message. + sendHitachiAC(data, nbytes, repeat); +} +#endif // SEND_HITACHI_AC344 +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRHitachiAc::IRHitachiAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Reset the internal state to a fixed known good state. void IRHitachiAc::stateReset(void) { remote_state[0] = 0x80; remote_state[1] = 0x08; @@ -156,8 +153,13 @@ void IRHitachiAc::stateReset(void) { setTemp(23); } +/// Set up hardware to be able to send a message. void IRHitachiAc::begin(void) { _irsend.begin(); } +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @param[in] length The size/length of the state. +/// @return The calculated checksum value. uint8_t IRHitachiAc::calcChecksum(const uint8_t state[], const uint16_t length) { uint8_t sum = 62; @@ -165,44 +167,67 @@ uint8_t IRHitachiAc::calcChecksum(const uint8_t state[], return reverseBits(sum, 8); } +/// Calculate and set the checksum values for the internal state. +/// @param[in] length The size/length of the state. void IRHitachiAc::checksum(const uint16_t length) { remote_state[length - 1] = calcChecksum(remote_state, length); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRHitachiAc::validChecksum(const uint8_t state[], const uint16_t length) { if (length < 2) return true; // Assume true for lengths that are too short. return (state[length - 1] == calcChecksum(state, length)); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRHitachiAc::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length of the new_code array. void IRHitachiAc::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kHitachiAcStateLength)); } #if SEND_HITACHI_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRHitachiAc::send(const uint16_t repeat) { _irsend.sendHitachiAC(getRaw(), kHitachiAcStateLength, repeat); } #endif // SEND_HITACHI_AC +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc::getPower(void) { return GETBIT8(remote_state[17], kHitachiAcPowerOffset); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc::setPower(const bool on) { setBit(&remote_state[17], kHitachiAcPowerOffset, on); } +/// Change the power setting to On. void IRHitachiAc::on(void) { setPower(true); } +/// Change the power setting to Off. void IRHitachiAc::off(void) { setPower(false); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRHitachiAc::getMode(void) { return reverseBits(remote_state[10], 8); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRHitachiAc::setMode(const uint8_t mode) { uint8_t newmode = mode; switch (mode) { @@ -219,10 +244,14 @@ void IRHitachiAc::setMode(const uint8_t mode) { setFan(getFan()); // Reset the fan speed after the mode change. } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRHitachiAc::getTemp(void) { return reverseBits(remote_state[11], 8) >> 1; } +/// Set the temperature. +/// @param[in] celsius The temperature in degrees celsius. void IRHitachiAc::setTemp(const uint8_t celsius) { uint8_t temp; if (celsius != 64) _previoustemp = celsius; @@ -241,8 +270,12 @@ void IRHitachiAc::setTemp(const uint8_t celsius) { remote_state[9] = 0x10; } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRHitachiAc::getFan(void) { return reverseBits(remote_state[13], 8); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRHitachiAc::setFan(const uint8_t speed) { uint8_t fanmin = kHitachiAcFanAuto; uint8_t fanmax = kHitachiAcFanHigh; @@ -260,23 +293,33 @@ void IRHitachiAc::setFan(const uint8_t speed) { remote_state[13] = reverseBits(newspeed, 8); } +/// Get the Vertical Swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc::getSwingVertical(void) { return GETBIT8(remote_state[14], kHitachiAcSwingOffset); } +/// Set the Vertical Swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc::setSwingVertical(const bool on) { setBit(&remote_state[14], kHitachiAcSwingOffset, on); } +/// Get the Horizontal Swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc::getSwingHorizontal(void) { return GETBIT8(remote_state[15], kHitachiAcSwingOffset); } +/// Set the Horizontal Swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc::setSwingHorizontal(const bool on) { setBit(&remote_state[15], kHitachiAcSwingOffset, on); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHitachiAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kHitachiAcCool; @@ -287,7 +330,9 @@ uint8_t IRHitachiAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHitachiAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -299,7 +344,9 @@ uint8_t IRHitachiAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRHitachiAc::toCommonMode(const uint8_t mode) { switch (mode) { case kHitachiAcCool: return stdAc::opmode_t::kCool; @@ -310,7 +357,9 @@ stdAc::opmode_t IRHitachiAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRHitachiAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kHitachiAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -321,7 +370,8 @@ stdAc::fanspeed_t IRHitachiAc::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRHitachiAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::HITACHI_AC; @@ -348,7 +398,8 @@ stdAc::state_t IRHitachiAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRHitachiAc::toString(void) { String result = ""; result.reserve(110); // Reserve some heap for the string to reduce fragging. @@ -364,14 +415,15 @@ String IRHitachiAc::toString(void) { return result; } -// Class for handling the remote control on a Hitachi 13 byte A/C message. -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1056 - +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRHitachiAc1::IRHitachiAc1(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Reset the internal state to a fixed known good state. void IRHitachiAc1::stateReset(void) { for (uint8_t i = 0; i < kHitachiAc1StateLength; i++) remote_state[i] = 0x00; // Copy in a known good state. @@ -386,8 +438,13 @@ void IRHitachiAc1::stateReset(void) { remote_state[12] = 0x24; } +/// Set up hardware to be able to send a message. void IRHitachiAc1::begin(void) { _irsend.begin(); } +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @param[in] length The size/length of the state. +/// @return The calculated checksum value. uint8_t IRHitachiAc1::calcChecksum(const uint8_t state[], const uint16_t length) { uint8_t sum = 0; @@ -400,25 +457,38 @@ uint8_t IRHitachiAc1::calcChecksum(const uint8_t state[], return reverseBits(sum, 8); } +/// Calculate and set the checksum values for the internal state. +/// @param[in] length The size/length of the state. void IRHitachiAc1::checksum(const uint16_t length) { remote_state[length - 1] = calcChecksum(remote_state, length); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRHitachiAc1::validChecksum(const uint8_t state[], const uint16_t length) { if (length < 2) return true; // Assume true for lengths that are too short. return (state[length - 1] == calcChecksum(state, length)); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRHitachiAc1::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length of the new_code array. void IRHitachiAc1::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kHitachiAc1StateLength)); } #if SEND_HITACHI_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRHitachiAc1::send(const uint16_t repeat) { _irsend.sendHitachiAC1(getRaw(), kHitachiAc1StateLength, repeat); // Clear the toggle bits as we have actioned them by sending them. @@ -427,6 +497,8 @@ void IRHitachiAc1::send(const uint16_t repeat) { } #endif // SEND_HITACHI_AC +/// Get/Detect the model of the A/C. +/// @return The enum of the compatible model. hitachi_ac1_remote_model_t IRHitachiAc1::getModel(void) { switch (GETBITS8(remote_state[kHitachiAc1ModelByte], kHitachiAc1ModelOffset, kHitachiAc1ModelSize)) { @@ -435,6 +507,8 @@ hitachi_ac1_remote_model_t IRHitachiAc1::getModel(void) { } } +/// Set the model of the A/C to emulate. +/// @param[in] model The enum of the appropriate model. void IRHitachiAc1::setModel(const hitachi_ac1_remote_model_t model) { uint8_t value = 0; switch (model) { @@ -448,34 +522,48 @@ void IRHitachiAc1::setModel(const hitachi_ac1_remote_model_t model) { kHitachiAc1ModelSize, value); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc1::getPower(void) { return GETBIT8(remote_state[kHitachiAc1PowerByte], kHitachiAc1PowerOffset); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc1::setPower(const bool on) { // If the power changes, set the power toggle bit. if (on != getPower()) setPowerToggle(true); setBit(&remote_state[kHitachiAc1PowerByte], kHitachiAc1PowerOffset, on); } +/// Get the value of the current power toggle setting. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc1::getPowerToggle(void) { return GETBIT8(remote_state[kHitachiAc1PowerByte], kHitachiAc1PowerToggleOffset); } +/// Change the power toggle setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc1::setPowerToggle(const bool on) { setBit(&remote_state[kHitachiAc1PowerByte], kHitachiAc1PowerToggleOffset, on); } +/// Change the power setting to On. void IRHitachiAc1::on(void) { setPower(true); } +/// Change the power setting to Off. void IRHitachiAc1::off(void) { setPower(false); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRHitachiAc1::getMode(void) { return GETBITS8(remote_state[kHitachiAc1ModeByte], kHitachiAc1ModeOffset, kHitachiAc1ModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRHitachiAc1::setMode(const uint8_t mode) { switch (mode) { case kHitachiAc1Auto: @@ -500,12 +588,16 @@ void IRHitachiAc1::setMode(const uint8_t mode) { } } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRHitachiAc1::getTemp(void) { return reverseBits(GETBITS8(remote_state[kHitachiAc1TempByte], kHitachiAc1TempOffset, kHitachiAc1TempSize), kHitachiAc1TempSize) + kHitachiAc1TempDelta; } +/// Set the temperature. +/// @param[in] celsius The temperature in degrees celsius. void IRHitachiAc1::setTemp(const uint8_t celsius) { if (getMode() == kHitachiAc1Auto) return; // Can't change temp in Auto mode. uint8_t temp = std::min(celsius, kHitachiAcMaxTemp); @@ -516,11 +608,16 @@ void IRHitachiAc1::setTemp(const uint8_t celsius) { kHitachiAc1TempSize, temp); } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRHitachiAc1::getFan(void) { return GETBITS8(remote_state[kHitachiAc1FanByte], kHitachiAc1FanOffset, kHitachiAc1FanSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. +/// @param[in] force Do we allow setting the speed regardless of restrictions? void IRHitachiAc1::setFan(const uint8_t speed, const bool force) { if (!force) { switch (getMode()) { @@ -549,39 +646,56 @@ void IRHitachiAc1::setFan(const uint8_t speed, const bool force) { } } +/// Get the Swing Toggle setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc1::getSwingToggle(void) { return GETBIT8(remote_state[kHitachiAc1SwingByte], kHitachiAc1SwingToggleOffset); } +/// Set the Swing toggle setting of the A/C. +/// @param[in] toggle true, the setting is on. false, the setting is off. void IRHitachiAc1::setSwingToggle(const bool toggle) { setBit(&remote_state[kHitachiAc1SwingByte], kHitachiAc1SwingToggleOffset, toggle); } +/// Get the Vertical Swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc1::getSwingV(void) { return GETBIT8(remote_state[kHitachiAc1SwingByte], kHitachiAc1SwingVOffset); } +/// Set the Vertical Swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc1::setSwingV(const bool on) { setBit(&remote_state[kHitachiAc1SwingByte], kHitachiAc1SwingVOffset, on); } +/// Get the Horizontal Swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc1::getSwingH(void) { return GETBIT8(remote_state[kHitachiAc1SwingByte], kHitachiAc1SwingHOffset); } +/// Set the Horizontal Swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc1::setSwingH(const bool on) { setBit(&remote_state[kHitachiAc1SwingByte], kHitachiAc1SwingHOffset, on); } +/// Get the Sleep setting of the A/C. +/// @return The currently configured sleep mode. +/// @note Sleep modes only available in Auto & Cool modes, otherwise it's off. uint8_t IRHitachiAc1::getSleep(void) { return GETBITS8(remote_state[kHitachiAc1SleepByte], kHitachiAc1SleepOffset, kHitachiAc1SleepSize); } +/// Set the Sleep setting of the A/C. +/// @param[in] mode The mode of sleep to set the A/C to. +/// @note Sleep modes only available in Auto & Cool modes, otherwise it's off. void IRHitachiAc1::setSleep(const uint8_t mode) { - // Sleep modes only available in Auto & Cool modes, otherwise it's off. switch (getMode()) { case kHitachiAc1Auto: case kHitachiAc1Cool: @@ -594,31 +708,41 @@ void IRHitachiAc1::setSleep(const uint8_t mode) { } } +/// Set the On Timer time. +/// @param[in] mins The time expressed in total number of minutes. void IRHitachiAc1::setOnTimer(const uint16_t mins) { const uint16_t mins_lsb = reverseBits(mins, kHitachiAc1TimerSize); remote_state[kHitachiAc1OnTimerLowByte] = GETBITS16(mins_lsb, 8, 8); remote_state[kHitachiAc1OnTimerHighByte] = GETBITS16(mins_lsb, 0, 8); } +/// Get the On Timer vtime of the A/C. +/// @return Nr of minutes the timer is set to. uint16_t IRHitachiAc1::getOnTimer(void) { return reverseBits( (remote_state[kHitachiAc1OnTimerLowByte] << 8) | remote_state[kHitachiAc1OnTimerHighByte], kHitachiAc1TimerSize); } +/// Set the Off Timer time. +/// @param[in] mins The time expressed in total number of minutes. void IRHitachiAc1::setOffTimer(const uint16_t mins) { const uint16_t mins_lsb = reverseBits(mins, kHitachiAc1TimerSize); remote_state[kHitachiAc1OffTimerLowByte] = GETBITS16(mins_lsb, 8, 8); remote_state[kHitachiAc1OffTimerHighByte] = GETBITS16(mins_lsb, 0, 8); } +/// Get the Off Timer vtime of the A/C. +/// @return Nr of minutes the timer is set to. uint16_t IRHitachiAc1::getOffTimer(void) { return reverseBits( (remote_state[kHitachiAc1OffTimerLowByte] << 8) | remote_state[kHitachiAc1OffTimerHighByte], kHitachiAc1TimerSize); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHitachiAc1::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kHitachiAc1Cool; @@ -629,7 +753,9 @@ uint8_t IRHitachiAc1::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHitachiAc1::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -641,7 +767,9 @@ uint8_t IRHitachiAc1::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRHitachiAc1::toCommonMode(const uint8_t mode) { switch (mode) { case kHitachiAc1Cool: return stdAc::opmode_t::kCool; @@ -652,7 +780,9 @@ stdAc::opmode_t IRHitachiAc1::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRHitachiAc1::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kHitachiAc1FanHigh: return stdAc::fanspeed_t::kMax; @@ -662,7 +792,8 @@ stdAc::fanspeed_t IRHitachiAc1::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRHitachiAc1::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::HITACHI_AC1; @@ -689,7 +820,8 @@ stdAc::state_t IRHitachiAc1::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRHitachiAc1::toString(void) { String result = ""; result.reserve(170); // Reserve some heap for the string to reduce fragging. @@ -716,29 +848,26 @@ String IRHitachiAc1::toString(void) { return result; } -#if (DECODE_HITACHI_AC || DECODE_HITACHI_AC1 || DECODE_HITACHI_AC2) -// Decode the supplied Hitachi A/C message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. -// Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Expected to work. -// -// Supported devices: -// Hitachi A/C Series VI (Circa 2007) / Remote: LT0541-HTA -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/417 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/453 +#if (DECODE_HITACHI_AC || DECODE_HITACHI_AC1 || DECODE_HITACHI_AC2 || \ + DECODE_HITACHI_AC344) +/// Decode the supplied Hitachi A/C message. +/// Status: STABLE / Expected to work. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, +/// kHitachiAc344Bits +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @param[in] MSBfirst Is the data per byte stored in MSB First (true) or +/// LSB First order(false)? +/// @return True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/417 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/453 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1134 bool IRrecv::decodeHitachiAC(decode_results *results, uint16_t offset, - const uint16_t nbits, const bool strict) { + const uint16_t nbits, const bool strict, + const bool MSBfirst) { const uint8_t k_tolerance = _tolerance + 5; if (strict) { @@ -746,6 +875,7 @@ bool IRrecv::decodeHitachiAC(decode_results *results, uint16_t offset, case kHitachiAcBits: case kHitachiAc1Bits: case kHitachiAc2Bits: + case kHitachiAc344Bits: break; // Okay to continue. default: return false; // Not strictly a Hitachi message. @@ -767,7 +897,7 @@ bool IRrecv::decodeHitachiAC(decode_results *results, uint16_t offset, kHitachiAcBitMark, kHitachiAcOneSpace, kHitachiAcBitMark, kHitachiAcZeroSpace, kHitachiAcBitMark, kHitachiAcMinGap, true, - k_tolerance)) return false; + k_tolerance, kMarkExcess, MSBfirst)) return false; // Compliance if (strict) { @@ -777,19 +907,26 @@ bool IRrecv::decodeHitachiAC(decode_results *results, uint16_t offset, if (nbits / 8 == kHitachiAc1StateLength && !IRHitachiAc1::validChecksum(results->state, kHitachiAc1StateLength)) return false; + if (nbits / 8 == kHitachiAc344StateLength && + !IRHitachiAc3::hasInvertedStates(results->state, + kHitachiAc344StateLength)) + return false; } // Success switch (nbits) { case kHitachiAc1Bits: - results->decode_type = HITACHI_AC1; + results->decode_type = decode_type_t::HITACHI_AC1; break; case kHitachiAc2Bits: - results->decode_type = HITACHI_AC2; + results->decode_type = decode_type_t::HITACHI_AC2; + break; + case kHitachiAc344Bits: + results->decode_type = decode_type_t::HITACHI_AC344; break; case kHitachiAcBits: default: - results->decode_type = HITACHI_AC; + results->decode_type = decode_type_t::HITACHI_AC; } results->bits = nbits; // No need to record the state as we stored it as we decoded it. @@ -797,22 +934,18 @@ bool IRrecv::decodeHitachiAC(decode_results *results, uint16_t offset, // is a union data type. return true; } -#endif // (DECODE_HITACHI_AC || DECODE_HITACHI_AC1 || DECODE_HITACHI_AC2) +#endif // (DECODE_HITACHI_AC || DECODE_HITACHI_AC1 || DECODE_HITACHI_AC2 || + // DECODE_HITACHI_AC344) #if SEND_HITACHI_AC424 -// Send HITACHI_AC424 messages -// -// Note: This protocol is almost exactly the same as HitachiAC2 except this -// variant has a leader section as well, and subtle timing differences. -// It is also in LSBF order (per byte), rather than MSBF order. -// -// Args: -// data: An array of bytes containing the IR command. -// It is assumed to be in LSBF order for this code. -// nbytes: Nr. of bytes of data in the array. (>=kHitachiAc424StateLength) -// repeat: Nr. of times the message is to be repeated. -// -// Status: STABLE / Reported as working. +/// Send a Hitachi 53-byte/424-bit A/C formatted message. (HITACHI_AC424) +/// Status: STABLE / Reported as working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol is almost exactly the same as HitachiAC2 except this +/// variant has a leader section as well, and subtle timing differences. +/// It is also in LSBF order (per byte), rather than MSBF order. void IRsend::sendHitachiAc424(const uint8_t data[], const uint16_t nbytes, const uint16_t repeat) { enableIROut(kHitachiAcFreq); @@ -832,30 +965,19 @@ void IRsend::sendHitachiAc424(const uint8_t data[], const uint16_t nbytes, #endif // SEND_HITACHI_AC424 #if DECODE_HITACHI_AC424 -// Decode the supplied Hitachi 424 bit A/C message. -// -// Note: This protocol is almost exactly the same as HitachiAC2 except this -// variant has a leader section as well, and subtle timing differences. -// It is also in LSBF order (per byte), rather than MSBF order. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kHitachiAc424Bits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Reported as working. -// -// Supported devices: -// Hitachi Shirokumakun / AC Model: RAS-AJ25H / AC Remote Model: RAR-8P2 -// Manual (Japanese): -// https://kadenfan.hitachi.co.jp/support/raj/item/docs/ras_aj22h_a_tori.pdf -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/973 +/// Decode the supplied Hitachi 53-byte/424-bit A/C message. +/// Status: STABLE / Reported as working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note This protocol is almost exactly the same as HitachiAC2 except this +/// variant has a leader section as well, and subtle timing differences. +/// It is also in LSBF order (per byte), rather than MSBF order. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/973 +/// @see (Japanese Manual) https://kadenfan.hitachi.co.jp/support/raj/item/docs/ras_aj22h_a_tori.pdf bool IRrecv::decodeHitachiAc424(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { @@ -889,12 +1011,16 @@ bool IRrecv::decodeHitachiAc424(decode_results *results, uint16_t offset, } #endif // DECODE_HITACHI_AC424 -// Class for handling the remote control on a Hitachi_AC424 53 byte A/C message +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRHitachiAc424::IRHitachiAc424(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } -// Reset to auto fan, cooling, 23° Celcius +/// Reset the internal state to a fixed known good state. +/// @note Reset to auto fan, cooling, 23° Celsius void IRHitachiAc424::stateReset(void) { for (uint8_t i = 0; i < kHitachiAc424StateLength; i++) remote_state[i] = 0x00; @@ -919,46 +1045,65 @@ void IRHitachiAc424::stateReset(void) { setFan(kHitachiAc424FanAuto); } +/// Update the internal consistency check for the protocol. void IRHitachiAc424::setInvertedStates(void) { for (uint8_t i = 3; i < kHitachiAc424StateLength - 1; i += 2) remote_state[i + 1] = ~remote_state[i]; } +/// Set up hardware to be able to send a message. void IRHitachiAc424::begin(void) { _irsend.begin(); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRHitachiAc424::getRaw(void) { setInvertedStates(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length of the new_code array. void IRHitachiAc424::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kHitachiAc424StateLength)); } #if SEND_HITACHI_AC424 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRHitachiAc424::send(const uint16_t repeat) { _irsend.sendHitachiAc424(getRaw(), kHitachiAc424StateLength, repeat); } #endif // SEND_HITACHI_AC424 +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc424::getPower(void) { return remote_state[kHitachiAc424PowerByte] == kHitachiAc424PowerOn; } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRHitachiAc424::setPower(const bool on) { setButton(kHitachiAc424ButtonPowerMode); remote_state[kHitachiAc424PowerByte] = on ? kHitachiAc424PowerOn : kHitachiAc424PowerOff; } +/// Change the power setting to On. void IRHitachiAc424::on(void) { setPower(true); } +/// Change the power setting to Off. void IRHitachiAc424::off(void) { setPower(false); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRHitachiAc424::getMode(void) { return GETBITS8(remote_state[kHitachiAc424ModeByte], kLowNibble, kNibbleSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRHitachiAc424::setMode(const uint8_t mode) { uint8_t newMode = mode; switch (mode) { @@ -976,11 +1121,16 @@ void IRHitachiAc424::setMode(const uint8_t mode) { setButton(kHitachiAc424ButtonPowerMode); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRHitachiAc424::getTemp(void) { return GETBITS8(remote_state[kHitachiAc424TempByte], kHitachiAc424TempOffset, kHitachiAc424TempSize); } +/// Set the temperature. +/// @param[in] celsius The temperature in degrees celsius. +/// @param[in] setPrevious true, remember this if we change mode. false, don't. void IRHitachiAc424::setTemp(const uint8_t celsius, bool setPrevious) { uint8_t temp; temp = std::min(celsius, kHitachiAc424MaxTemp); @@ -994,10 +1144,14 @@ void IRHitachiAc424::setTemp(const uint8_t celsius, bool setPrevious) { if (setPrevious) _previoustemp = temp; } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRHitachiAc424::getFan(void) { return GETBITS8(remote_state[kHitachiAc424FanByte], kHighNibble, kNibbleSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRHitachiAc424::setFan(const uint8_t speed) { uint8_t newSpeed = std::max(speed, kHitachiAc424FanMin); uint8_t fanMax = kHitachiAc424FanMax; @@ -1029,17 +1183,22 @@ void IRHitachiAc424::setFan(const uint8_t speed) { } } +/// Get the Button/Command setting of the A/C. +/// @return The value of the button/command that was pressed. uint8_t IRHitachiAc424::getButton(void) { return remote_state[kHitachiAc424ButtonByte]; } -// The remote sends the type of button pressed on send +/// Set the Button/Command pressed setting of the A/C. +/// @param[in] button The value of the button/command that was pressed. void IRHitachiAc424::setButton(const uint8_t button) { remote_state[kHitachiAc424ButtonByte] = button; } -// The remote does not keep state of the vertical swing. -// A byte is sent indicating the swing button is pressed on the remote +/// Set the Vertical Swing toggle setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note The remote does not keep state of the vertical swing. +/// A byte is sent indicating the swing button is pressed on the remote void IRHitachiAc424::setSwingVToggle(const bool on) { uint8_t button = getButton(); // Get the current button value. if (on) @@ -1050,11 +1209,15 @@ void IRHitachiAc424::setSwingVToggle(const bool on) { setButton(button); } +/// Get the Vertical Swing toggle setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRHitachiAc424::getSwingVToggle(void) { return getButton() == kHitachiAc424ButtonSwingV; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHitachiAc424::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kHitachiAc424Cool; @@ -1065,7 +1228,9 @@ uint8_t IRHitachiAc424::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRHitachiAc424::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kHitachiAc424FanMin; @@ -1077,7 +1242,9 @@ uint8_t IRHitachiAc424::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRHitachiAc424::toCommonMode(const uint8_t mode) { switch (mode) { case kHitachiAc424Cool: return stdAc::opmode_t::kCool; @@ -1088,7 +1255,9 @@ stdAc::opmode_t IRHitachiAc424::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRHitachiAc424::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kHitachiAc424FanMax: return stdAc::fanspeed_t::kMax; @@ -1100,7 +1269,8 @@ stdAc::fanspeed_t IRHitachiAc424::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRHitachiAc424::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::HITACHI_AC424; @@ -1126,8 +1296,10 @@ stdAc::state_t IRHitachiAc424::toCommon(void) { return result; } -// Convert the internal state into a human readable string. -String IRHitachiAc424::toString(void) { +/// Convert the internal state into a human readable string for the settings +/// that are common to protocols of this nature. +/// @return A string containing the common settings in human-readable form. +String IRHitachiAc424::_toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. result += addBoolToString(getPower(), kPowerStr, false); @@ -1147,7 +1319,6 @@ String IRHitachiAc424::toString(void) { default: result += kUnknownStr; } result += ')'; - result += addBoolToString(getSwingVToggle(), kSwingVToggleStr); result += addIntToString(getButton(), kButtonStr); result += kSpaceLBraceStr; switch (getButton()) { @@ -1158,6 +1329,7 @@ String IRHitachiAc424::toString(void) { break; case kHitachiAc424ButtonFan: result += kFanStr; break; case kHitachiAc424ButtonSwingV: result += kSwingVStr; break; + case kHitachiAc344ButtonSwingH: result += kSwingHStr; break; case kHitachiAc424ButtonTempDown: result += kTempDownStr; break; case kHitachiAc424ButtonTempUp: result += kTempUpStr; break; default: result += kUnknownStr; @@ -1166,26 +1338,26 @@ String IRHitachiAc424::toString(void) { return result; } +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. +String IRHitachiAc424::toString(void) { + return _toString() + addBoolToString(getSwingVToggle(), kSwingVToggleStr); +} + #if SEND_HITACHI_AC3 -// Send HITACHI_AC3 messages -// -// Note: This protocol is almost exactly the same as HitachiAC424 except this -// variant has subtle timing differences. -// There are five(5) typical sizes: -// * kHitachiAc3MinStateLength (Cancel Timer) -// * kHitachiAc3MinStateLength + 2 (Change Temp) -// * kHitachiAc3StateLength - 6 (Change Mode) -// * kHitachiAc3StateLength- 4 (Normal) -// * kHitachiAc3StateLength (Set Timer) -// -// Args: -// data: An array of bytes containing the IR command. -// It is assumed to be in LSBF order for this code. -// nbytes: Nr. of bytes of data in the array. -// repeat: Nr. of times the message is to be repeated. -// -// Status: STABLE / Working fine. +/// Send a Hitachi(3) A/C formatted message. (HITACHI_AC3) +/// Status: STABLE / Working fine. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol is almost exactly the same as HitachiAC424 except this +/// variant has subtle timing differences. There are five(5) typical sizes: +/// kHitachiAc3MinStateLength (Cancel Timer), +/// kHitachiAc3MinStateLength + 2 (Change Temp), +/// kHitachiAc3StateLength - 6 (Change Mode), +/// kHitachiAc3StateLength - 4 (Normal), & +/// kHitachiAc3StateLength (Set Timer) void IRsend::sendHitachiAc3(const uint8_t data[], const uint16_t nbytes, const uint16_t repeat) { // Header + Data + Footer @@ -1199,12 +1371,16 @@ void IRsend::sendHitachiAc3(const uint8_t data[], const uint16_t nbytes, #endif // SEND_HITACHI_AC3 -// Class for handling the remote control on a Hitachi_AC3 53 A/C message +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRHitachiAc3::IRHitachiAc3(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } -// Reset to auto fan, cooling, 23° Celcius +/// Reset the internal state to a fixed known good state. +/// @note Reset to auto fan, cooling, 23° Celsius void IRHitachiAc3::stateReset(void) { for (uint8_t i = 0; i < kHitachiAc3StateLength; i++) remote_state[i] = 0x00; @@ -1222,11 +1398,19 @@ void IRHitachiAc3::stateReset(void) { setInvertedStates(); } +/// Invert every second byte of the internal state, after the fixed header. +/// @param[in] length The size of the state array. +/// @note This is this protocols integrity check. void IRHitachiAc3::setInvertedStates(const uint16_t length) { for (uint8_t i = 3; i < length - 1; i += 2) remote_state[i + 1] = ~remote_state[i]; } +/// Check if every second byte of the state, after the fixed header +/// is inverted to the previous byte. +/// @param[in] state The state array to be checked. +/// @param[in] length The size of the state array. +/// @note This is this protocols integrity check. bool IRHitachiAc3::hasInvertedStates(const uint8_t state[], const uint16_t length) { for (uint8_t i = 3; i < length - 1; i += 2) @@ -1234,39 +1418,41 @@ bool IRHitachiAc3::hasInvertedStates(const uint8_t state[], return true; } +/// Set up hardware to be able to send a message. void IRHitachiAc3::begin(void) { _irsend.begin(); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRHitachiAc3::getRaw(void) { setInvertedStates(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length of the new_code array. void IRHitachiAc3::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kHitachiAc3StateLength)); } #if DECODE_HITACHI_AC3 -// Decode the supplied HitachiAc3 A/C message. -// -// Note: This protocol is almost exactly the same as HitachiAC424 except this -// variant has subtle timing differences and multiple lengths. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kHitachiAc3Bits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Works fine. -// -// Supported devices: -// Hitachi PC-LH3B -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1060 +/// Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. +/// Status: STABLE / Works fine. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note This protocol is almost exactly the same as HitachiAC424 except this +/// variant has subtle timing differences and multiple lengths. +/// There are five(5) typical lengths: +/// kHitachiAc3MinStateLength (Cancel Timer), +/// kHitachiAc3MinStateLength + 2 (Change Temp), +/// kHitachiAc3StateLength - 6 (Change Mode), +/// kHitachiAc3StateLength - 4 (Normal), & +/// kHitachiAc3StateLength (Set Timer) +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1060 bool IRrecv::decodeHitachiAc3(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { @@ -1304,3 +1490,124 @@ bool IRrecv::decodeHitachiAc3(decode_results *results, uint16_t offset, return true; } #endif // DECODE_HITACHI_AC3 + +/// Class constructor for handling detailed Hitachi_AC344 43 byte A/C messages. +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? +IRHitachiAc344::IRHitachiAc344(const uint16_t pin, const bool inverted, + const bool use_modulation) + : IRHitachiAc424(pin, inverted, use_modulation) { stateReset(); } + +/// Reset the internal state to auto fan, cooling, 23° Celsius +void IRHitachiAc344::stateReset(void) { + IRHitachiAc424::stateReset(); + remote_state[37] = 0x00; + remote_state[39] = 0x00; +} + +#if SEND_HITACHI_AC344 +/// Create and send the IR message to the A/C. +/// @param[in] repeat Nr. of times to repeat the message. +void IRHitachiAc344::send(const uint16_t repeat) { + _irsend.sendHitachiAc344(getRaw(), kHitachiAc344StateLength, repeat); +} +#endif // SEND_HITACHI_AC344 + +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length Size (in bytes) of the code for this protocol. +void IRHitachiAc344::setRaw(const uint8_t new_code[], const uint16_t length) { + memcpy(remote_state, new_code, std::min(length, kHitachiAc344StateLength)); +} + +/// Control the vertical swing setting. +/// @param[in] on True, turns on the feature. False, turns off the feature. +void IRHitachiAc344::setSwingV(const bool on) { + setSwingVToggle(on); // Set the button value. + setBit(&remote_state[kHitachiAc344SwingVByte], kHitachiAc344SwingVOffset, on); +} + +/// Get the current vertical swing setting. +/// @return True, if the setting is on. False, it is off. +bool IRHitachiAc344::getSwingV(void) { + return GETBIT8(remote_state[kHitachiAc344SwingVByte], + kHitachiAc344SwingVOffset); +} + +/// Control the horizontal swing setting. +/// @param[in] position The position to set the horizontal swing to. +void IRHitachiAc344::setSwingH(const uint8_t position) { + if (position > kHitachiAc344SwingHLeftMax) + return setSwingH(kHitachiAc344SwingHMiddle); + setBits(&remote_state[kHitachiAc344SwingHByte], kHitachiAc344SwingHOffset, + kHitachiAc344SwingHSize, position); + setButton(kHitachiAc344ButtonSwingH); +} + +/// Get the current horizontal swing setting. +/// @return The current position horizontal swing is set to. +uint8_t IRHitachiAc344::getSwingH(void) { + return GETBITS8(remote_state[kHitachiAc344SwingHByte], + kHitachiAc344SwingHOffset, kHitachiAc344SwingHSize); +} + +/// Convert a standard A/C horizontal swing into its native setting. +/// @param[in] position A stdAc::swingh_t position to convert. +/// @return The equivilent native horizontal swing position. +uint8_t IRHitachiAc344::convertSwingH(const stdAc::swingh_t position) { + switch (position) { + case stdAc::swingh_t::kAuto: return kHitachiAc344SwingHAuto; + case stdAc::swingh_t::kLeftMax: return kHitachiAc344SwingHLeftMax; + case stdAc::swingh_t::kLeft: return kHitachiAc344SwingHLeft; + case stdAc::swingh_t::kRight: return kHitachiAc344SwingHRight; + case stdAc::swingh_t::kRightMax: return kHitachiAc344SwingHRightMax; + default: return kHitachiAc344SwingHMiddle; + } +} + +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common horizontal swing position. +stdAc::swingh_t IRHitachiAc344::toCommonSwingH(const uint8_t pos) { + switch (pos) { + case kHitachiAc344SwingHLeftMax: return stdAc::swingh_t::kLeftMax; + case kHitachiAc344SwingHLeft: return stdAc::swingh_t::kLeft; + case kHitachiAc344SwingHRight: return stdAc::swingh_t::kRight; + case kHitachiAc344SwingHRightMax: return stdAc::swingh_t::kRightMax; + case kHitachiAc344SwingHAuto: return stdAc::swingh_t::kAuto; + default: return stdAc::swingh_t::kOff; + } +} + +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. +stdAc::state_t IRHitachiAc344::toCommon(void) { + stdAc::state_t result = IRHitachiAc424::toCommon(); + result.protocol = decode_type_t::HITACHI_AC344; + result.swingv = getSwingV() ? stdAc::swingv_t::kAuto : stdAc::swingv_t::kOff; + result.swingh = toCommonSwingH(getSwingH()); + return result; +} + +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. +String IRHitachiAc344::toString(void) { + String result; + result.reserve(120); // Reserve some heap for the string to reduce fragging. + result += _toString(); + result += addBoolToString(getSwingV(), kSwingVStr); + result += addIntToString(getSwingH(), kSwingHStr); + result += kSpaceLBraceStr; + switch (getSwingH()) { + case kHitachiAc344SwingHLeftMax: result += kLeftMaxStr; break; + case kHitachiAc344SwingHLeft: result += kLeftStr; break; + case kHitachiAc344SwingHMiddle: result += kMiddleStr; break; + case kHitachiAc344SwingHRight: result += kRightStr; break; + case kHitachiAc344SwingHRightMax: result += kRightMaxStr; break; + case kHitachiAc344SwingHAuto: result += kAutoStr; break; + default: result += kUnknownStr; + } + result += ')'; + return result; +} diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Hitachi.h b/lib/IRremoteESP8266-2.7.8/src/ir_Hitachi.h similarity index 62% rename from lib/IRremoteESP8266-2.7.7/src/ir_Hitachi.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Hitachi.h index 47fbb9b02..408d4784f 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Hitachi.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Hitachi.h @@ -1,16 +1,24 @@ -// Hitachi A/C -// // Copyright 2018-2020 David Conran +/// @file +/// @brief Support for Hitachi A/C protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/417 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/453 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/973 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1056 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1060 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1134 // Supports: // Brand: Hitachi, Model: RAS-35THA6 remote -// Brand: Hitachi, Model: LT0541-HTA remote -// Brand: Hitachi, Model: Series VI A/C (Circa 2007) -// Brand: Hitachi, Model: RAR-8P2 remote -// Brand: Hitachi, Model: RAS-AJ25H A/C +// Brand: Hitachi, Model: LT0541-HTA remote (HITACHI_AC1) +// Brand: Hitachi, Model: Series VI A/C (Circa 2007) (HITACHI_AC1) +// Brand: Hitachi, Model: RAR-8P2 remote (HITACHI_AC424) +// Brand: Hitachi, Model: RAS-AJ25H A/C (HITACHI_AC424) // Brand: Hitachi, Model: PC-LH3B (HITACHI_AC3) // Brand: Hitachi, Model: KAZE-312KSDP A/C (HITACHI_AC1) // Brand: Hitachi, Model: R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1) +// Brand: Hitachi, Model: RAS-22NK A/C (HITACHI_AC344) +// Brand: Hitachi, Model: RF11T1 remote (HITACHI_AC344) #ifndef IR_HITACHI_H_ #define IR_HITACHI_H_ @@ -43,7 +51,7 @@ const uint8_t kHitachiAcAutoTemp = 23; // 23C const uint8_t kHitachiAcPowerOffset = 0; const uint8_t kHitachiAcSwingOffset = 7; -// HitachiAc424 +// HitachiAc424 & HitachiAc344 // Byte[11] const uint8_t kHitachiAc424ButtonByte = 11; const uint8_t kHitachiAc424ButtonPowerMode = 0x13; @@ -51,6 +59,13 @@ const uint8_t kHitachiAc424ButtonFan = 0x42; const uint8_t kHitachiAc424ButtonTempDown = 0x43; const uint8_t kHitachiAc424ButtonTempUp = 0x44; const uint8_t kHitachiAc424ButtonSwingV = 0x81; +const uint8_t kHitachiAc424ButtonSwingH = 0x8C; +const uint8_t kHitachiAc344ButtonPowerMode = kHitachiAc424ButtonPowerMode; +const uint8_t kHitachiAc344ButtonFan = kHitachiAc424ButtonFan; +const uint8_t kHitachiAc344ButtonTempDown = kHitachiAc424ButtonTempDown; +const uint8_t kHitachiAc344ButtonTempUp = kHitachiAc424ButtonTempUp; +const uint8_t kHitachiAc344ButtonSwingV = kHitachiAc424ButtonSwingV; +const uint8_t kHitachiAc344ButtonSwingH = kHitachiAc424ButtonSwingH; // Byte[13] const uint8_t kHitachiAc424TempByte = 13; @@ -58,6 +73,8 @@ const uint8_t kHitachiAc424TempOffset = 2; const uint8_t kHitachiAc424TempSize = 6; const uint8_t kHitachiAc424MinTemp = 16; // 16C const uint8_t kHitachiAc424MaxTemp = 32; // 32C +const uint8_t kHitachiAc344MinTemp = kHitachiAc424MinTemp; +const uint8_t kHitachiAc344MaxTemp = kHitachiAc424MaxTemp; const uint8_t kHitachiAc424FanTemp = 27; // 27C // Byte[25] @@ -66,6 +83,11 @@ const uint8_t kHitachiAc424Fan = 1; const uint8_t kHitachiAc424Cool = 3; const uint8_t kHitachiAc424Dry = 5; const uint8_t kHitachiAc424Heat = 6; +const uint8_t kHitachiAc344Fan = kHitachiAc424Fan; +const uint8_t kHitachiAc344Cool = kHitachiAc424Cool; +const uint8_t kHitachiAc344Dry = kHitachiAc424Dry; +const uint8_t kHitachiAc344Heat = kHitachiAc424Heat; + const uint8_t kHitachiAc424FanByte = kHitachiAc424ModeByte; const uint8_t kHitachiAc424FanMin = 1; const uint8_t kHitachiAc424FanLow = 2; @@ -74,11 +96,33 @@ const uint8_t kHitachiAc424FanHigh = 4; const uint8_t kHitachiAc424FanAuto = 5; const uint8_t kHitachiAc424FanMax = 6; const uint8_t kHitachiAc424FanMaxDry = 2; +const uint8_t kHitachiAc344FanMin = kHitachiAc424FanMin; +const uint8_t kHitachiAc344FanLow = kHitachiAc424FanLow; +const uint8_t kHitachiAc344FanMedium = kHitachiAc424FanMedium; +const uint8_t kHitachiAc344FanHigh = kHitachiAc424FanHigh; +const uint8_t kHitachiAc344FanAuto = kHitachiAc424FanAuto; +const uint8_t kHitachiAc344FanMax = kHitachiAc424FanMax; + // Byte[27] const uint8_t kHitachiAc424PowerByte = 27; const uint8_t kHitachiAc424PowerOn = 0xF1; const uint8_t kHitachiAc424PowerOff = 0xE1; +// Byte[35] +const uint8_t kHitachiAc344SwingHByte = 35; +const uint8_t kHitachiAc344SwingHOffset = 0; // Mask 0b00000xxx +const uint8_t kHitachiAc344SwingHSize = 3; // Mask 0b00000xxx +const uint8_t kHitachiAc344SwingHAuto = 0; // 0b000 +const uint8_t kHitachiAc344SwingHRightMax = 1; // 0b001 +const uint8_t kHitachiAc344SwingHRight = 2; // 0b010 +const uint8_t kHitachiAc344SwingHMiddle = 3; // 0b011 +const uint8_t kHitachiAc344SwingHLeft = 4; // 0b100 +const uint8_t kHitachiAc344SwingHLeftMax = 5; // 0b101 + +// Byte[37] +const uint8_t kHitachiAc344SwingVByte = 37; +const uint8_t kHitachiAc344SwingVOffset = 5; // Mask 0b00x00000 + // HitachiAc1 // Byte[3] (Model) const uint8_t kHitachiAc1ModelByte = 3; @@ -139,14 +183,19 @@ const uint8_t kHitachiAc1ChecksumStartByte = 5; // Classes +/// Class for handling detailed Hitachi 224-bit A/C messages. +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/HitachiHeatpumpIR.cpp class IRHitachiAc { public: explicit IRHitachiAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_HITACHI_AC void send(const uint16_t repeat = kHitachiAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_HITACHI_AC void begin(void); @@ -180,16 +229,19 @@ class IRHitachiAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kHitachiAcStateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kHitachiAcStateLength]; ///< The state in native code. void checksum(const uint16_t length = kHitachiAcStateLength); uint8_t _previoustemp; }; +/// Class for handling detailed Hitachi 104-bit A/C messages. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1056 class IRHitachiAc1 { public: explicit IRHitachiAc1(const uint16_t pin, const bool inverted = false, @@ -198,6 +250,10 @@ class IRHitachiAc1 { void stateReset(void); #if SEND_HITACHI_AC1 void send(const uint16_t repeat = kHitachiAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_HITACHI_AC1 void begin(void); @@ -243,23 +299,29 @@ class IRHitachiAc1 { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kHitachiAc1StateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kHitachiAc1StateLength]; ///< The state in native code. void checksum(const uint16_t length = kHitachiAc1StateLength); }; +/// Class for handling detailed Hitachi 53-byte/424-bit A/C messages. class IRHitachiAc424 { + friend class IRHitachiAc344; public: explicit IRHitachiAc424(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - - void stateReset(void); + virtual void stateReset(void); #if SEND_HITACHI_AC424 - void send(const uint16_t repeat = kHitachiAcDefaultRepeat); + virtual void send(const uint16_t repeat = kHitachiAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_HITACHI_AC424 void begin(void); @@ -278,35 +340,42 @@ class IRHitachiAc424 { void setMode(const uint8_t mode); uint8_t getMode(void); uint8_t* getRaw(void); - void setRaw(const uint8_t new_code[], - const uint16_t length = kHitachiAc424StateLength); + virtual void setRaw(const uint8_t new_code[], + const uint16_t length = kHitachiAc424StateLength); uint8_t convertMode(const stdAc::opmode_t mode); uint8_t convertFan(const stdAc::fanspeed_t speed); static stdAc::opmode_t toCommonMode(const uint8_t mode); static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); - stdAc::state_t toCommon(void); + virtual stdAc::state_t toCommon(void); String toString(void); #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kHitachiAc424StateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kHitachiAc424StateLength]; ///< The state in native code void setInvertedStates(void); + String _toString(void); uint8_t _previoustemp; }; +/// Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages. class IRHitachiAc3 { public: explicit IRHitachiAc3(const uint16_t pin, const bool inverted = false, - const bool use_modulation = true); + const bool use_modulation = true); void stateReset(void); #if SEND_HITACHI_AC3 void send(const uint16_t repeat = kHitachiAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_HITACHI_AC3 void begin(void); @@ -318,13 +387,34 @@ class IRHitachiAc3 { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kHitachiAc3StateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kHitachiAc3StateLength]; ///< The state in native code. void setInvertedStates(const uint16_t length = kHitachiAc3StateLength); }; +/// Class for handling detailed Hitachi 344-bit A/C messages. +class IRHitachiAc344: public IRHitachiAc424 { + public: + explicit IRHitachiAc344(const uint16_t pin, const bool inverted = false, + const bool use_modulation = true); + void stateReset(void); + void setRaw(const uint8_t new_code[], + const uint16_t length = kHitachiAc344StateLength); + stdAc::state_t toCommon(void); +#if SEND_HITACHI_AC344 + void send(const uint16_t repeat = kHitachiAcDefaultRepeat); +#endif // SEND_HITACHI_AC344 + void setSwingV(const bool on); + bool getSwingV(void); + void setSwingH(const uint8_t position); + uint8_t getSwingH(void); + static uint8_t convertSwingH(const stdAc::swingh_t position); + static stdAc::swingh_t toCommonSwingH(const uint8_t pos); + String toString(void); +}; #endif // IR_HITACHI_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Inax.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Inax.cpp similarity index 57% rename from lib/IRremoteESP8266-2.7.7/src/ir_Inax.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Inax.cpp index b57742a12..bb68ff30d 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Inax.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Inax.cpp @@ -1,20 +1,18 @@ // Copyright 2019 David Conran (crankyoldgit) -// Support for an IR controlled Robot Toilet +/// @file +/// @brief Support for the Inax Robot Toilet IR protocols. +/// @see https://www.lixil-manual.com/GCW-1365-16050/GCW-1365-16050.pdf +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/706 + +// Supports: +// Brand: Lixil, Model: Inax DT-BA283 Toilet #include #include "IRrecv.h" #include "IRsend.h" #include "IRutils.h" -// Supports: -// Brand: Lixil, Model: Inax DT-BA283 Toilet - -// Documentation: -// https://www.lixil-manual.com/GCW-1365-16050/GCW-1365-16050.pdf - // Constants -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/706 const uint16_t kInaxTick = 500; const uint16_t kInaxHdrMark = 9000; const uint16_t kInaxHdrSpace = 4500; @@ -24,16 +22,12 @@ const uint16_t kInaxZeroSpace = kInaxBitMark; const uint16_t kInaxMinGap = 40000; #if SEND_INAX -// Send a Inax Toilet formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The bit size of the message being sent. typically kInaxBits. -// repeat: The number of times the message is to be repeated. -// -// Status: STABLE / Working. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/706 +/// Send a Inax Toilet formatted message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/706 void IRsend::sendInax(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { sendGeneric(kInaxHdrMark, kInaxHdrSpace, @@ -42,23 +36,18 @@ void IRsend::sendInax(const uint64_t data, const uint16_t nbits, kInaxBitMark, kInaxMinGap, data, nbits, 38, true, repeat, kDutyDefault); } -#endif +#endif // SEND_INAX #if DECODE_INAX -// Decode the supplied Inax Toilet message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. -// Typically kInaxBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Stable / Known working. -// +/// Decode the supplied Inax Toilet message. +/// Status: Stable / Known working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/706 bool IRrecv::decodeInax(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kInaxBits) @@ -76,9 +65,9 @@ bool IRrecv::decodeInax(decode_results *results, uint16_t offset, // Success results->bits = nbits; results->value = data; - results->decode_type = INAX; + results->decode_type = decode_type_t::INAX; results->command = 0; results->address = 0; return true; } -#endif +#endif // DECODE_INAX diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_JVC.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_JVC.cpp similarity index 70% rename from lib/IRremoteESP8266-2.7.7/src/ir_JVC.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_JVC.cpp index 7e1e5de27..cdd302a77 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_JVC.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_JVC.cpp @@ -1,18 +1,22 @@ // Copyright 2015 Kristian Lauszus // Copyright 2017 David Conran +/// @file +/// @brief Support for JVC protocols. +/// Originally added by Kristian Lauszus +/// Thanks to zenwheel and other people at the original blog post. +/// @see http://www.sbprojects.com/knowledge/ir/jvc.php + +// Supports: +// Brand: JVC, Model: PTU94023B remote + #include #include "IRrecv.h" #include "IRsend.h" #include "IRtimer.h" #include "IRutils.h" -// JVC originally added by Kristian Lauszus -// (Thanks to zenwheel and other people at the original blog post) - // Constants -// Ref: -// http://www.sbprojects.com/knowledge/ir/jvc.php const uint16_t kJvcTick = 75; const uint16_t kJvcHdrMarkTicks = 112; const uint16_t kJvcHdrMark = kJvcHdrMarkTicks * kJvcTick; @@ -33,17 +37,12 @@ const uint16_t kJvcMinGapTicks = const uint16_t kJvcMinGap = kJvcMinGapTicks * kJvcTick; #if SEND_JVC -// Send a JVC message. -// -// Args: -// data: The contents of the command you want to send. -// nbits: The bit size of the command being sent. (kJvcBits) -// repeat: The number of times you want the command to be repeated. -// -// Status: STABLE. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/jvc.php +/// Send a JVC formatted message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see http://www.sbprojects.com/knowledge/ir/jvc.php void IRsend::sendJVC(uint64_t data, uint16_t nbits, uint16_t repeat) { // Set 38kHz IR carrier frequency & a 1/3 (33%) duty cycle. enableIROut(38, 33); @@ -70,41 +69,28 @@ void IRsend::sendJVC(uint64_t data, uint16_t nbits, uint16_t repeat) { } } -// Calculate the raw JVC data based on address and command. -// -// Args: -// address: An 8-bit address value. -// command: An 8-bit command value. -// Returns: -// A raw JVC message. -// -// Status: STABLE / Works fine. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/jvc.php +/// Calculate the raw JVC data based on address and command. +/// Status: STABLE / Works fine. +/// @param[in] address An 8-bit address value. +/// @param[in] command An 8-bit command value. +/// @return A raw JVC message code, suitable for sendJVC().. +/// @see http://www.sbprojects.com/knowledge/ir/jvc.php uint16_t IRsend::encodeJVC(uint8_t address, uint8_t command) { return reverseBits((command << 8) | address, 16); } -#endif +#endif // SEND_JVC #if DECODE_JVC -// Decode the supplied JVC message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits of data to expect. Typically kJvcBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE -// -// Note: -// JVC repeat codes don't have a header. -// Ref: -// http://www.sbprojects.com/knowledge/ir/jvc.php +/// Decode the supplied JVC message. +/// Status: Stable / Known working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note JVC repeat codes don't have a header. +/// @see http://www.sbprojects.com/knowledge/ir/jvc.php bool IRrecv::decodeJVC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kJvcBits) @@ -142,4 +128,4 @@ bool IRrecv::decodeJVC(decode_results *results, uint16_t offset, results->repeat = isRepeat; return true; } -#endif +#endif // DECODE_JVC diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Kelvinator.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Kelvinator.cpp similarity index 75% rename from lib/IRremoteESP8266-2.7.7/src/ir_Kelvinator.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Kelvinator.cpp index 4a4fac276..18702dad8 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Kelvinator.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Kelvinator.cpp @@ -1,18 +1,18 @@ // Copyright 2016 David Conran -// -// Code to emulate IR Kelvinator YALIF remote control unit, which should control -// at least the following Kelvinator A/C units: -// KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, -// KSV70HRC, KSV80HRC. -// -// Note: -// * Unsupported: -// - All Sleep modes. -// - All Timer modes. -// - "I Feel" button & mode. -// - Energy Saving mode. -// - Low Heat mode. -// - Fahrenheit. +/// @file +/// @brief Support for Kelvinator A/C protocols. +/// Code to emulate IR Kelvinator YALIF remote control unit, which should +/// control at least the following Kelvinator A/C units: +/// KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, +/// KSV70HRC, KSV80HRC. +/// +/// @note Unsupported: +/// - All Sleep modes. +/// - All Timer modes. +/// - "I Feel" button & mode. +/// - Energy Saving mode. +/// - Low Heat mode. +/// - Fahrenheit. #include "ir_Kelvinator.h" #include @@ -27,7 +27,6 @@ #include "IRutils.h" // Constants - const uint16_t kKelvinatorTick = 85; const uint16_t kKelvinatorHdrMarkTicks = 106; const uint16_t kKelvinatorHdrMark = kKelvinatorHdrMarkTicks * kKelvinatorTick; @@ -71,15 +70,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_KELVINATOR -// Send a Kelvinator A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kKelvinatorStateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: STABLE / Known working. -// +/// Send a Kelvinator A/C message. +/// Status: STABLE / Known working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendKelvinator(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kKelvinatorStateLength) @@ -122,18 +117,25 @@ void IRsend::sendKelvinator(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_KELVINATOR +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRKelvinatorAC::IRKelvinatorAC(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Reset the internals of the object to a known good state. void IRKelvinatorAC::stateReset(void) { for (uint8_t i = 0; i < kKelvinatorStateLength; i++) remote_state[i] = 0x0; remote_state[3] = 0x50; remote_state[11] = 0x70; } +/// Set up hardware to be able to send a message. void IRKelvinatorAC::begin(void) { _irsend.begin(); } +/// Fix up any odd conditions for the current state. void IRKelvinatorAC::fixup(void) { // X-Fan mode is only valid in COOL or DRY modes. if (this->getMode() != kKelvinatorCool && this->getMode() != kKelvinatorDry) @@ -142,21 +144,33 @@ void IRKelvinatorAC::fixup(void) { } #if SEND_KELVINATOR +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRKelvinatorAC::send(const uint16_t repeat) { this->fixup(); // Ensure correct settings before sending. _irsend.sendKelvinator(remote_state, kKelvinatorStateLength, repeat); } #endif // SEND_KELVINATOR +/// Get the raw state of the object, suitable to be sent with the appropriate +/// IRsend object method. +/// @return A PTR to the internal state. uint8_t *IRKelvinatorAC::getRaw(void) { this->fixup(); // Ensure correct settings before sending. return remote_state; } +/// Set the raw state of the object. +/// @param[in] new_code The raw state from the native IR message. void IRKelvinatorAC::setRaw(const uint8_t new_code[]) { memcpy(remote_state, new_code, kKelvinatorStateLength); } +/// Calculate the checksum for a given block of state. +/// @param[in] block A pointer to a block to calc the checksum of. +/// @param[in] length Length of the block array to checksum. +/// @return The calculated checksum value. +/// @note Many Bothans died to bring us this information. uint8_t IRKelvinatorAC::calcBlockChecksum(const uint8_t *block, const uint16_t length) { uint8_t sum = kKelvinatorChecksumStart; @@ -169,7 +183,8 @@ uint8_t IRKelvinatorAC::calcBlockChecksum(const uint8_t *block, return sum & 0b1111; } -// Many Bothans died to bring us this information. +/// Calculate the checksum for the internal state. +/// @param[in] length Length of the internal state to checksum. void IRKelvinatorAC::checksum(const uint16_t length) { // For each command + options block. for (uint16_t offset = 0; offset + 7 < length; offset += 8) { @@ -178,12 +193,10 @@ void IRKelvinatorAC::checksum(const uint16_t length) { } } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The size of the state. +/// @return A boolean indicating if it is valid. bool IRKelvinatorAC::validChecksum(const uint8_t state[], const uint16_t length) { for (uint16_t offset = 0; offset + 7 < length; offset += 8) { @@ -195,20 +208,27 @@ bool IRKelvinatorAC::validChecksum(const uint8_t state[], return true; } +/// Set the internal state to have the power on. void IRKelvinatorAC::on(void) { setPower(true); } +/// Set the internal state to have the power off. void IRKelvinatorAC::off(void) {setPower(false); } +/// Set the internal state to have the desired power. +/// @param[in] on The desired power state. void IRKelvinatorAC::setPower(const bool on) { setBit(&remote_state[0], kKelvinatorPowerOffset, on); remote_state[8] = remote_state[0]; // Duplicate to the 2nd command chunk. } +/// Get the power setting from the internal state. +/// @return A boolean indicating if the power setting. bool IRKelvinatorAC::getPower(void) { return GETBIT8(remote_state[0], kKelvinatorPowerOffset); } -// Set the temp. in deg C +/// Set the temperature setting. +/// @param[in] degrees The temperature in degrees celsius. void IRKelvinatorAC::setTemp(const uint8_t degrees) { uint8_t temp = std::max(kKelvinatorMinTemp, degrees); temp = std::min(kKelvinatorMaxTemp, temp); @@ -216,13 +236,15 @@ void IRKelvinatorAC::setTemp(const uint8_t degrees) { remote_state[9] = remote_state[1]; // Duplicate to the 2nd command chunk. } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return Get current setting for temp. in degrees celsius. uint8_t IRKelvinatorAC::getTemp(void) { return GETBITS8(remote_state[1], kLowNibble, kNibbleSize) + kKelvinatorMinTemp; } -// Set the speed of the fan, 0-5, 0 is auto, 1-5 is the speed +/// Set the speed of the fan. +/// @param[in] speed 0 is auto, 1-5 is the speed void IRKelvinatorAC::setFan(const uint8_t speed) { uint8_t fan = std::min(kKelvinatorFanMax, speed); // Bounds check @@ -239,14 +261,20 @@ void IRKelvinatorAC::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRKelvinatorAC::getFan(void) { return GETBITS8(remote_state[14], kKelvinatorFanOffset, kKelvinatorFanSize); } +/// Get the current operation mode setting. +/// @return The current operation mode. uint8_t IRKelvinatorAC::getMode(void) { return GETBITS8(remote_state[0], kKelvinatorModeOffset, kModeBitsSize); } +/// Set the desired operation mode. +/// @param[in] mode The desired operation mode. void IRKelvinatorAC::setMode(const uint8_t mode) { switch (mode) { case kKelvinatorAuto: @@ -266,6 +294,8 @@ void IRKelvinatorAC::setMode(const uint8_t mode) { } } +/// Control the current vertical swing setting. +/// @param[in] on The desired setting. void IRKelvinatorAC::setSwingVertical(const bool on) { setBit(&remote_state[4], kKelvinatorVentSwingVOffset, on); setBit(&remote_state[0], kKelvinatorVentSwingOffset, @@ -273,10 +303,14 @@ void IRKelvinatorAC::setSwingVertical(const bool on) { remote_state[8] = remote_state[0]; // Duplicate to the 2nd command chunk. } +/// Is the vertical swing setting on? +/// @return The current value. bool IRKelvinatorAC::getSwingVertical(void) { return GETBIT8(remote_state[4], kKelvinatorVentSwingVOffset); } +/// Control the current horizontal swing setting. +/// @param[in] on The desired setting. void IRKelvinatorAC::setSwingHorizontal(const bool on) { setBit(&remote_state[4], kKelvinatorVentSwingHOffset, on); setBit(&remote_state[0], kKelvinatorVentSwingOffset, @@ -284,57 +318,84 @@ void IRKelvinatorAC::setSwingHorizontal(const bool on) { remote_state[8] = remote_state[0]; // Duplicate to the 2nd command chunk. } +/// Is the horizontal swing setting on? +/// @return The current value. bool IRKelvinatorAC::getSwingHorizontal(void) { return GETBIT8(remote_state[4], kKelvinatorVentSwingHOffset); } +/// Control the current Quiet setting. +/// @param[in] on The desired setting. void IRKelvinatorAC::setQuiet(const bool on) { setBit(&remote_state[12], kKelvinatorQuietOffset, on); } +/// Is the Quiet setting on? +/// @return The current value. bool IRKelvinatorAC::getQuiet(void) { return GETBIT8(remote_state[12], kKelvinatorQuietOffset); } +/// Control the current Ion Filter setting. +/// @param[in] on The desired setting. void IRKelvinatorAC::setIonFilter(const bool on) { setBit(&remote_state[2], kKelvinatorIonFilterOffset, on); remote_state[10] = remote_state[2]; // Duplicate to the 2nd command chunk. } +/// Is the Ion Filter setting on? +/// @return The current value. bool IRKelvinatorAC::getIonFilter(void) { return GETBIT8(remote_state[2], kKelvinatorIonFilterOffset); } +/// Control the current Light setting. +/// i.e. The LED display on the A/C unit that shows the basic settings. +/// @param[in] on The desired setting. void IRKelvinatorAC::setLight(const bool on) { setBit(&remote_state[2], kKelvinatorLightOffset, on); remote_state[10] = remote_state[2]; // Duplicate to the 2nd command chunk. } +/// Is the Light (Display) setting on? +/// @return The current value. bool IRKelvinatorAC::getLight(void) { return GETBIT8(remote_state[2], kKelvinatorLightOffset); } -// Note: XFan mode is only valid in Cool or Dry mode. +/// Control the current XFan setting. +/// This setting will cause the unit blow air after power off to dry out the +/// A/C device. +/// @note XFan mode is only valid in Cool or Dry mode. +/// @param[in] on The desired setting. void IRKelvinatorAC::setXFan(const bool on) { setBit(&remote_state[2], kKelvinatorXfanOffset, on); remote_state[10] = remote_state[2]; // Duplicate to the 2nd command chunk. } +/// Is the XFan setting on? +/// @return The current value. bool IRKelvinatorAC::getXFan(void) { return GETBIT8(remote_state[2], kKelvinatorXfanOffset); } -// Note: Turbo mode is turned off if the fan speed is changed. +/// Control the current Turbo setting. +/// @note Turbo mode is turned off if the fan speed is changed. +/// @param[in] on The desired setting. void IRKelvinatorAC::setTurbo(const bool on) { setBit(&remote_state[2], kKelvinatorTurboOffset, on); remote_state[10] = remote_state[2]; // Duplicate to the 2nd command chunk. } +/// Is the Turbo setting on? +/// @return The current value. bool IRKelvinatorAC::getTurbo(void) { return GETBIT8(remote_state[2], kKelvinatorTurboOffset); } -// Convert a standard A/C mode into its native mode. +/// Convert a standard A/C mode (stdAc::opmode_t) into it a native mode. +/// @param[in] mode A stdAc::opmode_t operation mode. +/// @return The native mode equivilant. uint8_t IRKelvinatorAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kKelvinatorCool; @@ -345,7 +406,9 @@ uint8_t IRKelvinatorAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode to it's stdAc::opmode_t equivalent. +/// @param[in] mode A native operating mode value. +/// @return The stdAc::opmode_t equivilant. stdAc::opmode_t IRKelvinatorAC::toCommonMode(const uint8_t mode) { switch (mode) { case kKelvinatorCool: return stdAc::opmode_t::kCool; @@ -356,12 +419,15 @@ stdAc::opmode_t IRKelvinatorAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed to it's stdAc::fanspeed_t equivalent. +/// @param[in] speed A native fan speed value. +/// @return The stdAc::fanspeed_t equivilant. stdAc::fanspeed_t IRKelvinatorAC::toCommonFanSpeed(const uint8_t speed) { return (stdAc::fanspeed_t)speed; } -// Convert the A/C state to it's common equivalent. +/// Convert the internal A/C object state to it's stdAc::state_t equivalent. +/// @return A stdAc::state_t containing the current settings. stdAc::state_t IRKelvinatorAC::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::KELVINATOR; @@ -388,7 +454,8 @@ stdAc::state_t IRKelvinatorAC::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal settings into a human readable string. +/// @return A String. String IRKelvinatorAC::toString(void) { String result = ""; result.reserve(160); // Reserve some heap for the string to reduce fragging. @@ -410,18 +477,15 @@ String IRKelvinatorAC::toString(void) { } #if DECODE_KELVINATOR -// Decode the supplied Kelvinator message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kKelvinatorBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Known working. +/// Decode the supplied Kelvinator message. +/// Status: STABLE / Known working. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. bool IRrecv::decodeKelvinator(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Kelvinator.h b/lib/IRremoteESP8266-2.7.8/src/ir_Kelvinator.h similarity index 89% rename from lib/IRremoteESP8266-2.7.7/src/ir_Kelvinator.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Kelvinator.h index cd3a000dd..a75f6b534 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Kelvinator.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Kelvinator.h @@ -1,6 +1,6 @@ -// Kelvinator A/C -// // Copyright 2016 David Conran +/// @file +/// @brief Support for Kelvinator A/C protocols. // Supports: // Brand: Kelvinator, Model: YALIF Remote @@ -133,14 +133,18 @@ const uint8_t kKelvinatorAutoTemp = 25; // 25C */ // Classes +/// Class for handling detailed Kelvinator A/C messages. class IRKelvinatorAC { public: explicit IRKelvinatorAC(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_KELVINATOR void send(const uint16_t repeat = kKelvinatorDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_KELVINATOR void begin(void); @@ -182,12 +186,13 @@ class IRKelvinatorAC { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kKelvinatorStateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kKelvinatorStateLength]; ///< The state in IR code form. void checksum(const uint16_t length = kKelvinatorStateLength); void fixup(void); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_LG.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_LG.cpp similarity index 70% rename from lib/IRremoteESP8266-2.7.7/src/ir_LG.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_LG.cpp index 1024548ca..65fe91883 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_LG.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_LG.cpp @@ -2,9 +2,11 @@ // Copyright 2015 cheaplin // Copyright 2017, 2018 David Conran -// Supports: -// Brand: LG, Model: 6711A20083V remote -// Brand: LG, Model: AKB74395308 remote +/// @file +/// @brief Support for LG protocols. +/// LG decode originally added by Darryl Smith (based on the JVC protocol) +/// LG send originally added by https://github.com/chaeplin +/// @see https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438 #include "ir_LG.h" #include @@ -22,8 +24,6 @@ using irutils::addTempToString; using irutils::setBit; using irutils::setBits; -// LG decode originally added by Darryl Smith (based on the JVC protocol) -// LG send originally added by https://github.com/chaeplin // Constants const uint16_t kLgTick = 50; @@ -58,34 +58,14 @@ const uint16_t kLg2HdrSpace = kLg2HdrSpaceTicks * kLgTick; // 9850 const uint16_t kLg2BitMarkTicks = 10; const uint16_t kLg2BitMark = kLg2BitMarkTicks * kLgTick; // 500 -#if (SEND_LG || DECODE_LG) -// Calculate the rolling 4-bit wide checksum over all of the data. -// Args: -// data: The value to be checksum'ed. -// Returns: -// A 4-bit checksum. -uint8_t calcLGChecksum(uint16_t data) { - return (((data >> 12) + ((data >> 8) & 0xF) + ((data >> 4) & 0xF) + - (data & 0xF)) & - 0xF); -} -#endif - #if SEND_LG -// Send an LG formatted message. -// -// Args: -// data: The contents of the message you want to send. -// nbits: The bit size of the message being sent. -// Typically kLgBits or kLg32Bits. -// repeat: The number of times you want the message to be repeated. -// -// Status: Beta / Should be working. -// -// Notes: -// LG has a separate message to indicate a repeat, like NEC does. -// Supports: -// IR Remote models: 6711A20083V +/// Send an LG formatted message. (LG) +/// Status: Beta / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// Typically kLgBits or kLg32Bits. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note LG has a separate message to indicate a repeat, like NEC does. void IRsend::sendLG(uint64_t data, uint16_t nbits, uint16_t repeat) { uint16_t repeatHeaderMark = 0; uint8_t duty = kDutyDefault; @@ -113,20 +93,13 @@ void IRsend::sendLG(uint64_t data, uint16_t nbits, uint16_t repeat) { 38, true, repeat - 1, duty); } -// Send an LG Variant-2 formatted message. -// -// Args: -// data: The contents of the message you want to send. -// nbits: The bit size of the message being sent. -// Typically kLgBits or kLg32Bits. -// repeat: The number of times you want the message to be repeated. -// -// Status: Beta / Should be working. -// -// Notes: -// LG has a separate message to indicate a repeat, like NEC does. -// Supports: -// IR Remote models: AKB74395308 +/// Send an LG Variant-2 formatted message. (LG2) +/// Status: Beta / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// Typically kLgBits or kLg32Bits. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note LG has a separate message to indicate a repeat, like NEC does. void IRsend::sendLG2(uint64_t data, uint16_t nbits, uint16_t repeat) { if (nbits >= kLg32Bits) { // Let the original routine handle it. @@ -149,52 +122,35 @@ void IRsend::sendLG2(uint64_t data, uint16_t nbits, uint16_t repeat) { 38, true, repeat - 1, 50); } -// Construct a raw 28-bit LG message code from the supplied address & command. -// -// Args: -// address: The address code. -// command: The command code. -// Returns: -// A raw 28-bit LG message code suitable for sendLG() etc. -// -// Status: STABLE / Works. -// -// Notes: -// e.g. Sequence of bits = address + command + checksum. +/// Construct a raw 28-bit LG message code from the supplied address & command. +/// Status: STABLE / Works. +/// @param[in] address The address code. +/// @param[in] command The command code. +/// @return A raw 28-bit LG message code suitable for sendLG() etc. +/// @note Sequence of bits = address + command + checksum. uint32_t IRsend::encodeLG(uint16_t address, uint16_t command) { - return ((address << 20) | (command << 4) | calcLGChecksum(command)); + return ((address << 20) | (command << 4) | irutils::sumNibbles(command, 4)); } -#endif +#endif // SEND_LG #if DECODE_LG -// Decode the supplied LG message. -// LG protocol has a repeat code which is 4 items long. -// Even though the protocol has 28/32 bits of data, only 24/28 bits are -// distinct. -// In transmission order, the 28/32 bits are constructed as follows: -// 8/12 bits of address + 16 bits of command + 4 bits of checksum. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. -// Typically kLgBits or kLg32Bits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. -// -// Note: -// LG 32bit protocol appears near identical to the Samsung protocol. -// They possibly differ on how they repeat and initial HDR mark. -// -// Supports: -// IR Remote models: 6711A20083V, AKB74395308 - -// Ref: -// https://funembedded.wordpress.com/2014/11/08/ir-remote-control-for-lg-conditioner-using-stm32f302-mcu-on-mbed-platform/ +/// Decode the supplied LG message. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// Typically kLgBits or kLg32Bits. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note LG protocol has a repeat code which is 4 items long. +/// Even though the protocol has 28/32 bits of data, only 24/28 bits are +/// distinct. +/// In transmission order, the 28/32 bits are constructed as follows: +/// 8/12 bits of address + 16 bits of command + 4 bits of checksum. +/// @note LG 32bit protocol appears near identical to the Samsung protocol. +/// They possibly differ on how they repeat and initial HDR mark. +/// @see https://funembedded.wordpress.com/2014/11/08/ir-remote-control-for-lg-conditioner-using-stm32f302-mcu-on-mbed-platform/ bool IRrecv::decodeLG(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (nbits >= kLg32Bits) { @@ -279,7 +235,7 @@ bool IRrecv::decodeLG(decode_results *results, uint16_t offset, // Compliance uint16_t command = (data >> 4) & 0xFFFF; // The 16 bits before the checksum. - if (strict && (data & 0xF) != calcLGChecksum(command)) + if (strict && (data & 0xF) != irutils::sumNibbles(command, 4)) return false; // The last 4 bits sent are the expected checksum. // Success if (isLg2) @@ -295,21 +251,27 @@ bool IRrecv::decodeLG(decode_results *results, uint16_t offset, #endif // LG A/C Class -// Support for LG-type A/C units. -// Ref: -// https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438 + +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRLgAc::IRLgAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Reset the internals of the object to a known good state. void IRLgAc::stateReset(void) { setRaw(kLgAcOffCommand); setModel(lg_ac_remote_model_t::GE6711AR2853M); } +/// Set up hardware to be able to send a message. void IRLgAc::begin(void) { _irsend.begin(); } #if SEND_LG +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRLgAc::send(const uint16_t repeat) { if (this->getPower()) _irsend.send(this->_protocol, this->getRaw(), kLgBits, repeat); @@ -320,6 +282,8 @@ void IRLgAc::send(const uint16_t repeat) { } #endif // SEND_LG +/// Set the model of the A/C to emulate. +/// @param[in] model The enum of the appropriate model. void IRLgAc::setModel(const lg_ac_remote_model_t model) { switch (model) { case lg_ac_remote_model_t::AKB75215403: @@ -332,6 +296,8 @@ void IRLgAc::setModel(const lg_ac_remote_model_t model) { } } +/// Get the model of the A/C. +/// @return The enum of the compatible model. lg_ac_remote_model_t IRLgAc::getModel(void) { switch (_protocol) { case LG2: @@ -343,45 +309,50 @@ lg_ac_remote_model_t IRLgAc::getModel(void) { } } +/// Get a copy of the internal state/code for this protocol. +/// @return The code for this protocol based on the current internal state. uint32_t IRLgAc::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRLgAc::setRaw(const uint32_t new_code) { remote_state = new_code; _temp = 15; // Ensure there is a "sane" previous temp. _temp = getTemp(); } -// Calculate the checksum for a given state. -// Args: -// state: The value to calculate the checksum of. -// Returns: -// A uint8_t of the checksum. +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @return The calculated checksum value. uint8_t IRLgAc::calcChecksum(const uint32_t state) { - return calcLGChecksum(state >> 4); + return irutils::sumNibbles(state >> 4, 4); } -// Verify the checksum is valid for a given state. -// Args: -// state: The value to verify the checksum of. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The value to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRLgAc::validChecksum(const uint32_t state) { return calcChecksum(state) == GETBITS32(state, kLgAcChecksumOffset, kLgAcChecksumSize); } +/// Calculate and set the checksum values for the internal state. void IRLgAc::checksum(void) { setBits(&remote_state, kLgAcChecksumOffset, kLgAcChecksumSize, calcChecksum(remote_state)); } +/// Change the power setting to On. void IRLgAc::on(void) { setPower(true); } +/// Change the power setting to Off. void IRLgAc::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRLgAc::setPower(const bool on) { setBits(&remote_state, kLgAcPowerOffset, kLgAcPowerSize, on ? kLgAcPowerOn : kLgAcPowerOff); @@ -391,17 +362,22 @@ void IRLgAc::setPower(const bool on) { _setTemp(0); // Off clears the temp. } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRLgAc::getPower(void) { return GETBITS32(remote_state, kLgAcPowerOffset, kLgAcPowerSize) == kLgAcPowerOn; } -// Set the temp. (Internal use only) +/// Set the temperature. +/// @param[in] value The native temperature. +/// @note Internal use only. void IRLgAc::_setTemp(const uint8_t value) { setBits(&remote_state, kLgAcTempOffset, kLgAcTempSize, value); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRLgAc::setTemp(const uint8_t degrees) { uint8_t temp = std::max(kLgAcMinTemp, degrees); temp = std::min(kLgAcMaxTemp, temp); @@ -409,7 +385,8 @@ void IRLgAc::setTemp(const uint8_t degrees) { _setTemp(temp - kLgAcTempAdjust); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRLgAc::getTemp(void) { if (getPower()) return GETBITS32(remote_state, kLgAcTempOffset, kLgAcTempSize) + @@ -418,7 +395,8 @@ uint8_t IRLgAc::getTemp(void) { return _temp; } -// Set the speed of the fan. +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRLgAc::setFan(const uint8_t speed) { switch (speed) { case kLgAcFanAuto: @@ -432,14 +410,20 @@ void IRLgAc::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRLgAc::getFan(void) { return GETBITS32(remote_state, kLgAcFanOffset, kLgAcFanSize); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRLgAc::getMode(void) { return GETBITS32(remote_state, kLgAcModeOffset, kLgAcModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRLgAc::setMode(const uint8_t mode) { switch (mode) { case kLgAcAuto: @@ -454,7 +438,9 @@ void IRLgAc::setMode(const uint8_t mode) { } } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRLgAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kLgAcCool; @@ -465,7 +451,9 @@ uint8_t IRLgAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRLgAc::toCommonMode(const uint8_t mode) { switch (mode) { case kLgAcCool: return stdAc::opmode_t::kCool; @@ -476,7 +464,9 @@ stdAc::opmode_t IRLgAc::toCommonMode(const uint8_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRLgAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -488,7 +478,9 @@ uint8_t IRLgAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRLgAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kLgAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -498,7 +490,8 @@ stdAc::fanspeed_t IRLgAc::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRLgAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::LG; @@ -523,7 +516,8 @@ stdAc::state_t IRLgAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRLgAc::toString(void) { String result = ""; result.reserve(80); // Reserve some heap for the string to reduce fragging. @@ -539,6 +533,8 @@ String IRLgAc::toString(void) { return result; } +/// Check if the internal state looks like a valud LG A/C message. +/// @return true, the internal state is a valid LG A/C mesg. Otherwise, false. bool IRLgAc::isValidLgAc(void) { return validChecksum(remote_state) && (GETBITS32(remote_state, kLgAcSignatureOffset, kLgAcSignatureSize) == diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_LG.h b/lib/IRremoteESP8266-2.7.8/src/ir_LG.h similarity index 78% rename from lib/IRremoteESP8266-2.7.7/src/ir_LG.h rename to lib/IRremoteESP8266-2.7.8/src/ir_LG.h index 64b6a0b7c..bf0cdd0b6 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_LG.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_LG.h @@ -1,8 +1,13 @@ // Copyright 2017, 2019 David Conran +/// @file +/// @brief Support for LG protocols. +/// @see https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438 + + // Supports: -// Brand: LG, Model: 6711A20083V remote -// Brand: LG, Model: AKB74395308 remote +// Brand: LG, Model: 6711A20083V remote (LG) +// Brand: LG, Model: AKB74395308 remote (LG2) // Brand: LG, Model: S4-W12JA3AA A/C (LG2) // Brand: LG, Model: AKB75215403 remote (LG2) // Brand: General Electric, Model: AG1BH09AW101 Split A/C @@ -53,20 +58,22 @@ const uint8_t kLgAcSignature = 0x88; const uint32_t kLgAcOffCommand = 0x88C0051; -uint8_t calcLGChecksum(uint16_t data); - // Classes +/// Class for handling detailed LG A/C messages. class IRLgAc { public: explicit IRLgAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); static uint8_t calcChecksum(const uint32_t state); static bool validChecksum(const uint32_t state); bool isValidLgAc(void); #if SEND_LG void send(const uint16_t repeat = kLgDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_LG void begin(void); @@ -93,12 +100,13 @@ class IRLgAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint32_t remote_state; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint32_t remote_state; ///< The state of the IR remote in IR code form. uint8_t _temp; decode_type_t _protocol; void checksum(void); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Lasertag.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Lasertag.cpp similarity index 67% rename from lib/IRremoteESP8266-2.7.7/src/ir_Lasertag.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Lasertag.cpp index 14a059084..5285acd4a 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Lasertag.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Lasertag.cpp @@ -1,5 +1,11 @@ // Copyright 2017 David Conran -// Lasertag + +/// @file +/// @brief Support for Lasertag protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/366 + +// Supports: +// Brand: Lasertag, Model: Phaser emitters #include #include "IRrecv.h" @@ -17,16 +23,13 @@ const int16_t kSpace = 1; const int16_t kMark = 0; #if SEND_LASERTAG -// Send a Lasertag packet. -// This protocol is pretty much just raw Manchester encoding. -// -// Args: -// data: The message you wish to send. -// nbits: Bit size of the protocol you want to send. -// repeat: Nr. of extra times the data will be sent. -// -// Status: STABLE / Working. -// +/// Send a Lasertag packet/message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol is pretty much just raw Manchester encoding. +/// @todo Convert this to use `sendManchester()` if we can.` void IRsend::sendLasertag(uint64_t data, uint16_t nbits, uint16_t repeat) { if (nbits > sizeof(data) * 8) return; // We can't send something that big. @@ -51,24 +54,19 @@ void IRsend::sendLasertag(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_LASERTAG #if DECODE_LASERTAG -// Decode the supplied Lasertag message. -// This protocol is pretty much just raw Manchester encoding. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Appears to be working 90% of the time. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc5.php -// https://en.wikipedia.org/wiki/RC-5 -// https://en.wikipedia.org/wiki/Manchester_code +/// Decode the supplied Lasertag message. +/// Status: BETA / Appears to be working 90% of the time. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note This protocol is pretty much just raw Manchester encoding. +/// @see http://www.sbprojects.com/knowledge/ir/rc5.php +/// @see https://en.wikipedia.org/wiki/RC-5 +/// @see https://en.wikipedia.org/wiki/Manchester_code +/// @todo Convert to using `matchManchester()` if we can. bool IRrecv::decodeLasertag(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= kLasertagMinSamples + offset) return false; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Lego.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Lego.cpp similarity index 72% rename from lib/IRremoteESP8266-2.7.7/src/ir_Lego.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Lego.cpp index b2d2f2d0e..3b7144768 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Lego.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Lego.cpp @@ -1,19 +1,19 @@ // Copyright 2019 David Conran +/// @file +/// @brief Support for LEGO protocols. +/// @note LEGO is a Registrated Trademark of the Lego Group. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/641 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/files/2974525/LEGO_Power_Functions_RC_v120.pdf + +// Supports: +// Brand: LEGO Power Functions, Model: IR Receiver + #include #include "IRrecv.h" #include "IRsend.h" #include "IRutils.h" -// LEGO -// (LEGO is a Registrated Trademark of the Lego Group.) -// -// Supports: -// Brand: LEGO Power Functions, Model: IR Receiver -// -// Ref: -// - https://github.com/crankyoldgit/IRremoteESP8266/issues/641 -// - https://github.com/crankyoldgit/IRremoteESP8266/files/2974525/LEGO_Power_Functions_RC_v120.pdf // Constants const uint16_t kLegoPfBitMark = 158; @@ -24,15 +24,12 @@ const uint32_t kLegoPfMinCommandLength = 16000; // 16ms #if SEND_LEGOPF -// Send a LEGO Power Functions message. -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kLegoPfBits. -// repeat: Nr. of additional times the message is to be sent. -// Note: Non-zero repeats results in at least 5 messages per spec. -// -// Status: Beta / Should work. +/// Send a LEGO Power Functions message. +/// Status: Beta / Should work. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Non-zero repeats results in at least 5 messages per spec. void IRsend::sendLegoPf(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { uint8_t channelid = ((data >> (nbits - 4)) & 0b11) + 1; @@ -63,18 +60,14 @@ void IRsend::sendLegoPf(const uint64_t data, const uint16_t nbits, #endif // SEND_LEGO #if DECODE_LEGOPF -// Decode the supplied LEGO Power Functions message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kLegoPfBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Appears to work. +/// Decode the supplied LEGO Power Functions message. +/// Status: STABLE / Appears to work. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeLegoPf(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { // Check if can possibly be a valid LEGO message. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Lutron.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Lutron.cpp similarity index 69% rename from lib/IRremoteESP8266-2.7.7/src/ir_Lutron.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Lutron.cpp index 8ea4f0b3a..5d0424784 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Lutron.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Lutron.cpp @@ -1,5 +1,20 @@ // Copyright 2018 David Conran -// Lutron + +/// @file +/// @brief Support for Lutron protocols. +/// @note The Lutron protocol uses a sort of Run Length encoding to encode +/// its data. There is no header or footer per-se. +/// As a mark is the first data we will notice, we always assume the First +/// bit of the technically 36-bit protocol is '1'. So it is assumed, and thus +/// we only care about the 35 bits of data. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/515 +/// @see http://www.lutron.com/TechnicalDocumentLibrary/048158.doc + +// Supports: +// Brand: Lutron, Model: SP-HT remote +// Brand: Lutron, Model: MIR-ITFS remote +// Brand: Lutron, Model: MIR-ITFS-LF remote +// Brand: Lutron, Model: MIR-ITFS-F remote #define __STDC_LIMIT_MACROS #include @@ -8,36 +23,21 @@ #include "IRsend.h" #include "IRutils.h" -// Notes: -// The Lutron protocol uses a sort of Run Length encoding to encode -// its data. There is no header or footer per-se. -// As a mark is the first data we will notice, we always assume the First -// bit of the technically 36-bit protocol is '1'. So it is assumed, and thus -// we only care about the 35 bits of data. // Constants -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/515 const uint16_t kLutronTick = 2288; const uint32_t kLutronGap = 150000; // Completely made up value. const uint16_t kLutronDelta = 400; // +/- 300 usecs. #if SEND_LUTRON -// Send a Lutron formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. Typically kLutronBits -// repeat: The number of times the command is to be repeated. -// -// Status: Stable / Appears to be working for real devices. - -// Notes: -// Protocol is really 36 bits long, but the first bit is always a 1. -// So, assume the 1 and only have a normal payload of 35 bits. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/515 +/// Send a Lutron formatted message. +/// Status: Stable / Appears to be working for real devices. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note The protocol is really 36 bits long, but the first bit is always a 1. +/// So, assume the 1 and only have a normal payload of 35 bits. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/515 void IRsend::sendLutron(uint64_t data, uint16_t nbits, uint16_t repeat) { enableIROut(40000, 40); // 40Khz & 40% dutycycle. for (uint16_t r = 0; r <= repeat; r++) { @@ -54,23 +54,14 @@ void IRsend::sendLutron(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_LUTRON #if DECODE_LUTRON -// Decode the supplied Lutron message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kLutronBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. -// -// Notes: -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/515 +/// Decode the supplied Lutron message. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeLutron(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // Technically the smallest number of entries for the smallest message is '1'. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_MWM.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_MWM.cpp similarity index 80% rename from lib/IRremoteESP8266-2.7.7/src/ir_MWM.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_MWM.cpp index eefc4a57e..8aca4a4fd 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_MWM.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_MWM.cpp @@ -1,8 +1,12 @@ // Copyright 2018 Brett T. Warden -// MWM +/// @file +/// @brief Disney Made With Magic (MWM) Support +/// derived from ir_Lasertag.cpp +/// @see https://github.com/crankyoldgit/IRremoteESP8266/pull/557 -// derived from ir_Lasertag.cpp, Copyright 2017 David Conran +// Supports: +// Brand: Disney, Model: Made With Magic (Glow With The Show) wand #include #include "IRrecv.h" @@ -23,17 +27,13 @@ const int16_t kSpace = 1; const int16_t kMark = 0; #if SEND_MWM -// Send a MWM packet. -// This protocol is 2400 bps serial, 1 start bit (mark), 1 stop bit (space), no -// parity -// -// Args: -// data: The message you wish to send. -// nbits: Bit size of the protocol you want to send. -// repeat: Nr. of extra times the data will be sent. -// -// Status: Implemented. -// +/// Send a MWM packet/message. +/// Status: Implemented. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol is 2400 bps serial, 1 start bit (mark), +/// 1 stop bit (space), no parity void IRsend::sendMWM(const uint8_t data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < 3) return; // Shortest possible message is 3 bytes @@ -68,21 +68,16 @@ void IRsend::sendMWM(const uint8_t data[], const uint16_t nbytes, #endif // SEND_MWM #if DECODE_MWM -// Decode the supplied MWM message. -// This protocol is 2400 bps serial, 1 start bit (mark), 1 stop bit (space), no -// parity -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Implemented. -// +/// Decode the supplied MWM message. +/// Status: Implemented. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note This protocol is 2400 bps serial, 1 start bit (mark), +/// 1 stop bit (space), no parity bool IRrecv::decodeMWM(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { DPRINTLN("DEBUG: decodeMWM"); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Magiquest.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Magiquest.cpp similarity index 63% rename from lib/IRremoteESP8266-2.7.7/src/ir_Magiquest.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Magiquest.cpp index 2c15612f4..3f79a18f6 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Magiquest.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Magiquest.cpp @@ -2,6 +2,11 @@ // Copyright 2015 kitlaan // Copyright 2017 Jason kendall, David Conran +/// @file +/// @brief Support for MagiQuest protocols. +/// @see https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp +/// @see https://github.com/mpflaga/Arduino-IRremote + #include "ir_Magiquest.h" #include #include "IRrecv.h" @@ -11,25 +16,14 @@ #define IS_ZERO(m, s) (((m)*100 / ((m) + (s))) <= kMagiQuestZeroRatio) #define IS_ONE(m, s) (((m)*100 / ((m) + (s))) >= kMagiQuestOneRatio) -// Strips taken from: -// https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp -// and -// https://github.com/mpflaga/Arduino-IRremote - -// Source: https://github.com/mpflaga/Arduino-IRremote - #if SEND_MAGIQUEST -// Send a MagiQuest formatted message. -// -// Args: -// data: The contents of the message you want to send. -// nbits: The bit size of the message being sent. -// Typically kMagiquestBits. -// repeat: The number of times you want the message to be repeated. -// -// Status: Alpha / Should be working. -// -void IRsend::sendMagiQuest(uint64_t data, uint16_t nbits, uint16_t repeat) { +/// Send a MagiQuest formatted message. +/// Status: Beta / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +void IRsend::sendMagiQuest(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { sendGeneric(0, 0, // No Headers - Technically it's included in the data. // i.e. 8 zeros. kMagiQuestMarkOne, kMagiQuestSpaceOne, kMagiQuestMarkZero, @@ -38,11 +32,15 @@ void IRsend::sendMagiQuest(uint64_t data, uint16_t nbits, uint16_t repeat) { kMagiQuestGap, data, nbits, 36, true, repeat, 50); } -// Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. -// (Only 48 bits of real data + 8 leading zero bits) -// This is suitable for calling sendMagiQuest() with. -// e.g. sendMagiQuest(encodeMagiQuest(wand_id, magnitude)); -uint64_t IRsend::encodeMagiQuest(uint32_t wand_id, uint16_t magnitude) { +/// Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. +/// (Only 48 bits of real data + 8 leading zero bits) +/// This is suitable for calling sendMagiQuest() with. +/// e.g. sendMagiQuest(encodeMagiQuest(wand_id, magnitude)) +/// @param[in] wand_id The value for the wand ID. +/// @param[in] magnitude The value for the magnitude +/// @return A code suitable for calling sendMagiQuest() with. +uint64_t IRsend::encodeMagiQuest(const uint32_t wand_id, + const uint16_t magnitude) { uint64_t result = 0; result = wand_id; result <<= 16; @@ -51,34 +49,23 @@ uint64_t IRsend::encodeMagiQuest(uint32_t wand_id, uint16_t magnitude) { result &= 0xFFFFFFFFFFFFULL; return result; } -#endif - -// Source: -// https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp +#endif // SEND_MAGIQUEST #if DECODE_MAGIQUEST -// Decode the supplied MagiQuest message. -// MagiQuest protocol appears to be a header of 8 'zero' bits, followed -// by 32 bits of "wand ID" and finally 16 bits of "magnitude". -// Even though we describe this protocol as 56 bits, it really only has -// 48 bits of data that matter. -// -// In transmission order, 8 zeros + 32 wand_id + 16 magnitude. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion, inc. the 8 bit header. -// Typically kMagiquestBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Alpha / Should work. -// -// Ref: -// https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp +/// Decode the supplied MagiQuest message. +/// Status: Beta / Should work. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note MagiQuest protocol appears to be a header of 8 'zero' bits, followed +/// by 32 bits of "wand ID" and finally 16 bits of "magnitude". +/// Even though we describe this protocol as 56 bits, it really only has +/// 48 bits of data that matter. +/// In transmission order, 8 zeros + 32 wand_id + 16 magnitude. +/// @see https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp bool IRrecv::decodeMagiQuest(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { uint16_t bits = 0; @@ -164,4 +151,4 @@ bool IRrecv::decodeMagiQuest(decode_results *results, uint16_t offset, results->command = data & 0xFFFF; // Magnitude return true; } -#endif +#endif // DECODE_MAGIQUEST diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Magiquest.h b/lib/IRremoteESP8266-2.7.8/src/ir_Magiquest.h similarity index 73% rename from lib/IRremoteESP8266-2.7.7/src/ir_Magiquest.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Magiquest.h index 81fff53ad..399904375 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Magiquest.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Magiquest.h @@ -2,6 +2,14 @@ // Copyright 2015 kitlaan // Copyright 2017 Jason kendall, David Conran +/// @file +/// @brief Support for MagiQuest protocols. +/// @see https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp +/// @see https://github.com/mpflaga/Arduino-IRremote + +// Supports: +// Brand: MagiQuest, Model: Wand + #ifndef IR_MAGIQUEST_H_ #define IR_MAGIQUEST_H_ @@ -10,7 +18,7 @@ #include "IRremoteESP8266.h" #include "IRsend.h" -// MagiQuest packet is both Wand ID and magnitude of swish and flick +/// MagiQuest packet is both Wand ID and magnitude of swish and flick union magiquest { uint64_t llword; uint8_t byte[8]; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Midea.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Midea.cpp similarity index 58% rename from lib/IRremoteESP8266-2.7.7/src/ir_Midea.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Midea.cpp index bbf9bedfa..5d270d3d4 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Midea.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Midea.cpp @@ -1,7 +1,12 @@ // Copyright 2017 bwze, crankyoldgit -// Midea +/// @file +/// @brief Support for Midea protocols. +/// Midea added by crankyoldgit & bwze. +/// send: bwze/crankyoldgit, decode: crankyoldgit +/// @see https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing #include "ir_Midea.h" +#include "ir_NEC.h" #include #ifndef ARDUINO #include @@ -11,16 +16,6 @@ #include "IRtext.h" #include "IRutils.h" -// Midea A/C added by (send) bwze/crankyoldgit & (decode) crankyoldgit -// -// Equipment it seems compatible with: -// * Pioneer System Model RYBO12GMFILCAD (12K BTU) -// * Pioneer System Model RUBO18GMFILCAD (18K BTU) -// * - -// Ref: -// https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing - // Constants const uint16_t kMideaTick = 80; const uint16_t kMideaBitMarkTicks = 7; @@ -37,6 +32,7 @@ const uint16_t kMideaMinGapTicks = kMideaHdrMarkTicks + kMideaZeroSpaceTicks + kMideaBitMarkTicks; const uint16_t kMideaMinGap = kMideaMinGapTicks * kMideaTick; const uint8_t kMideaTolerance = 30; // Percent +const uint16_t kMidea24MinGap = 13000; ///< uSecs using irutils::addBoolToString; using irutils::addFanToString; @@ -48,15 +44,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_MIDEA -// Send a Midea message -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kMideaBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: Alpha / Needs testing against a real device. -// +/// Send a Midea message +/// Status: Alpha / Needs testing against a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendMidea(uint64_t data, uint16_t nbits, uint16_t repeat) { if (nbits % 8 != 0) return; // nbits is required to be a multiple of 8. @@ -90,28 +82,31 @@ void IRsend::sendMidea(uint64_t data, uint16_t nbits, uint16_t repeat) { } } } -#endif +#endif // SEND_MIDEA // Code to emulate Midea A/C IR remote control unit. -// Warning: Consider this very alpha code. -// Initialise the object. +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRMideaAC::IRMideaAC(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } -// Reset the state of the remote to a known good state/sequence. +/// Reset the state of the remote to a known good state/sequence. void IRMideaAC::stateReset(void) { // Power On, Mode Auto, Fan Auto, Temp = 25C/77F remote_state = 0xA1826FFFFF62; _SwingVToggle = false; } -// Configure the pin for output. +/// Set up hardware to be able to send a message. void IRMideaAC::begin(void) { _irsend.begin(); } #if SEND_MIDEA -// Send the current desired state to the IR LED. +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRMideaAC::send(const uint16_t repeat) { this->checksum(); // Ensure correct checksum before sending. _irsend.sendMidea(remote_state, kMideaBits, repeat); @@ -123,37 +118,43 @@ void IRMideaAC::send(const uint16_t repeat) { } #endif // SEND_MIDEA -// Return a pointer to the internal state date of the remote. +/// Get a copy of the internal state/code for this protocol. +/// @return The code for this protocol based on the current internal state. uint64_t IRMideaAC::getRaw(void) { this->checksum(); return GETBITS64(remote_state, 0, kMideaBits); } -// Override the internal state with the new state. +/// Set the internal state from a valid code for this protocol. +/// @param[in] newState A valid code for this protocol. void IRMideaAC::setRaw(const uint64_t newState) { remote_state = newState; } -// Set the requested power state of the A/C to on. +/// Set the requested power state of the A/C to on. void IRMideaAC::on(void) { setPower(true); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRMideaAC::off(void) { setPower(false); } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMideaAC::setPower(const bool on) { setBit(&remote_state, kMideaACPowerOffset, on); } -// Return the requested power state of the A/C. +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRMideaAC::getPower(void) { return GETBIT64(remote_state, kMideaACPowerOffset); } -// Returns true if we want the A/C unit to work natively in Celsius. +/// Is the device currently using Celsius or the Fahrenheit temp scale? +/// @return true, the A/C unit uses Celsius natively, false, is Fahrenheit. bool IRMideaAC::getUseCelsius(void) { return !GETBIT64(remote_state, kMideaACCelsiusOffset); } -// Set the A/C unit to use Celsius natively. +/// Set the A/C unit to use Celsius natively. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMideaAC::setUseCelsius(const bool on) { if (on != getUseCelsius()) { // We need to change. uint8_t native_temp = getTemp(!on); // Get the old native temp. @@ -162,10 +163,9 @@ void IRMideaAC::setUseCelsius(const bool on) { } } -// Set the temperature. -// Args: -// temp: Temp. in degrees. -// useCelsius: Degree type to use. Celsius (true) or Fahrenheit (false) +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. +/// @param[in] useCelsius true, use the Celsius temp scale. false, is Fahrenheit void IRMideaAC::setTemp(const uint8_t temp, const bool useCelsius) { uint8_t max_temp = kMideaACMaxTempF; uint8_t min_temp = kMideaACMinTempF; @@ -184,11 +184,9 @@ void IRMideaAC::setTemp(const uint8_t temp, const bool useCelsius) { setBits(&remote_state, kMideaACTempOffset, kMideaACTempSize, new_temp); } -// Return the set temp. -// Args: -// celsius: Flag indicating if the results are in Celsius or Fahrenheit. -// Returns: -// A uint8_t containing the temperature. +/// Get the current temperature setting. +/// @param[in] celsius true, the results are in Celsius. false, in Fahrenheit. +/// @return The current setting for temp. in the requested units/scale. uint8_t IRMideaAC::getTemp(const bool celsius) { uint8_t temp = GETBITS64(remote_state, kMideaACTempOffset, kMideaACTempSize); if (getUseCelsius()) @@ -200,26 +198,27 @@ uint8_t IRMideaAC::getTemp(const bool celsius) { return temp; } -// Set the speed of the fan, -// 1-3 set the speed, 0 or anything else set it to auto. +/// Set the speed of the fan. +/// @param[in] fan The desired setting. 1-3 set the speed, 0 for auto. void IRMideaAC::setFan(const uint8_t fan) { setBits(&remote_state, kMideaACFanOffset, kMideaACFanSize, (fan > kMideaACFanHigh) ? kMideaACFanAuto : fan); } -// Return the requested state of the unit's fan. +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRMideaAC::getFan(void) { return GETBITS64(remote_state, kMideaACFanOffset, kMideaACFanSize); } -// Get the requested climate operation mode of the a/c unit. -// Returns: -// A uint8_t containing the A/C mode. +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRMideaAC::getMode(void) { return GETBITS64(remote_state, kMideaACModeOffset, kModeBitsSize); } -// Set the requested climate operation mode of the a/c unit. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRMideaAC::setMode(const uint8_t mode) { switch (mode) { case kMideaACAuto: @@ -234,35 +233,38 @@ void IRMideaAC::setMode(const uint8_t mode) { } } -// Set the Sleep state of the A/C. +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMideaAC::setSleep(const bool on) { setBit(&remote_state, kMideaACSleepOffset, on); } -// Return the Sleep state of the A/C. +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMideaAC::getSleep(void) { return GETBIT64(remote_state, kMideaACSleepOffset); } -// Set the A/C to toggle the vertical swing toggle for the next send. +/// Set the A/C to toggle the vertical swing toggle for the next send. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMideaAC::setSwingVToggle(const bool on) { _SwingVToggle = on; } -// Return if the message/state is just a Swing V toggle message/command. +/// Is the current state a vertical swing toggle message? +/// @return true, it is. false, it isn't. bool IRMideaAC::isSwingVToggle(void) { return remote_state == kMideaACToggleSwingV; } -// Return the Swing V toggle state of the A/C. +// Get the vertical swing toggle state of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMideaAC::getSwingVToggle(void) { _SwingVToggle |= isSwingVToggle(); return _SwingVToggle; } -// Calculate the checksum for a given array. -// Args: -// state: The state to calculate the checksum over. -// Returns: -// The 8 bit checksum value. +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @return The calculated checksum value. uint8_t IRMideaAC::calcChecksum(const uint64_t state) { uint8_t sum = 0; uint64_t temp_state = state; @@ -275,23 +277,22 @@ uint8_t IRMideaAC::calcChecksum(const uint64_t state) { return reverseBits(sum, 8); } -// Verify the checksum is valid for a given state. -// Args: -// state: The state to verify the checksum of. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The state to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRMideaAC::validChecksum(const uint64_t state) { return GETBITS64(state, 0, 8) == calcChecksum(state); } -// Calculate & set the checksum for the current internal state of the remote. +/// Calculate & set the checksum for the current internal state of the remote. void IRMideaAC::checksum(void) { // Stored the checksum value in the last byte. setBits(&remote_state, 0, 8, calcChecksum(remote_state)); } - -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMideaAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kMideaACCool; @@ -302,7 +303,9 @@ uint8_t IRMideaAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMideaAC::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -314,7 +317,9 @@ uint8_t IRMideaAC::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRMideaAC::toCommonMode(const uint8_t mode) { switch (mode) { case kMideaACCool: return stdAc::opmode_t::kCool; @@ -325,7 +330,9 @@ stdAc::opmode_t IRMideaAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRMideaAC::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kMideaACFanHigh: return stdAc::fanspeed_t::kMax; @@ -335,26 +342,28 @@ stdAc::fanspeed_t IRMideaAC::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @param[in] prev A Ptr to the previous state. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRMideaAC::toCommon(const stdAc::state_t *prev) { stdAc::state_t result; if (prev != NULL) { result = *prev; } else { - // Fixed/Not supported/Non-zero defaults. - result.protocol = decode_type_t::MIDEA; - result.model = -1; // No models used. - result.swingh = stdAc::swingh_t::kOff; - result.swingv = stdAc::swingv_t::kOff; - result.quiet = false; - result.turbo = false; - result.clean = false; - result.econo = false; - result.filter = false; - result.light = false; - result.beep = false; - result.sleep = -1; - result.clock = -1; + // Fixed/Not supported/Non-zero defaults. + result.protocol = decode_type_t::MIDEA; + result.model = -1; // No models used. + result.swingh = stdAc::swingh_t::kOff; + result.swingv = stdAc::swingv_t::kOff; + result.quiet = false; + result.turbo = false; + result.clean = false; + result.econo = false; + result.filter = false; + result.light = false; + result.beep = false; + result.sleep = -1; + result.clock = -1; } if (this->isSwingVToggle()) { result.swingv = result.swingv != stdAc::swingv_t::kOff ? @@ -370,7 +379,8 @@ stdAc::state_t IRMideaAC::toCommon(const stdAc::state_t *prev) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRMideaAC::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -393,19 +403,15 @@ String IRMideaAC::toString(void) { } #if DECODE_MIDEA -// Decode the supplied Midea message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kMideaBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Alpha / Needs testing against a real device. -// +/// Decode the supplied Midea message. +/// Status: Alpha / Needs testing against a real device. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, +/// kHitachiAc344Bits +/// @param[in] strict Flag indicating if we should perform strict matching. bool IRrecv::decodeMidea(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { uint8_t min_nr_of_messages = 1; @@ -458,3 +464,80 @@ bool IRrecv::decodeMidea(decode_results *results, uint16_t offset, return true; } #endif // DECODE_MIDEA + +#if SEND_MIDEA24 +/// Send a Midea24 formatted message. +/// Status: STABLE / Confirmed working on a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1170 +/// @note This protocol is basically a 48-bit version of the NEC protocol with +/// alternate bytes inverted, thus only 24 bits of real data, and with at +/// least a single repeat. +/// @warning Can't be used beyond 32 bits. +void IRsend::sendMidea24(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { + uint64_t newdata = 0; + // Construct the data into bye & inverted byte pairs. + for (int16_t i = nbits - 8; i >= 0; i -= 8) { + // Shuffle the data to be sent so far. + newdata <<= 16; + uint8_t next = GETBITS64(data, i, 8); + newdata |= ((next << 8) | (next ^ 0xFF)); + } + sendNEC(newdata, nbits * 2, repeat); +} +#endif // SEND_MIDEA24 + +#if DECODE_MIDEA24 +/// Decode the supplied Midea24 message. +/// Status: STABLE / Confirmed working on a real device. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @note This protocol is basically a 48-bit version of the NEC protocol with +/// alternate bytes inverted, thus only 24 bits of real data. +/// @warning Can't be used beyond 32 bits. +bool IRrecv::decodeMidea24(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + // Not strictly a MIDEA24 message. + if (strict && nbits != kMidea24Bits) return false; + if (nbits > 32) return false; // Can't successfully match something that big. + + uint64_t longdata = 0; + if (!matchGeneric(results->rawbuf + offset, &longdata, + results->rawlen - offset, nbits * 2, + kNecHdrMark, kNecHdrSpace, + kNecBitMark, kNecOneSpace, + kNecBitMark, kNecZeroSpace, + kNecBitMark, kMidea24MinGap, true)) return false; + + // Build the result by checking every second byte is a complement(inversion) + // of the previous one. + uint32_t data = 0; + for (uint8_t i = nbits * 2; i >= 16;) { + // Shuffle the data collected so far. + data <<= 8; + i -= 8; + uint8_t current = GETBITS64(longdata, i, 8); + i -= 8; + uint8_t next = GETBITS64(longdata, i, 8); + // Check they are an inverted pair. + if (current != (next ^ 0xFF)) return false; // They are not, so abort. + data |= current; + } + + // Success + results->decode_type = decode_type_t::MIDEA24; + results->bits = nbits; + results->value = data; + results->address = 0; + results->command = 0; + return true; +} +#endif // DECODE_MIDEA24 diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Midea.h b/lib/IRremoteESP8266-2.7.8/src/ir_Midea.h similarity index 76% rename from lib/IRremoteESP8266-2.7.7/src/ir_Midea.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Midea.h index be43a4df6..b7825f569 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Midea.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Midea.h @@ -1,11 +1,16 @@ // Copyright 2017 David Conran -// Midea + +/// @file +/// @brief Support for Midea protocols. +/// Midea added by crankyoldgit & bwze +/// @see https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing // Supports: -// Brand: Pioneer System, Model: RYBO12GMFILCAD A/C (12K BTU) -// Brand: Pioneer System, Model: RUBO18GMFILCAD A/C (18K BTU) -// Brand: Comfee, Model: MPD1-12CRN7 A/C -// Brand: Keystone, Model: RG57H4(B)BGEF remote +// Brand: Pioneer System, Model: RYBO12GMFILCAD A/C (12K BTU) (MIDEA) +// Brand: Pioneer System, Model: RUBO18GMFILCAD A/C (18K BTU) (MIDEA) +// Brand: Comfee, Model: MPD1-12CRN7 A/C (MIDEA) +// Brand: Keystone, Model: RG57H4(B)BGEF remote (MIDEA) +// Brand: Midea, Model: FS40-7AR Stand Fan (MIDEA24) #ifndef IR_MIDEA_H_ #define IR_MIDEA_H_ @@ -21,10 +26,6 @@ #include "IRsend_test.h" #endif -// Midea added by crankyoldgit & bwze -// Ref: -// https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing - // Constants const uint8_t kMideaACTempOffset = 24; const uint8_t kMideaACTempSize = 5; // Bits @@ -66,14 +67,20 @@ const uint64_t kMideaACToggleSwingV = 0x0000A201FFFFFF7C; #define MIDEA_AC_MIN_TEMP_C kMideaACMinTempC #define MIDEA_AC_MAX_TEMP_C kMideaACMaxTempC +// Classes +/// Class for handling detailed Midea A/C messages. +/// @warning Consider this very alpha code. class IRMideaAC { public: explicit IRMideaAC(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_MIDEA void send(const uint16_t repeat = kMideaMinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_MIDEA void begin(void); @@ -106,11 +113,13 @@ class IRMideaAC { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint64_t remote_state; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint64_t remote_state; ///< The state of the IR remote in IR code form. bool _SwingVToggle; void checksum(void); static uint8_t calcChecksum(const uint64_t state); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Mitsubishi.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Mitsubishi.cpp similarity index 71% rename from lib/IRremoteESP8266-2.7.7/src/ir_Mitsubishi.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Mitsubishi.cpp index b8d62e109..1f9f25c1e 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Mitsubishi.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Mitsubishi.cpp @@ -3,7 +3,18 @@ // Copyright 2019 Mark Kuchel // Copyright 2018 Denes Varga -// Mitsubishi +/// @file +/// @brief Support for Mitsubishi protocols. +/// Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote +/// Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran +/// @see GlobalCache's Control Tower's Mitsubishi TV data. +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Mitsubishi.cpp +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/441 +/// @see https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266.ino#L84 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/619 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/888 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/947 +/// @see https://github.com/kuchel77 #include "ir_Mitsubishi.h" #include @@ -17,15 +28,9 @@ #include "IRutils.h" #include "ir_Tcl.h" -// Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote -// Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran - // Constants // Mitsubishi TV // period time is 1/33000Hz = 30.303 uSeconds (T) -// Ref: -// GlobalCache's Control Tower's Mitsubishi TV data. -// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Mitsubishi.cpp const uint16_t kMitsubishiTick = 30; const uint16_t kMitsubishiBitMarkTicks = 10; const uint16_t kMitsubishiBitMark = kMitsubishiBitMarkTicks * kMitsubishiTick; @@ -41,9 +46,6 @@ const uint16_t kMitsubishiMinGapTicks = 936; const uint16_t kMitsubishiMinGap = kMitsubishiMinGapTicks * kMitsubishiTick; // Mitsubishi Projector (HC3000) -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/441 - const uint16_t kMitsubishi2HdrMark = 8400; const uint16_t kMitsubishi2HdrSpace = kMitsubishi2HdrMark / 2; const uint16_t kMitsubishi2BitMark = 560; @@ -52,9 +54,6 @@ const uint16_t kMitsubishi2OneSpace = kMitsubishi2ZeroSpace * 3; const uint16_t kMitsubishi2MinGap = 28500; // Mitsubishi A/C -// Ref: -// https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266.ino#L84 - const uint16_t kMitsubishiAcHdrMark = 3400; const uint16_t kMitsubishiAcHdrSpace = 1750; const uint16_t kMitsubishiAcBitMark = 450; @@ -65,9 +64,6 @@ const uint16_t kMitsubishiAcRptSpace = 17100; const uint8_t kMitsubishiAcExtraTolerance = 5; // Mitsubishi 136 bit A/C -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/888 - const uint16_t kMitsubishi136HdrMark = 3324; const uint16_t kMitsubishi136HdrSpace = 1474; const uint16_t kMitsubishi136BitMark = 467; @@ -76,9 +72,6 @@ const uint16_t kMitsubishi136ZeroSpace = 351; const uint32_t kMitsubishi136Gap = kDefaultMessageGap; // Mitsubishi 112 bit A/C -// Ref: -// https://github.com/kuchel77 - const uint16_t kMitsubishi112HdrMark = 3450; const uint16_t kMitsubishi112HdrSpace = 1696; const uint16_t kMitsubishi112BitMark = 450; @@ -100,20 +93,14 @@ using irutils::setBit; using irutils::setBits; #if SEND_MITSUBISHI -// Send a Mitsubishi message -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kMitsubishiBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: STABLE / Working. -// -// Notes: -// This protocol appears to have no header. -// Ref: -// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Mitsubishi.cpp -// GlobalCache's Control Tower's Mitsubishi TV data. +/// Send the supplied Mitsubishi 16-bit message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol appears to have no header. +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Mitsubishi.cpp +/// @see GlobalCache's Control Tower's Mitsubishi TV data. void IRsend::sendMitsubishi(uint64_t data, uint16_t nbits, uint16_t repeat) { sendGeneric(0, 0, // No Header kMitsubishiBitMark, kMitsubishiOneSpace, kMitsubishiBitMark, @@ -123,24 +110,16 @@ void IRsend::sendMitsubishi(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_MITSUBISHI #if DECODE_MITSUBISHI -// Decode the supplied Mitsubishi message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. -// -// Notes: -// This protocol appears to have no header. -// -// Ref: -// GlobalCache's Control Tower's Mitsubishi TV data. +/// Decode the supplied Mitsubishi 16-bit message. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note This protocol appears to have no header. +/// @see GlobalCache's Control Tower's Mitsubishi TV data. bool IRrecv::decodeMitsubishi(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kMitsubishiBits) @@ -167,24 +146,18 @@ bool IRrecv::decodeMitsubishi(decode_results *results, uint16_t offset, #endif // DECODE_MITSUBISHI #if SEND_MITSUBISHI2 -// Send a Mitsubishi2 message -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kMitsubishiBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: BETA / Probably works. -// -// Notes: -// Based on a Mitsubishi HC3000 projector's remote. -// This protocol appears to have a manditory in-protocol repeat. -// That is in *addition* to the entire message needing to be sent twice -// for the device to accept the command. That is separate from the repeat. -// i.e. Allegedly, the real remote requires the "Off" button pressed twice. -// You will need to add a suitable gap yourself. -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/441 +/// Send a supplied second variant Mitsubishi 16-bit message. +/// Status: BETA / Probably works. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Based on a Mitsubishi HC3000 projector's remote. +/// This protocol appears to have a manditory in-protocol repeat. +/// That is in *addition* to the entire message needing to be sent twice +/// for the device to accept the command. That is separate from the repeat. +/// i.e. Allegedly, the real remote requires the "Off" button pressed twice. +/// You will need to add a suitable gap yourself. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/441 void IRsend::sendMitsubishi2(uint64_t data, uint16_t nbits, uint16_t repeat) { for (uint16_t i = 0; i <= repeat; i++) { // First half of the data. @@ -203,25 +176,15 @@ void IRsend::sendMitsubishi2(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_MITSUBISHI2 #if DECODE_MITSUBISHI2 -// Decode the supplied Mitsubishi2 message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Works. -// -// Notes: -// Hardware supported: -// * Mitsubishi HC3000 projector's remote. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/441 +/// Decode the supplied second variation of a Mitsubishi 16-bit message. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/441 bool IRrecv::decodeMitsubishi2(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= 2 * nbits + kHeader + (kFooter * 2) - 1 + offset) @@ -262,16 +225,11 @@ bool IRrecv::decodeMitsubishi2(decode_results *results, uint16_t offset, #endif // DECODE_MITSUBISHI2 #if SEND_MITSUBISHI_AC -// Send a Mitsubishi A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kMitsubishiACStateLength) -// repeat: Nr. of times the message is to be repeated. -// (Default = kMitsubishiACMinRepeat). -// -// Status: STABLE / Working. -// +/// Send a Mitsubishi 144-bit A/C formatted message. (MITSUBISHI_AC) +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendMitsubishiAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kMitsubishiACStateLength) @@ -285,21 +243,14 @@ void IRsend::sendMitsubishiAC(const unsigned char data[], const uint16_t nbytes, #endif // SEND_MITSUBISHI_AC #if DECODE_MITSUBISHI_AC -// Decode the supplied Mitsubishi message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Probably works -// -// Ref: -// https://www.analysir.com/blog/2015/01/06/reverse-engineering-mitsubishi-ac-infrared-protocol/ +/// Decode the supplied Mitsubish 144-bit A/C message. +/// Status: BETA / Probably works +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @see https://www.analysir.com/blog/2015/01/06/reverse-engineering-mitsubishi-ac-infrared-protocol/ bool IRrecv::decodeMitsubishiAC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { @@ -423,17 +374,17 @@ bool IRrecv::decodeMitsubishiAC(decode_results *results, uint16_t offset, // Code to emulate Mitsubishi A/C IR remote control unit. // Inspired and derived from the work done at: // https://github.com/r45635/HVAC-IR-Control -// -// Warning: Consider this very alpha code. Seems to work, but not validated. -// -// Equipment it seems compatible with: -// * -// Initialise the object. + +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? +/// @warning Consider this very alpha code. Seems to work, but not validated. IRMitsubishiAC::IRMitsubishiAC(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } -// Reset the state of the remote to a known good state/sequence. +/// Reset the state of the remote to a known good state/sequence. void IRMitsubishiAC::stateReset(void) { // The state of the IR remote in IR code form. // Known good state obtained from: @@ -443,69 +394,83 @@ void IRMitsubishiAC::stateReset(void) { setRaw(kReset); } -// Configure the pin for output. +/// Set up hardware to be able to send a message. void IRMitsubishiAC::begin(void) { _irsend.begin(); } #if SEND_MITSUBISHI_AC -// Send the current desired state to the IR LED. +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRMitsubishiAC::send(const uint16_t repeat) { _irsend.sendMitsubishiAC(getRaw(), kMitsubishiACStateLength, repeat); } #endif // SEND_MITSUBISHI_AC -// Return a pointer to the internal state date of the remote. +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRMitsubishiAC::getRaw(void) { this->checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] data A valid code for this protocol. void IRMitsubishiAC::setRaw(const uint8_t *data) { memcpy(remote_state, data, kMitsubishiACStateLength); } -// Calculate the checksum for the current internal state of the remote. +/// Calculate and set the checksum values for the internal state. void IRMitsubishiAC::checksum(void) { remote_state[kMitsubishiACStateLength - 1] = calculateChecksum(remote_state); } +/// Verify the checksum is valid for a given state. +/// @param[in] data The array to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRMitsubishiAC::validChecksum(const uint8_t *data) { return calculateChecksum(data) == data[kMitsubishiACStateLength - 1]; } +/// Calculate the checksum for a given state. +/// @param[in] data The value to calc the checksum of. +/// @return The calculated checksum value. uint8_t IRMitsubishiAC::calculateChecksum(const uint8_t *data) { return sumBytes(data, kMitsubishiACStateLength - 1); } -// Set the requested power state of the A/C to on. +/// Set the requested power state of the A/C to on. void IRMitsubishiAC::on(void) { setPower(true); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRMitsubishiAC::off(void) { setPower(false); } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiAC::setPower(bool on) { setBit(&remote_state[5], kMitsubishiAcPowerOffset, on); } -// Return the requested power state of the A/C. +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiAC::getPower(void) { return GETBIT8(remote_state[5], kMitsubishiAcPowerOffset); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRMitsubishiAC::setTemp(const uint8_t degrees) { uint8_t temp = std::max((uint8_t)kMitsubishiAcMinTemp, degrees); temp = std::min((uint8_t)kMitsubishiAcMaxTemp, temp); remote_state[7] = temp - kMitsubishiAcMinTemp; } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRMitsubishiAC::getTemp(void) { return (remote_state[7] + kMitsubishiAcMinTemp); } -// Set the speed of the fan, 0-6. -// 0 is auto, 1-5 is the speed, 6 is silent. +/// Set the speed of the fan. +/// @param[in] speed The desired setting. 0 is auto, 1-5 is speed, 6 is silent. void IRMitsubishiAC::setFan(const uint8_t speed) { uint8_t fan = speed; // Bounds check @@ -519,7 +484,8 @@ void IRMitsubishiAC::setFan(const uint8_t speed) { setBits(&remote_state[9], kMitsubishiAcFanOffset, kMitsubishiAcFanSize, fan); } -// Return the requested state of the unit's fan. +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRMitsubishiAC::getFan(void) { uint8_t fan = GETBITS8(remote_state[9], kMitsubishiAcFanOffset, kMitsubishiAcFanSize); @@ -527,12 +493,14 @@ uint8_t IRMitsubishiAC::getFan(void) { return fan; } -// Return the requested climate operation mode of the a/c unit. +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRMitsubishiAC::getMode(void) { return GETBITS8(remote_state[6], kMitsubishiAcModeOffset, kModeBitsSize); } -// Set the requested climate operation mode of the a/c unit. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRMitsubishiAC::setMode(const uint8_t mode) { // If we get an unexpected mode, default to AUTO. switch (mode) { @@ -547,7 +515,8 @@ void IRMitsubishiAC::setMode(const uint8_t mode) { setBits(&remote_state[6], kMitsubishiAcModeOffset, kModeBitsSize, mode); } -// Set the requested vane operation mode of the a/c unit. +/// Set the requested vane (Vertical Swing) operation mode of the a/c unit. +/// @param[in] position The position/mode to set the vane to. void IRMitsubishiAC::setVane(const uint8_t position) { uint8_t pos = std::min(position, kMitsubishiAcVaneAutoMove); // bounds check setBit(&remote_state[9], kMitsubishiAcVaneBitOffset); @@ -555,62 +524,83 @@ void IRMitsubishiAC::setVane(const uint8_t position) { pos); } -// Set the requested wide-vane operation mode of the a/c unit. +/// Set the requested wide-vane (Horizontal Swing) operation mode of the a/c. +/// @param[in] position The position/mode to set the wide vane to. void IRMitsubishiAC::setWideVane(const uint8_t position) { setBits(&remote_state[8], kHighNibble, kNibbleSize, std::min(position, kMitsubishiAcWideVaneAuto)); } -// Return the requested vane operation mode of the a/c unit. +/// Get the Vane (Vertical Swing) mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishiAC::getVane(void) { return GETBITS8(remote_state[9], kMitsubishiAcVaneOffset, kMitsubishiAcVaneSize); } -// Return the requested wide vane operation mode of the a/c unit. +/// Get the Wide Vane (Horizontal Swing) mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishiAC::getWideVane(void) { return GETBITS8(remote_state[8], kHighNibble, kNibbleSize); } -// Return the clock setting of the message. 1=1/6 hour. e.g. 4pm = 48 +/// Get the clock time of the A/C unit. +/// @return Nr. of 10 minute increments past midnight. +/// @note 1 = 1/6 hour (10 minutes). e.g. 4pm = 48. uint8_t IRMitsubishiAC::getClock(void) { return remote_state[10]; } -// Set the current time. 1 = 1/6 hour. e.g. 6am = 36. +/// Set the clock time on the A/C unit. +/// @param[in] clock Nr. of 10 minute increments past midnight. +/// @note 1 = 1/6 hour (10 minutes). e.g. 6am = 36. void IRMitsubishiAC::setClock(const uint8_t clock) { remote_state[10] = clock; } -// Return the desired start time. 1 = 1/6 hour. e.g. 1am = 6 +/// Get the desired start time of the A/C unit. +/// @return Nr. of 10 minute increments past midnight. +/// @note 1 = 1/6 hour (10 minutes). e.g. 4pm = 48. uint8_t IRMitsubishiAC::getStartClock(void) { return remote_state[12]; } -// Set the desired start time of the AC. 1 = 1/6 hour. e.g. 8pm = 120 +/// Set the desired start time of the A/C unit. +/// @param[in] clock Nr. of 10 minute increments past midnight. +/// @note 1 = 1/6 hour (10 minutes). e.g. 8pm = 120. void IRMitsubishiAC::setStartClock(const uint8_t clock) { remote_state[12] = clock; } -// Return the desired stop time of the AC. 1 = 1/6 hour. e.g 10pm = 132 +/// Get the desired stop time of the A/C unit. +/// @return Nr. of 10 minute increments past midnight. +/// @note 1 = 1/6 hour (10 minutes). e.g. 10pm = 132. uint8_t IRMitsubishiAC::getStopClock(void) { return remote_state[11]; } -// Set the desired stop time of the AC. 1 = 1/6 hour. e.g 10pm = 132 +/// Set the desired stop time of the A/C unit. +/// @param[in] clock Nr. of 10 minute increments past midnight. +/// @note 1 = 1/6 hour (10 minutes). e.g. 10pm = 132. void IRMitsubishiAC::setStopClock(const uint8_t clock) { remote_state[11] = clock; } -// Return the timer setting. Possible values: kMitsubishiAcNoTimer, -// kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, -// kMitsubishiAcStartStopTimer +/// Get the timers active setting of the A/C. +/// @return The current timers enabled. +/// @note Possible values: kMitsubishiAcNoTimer, +/// kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, +/// kMitsubishiAcStartStopTimer uint8_t IRMitsubishiAC::getTimer(void) { return GETBITS8(remote_state[13], 0, 3); } -// Set the timer setting. Possible values: kMitsubishiAcNoTimer, -// kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, -// kMitsubishiAcStartStopTimer +/// Set the timers active setting of the A/C. +/// @param[in] timer The timer code indicating which ones are active. +/// @note Possible values: kMitsubishiAcNoTimer, +/// kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, +/// kMitsubishiAcStartStopTimer void IRMitsubishiAC::setTimer(uint8_t timer) { setBits(&remote_state[13], 0, 3, timer); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kMitsubishiAcCool; @@ -620,7 +610,9 @@ uint8_t IRMitsubishiAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiAC::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kMitsubishiAcFanSilent; @@ -632,7 +624,10 @@ uint8_t IRMitsubishiAC::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. + +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiAC::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: return kMitsubishiAcVaneAutoMove - 6; @@ -645,7 +640,9 @@ uint8_t IRMitsubishiAC::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a standard A/C wide wane swing into its native setting. +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiAC::convertSwingH(const stdAc::swingh_t position) { switch (position) { case stdAc::swingh_t::kLeftMax: return kMitsubishiAcWideVaneAuto - 7; @@ -659,7 +656,9 @@ uint8_t IRMitsubishiAC::convertSwingH(const stdAc::swingh_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRMitsubishiAC::toCommonMode(const uint8_t mode) { switch (mode) { case kMitsubishiAcCool: return stdAc::opmode_t::kCool; @@ -669,7 +668,9 @@ stdAc::opmode_t IRMitsubishiAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRMitsubishiAC::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kMitsubishiAcFanRealMax: return stdAc::fanspeed_t::kMax; @@ -681,7 +682,9 @@ stdAc::fanspeed_t IRMitsubishiAC::toCommonFanSpeed(const uint8_t speed) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRMitsubishiAC::toCommonSwingV(const uint8_t pos) { switch (pos) { case 1: return stdAc::swingv_t::kHighest; @@ -693,7 +696,9 @@ stdAc::swingv_t IRMitsubishiAC::toCommonSwingV(const uint8_t pos) { } } -// Convert a native horizontal swing to it's common equivalent. +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common horizontal swing position. stdAc::swingh_t IRMitsubishiAC::toCommonSwingH(const uint8_t pos) { switch (pos) { case 1: return stdAc::swingh_t::kLeftMax; @@ -706,7 +711,8 @@ stdAc::swingh_t IRMitsubishiAC::toCommonSwingH(const uint8_t pos) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRMitsubishiAC::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::MITSUBISHI_AC; @@ -731,7 +737,8 @@ stdAc::state_t IRMitsubishiAC::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. String IRMitsubishiAC::toString(void) { String result = ""; result.reserve(110); // Reserve some heap for the string to reduce fragging. @@ -796,18 +803,12 @@ String IRMitsubishiAC::toString(void) { } #if SEND_MITSUBISHI136 -// Send a Mitsubishi136 A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kMitsubishi136StateLength) -// repeat: Nr. of times the message is to be repeated. -// (Default = kMitsubishi136MinRepeat). -// -// Status: BETA / Probably working. Needs to be tested against a real device. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/888 +/// Send a Mitsubishi 136-bit A/C message. (MITSUBISHI136) +/// Status: BETA / Probably working. Needs to be tested against a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/888 void IRsend::sendMitsubishi136(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { @@ -823,21 +824,14 @@ void IRsend::sendMitsubishi136(const unsigned char data[], #endif // SEND_MITSUBISHI136 #if DECODE_MITSUBISHI136 -// Decode the supplied Mitsubishi136 message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Reported as working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/888 +/// Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) +/// Status: STABLE / Reported as working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/888 bool IRrecv::decodeMitsubishi136(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { @@ -867,17 +861,16 @@ bool IRrecv::decodeMitsubishi136(decode_results *results, uint16_t offset, #endif // DECODE_MITSUBISHI136 // Code to emulate Mitsubishi 136bit A/C IR remote control unit. -// -// Equipment it seems compatible with: -// Brand: Mitsubishi Electric, Model: PEAD-RP71JAA Ducted A/C -// Brand: Mitsubishi Electric, Model: 001CP T7WE10714 remote -// Initialise the object. +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRMitsubishi136::IRMitsubishi136(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } -// Reset the state of the remote to a known good state/sequence. +/// Reset the state of the remote to a known good state/sequence. void IRMitsubishi136::stateReset(void) { // The state of the IR remote in IR code form. // Known good state obtained from: @@ -887,13 +880,17 @@ void IRMitsubishi136::stateReset(void) { memcpy(remote_state, kReset, kMitsubishi136StateLength); } -// Calculate the checksum for the current internal state of the remote. +/// Calculate the checksum for the current internal state of the remote. void IRMitsubishi136::checksum(void) { for (uint8_t i = 0; i < 6; i++) remote_state[kMitsubishi136PowerByte + 6 + i] = ~remote_state[kMitsubishi136PowerByte + i]; } +/// Verify the checksum is valid for a given state. +/// @param[in] data The array to verify the checksum of. +/// @param[in] len The length of the data array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRMitsubishi136::validChecksum(const uint8_t *data, const uint16_t len) { if (len < kMitsubishi136StateLength) return false; const uint16_t half = (len - kMitsubishi136PowerByte) / 2; @@ -906,44 +903,51 @@ bool IRMitsubishi136::validChecksum(const uint8_t *data, const uint16_t len) { return true; } -// Configure the pin for output. +/// Set up hardware to be able to send a message. void IRMitsubishi136::begin(void) { _irsend.begin(); } #if SEND_MITSUBISHI136 -// Send the current desired state to the IR LED. +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRMitsubishi136::send(const uint16_t repeat) { _irsend.sendMitsubishi136(getRaw(), kMitsubishi136StateLength, repeat); } #endif // SEND_MITSUBISHI136 -// Return a pointer to the internal state date of the remote. +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRMitsubishi136::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] data A valid code for this protocol. void IRMitsubishi136::setRaw(const uint8_t *data) { memcpy(remote_state, data, kMitsubishi136StateLength); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to on. void IRMitsubishi136::on(void) { setPower(true); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRMitsubishi136::off(void) { setPower(false); } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishi136::setPower(bool on) { setBit(&remote_state[kMitsubishi136PowerByte], kMitsubishi136PowerOffset, on); } -// Return the requested power state of the A/C. +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishi136::getPower(void) { return GETBIT8(remote_state[kMitsubishi136PowerByte], kMitsubishi136PowerOffset); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRMitsubishi136::setTemp(const uint8_t degrees) { uint8_t temp = std::max((uint8_t)kMitsubishi136MinTemp, degrees); temp = std::min((uint8_t)kMitsubishi136MaxTemp, temp); @@ -951,30 +955,36 @@ void IRMitsubishi136::setTemp(const uint8_t degrees) { temp - kMitsubishiAcMinTemp); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRMitsubishi136::getTemp(void) { return GETBITS8(remote_state[kMitsubishi136TempByte], kHighNibble, kNibbleSize) + kMitsubishiAcMinTemp; } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRMitsubishi136::setFan(const uint8_t speed) { setBits(&remote_state[kMitsubishi136FanByte], kMitsubishi136FanOffset, kMitsubishi136FanSize, std::min(speed, kMitsubishi136FanMax)); } -// Return the requested state of the unit's fan. +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRMitsubishi136::getFan(void) { return GETBITS8(remote_state[kMitsubishi136FanByte], kMitsubishi136FanOffset, kMitsubishi136FanSize); } -// Return the requested climate operation mode of the a/c unit. +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRMitsubishi136::getMode(void) { return GETBITS8(remote_state[kMitsubishi136ModeByte], kMitsubishi136ModeOffset, kModeBitsSize); } -// Set the requested climate operation mode of the a/c unit. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRMitsubishi136::setMode(const uint8_t mode) { // If we get an unexpected mode, default to AUTO. switch (mode) { @@ -991,7 +1001,8 @@ void IRMitsubishi136::setMode(const uint8_t mode) { } } -// Set the requested vane operation mode of the a/c unit. +/// Set the Vertical Swing mode of the A/C. +/// @param[in] position The position/mode to set the swing to. void IRMitsubishi136::setSwingV(const uint8_t position) { // If we get an unexpected mode, default to auto. switch (position) { @@ -1008,24 +1019,30 @@ void IRMitsubishi136::setSwingV(const uint8_t position) { } } -// Return the requested vane operation mode of the a/c unit. +/// Get the Vertical Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishi136::getSwingV(void) { return GETBITS8(remote_state[kMitsubishi136SwingVByte], kHighNibble, kNibbleSize); } -// Emulate a quiet setting. There is no true quiet setting on this a/c +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishi136::setQuiet(bool on) { if (on) setFan(kMitsubishi136FanQuiet); else if (getQuiet()) setFan(kMitsubishi136FanLow); } -// Return the requested power state of the A/C. + +/// Get the Quiet mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishi136::getQuiet(void) { return getFan() == kMitsubishi136FanQuiet; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishi136::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kMitsubishi136Cool; @@ -1036,7 +1053,9 @@ uint8_t IRMitsubishi136::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishi136::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kMitsubishi136FanMin; @@ -1047,7 +1066,9 @@ uint8_t IRMitsubishi136::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishi136::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: return kMitsubishi136SwingVHighest; @@ -1059,7 +1080,9 @@ uint8_t IRMitsubishi136::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRMitsubishi136::toCommonMode(const uint8_t mode) { switch (mode) { case kMitsubishi136Cool: return stdAc::opmode_t::kCool; @@ -1070,7 +1093,9 @@ stdAc::opmode_t IRMitsubishi136::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRMitsubishi136::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kMitsubishi136FanMax: return stdAc::fanspeed_t::kMax; @@ -1081,7 +1106,9 @@ stdAc::fanspeed_t IRMitsubishi136::toCommonFanSpeed(const uint8_t speed) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRMitsubishi136::toCommonSwingV(const uint8_t pos) { switch (pos) { case kMitsubishi136SwingVHighest: return stdAc::swingv_t::kHighest; @@ -1092,7 +1119,8 @@ stdAc::swingv_t IRMitsubishi136::toCommonSwingV(const uint8_t pos) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRMitsubishi136::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::MITSUBISHI136; @@ -1117,7 +1145,8 @@ stdAc::state_t IRMitsubishi136::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. String IRMitsubishi136::toString(void) { String result = ""; result.reserve(80); // Reserve some heap for the string to reduce fragging. @@ -1146,18 +1175,12 @@ String IRMitsubishi136::toString(void) { #if SEND_MITSUBISHI112 -// Send a Mitsubishi112 A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kMitsubishi112StateLength) -// repeat: Nr. of times the message is to be repeated. -// (Default = kMitsubishi112MinRepeat). -// -// Status: Stable / Reported as working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/947 +/// Send a Mitsubishi 112-bit A/C formatted message. (MITSUBISHI112) +/// Status: Stable / Reported as working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/947 void IRsend::sendMitsubishi112(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { @@ -1173,29 +1196,23 @@ void IRsend::sendMitsubishi112(const unsigned char data[], #endif // SEND_MITSUBISHI112 #if DECODE_MITSUBISHI112 || DECODE_TCL112AC -// Decode the supplied Mitsubishi112 / Tcl112Ac message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Reported as working. -// -// Note: Mitsubishi112 & Tcl112Ac are basically the same protocol. -// The only significant difference I can see is Mitsubishi112 has a -// slightly longer header mark. We will use that to determine which -// varient it should be. The other differences require full decoding and -// only only with certain settings. -// There are some other timing differences too, but the tolerances will -// overlap. -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/619 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/947 +/// Decode the supplied Mitsubishi/TCL 112-bit A/C message. +/// (MITSUBISHI112, TCL112AC) +/// Status: STABLE / Reported as working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @note Note Mitsubishi112 & Tcl112Ac are basically the same protocol. +/// The only significant difference I can see is Mitsubishi112 has a +/// slightly longer header mark. We will use that to determine which +/// variant it should be. The other differences require full decoding and +/// only only with certain settings. +/// There are some other timing differences too, but the tolerances will +/// overlap. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/619 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/947 bool IRrecv::decodeMitsubishi112(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < (2 * nbits) + kHeader + kFooter - 1 + offset) @@ -1265,17 +1282,16 @@ bool IRrecv::decodeMitsubishi112(decode_results *results, uint16_t offset, #endif // DECODE_MITSUBISHI112 || DECODE_TCL112AC // Code to emulate Mitsubishi 112bit A/C IR remote control unit. -// -// Equipment it seems compatible with: -// Brand: Mitsubishi Electric, Model: MSH-A24WV / MUH-A24WV A/C -// Brand: Mitsubishi Electric, Model: KPOA remote -// Initialise the object. +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRMitsubishi112::IRMitsubishi112(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } -// Reset the state of the remote to a known good state/sequence. +/// Reset the state of the remote to a known good state/sequence. void IRMitsubishi112::stateReset(void) { const uint8_t kReset[kMitsubishi112StateLength] = { 0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x03, 0x0B, 0x10, @@ -1283,50 +1299,57 @@ void IRMitsubishi112::stateReset(void) { setRaw(kReset); } -// Calculate the checksum for the current internal state of the remote. +/// Calculate the checksum for the current internal state of the remote. void IRMitsubishi112::checksum(void) { remote_state[kMitsubishi112StateLength - 1] = IRTcl112Ac::calcChecksum( remote_state, kMitsubishi112StateLength); } -// Configure the pin for output. +/// Set up hardware to be able to send a message. void IRMitsubishi112::begin(void) { _irsend.begin(); } #if SEND_MITSUBISHI112 -// Send the current desired state to the IR LED. +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRMitsubishi112::send(const uint16_t repeat) { _irsend.sendMitsubishi112(getRaw(), kMitsubishi112StateLength, repeat); } #endif // SEND_MITSUBISHI112 -// Return a pointer to the internal state date of the remote. +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRMitsubishi112::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] data A valid code for this protocol. void IRMitsubishi112::setRaw(const uint8_t *data) { memcpy(remote_state, data, kMitsubishi112StateLength); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRMitsubishi112::on(void) { setPower(true); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRMitsubishi112::off(void) { setPower(false); } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishi112::setPower(bool on) { setBit(&remote_state[kMitsubishi112PowerByte], kMitsubishi112PowerOffset, on); } -// Return the requested power state of the A/C. +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishi112::getPower(void) { return GETBIT8(remote_state[kMitsubishi112PowerByte], kMitsubishi112PowerOffset); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRMitsubishi112::setTemp(const uint8_t degrees) { uint8_t temp = std::max((uint8_t)kMitsubishi112MinTemp, degrees); temp = std::min((uint8_t)kMitsubishi112MaxTemp, temp); @@ -1334,12 +1357,15 @@ void IRMitsubishi112::setTemp(const uint8_t degrees) { kMitsubishi112TempSize, kMitsubishiAcMaxTemp - temp); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRMitsubishi112::getTemp(void) { return kMitsubishiAcMaxTemp - GETBITS8(remote_state[kMitsubishi112TempByte], kLowNibble, kMitsubishi112TempSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRMitsubishi112::setFan(const uint8_t speed) { switch (speed) { case kMitsubishi112FanMin: @@ -1354,19 +1380,22 @@ void IRMitsubishi112::setFan(const uint8_t speed) { } } -// Return the requested state of the unit's fan. +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRMitsubishi112::getFan(void) { return GETBITS8(remote_state[kMitsubishi112FanByte], kMitsubishi112FanOffset, kMitsubishi112FanSize); } -// Return the requested climate operation mode of the a/c unit. +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRMitsubishi112::getMode(void) { return GETBITS8(remote_state[kMitsubishi112ModeByte], kMitsubishi112ModeOffset, kModeBitsSize); } -// Set the requested climate operation mode of the a/c unit. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRMitsubishi112::setMode(const uint8_t mode) { // If we get an unexpected mode, default to AUTO. switch (mode) { @@ -1383,7 +1412,8 @@ void IRMitsubishi112::setMode(const uint8_t mode) { } } -// Set the requested vane operation mode of the a/c unit. +/// Set the Vertical Swing mode of the A/C. +/// @param[in] position The position/mode to set the swing to. void IRMitsubishi112::setSwingV(const uint8_t position) { // If we get an unexpected mode, default to auto. switch (position) { @@ -1401,13 +1431,15 @@ void IRMitsubishi112::setSwingV(const uint8_t position) { } } -// Return the requested vane operation mode of the a/c unit. +/// Get the Vertical Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishi112::getSwingV(void) { return GETBITS8(remote_state[kMitsubishi112SwingVByte], kMitsubishi112SwingVOffset, kMitsubishi112SwingVSize); } -// Set the requested vane operation mode of the a/c unit. +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] position The position/mode to set the swing to. void IRMitsubishi112::setSwingH(const uint8_t position) { // If we get an unexpected mode, default to auto. switch (position) { @@ -1426,26 +1458,34 @@ void IRMitsubishi112::setSwingH(const uint8_t position) { } } -// Return the requested vane operation mode of the a/c unit. + +/// Get the Horizontal Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishi112::getSwingH(void) { return GETBITS8(remote_state[kMitsubishi112SwingHByte], kMitsubishi112SwingHOffset, kMitsubishi112SwingHSize); } -// Emulate a quiet setting. There is no true quiet setting on this a/c +/// Set the Quiet mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note There is no true quiet setting on this A/C. void IRMitsubishi112::setQuiet(bool on) { if (on) setFan(kMitsubishi112FanQuiet); else if (getQuiet()) setFan(kMitsubishi112FanLow); } -// Return the requested power state of the A/C. + +/// Get the Quiet mode of the A/C. +/// @return true, the setting is on. false, the setting is off. +/// @note There is no true quiet setting on this A/C. bool IRMitsubishi112::getQuiet(void) { return getFan() == kMitsubishi112FanQuiet; } - -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishi112::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kMitsubishi112Cool; @@ -1456,7 +1496,9 @@ uint8_t IRMitsubishi112::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishi112::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kMitsubishi112FanMin; @@ -1468,7 +1510,9 @@ uint8_t IRMitsubishi112::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishi112::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: return kMitsubishi112SwingVHighest; @@ -1480,7 +1524,9 @@ uint8_t IRMitsubishi112::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishi112::convertSwingH(const stdAc::swingh_t position) { switch (position) { case stdAc::swingh_t::kLeftMax: return kMitsubishi112SwingHLeftMax; @@ -1494,7 +1540,9 @@ uint8_t IRMitsubishi112::convertSwingH(const stdAc::swingh_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRMitsubishi112::toCommonMode(const uint8_t mode) { switch (mode) { case kMitsubishi112Cool: return stdAc::opmode_t::kCool; @@ -1504,7 +1552,9 @@ stdAc::opmode_t IRMitsubishi112::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRMitsubishi112::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kMitsubishi112FanMax: return stdAc::fanspeed_t::kMax; @@ -1515,7 +1565,9 @@ stdAc::fanspeed_t IRMitsubishi112::toCommonFanSpeed(const uint8_t speed) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRMitsubishi112::toCommonSwingV(const uint8_t pos) { switch (pos) { case kMitsubishi112SwingVHighest: return stdAc::swingv_t::kHighest; @@ -1527,7 +1579,9 @@ stdAc::swingv_t IRMitsubishi112::toCommonSwingV(const uint8_t pos) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common horizontal swing position. stdAc::swingh_t IRMitsubishi112::toCommonSwingH(const uint8_t pos) { switch (pos) { case kMitsubishi112SwingHLeftMax: return stdAc::swingh_t::kLeftMax; @@ -1540,8 +1594,8 @@ stdAc::swingh_t IRMitsubishi112::toCommonSwingH(const uint8_t pos) { } } - -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRMitsubishi112::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::MITSUBISHI112; @@ -1568,7 +1622,8 @@ stdAc::state_t IRMitsubishi112::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. String IRMitsubishi112::toString(void) { String result = ""; result.reserve(80); // Reserve some heap for the string to reduce fragging. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Mitsubishi.h b/lib/IRremoteESP8266-2.7.8/src/ir_Mitsubishi.h similarity index 77% rename from lib/IRremoteESP8266-2.7.7/src/ir_Mitsubishi.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Mitsubishi.h index b9cc7b349..04c7bf57d 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Mitsubishi.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Mitsubishi.h @@ -2,17 +2,29 @@ // Copyright 2017-2019 David Conran // Copyright 2019 Mark Kuchel -// Mitsubishi +/// @file +/// @brief Support for Mitsubishi protocols. +/// Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote +/// Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran +/// @see GlobalCache's Control Tower's Mitsubishi TV data. +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Mitsubishi.cpp +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/441 +/// @see https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266.ino#L84 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/619 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/888 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/947 +/// @see https://github.com/kuchel77 // Supports: -// Brand: Mitsubishi, Model: TV -// Brand: Mitsubishi, Model: HC3000 Projector +// Brand: Mitsubishi, Model: TV (MITSUBISHI) +// Brand: Mitsubishi, Model: HC3000 Projector (MITSUBISHI2) // Brand: Mitsubishi, Model: MS-GK24VA A/C // Brand: Mitsubishi, Model: KM14A 0179213 remote -// Brand: Mitsubishi Electric, Model: PEAD-RP71JAA Ducted A/C -// Brand: Mitsubishi Electric, Model: 001CP T7WE10714 remote -// Brand: Mitsubishi Electric, Model: MSH-A24WV / MUH-A24WV A/C -// Brand: Mitsubishi Electric, Model: KPOA remote +// Brand: Mitsubishi Electric, Model: PEAD-RP71JAA Ducted A/C (MITSUBISHI136) +// Brand: Mitsubishi Electric, Model: 001CP T7WE10714 remote (MITSUBISHI136) +// Brand: Mitsubishi Electric, Model: MSH-A24WV A/C (MITSUBISHI112) +// Brand: Mitsubishi Electric, Model: MUH-A24WV A/C (MITSUBISHI112) +// Brand: Mitsubishi Electric, Model: KPOA remote (MITSUBISHI112) #ifndef IR_MITSUBISHI_H_ #define IR_MITSUBISHI_H_ @@ -28,8 +40,6 @@ #include "IRsend_test.h" #endif -// Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote -// Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran // Constants const uint8_t kMitsubishiAcModeOffset = 3; @@ -151,6 +161,10 @@ const uint8_t kMitsubishi112SwingHAuto = 0b1100; #define MITSUBISHI_AC_COOL kMitsubishiAcCool #define MITSUBISHI_AC_AUTO kMitsubishiAcAuto + +/// Class for handling detailed Mitsubishi 144-bit A/C messages. +/// Inspired and derived from the work done at: https://github.com/r45635/HVAC-IR-Control +/// @warning Consider this very alpha code. Seems to work, but not validated. class IRMitsubishiAC { public: explicit IRMitsubishiAC(const uint16_t pin, const bool inverted = false, @@ -159,6 +173,10 @@ class IRMitsubishiAC { static bool validChecksum(const uint8_t* data); #if SEND_MITSUBISHI_AC void send(const uint16_t repeat = kMitsubishiACMinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_MITSUBISHI_AC void begin(void); @@ -199,24 +217,29 @@ class IRMitsubishiAC { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kMitsubishiACStateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kMitsubishiACStateLength]; ///< The state in code form. void checksum(void); static uint8_t calculateChecksum(const uint8_t* data); }; +/// Class for handling detailed Mitsubishi 136-bit A/C messages. class IRMitsubishi136 { public: explicit IRMitsubishi136(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - - void stateReset(void); #if SEND_MITSUBISHI136 void send(const uint16_t repeat = kMitsubishi136MinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_MITSUBISHI136 void begin(void); @@ -249,11 +272,13 @@ class IRMitsubishi136 { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kMitsubishi136StateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kMitsubishi136StateLength]; ///< The state in code form. void checksum(void); }; @@ -262,11 +287,13 @@ class IRMitsubishi112 { public: explicit IRMitsubishi112(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - - void stateReset(void); #if SEND_MITSUBISHI112 void send(const uint16_t repeat = kMitsubishi112MinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_MITSUBISHI112 void begin(void); @@ -301,11 +328,13 @@ class IRMitsubishi112 { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kMitsubishi112StateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kMitsubishi112StateLength]; ///< The state in code form. void checksum(void); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_MitsubishiHeavy.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_MitsubishiHeavy.cpp similarity index 73% rename from lib/IRremoteESP8266-2.7.7/src/ir_MitsubishiHeavy.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_MitsubishiHeavy.cpp index 39bd3d8d6..7747ded6d 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_MitsubishiHeavy.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_MitsubishiHeavy.cpp @@ -1,17 +1,14 @@ // Copyright 2019 David Conran -// Mitsubishi Heavy Industries A/C remote emulation. -// Code to emulate Mitsubishi Heavy Industries A/C IR remote control units, -// which should control at least the following A/C units: -// Remote Control RLA502A700B: -// Model SRKxxZM-S -// Model SRKxxZMXA-S -// Remote Control RKX502A001C: -// Model SRKxxZJ-S - -// Note: This code was *heavily* influenced by @ToniA's great work & code, -// but it has been written from scratch. -// Nothing was copied other than constants and message analysis. +/// @file +/// @brief Support for Mitsubishi Heavy Industry protocols. +/// Code to emulate Mitsubishi Heavy Industries A/C IR remote control units. +/// @note This code was *heavily* influenced by ToniA's great work & code, +/// but it has been written from scratch. +/// Nothing was copied other than constants and message analysis. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/660 +/// @see https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp #include "ir_MitsubishiHeavy.h" #include @@ -23,11 +20,6 @@ #include #endif -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/660 -// https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp -// https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp - // Constants const uint16_t kMitsubishiHeavyHdrMark = 3140; const uint16_t kMitsubishiHeavyHdrSpace = 1630; @@ -45,14 +37,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_MITSUBISHIHEAVY -// Send a MitsubishiHeavy 88 bit A/C message. -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kMitsubishiHeavy88Bits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: BETA / Appears to be working. Needs testing against a real device. +/// Send a MitsubishiHeavy 88-bit A/C message. +/// Status: BETA / Appears to be working. Needs testing against a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendMitsubishiHeavy88(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { @@ -65,14 +54,11 @@ void IRsend::sendMitsubishiHeavy88(const unsigned char data[], data, nbytes, 38000, false, repeat, kDutyDefault); } -// Send a MitsubishiHeavy 152 bit A/C message. -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kMitsubishiHeavy152Bits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: BETA / Appears to be working. Needs testing against a real device. +/// Send a MitsubishiHeavy 152-bit A/C message. +/// Status: BETA / Appears to be working. Needs testing against a real device. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendMitsubishiHeavy152(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { @@ -83,20 +69,29 @@ void IRsend::sendMitsubishiHeavy152(const unsigned char data[], #endif // SEND_MITSUBISHIHEAVY // Class for decoding and constructing MitsubishiHeavy152 AC messages. + +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRMitsubishiHeavy152Ac::begin(void) { _irsend.begin(); } #if SEND_MITSUBISHIHEAVY +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRMitsubishiHeavy152Ac::send(const uint16_t repeat) { _irsend.sendMitsubishiHeavy152(this->getRaw(), kMitsubishiHeavy152StateLength, repeat); } #endif // SEND_MITSUBISHIHEAVY +/// Reset the state of the remote to a known good state/sequence. void IRMitsubishiHeavy152Ac::stateReset(void) { memcpy(remote_state, kMitsubishiHeavyZmsSig, kMitsubishiHeavySigLength); for (uint8_t i = kMitsubishiHeavySigLength; @@ -104,27 +99,39 @@ void IRMitsubishiHeavy152Ac::stateReset(void) { remote_state[17] = 0x80; } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRMitsubishiHeavy152Ac::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] data A valid code for this protocol. void IRMitsubishiHeavy152Ac::setRaw(const uint8_t *data) { memcpy(remote_state, data, kMitsubishiHeavy152StateLength); } +/// Set the requested power state of the A/C to on. void IRMitsubishiHeavy152Ac::on(void) { setPower(true); } +/// Set the requested power state of the A/C to off. void IRMitsubishiHeavy152Ac::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::setPower(const bool on) { setBit(&remote_state[5], kMitsubishiHeavyPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::getPower(void) { return GETBIT8(remote_state[5], kMitsubishiHeavyPowerOffset); } +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRMitsubishiHeavy152Ac::setTemp(const uint8_t temp) { uint8_t newtemp = temp; newtemp = std::min(newtemp, kMitsubishiHeavyMaxTemp); @@ -133,12 +140,15 @@ void IRMitsubishiHeavy152Ac::setTemp(const uint8_t temp) { newtemp - kMitsubishiHeavyMinTemp); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRMitsubishiHeavy152Ac::getTemp(void) { return GETBITS8(remote_state[7], kLowNibble, kNibbleSize) + kMitsubishiHeavyMinTemp; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRMitsubishiHeavy152Ac::setFan(const uint8_t speed) { uint8_t newspeed = speed; switch (speed) { @@ -153,10 +163,14 @@ void IRMitsubishiHeavy152Ac::setFan(const uint8_t speed) { setBits(&remote_state[9], kLowNibble, kNibbleSize, newspeed); } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRMitsubishiHeavy152Ac::getFan(void) { return GETBITS8(remote_state[9], kLowNibble, kNibbleSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRMitsubishiHeavy152Ac::setMode(const uint8_t mode) { uint8_t newmode = mode; switch (mode) { @@ -171,38 +185,54 @@ void IRMitsubishiHeavy152Ac::setMode(const uint8_t mode) { setBits(&remote_state[5], kMitsubishiHeavyModeOffset, kModeBitsSize, newmode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRMitsubishiHeavy152Ac::getMode(void) { return GETBITS8(remote_state[5], kMitsubishiHeavyModeOffset, kModeBitsSize); } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] pos The position/mode to set the swing to. void IRMitsubishiHeavy152Ac::setSwingVertical(const uint8_t pos) { setBits(&remote_state[11], kMitsubishiHeavy152SwingVOffset, kMitsubishiHeavy152SwingVSize, std::min(pos, kMitsubishiHeavy152SwingVOff)); } +/// Get the Vertical Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishiHeavy152Ac::getSwingVertical(void) { return GETBITS8(remote_state[11], kMitsubishiHeavy152SwingVOffset, kMitsubishiHeavy152SwingVSize); } +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] pos The position/mode to set the swing to. void IRMitsubishiHeavy152Ac::setSwingHorizontal(const uint8_t pos) { setBits(&remote_state[13], kLowNibble, kNibbleSize, std::min(pos, kMitsubishiHeavy152SwingHOff)); } +/// Get the Horizontal Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishiHeavy152Ac::getSwingHorizontal(void) { return GETBITS8(remote_state[13], kLowNibble, kNibbleSize); } +/// Set the Night (Sleep) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::setNight(const bool on) { setBit(&remote_state[15], kMitsubishiHeavyNightOffset, on); } +/// Get the Night (Sleep) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::getNight(void) { return GETBIT8(remote_state[15], kMitsubishiHeavyNightOffset); } +/// Set the 3D mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::set3D(const bool on) { if (on) remote_state[11] |= kMitsubishiHeavy3DMask; @@ -210,63 +240,88 @@ void IRMitsubishiHeavy152Ac::set3D(const bool on) { remote_state[11] &= ~kMitsubishiHeavy3DMask; } +/// Get the 3D mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::get3D(void) { return (remote_state[11] & kMitsubishiHeavy3DMask) == kMitsubishiHeavy3DMask; } +/// Set the Silent (Quiet) mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::setSilent(const bool on) { setBit(&remote_state[15], kMitsubishiHeavySilentOffset, on); } +/// Get the Silent (Quiet) mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::getSilent(void) { return GETBIT8(remote_state[15], kMitsubishiHeavySilentOffset); } +/// Set the Filter mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::setFilter(const bool on) { setBit(&remote_state[5], kMitsubishiHeavyFilterOffset, on); } +/// Get the Filter mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::getFilter(void) { return GETBIT8(remote_state[5], kMitsubishiHeavyFilterOffset); } +/// Set the Clean mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::setClean(const bool on) { this->setFilter(on); setBit(&remote_state[5], kMitsubishiHeavyCleanOffset, on); } +/// Get the Clean mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::getClean(void) { return GETBIT8(remote_state[5], kMitsubishiHeavyCleanOffset) && getFilter(); } +/// Set the Turbo mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::setTurbo(const bool on) { if (on) this->setFan(kMitsubishiHeavy152FanTurbo); else if (this->getTurbo()) this->setFan(kMitsubishiHeavy152FanAuto); } +/// Get the Turbo mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::getTurbo(void) { return this->getFan() == kMitsubishiHeavy152FanTurbo; } +/// Set the Economical mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy152Ac::setEcono(const bool on) { if (on) this->setFan(kMitsubishiHeavy152FanEcono); else if (this->getEcono()) this->setFan(kMitsubishiHeavy152FanAuto); } +/// Get the Economical mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy152Ac::getEcono(void) { return this->getFan() == kMitsubishiHeavy152FanEcono; } -// Verify the given state has a ZM-S signature. +/// Verify the given state has a ZM-S signature. +/// @param[in] state A ptr to a state to be checked. +/// @return true, the check passed. Otherwise, false. bool IRMitsubishiHeavy152Ac::checkZmsSig(const uint8_t *state) { for (uint8_t i = 0; i < kMitsubishiHeavySigLength; i++) if (state[i] != kMitsubishiHeavyZmsSig[i]) return false; return true; } -// Protocol technically has no checksum, but does has inverted byte pairs. +/// Calculate the checksum for the current internal state of the remote. +/// Note: Technically it has no checksum, but does has inverted byte pairs. void IRMitsubishiHeavy152Ac::checksum(void) { for (uint8_t i = kMitsubishiHeavySigLength - 2; i < kMitsubishiHeavy152StateLength; @@ -275,7 +330,11 @@ void IRMitsubishiHeavy152Ac::checksum(void) { } } -// Protocol technically has no checksum, but does has inverted byte pairs. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. +/// Note: Technically it has no checksum, but does has inverted byte pairs. bool IRMitsubishiHeavy152Ac::validChecksum(const uint8_t *state, const uint16_t length) { // Assume anything too short is fine. @@ -290,7 +349,9 @@ bool IRMitsubishiHeavy152Ac::validChecksum(const uint8_t *state, return true; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy152Ac::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kMitsubishiHeavyCool; @@ -301,7 +362,9 @@ uint8_t IRMitsubishiHeavy152Ac::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy152Ac::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { // Assumes Econo is slower than Low. @@ -314,7 +377,9 @@ uint8_t IRMitsubishiHeavy152Ac::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy152Ac::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kAuto: return kMitsubishiHeavy152SwingVAuto; @@ -327,7 +392,9 @@ uint8_t IRMitsubishiHeavy152Ac::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a standard A/C horizontal swing into its native setting. +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy152Ac::convertSwingH(const stdAc::swingh_t position) { switch (position) { case stdAc::swingh_t::kAuto: return kMitsubishiHeavy152SwingHAuto; @@ -340,7 +407,9 @@ uint8_t IRMitsubishiHeavy152Ac::convertSwingH(const stdAc::swingh_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRMitsubishiHeavy152Ac::toCommonMode(const uint8_t mode) { switch (mode) { case kMitsubishiHeavyCool: return stdAc::opmode_t::kCool; @@ -351,7 +420,9 @@ stdAc::opmode_t IRMitsubishiHeavy152Ac::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRMitsubishiHeavy152Ac::toCommonFanSpeed(const uint8_t spd) { switch (spd) { case kMitsubishiHeavy152FanMax: return stdAc::fanspeed_t::kMax; @@ -363,7 +434,9 @@ stdAc::fanspeed_t IRMitsubishiHeavy152Ac::toCommonFanSpeed(const uint8_t spd) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common horizontal swing position. stdAc::swingh_t IRMitsubishiHeavy152Ac::toCommonSwingH(const uint8_t pos) { switch (pos) { case kMitsubishiHeavy152SwingHLeftMax: return stdAc::swingh_t::kLeftMax; @@ -376,7 +449,9 @@ stdAc::swingh_t IRMitsubishiHeavy152Ac::toCommonSwingH(const uint8_t pos) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRMitsubishiHeavy152Ac::toCommonSwingV(const uint8_t pos) { switch (pos) { case kMitsubishiHeavy152SwingVHighest: return stdAc::swingv_t::kHighest; @@ -389,7 +464,8 @@ stdAc::swingv_t IRMitsubishiHeavy152Ac::toCommonSwingV(const uint8_t pos) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRMitsubishiHeavy152Ac::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::MITSUBISHI_HEAVY_152; @@ -414,7 +490,8 @@ stdAc::state_t IRMitsubishiHeavy152Ac::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. String IRMitsubishiHeavy152Ac::toString(void) { String result = ""; result.reserve(180); // Reserve some heap for the string to reduce fragging. @@ -529,47 +606,68 @@ String IRMitsubishiHeavy152Ac::toString(void) { // Class for decoding and constructing MitsubishiHeavy88 AC messages. + +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRMitsubishiHeavy88Ac::begin(void) { _irsend.begin(); } #if SEND_MITSUBISHIHEAVY +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRMitsubishiHeavy88Ac::send(const uint16_t repeat) { _irsend.sendMitsubishiHeavy88(this->getRaw(), kMitsubishiHeavy88StateLength, repeat); } #endif // SEND_MITSUBISHIHEAVY +/// Reset the state of the remote to a known good state/sequence. void IRMitsubishiHeavy88Ac::stateReset(void) { memcpy(remote_state, kMitsubishiHeavyZjsSig, kMitsubishiHeavySigLength); for (uint8_t i = kMitsubishiHeavySigLength; i < kMitsubishiHeavy88StateLength; i++) remote_state[i] = 0; } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRMitsubishiHeavy88Ac::getRaw(void) { checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] data A valid code for this protocol. void IRMitsubishiHeavy88Ac::setRaw(const uint8_t *data) { memcpy(remote_state, data, kMitsubishiHeavy88StateLength); } +/// Set the requested power state of the A/C to on. void IRMitsubishiHeavy88Ac::on(void) { setPower(true); } +/// Set the requested power state of the A/C to off. void IRMitsubishiHeavy88Ac::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy88Ac::setPower(const bool on) { setBit(&remote_state[9], kMitsubishiHeavyPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy88Ac::getPower(void) { return GETBIT8(remote_state[9], kMitsubishiHeavyPowerOffset); } +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRMitsubishiHeavy88Ac::setTemp(const uint8_t temp) { uint8_t newtemp = temp; newtemp = std::min(newtemp, kMitsubishiHeavyMaxTemp); @@ -578,12 +676,15 @@ void IRMitsubishiHeavy88Ac::setTemp(const uint8_t temp) { newtemp - kMitsubishiHeavyMinTemp); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRMitsubishiHeavy88Ac::getTemp(void) { return GETBITS8(remote_state[9], kHighNibble, kNibbleSize) + kMitsubishiHeavyMinTemp; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRMitsubishiHeavy88Ac::setFan(const uint8_t speed) { uint8_t newspeed = speed; switch (speed) { @@ -598,11 +699,15 @@ void IRMitsubishiHeavy88Ac::setFan(const uint8_t speed) { kMitsubishiHeavy88FanSize, newspeed); } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRMitsubishiHeavy88Ac::getFan(void) { return GETBITS8(remote_state[7], kMitsubishiHeavy88FanOffset, kMitsubishiHeavy88FanSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRMitsubishiHeavy88Ac::setMode(const uint8_t mode) { uint8_t newmode = mode; switch (mode) { @@ -617,10 +722,14 @@ void IRMitsubishiHeavy88Ac::setMode(const uint8_t mode) { setBits(&remote_state[9], kMitsubishiHeavyModeOffset, kModeBitsSize, newmode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRMitsubishiHeavy88Ac::getMode(void) { return GETBITS8(remote_state[9], kMitsubishiHeavyModeOffset, kModeBitsSize); } +/// Set the Vertical Swing mode of the A/C. +/// @param[in] pos The position/mode to set the swing to. void IRMitsubishiHeavy88Ac::setSwingVertical(const uint8_t pos) { uint8_t newpos; switch (pos) { @@ -639,6 +748,8 @@ void IRMitsubishiHeavy88Ac::setSwingVertical(const uint8_t pos) { newpos >> kMitsubishiHeavy88SwingVByte5Size); } +/// Get the Vertical Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishiHeavy88Ac::getSwingVertical(void) { return GETBITS8(remote_state[5], kMitsubishiHeavy88SwingVByte5Offset, kMitsubishiHeavy88SwingVByte5Size) | @@ -647,6 +758,8 @@ uint8_t IRMitsubishiHeavy88Ac::getSwingVertical(void) { kMitsubishiHeavy88SwingVByte5Size); } +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] pos The position/mode to set the swing to. void IRMitsubishiHeavy88Ac::setSwingHorizontal(const uint8_t pos) { uint8_t newpos; switch (pos) { @@ -668,6 +781,8 @@ void IRMitsubishiHeavy88Ac::setSwingHorizontal(const uint8_t pos) { newpos >> kMitsubishiHeavy88SwingHSize); } +/// Get the Horizontal Swing mode of the A/C. +/// @return The native position/mode setting. uint8_t IRMitsubishiHeavy88Ac::getSwingHorizontal(void) { return GETBITS8(remote_state[5], kMitsubishiHeavy88SwingHOffset1, kMitsubishiHeavy88SwingHSize) | @@ -676,26 +791,36 @@ uint8_t IRMitsubishiHeavy88Ac::getSwingHorizontal(void) { kMitsubishiHeavy88SwingHSize); } +/// Set the Turbo mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy88Ac::setTurbo(const bool on) { if (on) this->setFan(kMitsubishiHeavy88FanTurbo); else if (this->getTurbo()) this->setFan(kMitsubishiHeavy88FanAuto); } +/// Get the Turbo mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy88Ac::getTurbo(void) { return this->getFan() == kMitsubishiHeavy88FanTurbo; } +/// Set the Economical mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy88Ac::setEcono(const bool on) { if (on) this->setFan(kMitsubishiHeavy88FanEcono); else if (this->getEcono()) this->setFan(kMitsubishiHeavy88FanAuto); } +/// Get the Economical mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy88Ac::getEcono(void) { return this->getFan() == kMitsubishiHeavy88FanEcono; } +/// Set the 3D mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy88Ac::set3D(const bool on) { if (on) this->setSwingHorizontal(kMitsubishiHeavy88SwingH3D); @@ -703,26 +828,35 @@ void IRMitsubishiHeavy88Ac::set3D(const bool on) { this->setSwingHorizontal(kMitsubishiHeavy88SwingHOff); } +/// Get the 3D mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy88Ac::get3D(void) { return this->getSwingHorizontal() == kMitsubishiHeavy88SwingH3D; } +/// Set the Clean mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRMitsubishiHeavy88Ac::setClean(const bool on) { setBit(&remote_state[5], kMitsubishiHeavy88CleanOffset, on); } +/// Get the Clean mode of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRMitsubishiHeavy88Ac::getClean(void) { return GETBIT8(remote_state[5], kMitsubishiHeavy88CleanOffset); } -// Verify the given state has a ZJ-S signature. +/// Verify the given state has a ZJ-S signature. +/// @param[in] state A ptr to a state to be checked. +/// @return true, the check passed. Otherwise, false. bool IRMitsubishiHeavy88Ac::checkZjsSig(const uint8_t *state) { for (uint8_t i = 0; i < kMitsubishiHeavySigLength; i++) if (state[i] != kMitsubishiHeavyZjsSig[i]) return false; return true; } -// Protocol technically has no checksum, but does has inverted byte pairs. +/// Calculate the checksum for the current internal state of the remote. +/// Note: Technically it has no checksum, but does has inverted byte pairs. void IRMitsubishiHeavy88Ac::checksum(void) { for (uint8_t i = kMitsubishiHeavySigLength - 2; i < kMitsubishiHeavy88StateLength; @@ -731,18 +865,26 @@ void IRMitsubishiHeavy88Ac::checksum(void) { } } -// Protocol technically has no checksum, but does has inverted byte pairs. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. +/// Note: Technically it has no checksum, but does has inverted byte pairs. bool IRMitsubishiHeavy88Ac::validChecksum(const uint8_t *state, const uint16_t length) { return IRMitsubishiHeavy152Ac::validChecksum(state, length); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy88Ac::convertMode(const stdAc::opmode_t mode) { return IRMitsubishiHeavy152Ac::convertMode(mode); } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy88Ac::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { // Assumes Econo is slower than Low. @@ -755,7 +897,9 @@ uint8_t IRMitsubishiHeavy88Ac::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy88Ac::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kAuto: return kMitsubishiHeavy88SwingVAuto; @@ -768,7 +912,9 @@ uint8_t IRMitsubishiHeavy88Ac::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a standard A/C horizontal swing into its native setting. +/// Convert a stdAc::swingh_t enum into it's native setting. +/// @param[in] position The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRMitsubishiHeavy88Ac::convertSwingH(const stdAc::swingh_t position) { switch (position) { case stdAc::swingh_t::kAuto: return kMitsubishiHeavy88SwingHAuto; @@ -781,7 +927,9 @@ uint8_t IRMitsubishiHeavy88Ac::convertSwingH(const stdAc::swingh_t position) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRMitsubishiHeavy88Ac::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kMitsubishiHeavy88FanTurbo: return stdAc::fanspeed_t::kMax; @@ -793,7 +941,9 @@ stdAc::fanspeed_t IRMitsubishiHeavy88Ac::toCommonFanSpeed(const uint8_t speed) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common horizontal swing position. stdAc::swingh_t IRMitsubishiHeavy88Ac::toCommonSwingH(const uint8_t pos) { switch (pos) { case kMitsubishiHeavy88SwingHLeftMax: return stdAc::swingh_t::kLeftMax; @@ -806,7 +956,9 @@ stdAc::swingh_t IRMitsubishiHeavy88Ac::toCommonSwingH(const uint8_t pos) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRMitsubishiHeavy88Ac::toCommonSwingV(const uint8_t pos) { switch (pos) { case kMitsubishiHeavy88SwingVHighest: return stdAc::swingv_t::kHighest; @@ -819,7 +971,8 @@ stdAc::swingv_t IRMitsubishiHeavy88Ac::toCommonSwingV(const uint8_t pos) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRMitsubishiHeavy88Ac::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::MITSUBISHI_HEAVY_88; @@ -844,7 +997,8 @@ stdAc::state_t IRMitsubishiHeavy88Ac::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. String IRMitsubishiHeavy88Ac::toString(void) { String result = ""; result.reserve(140); // Reserve some heap for the string to reduce fragging. @@ -955,19 +1109,15 @@ String IRMitsubishiHeavy88Ac::toString(void) { } #if DECODE_MITSUBISHIHEAVY -// Decode the supplied MitsubishiHeavy message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. -// Typically kMitsubishiHeavy88Bits or kMitsubishiHeavy152Bits (def). -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Appears to be working. Needs testing against a real device. +/// Decode the supplied Mitsubishi Heavy Industries A/C message. +/// Status: BETA / Appears to be working. Needs testing against a real device. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// Typically kMitsubishiHeavy88Bits or kMitsubishiHeavy152Bits (def). +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeMitsubishiHeavy(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict) { diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_MitsubishiHeavy.h b/lib/IRremoteESP8266-2.7.8/src/ir_MitsubishiHeavy.h similarity index 82% rename from lib/IRremoteESP8266-2.7.7/src/ir_MitsubishiHeavy.h rename to lib/IRremoteESP8266-2.7.8/src/ir_MitsubishiHeavy.h index 39c30e0ac..2d9d4ff73 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_MitsubishiHeavy.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_MitsubishiHeavy.h @@ -1,11 +1,21 @@ // Copyright 2019 David Conran +/// @file +/// @brief Support for Mitsubishi Heavy Industry protocols. +/// Code to emulate Mitsubishi Heavy Industries A/C IR remote control units. +/// @note This code was *heavily* influenced by ToniA's great work & code, +/// but it has been written from scratch. +/// Nothing was copied other than constants and message analysis. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/660 +/// @see https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp + // Supports: -// Brand: Mitsubishi Heavy Industries, Model: RLA502A700B remote -// Brand: Mitsubishi Heavy Industries, Model: SRKxxZM-S A/C -// Brand: Mitsubishi Heavy Industries, Model: SRKxxZMXA-S A/C -// Brand: Mitsubishi Heavy Industries, Model: RKX502A001C remote -// Brand: Mitsubishi Heavy Industries, Model: SRKxxZJ-S A/C +// Brand: Mitsubishi Heavy Industries, Model: RLA502A700B remote (152 bit) +// Brand: Mitsubishi Heavy Industries, Model: SRKxxZM-S A/C (152 bit) +// Brand: Mitsubishi Heavy Industries, Model: SRKxxZMXA-S A/C (152 bit) +// Brand: Mitsubishi Heavy Industries, Model: RKX502A001C remote (88 bit) +// Brand: Mitsubishi Heavy Industries, Model: SRKxxZJ-S A/C (88 bit) #ifndef IR_MITSUBISHIHEAVY_H_ #define IR_MITSUBISHIHEAVY_H_ @@ -19,15 +29,9 @@ #include "IRsend_test.h" #endif -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/660 -// https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp -// https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp - // Constants. const uint8_t kMitsubishiHeavySigLength = 5; - // ZMS (152 bit) const uint8_t kMitsubishiHeavyZmsSig[kMitsubishiHeavySigLength] = { 0xAD, 0x51, 0x3C, 0xE5, 0x1A}; @@ -124,15 +128,20 @@ const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111; // 7 // Classes + +/// Class for handling detailed Mitsubishi Heavy 152-bit A/C messages. class IRMitsubishiHeavy152Ac { public: explicit IRMitsubishiHeavy152Ac(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_MITSUBISHIHEAVY void send(const uint16_t repeat = kMitsubishiHeavy152MinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_MITSUBISHIHEAVY void begin(void); @@ -197,24 +206,30 @@ class IRMitsubishiHeavy152Ac { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< Instance of the IR send class #else // UNIT_TEST - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond #endif // UNIT_TEST - // The state of the IR remote in IR code form. - uint8_t remote_state[kMitsubishiHeavy152StateLength]; + uint8_t remote_state[kMitsubishiHeavy152StateLength]; ///< State in code form void checksum(void); }; +/// Class for handling detailed Mitsubishi Heavy 88-bit A/C messages. class IRMitsubishiHeavy88Ac { public: explicit IRMitsubishiHeavy88Ac(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_MITSUBISHIHEAVY void send(const uint16_t repeat = kMitsubishiHeavy88MinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_MITSUBISHIHEAVY void begin(void); void on(void); @@ -268,12 +283,13 @@ class IRMitsubishiHeavy88Ac { #ifndef UNIT_TEST private: - IRsend _irsend; + IRsend _irsend; ///< Instance of the IR send class #else // UNIT_TEST - IRsendTest _irsend; + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond #endif // UNIT_TEST - // The state of the IR remote in IR code form. - uint8_t remote_state[kMitsubishiHeavy152StateLength]; + uint8_t remote_state[kMitsubishiHeavy88StateLength]; ///< State in code form void checksum(void); }; #endif // IR_MITSUBISHIHEAVY_H_ diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Multibrackets.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Multibrackets.cpp similarity index 74% rename from lib/IRremoteESP8266-2.7.7/src/ir_Multibrackets.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Multibrackets.cpp index 0a0dfbe71..2367b49bc 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Multibrackets.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Multibrackets.cpp @@ -1,13 +1,16 @@ // Copyright 2020 David Conran +/// @file +/// @brief Support for Multibrackets protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1103 +/// @see http://info.multibrackets.com/data/common/manuals/4500_code.pdf + +// Supports: +// Brand: Multibrackets, Model: Motorized Swing mount large - 4500 + #include "IRrecv.h" #include "IRsend.h" -// Multibrackets protocol. -// -// Supports: -// Brand: Multibrackets, Model: Motorized Swing mount large - 4500 - const uint16_t kMultibracketsTick = 5000; // uSeconds const uint16_t kMultibracketsHdrMark = 3 * kMultibracketsTick; // uSeconds const uint16_t kMultibracketsFooterSpace = 6 * kMultibracketsTick; // uSeconds @@ -15,19 +18,11 @@ const uint8_t kMultibracketsTolerance = 5; // Percent const uint16_t kMultibracketsFreq = 38000; // Hertz #if SEND_MULTIBRACKETS -// Send a Miltibrackets formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. -// Typically kMultibracketsBits. -// repeat: The number of times the command is to be repeated. -// -// Status: BETA / Appears to be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1103 -// http://info.multibrackets.com/data/common/manuals/4500_code.pdf +/// Send a Multibrackets formatted message. +/// Status: BETA / Appears to be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendMultibrackets(uint64_t data, uint16_t nbits, uint16_t repeat) { enableIROut(kMultibracketsFreq); for (uint16_t r = 0; r <= repeat; r++) { @@ -53,22 +48,14 @@ void IRsend::sendMultibrackets(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_MULTIBRACKETS #if DECODE_MULTIBRACKETS -// Decode the Multibrackets message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kMultibracketsBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Appears to be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1103 -// http://info.multibrackets.com/data/common/manuals/4500_code.pdf +/// Decode the Multibrackets message. +/// Status: BETA / Appears to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeMultibrackets(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // Compliance diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_NEC.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_NEC.cpp similarity index 65% rename from lib/IRremoteESP8266-2.7.7/src/ir_NEC.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_NEC.cpp index 9145f5c24..ac816f2ed 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_NEC.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_NEC.cpp @@ -1,7 +1,10 @@ // Copyright 2009 Ken Shirriff // Copyright 2017 David Conran -// NEC originally added from https://github.com/shirriff/Arduino-IRremote/ +/// @file +/// @brief Support for NEC (Renesas) protocols. +/// NEC originally added from https://github.com/shirriff/Arduino-IRremote/ +/// @see http://www.sbprojects.com/knowledge/ir/nec.php #define __STDC_LIMIT_MACROS #include "ir_NEC.h" @@ -11,18 +14,17 @@ #include "IRsend.h" #include "IRutils.h" -#if (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO) -// Send a raw NEC(Renesas) formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. Typically kNECBits. -// repeat: The number of times the command is to be repeated. -// -// Status: STABLE / Known working. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/nec.php +// This protocol is used by a lot of other protocols, hence the long list. +#if (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO || \ + SEND_MIDEA24) + +/// Send a raw NEC(Renesas) formatted message. +/// Status: STABLE / Known working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol appears to have no header. +/// @see http://www.sbprojects.com/knowledge/ir/nec.php void IRsend::sendNEC(uint64_t data, uint16_t nbits, uint16_t repeat) { sendGeneric(kNecHdrMark, kNecHdrSpace, kNecBitMark, kNecOneSpace, kNecBitMark, kNecZeroSpace, kNecBitMark, kNecMinGap, kNecMinCommandLength, @@ -37,17 +39,12 @@ void IRsend::sendNEC(uint64_t data, uint16_t nbits, uint16_t repeat) { 33); } -// Calculate the raw NEC data based on address and command. -// Args: -// address: An address value. -// command: An 8-bit command value. -// Returns: -// A raw 32-bit NEC message. -// -// Status: STABLE / Expected to work. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/nec.php +/// Calculate the raw NEC data based on address and command. +/// Status: STABLE / Expected to work. +/// @param[in] address An address value. +/// @param[in] command An 8-bit command value. +/// @return A raw 32-bit NEC message suitable for use with `sendNEC()`. +/// @see http://www.sbprojects.com/knowledge/ir/nec.php uint32_t IRsend::encodeNEC(uint16_t address, uint16_t command) { command &= 0xFF; // We only want the least significant byte of command. // sendNEC() sends MSB first, but protocol says this is LSB first. @@ -61,32 +58,26 @@ uint32_t IRsend::encodeNEC(uint16_t address, uint16_t command) { return (address << 24) + ((address ^ 0xFF) << 16) + command; // Normal. } } -#endif // (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO ) +#endif // (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO || + // SEND_MIDEA24) +// This protocol is used by a lot of other protocols, hence the long list. #if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO) -// Decode the supplied NEC message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kNECBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Known good. -// -// Notes: -// NEC protocol has three varients/forms. -// Normal: an 8 bit address & an 8 bit command in 32 bit data form. -// i.e. address + inverted(address) + command + inverted(command) -// Extended: a 16 bit address & an 8 bit command in 32 bit data form. -// i.e. address + command + inverted(command) -// Repeat: a 0-bit code. i.e. No data bits. Just the header + footer. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/nec.php +/// Decode the supplied NEC (Renesas) message. +/// Status: STABLE / Known good. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note NEC protocol has three variants/forms. +/// Normal: an 8 bit address & an 8 bit command in 32 bit data form. +/// i.e. address + inverted(address) + command + inverted(command) +/// Extended: a 16 bit address & an 8 bit command in 32 bit data form. +/// i.e. address + command + inverted(command) +/// Repeat: a 0-bit code. i.e. No data bits. Just the header + footer. +/// @see http://www.sbprojects.com/knowledge/ir/nec.php bool IRrecv::decodeNEC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < kNecRptLength + offset - 1) @@ -145,4 +136,5 @@ bool IRrecv::decodeNEC(decode_results *results, uint16_t offset, results->address = reverseBits((data >> 16) & UINT16_MAX, 16); return true; } -#endif // DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO +#endif // (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || + // DECODE_SANYO) diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_NEC.h b/lib/IRremoteESP8266-2.7.8/src/ir_NEC.h similarity index 88% rename from lib/IRremoteESP8266-2.7.7/src/ir_NEC.h rename to lib/IRremoteESP8266-2.7.8/src/ir_NEC.h index cf6191100..48b1c09a2 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_NEC.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_NEC.h @@ -1,7 +1,19 @@ // Copyright 2009 Ken Shirriff // Copyright 2017, 2018 David Conran -// NEC originally added from https://github.com/shirriff/Arduino-IRremote/ +/// @file +/// @brief Support for NEC (Renesas) protocols. +/// NEC originally added from https://github.com/shirriff/Arduino-IRremote/ +/// @see http://www.sbprojects.com/knowledge/ir/nec.php + +// Supports: +// Brand: Yamaha, Model: RAV561 remote +// Brand: Yamaha, Model: RXV585B A/V Receiver +// Brand: Aloka, Model: SleepyLights LED Lamp +// Brand: Toshiba, Model: 42TL838 LCD TV +// Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C +// Brand: Duux, Model: YJ-A081 TR Remote +// Brand: Silan Microelectronics, Model: SC6121-001 IC #ifndef IR_NEC_H_ #define IR_NEC_H_ @@ -9,15 +21,7 @@ #include #include "IRremoteESP8266.h" -// Supports: -// Brand: Yamaha, Model: RAV561 remote -// Brand: Yamaha, Model: RXV585B A/V Receiver -// Brand: Aloka, Model: SleepyLights LED Lamp -// Brand: Toshiba, Model: 42TL838 LCD TV - // Constants -// Ref: -// http://www.sbprojects.com/knowledge/ir/nec.php const uint16_t kNecTick = 560; const uint16_t kNecHdrMarkTicks = 16; const uint16_t kNecHdrMark = kNecHdrMarkTicks * kNecTick; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Neoclima.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Neoclima.cpp similarity index 68% rename from lib/IRremoteESP8266-2.7.7/src/ir_Neoclima.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Neoclima.cpp index 8c93ef26f..c81a69e02 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Neoclima.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Neoclima.cpp @@ -1,17 +1,11 @@ // Copyright 2019 David Conran -// Neoclima A/C support - -// Analysis by crankyoldgit & AndreyShpilevoy -// Code by crankyoldgit -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/764 -// https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view - - -// Supports: -// Brand: Neoclima, Model: NS-09AHTI A/C -// Brand: Neoclima, Model: ZH/TY-01 remote +/// @file +/// @brief Support for Neoclima protocols. +/// Analysis by crankyoldgit & AndreyShpilevoy +/// Code by crankyoldgit +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/764 +/// @see https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view #include "ir_Neoclima.h" #include @@ -22,7 +16,6 @@ #include "IRutils.h" // Constants - const uint16_t kNeoclimaHdrMark = 6112; const uint16_t kNeoclimaHdrSpace = 7391; const uint16_t kNeoclimaBitMark = 537; @@ -40,17 +33,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_NEOCLIMA -// Send a Neoclima message. -// -// Args: -// data: message to be sent. -// nbytes: Nr. of bytes of the message to be sent. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: Beta / Known to be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/764 +/// Send a Neoclima message. +/// Status: STABLE / Known to be working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendNeoclima(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { // Set IR carrier frequency @@ -70,54 +57,77 @@ void IRsend::sendNeoclima(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_NEOCLIMA +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRNeoclimaAc::IRNeoclimaAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Reset the state of the remote to a known good state/sequence. void IRNeoclimaAc::stateReset(void) { static const uint8_t kReset[kNeoclimaStateLength] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x2A, 0xA5}; setRaw(kReset); } +/// Set up hardware to be able to send a message. void IRNeoclimaAc::begin(void) { _irsend.begin(); } +/// Calculate the checksum for a given state. +/// @param[in] state The array to calc the checksum of. +/// @param[in] length The length/size of the array. +/// @return The calculated checksum value. uint8_t IRNeoclimaAc::calcChecksum(const uint8_t state[], const uint16_t length) { if (length == 0) return state[0]; return sumBytes(state, length - 1); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRNeoclimaAc::validChecksum(const uint8_t state[], const uint16_t length) { if (length < 2) return true; // No checksum to compare with. Assume okay. return (state[length - 1] == calcChecksum(state, length)); } -// Update the checksum for the internal state. +/// Calculate & update the checksum for the internal state. +/// @param[in] length The length/size of the internal state. void IRNeoclimaAc::checksum(uint16_t length) { if (length < 2) return; remote_state[length - 1] = calcChecksum(remote_state, length); } #if SEND_NEOCLIMA +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRNeoclimaAc::send(const uint16_t repeat) { _irsend.sendNeoclima(getRaw(), kNeoclimaStateLength, repeat); } #endif // SEND_NEOCLIMA +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRNeoclimaAc::getRaw(void) { this->checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length/size of the new_code array. void IRNeoclimaAc::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kNeoclimaStateLength)); } - +/// Set the Button/Command pressed setting of the A/C. +/// @param[in] button The value of the button/command that was pressed. void IRNeoclimaAc::setButton(const uint8_t button) { switch (button) { case kNeoclimaButtonPower: @@ -144,23 +154,33 @@ void IRNeoclimaAc::setButton(const uint8_t button) { } } +/// Get the Button/Command setting of the A/C. +/// @return The value of the button/command that was pressed. uint8_t IRNeoclimaAc::getButton(void) { return GETBITS8(remote_state[5], kNeoclimaButtonOffset, kNeoclimaButtonSize); } +/// Set the requested power state of the A/C to on. void IRNeoclimaAc::on(void) { this->setPower(true); } +/// Set the requested power state of the A/C to off. void IRNeoclimaAc::off(void) { this->setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setPower(const bool on) { this->setButton(kNeoclimaButtonPower); setBit(&remote_state[7], kNeoclimaPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getPower(void) { return GETBIT8(remote_state[7], kNeoclimaPowerOffset); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRNeoclimaAc::setMode(const uint8_t mode) { switch (mode) { case kNeoclimaDry: @@ -180,11 +200,15 @@ void IRNeoclimaAc::setMode(const uint8_t mode) { } } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRNeoclimaAc::getMode(void) { return GETBITS8(remote_state[9], kNeoclimaModeOffset, kModeBitsSize); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRNeoclimaAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kNeoclimaCool; @@ -195,7 +219,9 @@ uint8_t IRNeoclimaAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRNeoclimaAc::toCommonMode(const uint8_t mode) { switch (mode) { case kNeoclimaCool: return stdAc::opmode_t::kCool; @@ -206,7 +232,8 @@ stdAc::opmode_t IRNeoclimaAc::toCommonMode(const uint8_t mode) { } } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRNeoclimaAc::setTemp(const uint8_t temp) { uint8_t oldtemp = this->getTemp(); uint8_t newtemp = std::max(kNeoclimaMinTemp, temp); @@ -219,13 +246,15 @@ void IRNeoclimaAc::setTemp(const uint8_t temp) { newtemp - kNeoclimaMinTemp); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRNeoclimaAc::getTemp(void) { return GETBITS8(remote_state[9], kNeoclimaTempOffset, kNeoclimaTempSize) + kNeoclimaMinTemp; } -// Set the speed of the fan, 0-3, 0 is auto, 1-3 is the speed +/// Set the speed of the fan. +/// @param[in] speed The desired setting. 0-3, 0 is auto, 1-3 is the speed void IRNeoclimaAc::setFan(const uint8_t speed) { switch (speed) { case kNeoclimaFanAuto: @@ -246,11 +275,15 @@ void IRNeoclimaAc::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRNeoclimaAc::getFan(void) { return GETBITS8(remote_state[7], kNeoclimaFanOffest, kNeoclimaFanSize); } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRNeoclimaAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -262,7 +295,9 @@ uint8_t IRNeoclimaAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRNeoclimaAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kNeoclimaFanHigh: return stdAc::fanspeed_t::kMax; @@ -272,99 +307,138 @@ stdAc::fanspeed_t IRNeoclimaAc::toCommonFanSpeed(const uint8_t speed) { } } +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setSleep(const bool on) { this->setButton(kNeoclimaButtonSleep); setBit(&remote_state[7], kNeoclimaSleepOffset, on); } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getSleep(void) { return GETBIT8(remote_state[7], kNeoclimaSleepOffset); } -// A.k.a. Swing +/// Set the vertical swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setSwingV(const bool on) { this->setButton(kNeoclimaButtonSwing); setBits(&remote_state[7], kNeoclimaSwingVOffset, kNeoclimaSwingVSize, on ? kNeoclimaSwingVOn : kNeoclimaSwingVOff); } +/// Get the vertical swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getSwingV(void) { return GETBITS8(remote_state[7], kNeoclimaSwingVOffset, kNeoclimaSwingVSize) == kNeoclimaSwingVOn; } -// A.k.a. Air Flow +/// Set the horizontal swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setSwingH(const bool on) { this->setButton(kNeoclimaButtonAirFlow); setBit(&remote_state[7], kNeoclimaSwingHOffset, !on); // Cleared when `on` } +/// Get the horizontal swing (Air Flow) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getSwingH(void) { return !GETBIT8(remote_state[7], kNeoclimaSwingHOffset); } +/// Set the Turbo setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setTurbo(const bool on) { this->setButton(kNeoclimaButtonTurbo); setBit(&remote_state[3], kNeoclimaTurboOffset, on); } +/// Get the Turbo setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getTurbo(void) { return GETBIT8(remote_state[3], kNeoclimaTurboOffset); } +/// Set the Fresh (air) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setFresh(const bool on) { this->setButton(kNeoclimaButtonFresh); setBit(&remote_state[5], kNeoclimaFreshOffset, on); } +/// Get the Frsh (air) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getFresh(void) { return GETBIT8(remote_state[5], kNeoclimaFreshOffset); } +/// Set the Hold setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setHold(const bool on) { this->setButton(kNeoclimaButtonHold); setBit(&remote_state[3], kNeoclimaHoldOffset, on); } +/// Get the Hold setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getHold(void) { return GETBIT8(remote_state[3], kNeoclimaHoldOffset); } +/// Set the Ion (filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setIon(const bool on) { this->setButton(kNeoclimaButtonIon); setBit(&remote_state[1], kNeoclimaIonOffset, on); } +/// Get the Ion (filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getIon(void) { return GETBIT8(remote_state[1], kNeoclimaIonOffset); } +/// Set the Light(LED display) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setLight(const bool on) { this->setButton(kNeoclimaButtonLight); setBit(&remote_state[3], kNeoclimaLightOffset, on); } +/// Get the Light (LED display) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getLight(void) { return GETBIT8(remote_state[3], kNeoclimaLightOffset); } -// This feature maintains the room temperature steadily at 8°C and prevents the -// room from freezing by activating the heating operation automatically when -// nobody is at home over a longer period during severe winter. +/// Set the 8°C Heat setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note This feature maintains the room temperature steadily at 8°C and +/// prevents the room from freezing by activating the heating operation +/// automatically when nobody is at home over a longer period during severe +/// winter. void IRNeoclimaAc::set8CHeat(const bool on) { this->setButton(kNeoclimaButton8CHeat); setBit(&remote_state[1], kNeoclima8CHeatOffset, on); } +/// Get the 8°C Heat setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::get8CHeat(void) { return GETBIT8(remote_state[1], kNeoclima8CHeatOffset); } +/// Set the Eye (Sensor) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRNeoclimaAc::setEye(const bool on) { this->setButton(kNeoclimaButtonEye); setBit(&remote_state[3], kNeoclimaEyeOffset, on); } +/// Get the Eye (Sensor) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getEye(void) { return GETBIT8(remote_state[3], kNeoclimaEyeOffset); } @@ -380,11 +454,14 @@ void IRNeoclimaAc::setFollow(const bool on) { } */ +/// Get the Follow Me setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRNeoclimaAc::getFollow(void) { return (remote_state[8] & kNeoclimaFollowMe) == kNeoclimaFollowMe; } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRNeoclimaAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::NEOCLIMA; @@ -411,7 +488,8 @@ stdAc::state_t IRNeoclimaAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRNeoclimaAc::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -459,21 +537,14 @@ String IRNeoclimaAc::toString(void) { } #if DECODE_NEOCLIMA -// Decode the supplied Neoclima message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. Typically kNeoclimaBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Known working -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/764 +/// Decode the supplied Neoclima message. +/// Status: STABLE / Known working +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeNeoclima(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // Compliance diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Neoclima.h b/lib/IRremoteESP8266-2.7.8/src/ir_Neoclima.h similarity index 84% rename from lib/IRremoteESP8266-2.7.7/src/ir_Neoclima.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Neoclima.h index e1555e917..cdec89fce 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Neoclima.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Neoclima.h @@ -1,8 +1,14 @@ -// Neoclima A/C -// // Copyright 2019 David Conran -// Analysis by crankyoldgit & AndreyShpilevoy +/// @file +/// @brief Support for Neoclima protocols. +/// Analysis by crankyoldgit & AndreyShpilevoy +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/764 +/// @see https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view + +// Supports: +// Brand: Neoclima, Model: NS-09AHTI A/C +// Brand: Neoclima, Model: ZH/TY-01 remote #ifndef IR_NEOCLIMA_H_ #define IR_NEOCLIMA_H_ @@ -18,14 +24,6 @@ #include "IRsend_test.h" #endif -// Supports: -// Brand: Neoclima, Model: NS-09AHTI A/C -// Brand: Neoclima, Model: ZH/TY-01 remote - -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/764 -// https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view - // Constants // state[1] const uint8_t kNeoclima8CHeatOffset = 1; @@ -84,14 +82,18 @@ const uint8_t kNeoclimaFan = 0b011; const uint8_t kNeoclimaHeat = 0b100; // Classes +/// Class for handling detailed Neoclima A/C messages. class IRNeoclimaAc { public: explicit IRNeoclimaAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_NEOCLIMA void send(const uint16_t repeat = kNeoclimaMinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_NEOCLIMA void begin(void); @@ -146,12 +148,13 @@ class IRNeoclimaAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kNeoclimaStateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kNeoclimaStateLength]; ///< State of the remote in code. void checksum(const uint16_t length = kNeoclimaStateLength); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Nikai.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Nikai.cpp similarity index 66% rename from lib/IRremoteESP8266-2.7.7/src/ir_Nikai.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Nikai.cpp index 5e6f9fbe5..01c789d70 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Nikai.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Nikai.cpp @@ -1,7 +1,12 @@ // Copyright 2009 Ken Shirriff // Copyright 2017 David Conran -// Nikai +/// @file +/// @brief Nikai +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/309 + +// Supports: +// Brand: Nikai, Model: Unknown LCD TV #include #include "IRrecv.h" @@ -9,8 +14,6 @@ #include "IRutils.h" // Constants -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/309 const uint16_t kNikaiTick = 500; const uint16_t kNikaiHdrMarkTicks = 8; const uint16_t kNikaiHdrMark = kNikaiHdrMarkTicks * kNikaiTick; @@ -26,38 +29,26 @@ const uint16_t kNikaiMinGapTicks = 17; const uint16_t kNikaiMinGap = kNikaiMinGapTicks * kNikaiTick; #if SEND_NIKAI -// Send a Nikai TV formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The bit size of the message being sent. typically kNikaiBits. -// repeat: The number of times the message is to be repeated. -// -// Status: STABLE / Working. -// -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/309 +/// Send a Nikai formatted message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendNikai(uint64_t data, uint16_t nbits, uint16_t repeat) { sendGeneric(kNikaiHdrMark, kNikaiHdrSpace, kNikaiBitMark, kNikaiOneSpace, kNikaiBitMark, kNikaiZeroSpace, kNikaiBitMark, kNikaiMinGap, data, nbits, 38, true, repeat, 33); } -#endif +#endif // SEND_NIKAI #if DECODE_NIKAI -// Decode the supplied Nikai message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. -// Typically kNikaiBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. -// +/// Decode the supplied Nikai message. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. bool IRrecv::decodeNikai(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kNikaiBits) @@ -80,4 +71,4 @@ bool IRrecv::decodeNikai(decode_results *results, uint16_t offset, results->address = 0; return true; } -#endif +#endif // DECODE_NIKAI diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Panasonic.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Panasonic.cpp similarity index 69% rename from lib/IRremoteESP8266-2.7.7/src/ir_Panasonic.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Panasonic.cpp index d8b627c9f..b1702824f 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Panasonic.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Panasonic.cpp @@ -1,7 +1,16 @@ // Copyright 2015 Kristian Lauszus // Copyright 2017, 2018 David Conran -// Panasonic devices +/// @file +/// @brief Support for Panasonic protocols. +/// Panasonic protocol originally added by Kristian Lauszus +/// (Thanks to zenwheel and other people at the original blog post) +/// @see Panasonic https://github.com/z3t0/Arduino-IRremote +/// @see http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615 +/// @see Panasonic A/C support heavily influenced by https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp +/// Panasonic A/C Clock & Timer support: +/// Reverse Engineering by MikkelTb +/// Code by crankyoldgit #include "ir_Panasonic.h" #include @@ -14,29 +23,8 @@ #include "IRtext.h" #include "IRutils.h" -// Panasonic protocol originally added by Kristian Lauszus from: -// https://github.com/z3t0/Arduino-IRremote -// (Thanks to zenwheel and other people at the original blog post) -// -// Panasonic A/C support add by crankyoldgit but heavily influenced by: -// https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp -// Panasonic A/C Clock & Timer support: -// Reverse Engineering by MikkelTb -// Code by crankyoldgit -// Panasonic A/C models supported: -// A/C Series/models: -// JKE, LKE, DKE, CKP, PKR, RKR, & NKE series. (In theory) -// CS-YW9MKD, CS-Z9RKR, CS-E7PKR (confirmed) -// CS-ME14CKPG / CS-ME12CKPG / CS-ME10CKPG -// A/C Remotes: -// A75C3747 (confirmed) -// A75C3704 -// A75C2311 (CKP) - // Constants -// Ref: -// http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?26152 - +/// @see http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?26152 const uint16_t kPanasonicTick = 432; const uint16_t kPanasonicHdrMarkTicks = 8; const uint16_t kPanasonicHdrMark = kPanasonicHdrMarkTicks * kPanasonicTick; @@ -74,18 +62,15 @@ using irutils::minsToString; using irutils::setBit; using irutils::setBits; +// Used by Denon as well. #if (SEND_PANASONIC || SEND_DENON) -// Send a Panasonic formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. (kPanasonicBits). -// repeat: The number of times the command is to be repeated. -// -// Status: STABLE / Should be working. -// -// Note: -// This protocol is a modified version of Kaseikyo. +/// Send a Panasonic formatted message. +/// Status: STABLE / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol is a modified version of Kaseikyo. +/// @note Use this method if you want to send the results of `decodePanasonic`. void IRsend::sendPanasonic64(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { sendGeneric(kPanasonicHdrMark, kPanasonicHdrSpace, kPanasonicBitMark, @@ -94,39 +79,29 @@ void IRsend::sendPanasonic64(const uint64_t data, const uint16_t nbits, data, nbits, kPanasonicFreq, true, repeat, 50); } -// Send a Panasonic formatted message. -// -// Args: -// address: The manufacturer code. -// data: The data portion to be sent. -// nbits: The number of bits of the message to be sent. (kPanasonicBits). -// repeat: The number of times the command is to be repeated. -// -// Status: STABLE. -// -// Note: -// This protocol is a modified version of Kaseikyo. +/// Send a Panasonic formatted message. +/// Status: STABLE, but DEPRECATED +/// @deprecated This is only for legacy use only, please use `sendPanasonic64()` +/// instead. +/// @param[in] address The 16-bit manufacturer code. +/// @param[in] data The 32-bit data portion of the message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This protocol is a modified version of Kaseikyo. void IRsend::sendPanasonic(const uint16_t address, const uint32_t data, const uint16_t nbits, const uint16_t repeat) { sendPanasonic64(((uint64_t)address << 32) | (uint64_t)data, nbits, repeat); } -// Calculate the raw Panasonic data based on device, subdevice, & function. -// -// Args: -// manufacturer: A 16-bit manufacturer code. e.g. 0x4004 is Panasonic. -// device: An 8-bit code. -// subdevice: An 8-bit code. -// function: An 8-bit code. -// Returns: -// A raw uint64_t Panasonic message. -// -// Status: STABLE / Should be working.. -// -// Note: -// Panasonic 48-bit protocol is a modified version of Kaseikyo. -// Ref: -// http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615 +/// Calculate the raw Panasonic data based on device, subdevice, & function. +/// Status: STABLE / Should be working. +/// @param[in] manufacturer A 16-bit manufacturer code. e.g. 0x4004 is Panasonic +/// @param[in] device An 8-bit code. +/// @param[in] subdevice An 8-bit code. +/// @param[in] function An 8-bit code. +/// @return A value suitable for use with `sendPanasonic64()`. +/// @note Panasonic 48-bit protocol is a modified version of Kaseikyo. +/// @see http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615 uint64_t IRsend::encodePanasonic(const uint16_t manufacturer, const uint8_t device, const uint8_t subdevice, @@ -137,24 +112,21 @@ uint64_t IRsend::encodePanasonic(const uint16_t manufacturer, } #endif // (SEND_PANASONIC || SEND_DENON) +// Used by Denon as well. #if (DECODE_PANASONIC || DECODE_DENON) -// Decode the supplied Panasonic message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Should be working. -// Note: -// Panasonic 48-bit protocol is a modified version of Kaseikyo. -// Ref: -// http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?26152 -// http://www.hifi-remote.com/wiki/index.php?title=Panasonic +/// Decode the supplied Panasonic message. +/// Status: STABLE / Should be working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] manufacturer A 16-bit manufacturer code. e.g. 0x4004 is Panasonic +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @warning Results to be used with `sendPanasonic64()`, not `sendPanasonic()`. +/// @note Panasonic 48-bit protocol is a modified version of Kaseikyo. +/// @see http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615 +/// @see http://www.hifi-remote.com/wiki/index.php?title=Panasonic bool IRrecv::decodePanasonic(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict, const uint32_t manufacturer) { @@ -193,24 +165,11 @@ bool IRrecv::decodePanasonic(decode_results *results, uint16_t offset, #endif // (DECODE_PANASONIC || DECODE_DENON) #if SEND_PANASONIC_AC -// Send a Panasonic A/C message. -// -// Args: -// data: Contents of the message to be sent. (Guessing MSBF order) -// nbits: Nr. of bits of data to be sent. Typically kPanasonicAcBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: Beta / Appears to work with real device(s). -//: -// Panasonic A/C models supported: -// A/C Series/models: -// JKE, LKE, DKE, CKP, PKR, RKR, & NKE series. -// CS-YW9MKD -// CS-E7PKR -// A/C Remotes: -// A75C3747 -// A75C3704 -// +/// Send a Panasonic A/C message. +/// Status: STABLE / Work with real device(s). +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendPanasonicAC(const uint8_t data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kPanasonicAcSection1Length) return; @@ -231,44 +190,59 @@ void IRsend::sendPanasonicAC(const uint8_t data[], const uint16_t nbytes, } #endif // SEND_PANASONIC_AC +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRPanasonicAc::IRPanasonicAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Reset the state of the remote to a known good state/sequence. void IRPanasonicAc::stateReset(void) { memcpy(remote_state, kPanasonicKnownGoodState, kPanasonicAcStateLength); _temp = 25; // An initial saved desired temp. Completely made up. _swingh = kPanasonicAcSwingHMiddle; // A similar made up value for H Swing. } +/// Set up hardware to be able to send a message. void IRPanasonicAc::begin(void) { _irsend.begin(); } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. -bool IRPanasonicAc::validChecksum(uint8_t state[], const uint16_t length) { +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. +bool IRPanasonicAc::validChecksum(const uint8_t *state, const uint16_t length) { if (length < 2) return false; // 1 byte of data can't have a checksum. return (state[length - 1] == sumBytes(state, length - 1, kPanasonicAcChecksumInit)); } -uint8_t IRPanasonicAc::calcChecksum(uint8_t state[], const uint16_t length) { +/// Calculate the checksum for a given state. +/// @param[in] state The value to calc the checksum of. +/// @param[in] length The size/length of the state. +/// @return The calculated checksum value. +uint8_t IRPanasonicAc::calcChecksum(const uint8_t *state, + const uint16_t length) { return sumBytes(state, length - 1, kPanasonicAcChecksumInit); } +/// Calculate and set the checksum values for the internal state. +/// @param[in] length The size/length of the state. void IRPanasonicAc::fixChecksum(const uint16_t length) { remote_state[length - 1] = this->calcChecksum(remote_state, length); } #if SEND_PANASONIC_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRPanasonicAc::send(const uint16_t repeat) { _irsend.sendPanasonicAC(getRaw(), kPanasonicAcStateLength, repeat); } #endif // SEND_PANASONIC_AC +/// Set the model of the A/C to emulate. +/// @param[in] model The enum of the appropriate model. void IRPanasonicAc::setModel(const panasonic_ac_remote_model_t model) { switch (model) { case panasonic_ac_remote_model_t::kPanasonicDke: @@ -317,6 +291,8 @@ void IRPanasonicAc::setModel(const panasonic_ac_remote_model_t model) { setIon(getIon()); } +/// Get/Detect the model of the A/C. +/// @return The enum of the compatible model. panasonic_ac_remote_model_t IRPanasonicAc::getModel(void) { if (remote_state[23] == 0x89) return kPanasonicRkr; if (remote_state[17] == 0x00) { @@ -334,45 +310,55 @@ panasonic_ac_remote_model_t IRPanasonicAc::getModel(void) { return panasonic_ac_remote_model_t::kPanasonicUnknown; // Default } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRPanasonicAc::getRaw(void) { this->fixChecksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] state A valid code for this protocol. void IRPanasonicAc::setRaw(const uint8_t state[]) { memcpy(remote_state, state, kPanasonicAcStateLength); } -// Control the power state of the A/C unit. -// -// For CKP models, the remote has no memory of the power state the A/C unit -// should be in. For those models setting this on/true will toggle the power -// state of the Panasonic A/C unit with the next meessage. -// e.g. If the A/C unit is already on, setPower(true) will turn it off. -// If the A/C unit is already off, setPower(true) will turn it on. -// setPower(false) will leave the A/C power state as it was. -// -// For all other models, setPower(true) should set the internal state to -// turn it on, and setPower(false) should turn it off. +/// Control the power state of the A/C unit. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @warning For CKP models, the remote has no memory of the power state the A/C +/// unit should be in. For those models setting this on/true will toggle the +/// power state of the Panasonic A/C unit with the next meessage. +/// e.g. If the A/C unit is already on, setPower(true) will turn it off. +/// If the A/C unit is already off, setPower(true) will turn it on. +/// `setPower(false)` will leave the A/C power state as it was. +/// For all other models, setPower(true) should set the internal state to +/// turn it on, and setPower(false) should turn it off. void IRPanasonicAc::setPower(const bool on) { setBit(&remote_state[13], kPanasonicAcPowerOffset, on); } -// Return the A/C power state of the remote. -// Except for CKP models, where it returns if the power state will be toggled -// on the A/C unit when the next message is sent. +/// Get the A/C power state of the remote. +/// @return true, the setting is on. false, the setting is off. +/// @warning Except for CKP models, where it returns if the power state will be +/// toggled on the A/C unit when the next message is sent. bool IRPanasonicAc::getPower(void) { return GETBIT8(remote_state[13], kPanasonicAcPowerOffset); } +/// Change the power setting to On. void IRPanasonicAc::on(void) { setPower(true); } +/// Change the power setting to Off. void IRPanasonicAc::off(void) { setPower(false); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRPanasonicAc::getMode(void) { return GETBITS8(remote_state[13], kHighNibble, kModeBitsSize); } +/// Set the operating mode of the A/C. +/// @param[in] desired The desired operating mode. void IRPanasonicAc::setMode(const uint8_t desired) { uint8_t mode = kPanasonicAcAuto; // Default to Auto mode. switch (desired) { @@ -394,17 +380,17 @@ void IRPanasonicAc::setMode(const uint8_t desired) { setBits(&remote_state[13], kHighNibble, kModeBitsSize, mode); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRPanasonicAc::getTemp(void) { return GETBITS8(remote_state[14], kPanasonicAcTempOffset, kPanasonicAcTempSize); } -// Set the desitred temperature in Celsius. -// Args: -// celsius: The temperature to set the A/C unit to. -// remember: A boolean flag for the class to remember the temperature. -// -// Automatically safely limits the temp to the operating range supported. +/// Set the temperature. +/// @param[in] celsius The temperature in degrees celsius. +/// @param[in] remember: A flag for the class to remember the temperature. +/// @note Automatically safely limits the temp to the operating range supported. void IRPanasonicAc::setTemp(const uint8_t celsius, const bool remember) { uint8_t temperature; temperature = std::max(celsius, kPanasonicAcMinTemp); @@ -414,10 +400,14 @@ void IRPanasonicAc::setTemp(const uint8_t celsius, const bool remember) { temperature); } +/// Get the current vertical swing setting. +/// @return The current position it is set to. uint8_t IRPanasonicAc::getSwingVertical(void) { return GETBITS8(remote_state[16], kLowNibble, kNibbleSize); } +/// Control the vertical swing setting. +/// @param[in] desired_elevation The position to set the vertical swing to. void IRPanasonicAc::setSwingVertical(const uint8_t desired_elevation) { uint8_t elevation = desired_elevation; if (elevation != kPanasonicAcSwingVAuto) { @@ -427,10 +417,14 @@ void IRPanasonicAc::setSwingVertical(const uint8_t desired_elevation) { setBits(&remote_state[16], kLowNibble, kNibbleSize, elevation); } +/// Get the current horizontal swing setting. +/// @return The current position it is set to. uint8_t IRPanasonicAc::getSwingHorizontal(void) { return GETBITS8(remote_state[17], kLowNibble, kNibbleSize); } +/// Control the horizontal swing setting. +/// @param[in] desired_direction The position to set the horizontal swing to. void IRPanasonicAc::setSwingHorizontal(const uint8_t desired_direction) { switch (desired_direction) { case kPanasonicAcSwingHAuto: @@ -458,6 +452,8 @@ void IRPanasonicAc::setSwingHorizontal(const uint8_t desired_direction) { setBits(&remote_state[17], kLowNibble, kNibbleSize, direction); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRPanasonicAc::setFan(const uint8_t speed) { switch (speed) { case kPanasonicAcFanMin: @@ -471,11 +467,15 @@ void IRPanasonicAc::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed. uint8_t IRPanasonicAc::getFan(void) { return GETBITS8(remote_state[16], kHighNibble, kNibbleSize) - kPanasonicAcFanDelta; } +/// Get the Quiet setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRPanasonicAc::getQuiet(void) { switch (this->getModel()) { case kPanasonicRkr: @@ -486,6 +486,8 @@ bool IRPanasonicAc::getQuiet(void) { } } +/// Set the Quiet setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRPanasonicAc::setQuiet(const bool on) { uint8_t offset; switch (this->getModel()) { @@ -497,6 +499,8 @@ void IRPanasonicAc::setQuiet(const bool on) { setBit(&remote_state[21], offset, on); } +/// Get the Powerful (Turbo) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRPanasonicAc::getPowerful(void) { switch (this->getModel()) { case kPanasonicRkr: @@ -507,6 +511,8 @@ bool IRPanasonicAc::getPowerful(void) { } } +/// Set the Powerful (Turbo) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRPanasonicAc::setPowerful(const bool on) { uint8_t offset; switch (this->getModel()) { @@ -519,11 +525,18 @@ void IRPanasonicAc::setPowerful(const bool on) { setBit(&remote_state[21], offset, on); } -// Convert standard (military/24hr) time to nr. of minutes since midnight. +/// Convert standard (military/24hr) time to nr. of minutes since midnight. +/// @param[in] hours The hours component of the time. +/// @param[in] mins The minutes component of the time. +/// @return The nr of minutes since midnight. uint16_t IRPanasonicAc::encodeTime(const uint8_t hours, const uint8_t mins) { return std::min(hours, (uint8_t)23) * 60 + std::min(mins, (uint8_t)59); } +/// Get the time from a given pointer location. +/// @param[in] ptr A pointer to a time location in a state. +/// @return The time expressed as nr. of minutes past midnight. +/// @note Internal use only. uint16_t IRPanasonicAc::_getTime(const uint8_t ptr[]) { uint16_t result = (GETBITS8( ptr[1], kLowNibble, kPanasonicAcTimeOverflowSize) << @@ -532,8 +545,15 @@ uint16_t IRPanasonicAc::_getTime(const uint8_t ptr[]) { return result; } +/// Get the current clock time value. +/// @return The time expressed as nr. of minutes past midnight. uint16_t IRPanasonicAc::getClock(void) { return _getTime(&remote_state[24]); } +/// Set the time at a given pointer location. +/// @param[in, out] ptr A pointer to a time location in a state. +/// @param[in] mins_since_midnight The time as nr. of minutes past midnight. +/// @param[in] round_down Do we round to the nearest 10 minute mark? +/// @note Internal use only. void IRPanasonicAc::_setTime(uint8_t * const ptr, const uint16_t mins_since_midnight, const bool round_down) { @@ -546,12 +566,19 @@ void IRPanasonicAc::_setTime(uint8_t * const ptr, corrected >> (kPanasonicAcTimeSize - kPanasonicAcTimeOverflowSize)); } +/// Set the current clock time value. +/// @param[in] mins_since_midnight The time as nr. of minutes past midnight. void IRPanasonicAc::setClock(const uint16_t mins_since_midnight) { _setTime(&remote_state[24], mins_since_midnight, false); } +/// Get the On Timer time value. +/// @return The time expressed as nr. of minutes past midnight. uint16_t IRPanasonicAc::getOnTimer(void) { return _getTime(&remote_state[18]); } +/// Set/Enable the On Timer. +/// @param[in] mins_since_midnight The time as nr. of minutes past midnight. +/// @param[in] enable Do we enable the timer or not? void IRPanasonicAc::setOnTimer(const uint16_t mins_since_midnight, const bool enable) { // Set the timer flag. @@ -560,12 +587,17 @@ void IRPanasonicAc::setOnTimer(const uint16_t mins_since_midnight, _setTime(&remote_state[18], mins_since_midnight, true); } +/// Cancel the On Timer. void IRPanasonicAc::cancelOnTimer(void) { this->setOnTimer(0, false); } +/// Check if the On Timer is Enabled. +/// @return true, the setting is on. false, the setting is off. bool IRPanasonicAc::isOnTimerEnabled(void) { return GETBIT8(remote_state[13], kPanasonicAcOnTimerOffset); } +/// Get the Off Timer time value. +/// @return The time expressed as nr. of minutes past midnight. uint16_t IRPanasonicAc::getOffTimer(void) { uint16_t result = (GETBITS8(remote_state[20], 0, 7) << kNibbleSize) | GETBITS8(remote_state[19], kHighNibble, kNibbleSize); @@ -573,6 +605,9 @@ uint16_t IRPanasonicAc::getOffTimer(void) { return result; } +/// Set/Enable the Off Timer. +/// @param[in] mins_since_midnight The time as nr. of minutes past midnight. +/// @param[in] enable Do we enable the timer or not? void IRPanasonicAc::setOffTimer(const uint16_t mins_since_midnight, const bool enable) { // Ensure its on a 10 minute boundary and no overflow. @@ -587,12 +622,17 @@ void IRPanasonicAc::setOffTimer(const uint16_t mins_since_midnight, setBits(&remote_state[20], 0, 7, corrected >> kNibbleSize); } +/// Cancel the Off Timer. void IRPanasonicAc::cancelOffTimer(void) { this->setOffTimer(0, false); } +/// Check if the Off Timer is Enabled. +/// @return true, the setting is on. false, the setting is off. bool IRPanasonicAc::isOffTimerEnabled(void) { return GETBIT8(remote_state[13], kPanasonicAcOffTimerOffset); } +/// Get the Ion (filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRPanasonicAc::getIon(void) { switch (this->getModel()) { case kPanasonicDke: @@ -603,13 +643,17 @@ bool IRPanasonicAc::getIon(void) { } } +/// Set the Ion (filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRPanasonicAc::setIon(const bool on) { if (this->getModel() == kPanasonicDke) setBit(&remote_state[kPanasonicAcIonFilterByte], kPanasonicAcIonFilterOffset, on); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRPanasonicAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kPanasonicAcCool; @@ -620,7 +664,9 @@ uint8_t IRPanasonicAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRPanasonicAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kPanasonicAcFanMin; @@ -632,7 +678,9 @@ uint8_t IRPanasonicAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a standard A/C vertical swing into its native setting. +/// Convert a standard A/C vertical swing into its native setting. +/// @param[in] position A stdAc::swingv_t position to convert. +/// @return The equivilent native horizontal swing position. uint8_t IRPanasonicAc::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: @@ -644,7 +692,9 @@ uint8_t IRPanasonicAc::convertSwingV(const stdAc::swingv_t position) { } } -// Convert a standard A/C horizontal swing into its native setting. +/// Convert a standard A/C horizontal swing into its native setting. +/// @param[in] position A stdAc::swingh_t position to convert. +/// @return The equivilent native horizontal swing position. uint8_t IRPanasonicAc::convertSwingH(const stdAc::swingh_t position) { switch (position) { case stdAc::swingh_t::kLeftMax: return kPanasonicAcSwingHFullLeft; @@ -656,7 +706,9 @@ uint8_t IRPanasonicAc::convertSwingH(const stdAc::swingh_t position) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRPanasonicAc::toCommonMode(const uint8_t mode) { switch (mode) { case kPanasonicAcCool: return stdAc::opmode_t::kCool; @@ -667,7 +719,9 @@ stdAc::opmode_t IRPanasonicAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRPanasonicAc::toCommonFanSpeed(const uint8_t spd) { switch (spd) { case kPanasonicAcFanMax: return stdAc::fanspeed_t::kMax; @@ -679,7 +733,9 @@ stdAc::fanspeed_t IRPanasonicAc::toCommonFanSpeed(const uint8_t spd) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native horizontal swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common horizontal swing position. stdAc::swingh_t IRPanasonicAc::toCommonSwingH(const uint8_t pos) { switch (pos) { case kPanasonicAcSwingHFullLeft: return stdAc::swingh_t::kLeftMax; @@ -691,7 +747,9 @@ stdAc::swingh_t IRPanasonicAc::toCommonSwingH(const uint8_t pos) { } } -// Convert a native vertical swing to it's common equivalent. +/// Convert a native vertical swing postion to it's common equivalent. +/// @param[in] pos A native position to convert. +/// @return The common vertical swing position. stdAc::swingv_t IRPanasonicAc::toCommonSwingV(const uint8_t pos) { if (pos >= kPanasonicAcSwingVHighest && pos <= kPanasonicAcSwingVLowest) return (stdAc::swingv_t)pos; @@ -699,7 +757,8 @@ stdAc::swingv_t IRPanasonicAc::toCommonSwingV(const uint8_t pos) { return stdAc::swingv_t::kAuto; } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRPanasonicAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::PANASONIC_AC; @@ -724,7 +783,8 @@ stdAc::state_t IRPanasonicAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the internal state into a human readable string. +/// @return A string containing the settings in human-readable form. String IRPanasonicAc::toString(void) { String result = ""; result.reserve(180); // Reserve some heap for the string to reduce fragging. @@ -808,27 +868,14 @@ String IRPanasonicAc::toString(void) { } #if DECODE_PANASONIC_AC -// Decode the supplied Panasonic AC message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kPanasonicAcBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Beta / Appears to work with real device(s). -// -// Panasonic A/C models supported: -// A/C Series/models: -// JKE, LKE, DKE, PKR, & NKE series. -// CS-YW9MKD -// CS-E7PKR -// A/C Remotes: -// A75C3747 (Confirmed) -// A75C3704 +/// Decode the supplied Panasonic AC message. +/// Status: STABLE / Works with real device(s). +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodePanasonicAC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { uint8_t min_nr_of_messages = 1; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Panasonic.h b/lib/IRremoteESP8266-2.7.8/src/ir_Panasonic.h similarity index 73% rename from lib/IRremoteESP8266-2.7.7/src/ir_Panasonic.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Panasonic.h index c97f69fde..4098993f9 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Panasonic.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Panasonic.h @@ -1,24 +1,28 @@ // Copyright 2018 David Conran +/// @file +/// @brief Support for Panasonic protocols. +/// @see Panasonic A/C support heavily influenced by https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp + // Supports: -// Brand: Panasonic, Model: TV -// Brand: Panasonic, Model: JKE series A/C -// Brand: Panasonic, Model: DKE series A/C -// Brand: Panasonic, Model: DKW series A/C (DKE) -// Brand: Panasonic, Model: PKR series A/C (DKE) -// Brand: Panasonic, Model: CKP series A/C -// Brand: Panasonic, Model: NKE series A/C -// Brand: Panasonic, Model: RKR series A/C -// Brand: Panasonic, Model: CS-ME10CKPG A/C -// Brand: Panasonic, Model: CS-ME12CKPG A/C -// Brand: Panasonic, Model: CS-ME14CKPG A/C -// Brand: Panasonic, Model: CS-E7PKR A/C (DKE) -// Brand: Panasonic, Model: CS-Z9RKR A/C -// Brand: Panasonic, Model: CS-YW9MKD A/C -// Brand: Panasonic, Model: A75C2311 remote (CKP) -// Brand: Panasonic, Model: A75C2616-1 remote (DKE) -// Brand: Panasonic, Model: A75C3704 remote -// Brand: Panasonic, Model: A75C3747 remote +// Brand: Panasonic, Model: TV (PANASONIC) +// Brand: Panasonic, Model: NKE series A/C (PANASONIC_AC NKE/2) +// Brand: Panasonic, Model: DKE series A/C (PANASONIC_AC DKE/3) +// Brand: Panasonic, Model: DKW series A/C (PANASONIC_AC DKE/3) +// Brand: Panasonic, Model: PKR series A/C (PANASONIC_AC DKE/3) +// Brand: Panasonic, Model: JKE series A/C (PANASONIC_AC JKE/4) +// Brand: Panasonic, Model: CKP series A/C (PANASONIC_AC CKP/5) +// Brand: Panasonic, Model: RKR series A/C (PANASONIC_AC RKR/6) +// Brand: Panasonic, Model: CS-ME10CKPG A/C (PANASONIC_AC CKP/5) +// Brand: Panasonic, Model: CS-ME12CKPG A/C (PANASONIC_AC CKP/5) +// Brand: Panasonic, Model: CS-ME14CKPG A/C (PANASONIC_AC CKP/5) +// Brand: Panasonic, Model: CS-E7PKR A/C (PANASONIC_AC DKE/2) +// Brand: Panasonic, Model: CS-Z9RKR A/C (PANASONIC_AC RKR/6) +// Brand: Panasonic, Model: CS-YW9MKD A/C (PANASONIC_AC JKE/4) +// Brand: Panasonic, Model: A75C2311 remote (PANASONIC_AC CKP/5) +// Brand: Panasonic, Model: A75C2616-1 remote (PANASONIC_AC DKE/3) +// Brand: Panasonic, Model: A75C3704 remote (PANASONIC_AC DKE/3) +// Brand: Panasonic, Model: A75C3747 remote (PANASONIC_AC JKE/4) #ifndef IR_PANASONIC_H_ #define IR_PANASONIC_H_ @@ -34,9 +38,6 @@ #include "IRsend_test.h" #endif -// Panasonic A/C support heavily influenced by: -// https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp - // Constants const uint16_t kPanasonicFreq = 36700; const uint16_t kPanasonicAcExcess = 0; @@ -93,15 +94,18 @@ const uint8_t kPanasonicKnownGoodState[kPanasonicAcStateLength] = { 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0E, 0xE0, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00}; - +/// Class for handling detailed Panasonic A/C messages. class IRPanasonicAc { public: explicit IRPanasonicAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_PANASONIC void send(const uint16_t repeat = kPanasonicAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_PANASONIC void begin(void); @@ -117,9 +121,9 @@ class IRPanasonicAc { uint8_t getMode(void); void setRaw(const uint8_t state[]); uint8_t *getRaw(void); - static bool validChecksum(uint8_t *state, + static bool validChecksum(const uint8_t *state, const uint16_t length = kPanasonicAcStateLength); - static uint8_t calcChecksum(uint8_t *state, + static uint8_t calcChecksum(const uint8_t *state, const uint16_t length = kPanasonicAcStateLength); void setQuiet(const bool on); bool getQuiet(void); @@ -158,16 +162,16 @@ class IRPanasonicAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kPanasonicAcStateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kPanasonicAcStateLength]; ///< The state in code form. uint8_t _swingh; uint8_t _temp; void fixChecksum(const uint16_t length = kPanasonicAcStateLength); - static uint8_t calcChecksum(const uint8_t *state, - const uint16_t length = kPanasonicAcStateLength); static uint16_t _getTime(const uint8_t ptr[]); static void _setTime(uint8_t * const ptr, const uint16_t mins_since_midnight, const bool round_down); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Pioneer.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Pioneer.cpp similarity index 70% rename from lib/IRremoteESP8266-2.7.7/src/ir_Pioneer.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Pioneer.cpp index 08bbf3c06..d5ac89765 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Pioneer.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Pioneer.cpp @@ -3,7 +3,14 @@ // Copyright 2018 Kamil Palczewski // Copyright 2019 s-hadinger -// Pioneer remote emulation +/// @file +/// @brief Pioneer remote emulation +/// @see http://www.adrian-kingston.com/IRFormatPioneer.htm +/// @see https://github.com/crankyoldgit/IRremoteESP8266/pull/547 +/// @see https://www.pioneerelectronics.com/PUSA/Support/Home-Entertainment-Custom-Install/IR+Codes/A+V+Receivers + +// Supports: +// Brand: Pioneer, Model: AV Receivers #define __STDC_LIMIT_MACROS #include @@ -13,8 +20,6 @@ #include "IRutils.h" // Constants -// Ref: -// http://www.adrian-kingston.com/IRFormatPioneer.htm const uint16_t kPioneerTick = 534; const uint16_t kPioneerHdrMarkTicks = 16; const uint16_t kPioneerHdrMark = kPioneerHdrMarkTicks * kPioneerTick; @@ -33,18 +38,11 @@ const uint16_t kPioneerMinGapTicks = 47; const uint32_t kPioneerMinGap = kPioneerMinGapTicks * kPioneerTick; #if SEND_PIONEER -// Send a raw Pioneer formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The number of bits of the message to be sent. -// Typically kPioneerBits. -// repeat: The number of times the command is to be repeated. -// -// Status: STABLE / Expected to be working. -// -// Ref: -// http://adrian-kingston.com/IRFormatPioneer.htm +/// Send a raw Pioneer formatted message. +/// Status: STABLE / Expected to be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendPioneer(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { // If nbits is to big, abort. @@ -68,23 +66,18 @@ void IRsend::sendPioneer(const uint64_t data, const uint16_t nbits, } } -// Calculate the raw Pioneer data code based on two NEC sub-codes -// Args: -// address A 16-bit "published" NEC value. -// command: A 16-bit "published" NEC value. -// Returns: -// A raw 64-bit Pioneer message code. -// -// Status: STABLE / Expected to work. -// -// Note: -// Address & Command can be take from a decode result OR from the spreadsheets -// located at: -// https://www.pioneerelectronics.com/PUSA/Support/Home-Entertainment-Custom-Install/IR+Codes/A+V+Receivers -// where the first part is considered the address, -// and the second the command. -// e.g. -// "A556+AF20" is an Address of 0xA556 & a Command of 0xAF20. +/// Calculate the raw Pioneer data code based on two NEC sub-codes +/// Status: STABLE / Expected to work. +/// @param[in] address A 16-bit "published" NEC value. +/// @param[in] command A 16-bit "published" NEC value. +/// @return A raw 64-bit Pioneer message code for use with `sendPioneer()`` +/// @note Address & Command can be take from a decode result OR from the +/// spreadsheets located at: +/// https://www.pioneerelectronics.com/PUSA/Support/Home-Entertainment-Custom-Install/IR+Codes/A+V+Receivers +/// where the first part is considered the address, +/// and the second the command. +/// e.g. +/// "A556+AF20" is an Address of 0xA556 & a Command of 0xAF20. uint64_t IRsend::encodePioneer(const uint16_t address, const uint16_t command) { return (((uint64_t)encodeNEC(address >> 8, address & 0xFF)) << 32) | encodeNEC(command >> 8, command & 0xFF); @@ -92,19 +85,14 @@ uint64_t IRsend::encodePioneer(const uint16_t address, const uint16_t command) { #endif // SEND_PIONEER #if DECODE_PIONEER -// Decode the supplied Pioneer message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kPioneerBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Should be working. (Self decodes & real examples) -// +/// Decode the supplied Pioneer message. +/// Status: STABLE / Should be working. (Self decodes & real examples) +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodePioneer(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * (nbits + kHeader + kFooter) - 1 + offset) diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Pronto.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Pronto.cpp similarity index 54% rename from lib/IRremoteESP8266-2.7.7/src/ir_Pronto.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Pronto.cpp index 4a9a45d97..2d4ffa759 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Pronto.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Pronto.cpp @@ -1,6 +1,14 @@ // Copyright 2017 David Conran -// Pronto code message generation +/// @file +/// @brief Pronto code message generation +/// @see http://www.etcwiki.org/wiki/Pronto_Infrared_Format +/// @see http://www.remotecentral.com/features/irdisp2.htm +/// @see http://harctoolbox.org/Glossary.html#ProntoSemantics +/// @see https://irdb.globalcache.com/ + +// Supports: +// Brand: Pronto, Model: Pronto Hex #include #include "IRsend.h" @@ -14,42 +22,37 @@ const uint16_t kProntoSeq2LenOffset = 3; const uint16_t kProntoDataOffset = 4; #if SEND_PRONTO -// Send a Pronto Code formatted message. -// -// Args: -// data: An array of uint16_t containing the pronto codes. -// len: Nr. of entries in the data[] array. -// repeat: Nr. of times to repeat the message. -// -// Status: STABLE / Known working. -// -// Note: -// Pronto codes are typically represented in hexadecimal. -// You will need to convert the code to an array of integers, and calculate -// it's length. -// e.g. -// A Sony 20 bit DVD remote command. -// "0000 0067 0000 0015 0060 0018 0018 0018 0030 0018 0030 0018 0030 0018 -// 0018 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0030 0018 -// 0030 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 -// 0030 0018 0018 03f6" -// -// converts to: -// -// uint16_t prontoCode[46] = { -// 0x0000, 0x0067, 0x0000, 0x0015, -// 0x0060, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0030, 0x0018, -// 0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, -// 0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, -// 0x0030, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, -// 0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, -// 0x0018, 0x03f6}; -// // Send the Pronto(Sony) code. Repeat twice as Sony's require that. -// sendPronto(prontoCode, 46, kSonyMinRepeat); -// -// Ref: -// http://www.etcwiki.org/wiki/Pronto_Infrared_Format -// http://www.remotecentral.com/features/irdisp2.htm +/// Send a Pronto Code formatted message. +/// Status: STABLE / Known working. +/// @param[in] data An array of uint16_t containing the pronto codes. +/// @param[in] len Nr. of entries in the data[] array. +/// @param[in] repeat Nr. of times to repeat the message. +/// @note Pronto codes are typically represented in hexadecimal. +/// You will need to convert the code to an array of integers, and calculate +/// it's length. +/// e.g. +/// @code +/// A Sony 20 bit DVD remote command. +/// "0000 0067 0000 0015 0060 0018 0018 0018 0030 0018 0030 0018 0030 0018 +/// 0018 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0030 0018 +/// 0030 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018 +/// 0030 0018 0018 03f6" +/// @endcode +/// converts to: +/// @code{.cpp} +/// uint16_t prontoCode[46] = { +/// 0x0000, 0x0067, 0x0000, 0x0015, +/// 0x0060, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0030, 0x0018, +/// 0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, +/// 0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, +/// 0x0030, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, +/// 0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, +/// 0x0018, 0x03f6}; +/// // Send the Pronto(Sony) code. Repeat twice as Sony's require that. +/// sendPronto(prontoCode, 46, kSonyMinRepeat); +/// @endcode +/// @see http://www.etcwiki.org/wiki/Pronto_Infrared_Format +/// @see http://www.remotecentral.com/features/irdisp2.htm void IRsend::sendPronto(uint16_t data[], uint16_t len, uint16_t repeat) { // Check we have enough data to work out what to send. if (len < kProntoMinLength) return; @@ -101,4 +104,4 @@ void IRsend::sendPronto(uint16_t data[], uint16_t len, uint16_t repeat) { } } } -#endif +#endif // SEND_PRONTO diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_RC5_RC6.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_RC5_RC6.cpp similarity index 59% rename from lib/IRremoteESP8266-2.7.7/src/ir_RC5_RC6.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_RC5_RC6.cpp index 370100f9e..cb00c5a67 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_RC5_RC6.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_RC5_RC6.cpp @@ -1,8 +1,22 @@ // Copyright 2009 Ken Shirriff // Copyright 2017 David Conran -// RC-5 & RC-6 support added from https://github.com/z3t0/Arduino-IRremote -// RC-5X support added by David Conran +/// @file +/// @brief RC-5 & RC-6 support +/// RC-5 & RC-6 support added from https://github.com/z3t0/Arduino-IRremote +/// RC-5X support added by David Conran +/// @see https://en.wikipedia.org/wiki/RC-5 +/// @see http://www.sbprojects.com/knowledge/ir/rc5.php +/// @see https://en.wikipedia.org/wiki/Manchester_code +/// @see https://en.wikipedia.org/wiki/RC-6 +/// @see https://www.sbprojects.net/knowledge/ir/rc6.php +/// @see http://www.pcbheaven.com/userpages/The_Philips_RC6_Protocol/ +/// @see http://www.righto.com/2010/12/64-bit-rc6-codes-arduino-and-xbox.html + +// Supports: +// Brand: Philips, Model: Standard RC-5 (RC5) +// Brand: Philips, Model: RC-5X (RC5X) +// Brand: Philips, Model: Standard RC-6 (RC6) #include #include "IRrecv.h" @@ -12,10 +26,6 @@ // Constants // RC-5/RC-5X -// Ref: -// https://en.wikipedia.org/wiki/RC-5 -// http://www.sbprojects.com/knowledge/ir/rc5.php - const uint16_t kRc5T1 = 889; const uint32_t kRc5MinCommandLength = 113778; const uint32_t kRc5MinGap = kRc5MinCommandLength - kRC5RawBits * (2 * kRc5T1); @@ -23,10 +33,6 @@ const uint16_t kRc5ToggleMask = 0x800; // The 12th bit. const uint16_t kRc5SamplesMin = 11; // RC-6 -// Ref: -// https://en.wikipedia.org/wiki/RC-6 -// http://www.pcbheaven.com/userpages/The_Philips_RC6_Protocol/ - const uint16_t kRc6Tick = 444; const uint16_t kRc6HdrMarkTicks = 6; const uint16_t kRc6HdrMark = kRc6HdrMarkTicks * kRc6Tick; @@ -42,27 +48,18 @@ const int16_t kMark = 0; const int16_t kSpace = 1; #if SEND_RC5 -// Send a Philips RC-5/RC-5X packet. -// -// Args: -// data: The message you wish to send. -// nbits: Bit size of the protocol you want to send. -// repeat: Nr. of extra times the data will be sent. -// -// Status: RC-5 (stable), RC-5X (alpha) -// -// Note: -// Caller needs to take care of flipping the toggle bit. -// That bit differentiates between key press & key release. -// For RC-5 it is the MSB of the data. -// For RC-5X it is the 2nd MSB of the data. -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc5.php -// https://en.wikipedia.org/wiki/RC-5 -// https://en.wikipedia.org/wiki/Manchester_code -// TODO(anyone): -// Testing of the RC-5X components. -void IRsend::sendRC5(uint64_t data, uint16_t nbits, uint16_t repeat) { +/// Send a Philips RC-5/RC-5X packet. +/// Status: RC-5 (stable), RC-5X (alpha) +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Caller needs to take care of flipping the toggle bit. +/// That bit differentiates between key press & key release. +/// For RC-5 it is the MSB of the data. +/// For RC-5X it is the 2nd MSB of the data. +/// @todo Testing of the RC-5X components. +void IRsend::sendRC5(const uint64_t data, uint16_t nbits, + const uint16_t repeat) { if (nbits > sizeof(data) * 8) return; // We can't send something that big. bool skipSpace = true; bool field_bit = true; @@ -109,44 +106,26 @@ void IRsend::sendRC5(uint64_t data, uint16_t nbits, uint16_t repeat) { } } -// Encode a Philips RC-5 data message. -// -// Args: -// address: The 5-bit address value for the message. -// command: The 6-bit command value for the message. -// key_released: Boolean flag indicating if the remote key has been released. -// -// Returns: -// A data message suitable for use in sendRC5(). -// -// Status: Beta / Should be working. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc5.php -// https://en.wikipedia.org/wiki/RC-5 -uint16_t IRsend::encodeRC5(uint8_t address, uint8_t command, - bool key_released) { +/// Encode a Philips RC-5 data message. +/// Status: Beta / Should be working. +/// @param[in] address The 5-bit address value for the message. +/// @param[in] command The 6-bit command value for the message. +/// @param[in] key_released Indicate if the remote key has been released. +/// @return A message suitable for use in sendRC5(). +uint16_t IRsend::encodeRC5(const uint8_t address, const uint8_t command, + const bool key_released) { return (key_released << (kRC5Bits - 1)) | ((address & 0x1f) << 6) | (command & 0x3F); } -// Encode a Philips RC-5X data message. -// -// Args: -// address: The 5-bit address value for the message. -// command: The 7-bit command value for the message. -// key_released: Boolean flag indicating if the remote key has been released. -// -// Returns: -// A data message suitable for use in sendRC5(). -// -// Status: Beta / Should be working. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc5.php -// https://en.wikipedia.org/wiki/RC-5 -uint16_t IRsend::encodeRC5X(uint8_t address, uint8_t command, - bool key_released) { +/// Encode a Philips RC-5X data message. +/// Status: Beta / Should be working. +/// @param[in] address The 5-bit address value for the message. +/// @param[in] command The 7-bit command value for the message. +/// @param[in] key_released Indicate if the remote key has been released. +/// @return A message suitable for use in sendRC5(). +uint16_t IRsend::encodeRC5X(const uint8_t address, const uint8_t command, + const bool key_released) { // The 2nd start/field bit (MSB of the return value) is the value of the 7th // command bit. bool s2 = (command >> 6) & 1; @@ -154,64 +133,43 @@ uint16_t IRsend::encodeRC5X(uint8_t address, uint8_t command, encodeRC5(address, command, key_released); } -// Flip the toggle bit of a Philips RC-5/RC-5X data message. -// Used to indicate a change of remote button's state. -// -// Args: -// data: The existing RC-5/RC-5X message. -// -// Returns: -// A data message suitable for use in sendRC5() with the toggle bit flipped. -// -// Status: STABLE. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc5.php -// https://en.wikipedia.org/wiki/RC-5 -uint64_t IRsend::toggleRC5(uint64_t data) { return data ^ kRc5ToggleMask; } +/// Flip the toggle bit of a Philips RC-5/RC-5X data message. +/// Used to indicate a change of remote button's state. +/// Status: STABLE. +/// @param[in] data The existing RC-5/RC-5X message. +/// @return A data message suitable for use in sendRC5() with the toggle bit +/// flipped. +uint64_t IRsend::toggleRC5(const uint64_t data) { + return data ^ kRc5ToggleMask; +} #endif // SEND_RC5 #if SEND_RC6 -// Flip the toggle bit of a Philips RC-6 data message. -// Used to indicate a change of remote button's state. -// For RC-6 (20-bits), it is the 17th least significant bit. -// for RC-6 (36-bits/Xbox-360), it is the 16th least significant bit. -// -// Args: -// data: The existing RC-6 message. -// nbits: Nr. of bits in the RC-6 protocol. -// -// Returns: -// A data message suitable for use in sendRC6() with the toggle bit flipped. -// -// Status: STABLE / Should work fine. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc6.php -// http://www.righto.com/2010/12/64-bit-rc6-codes-arduino-and-xbox.html -uint64_t IRsend::toggleRC6(uint64_t data, uint16_t nbits) { +/// Flip the toggle bit of a Philips RC-6 data message. +/// Used to indicate a change of remote button's state. +/// Status: STABLE / Should work fine. +/// @param[in] data The existing RC-6 message. +/// @param [in] nbits Nr. of bits in the RC-6 protocol. +/// @return A data message suitable for use in sendRC6() with the toggle bit +/// flipped. +/// @note For RC-6 (20-bits), it is the 17th least significant bit. +/// @note For RC-6 (36-bits/Xbox-360), it is the 16th least significant bit. +uint64_t IRsend::toggleRC6(const uint64_t data, const uint16_t nbits) { if (nbits == kRC6_36Bits) return data ^ kRc6_36ToggleMask; return data ^ kRc6ToggleMask; } -// Encode a Philips RC-6 data message. -// -// Args: -// address: The address (aka. control) value for the message. -// Includes the field/mode/toggle bits. -// command: The 8-bit command value for the message. (aka. information) -// mode: Which protocol to use. Defined by nr. of bits in the protocol. -// -// Returns: -// A data message suitable for use in sendRC6(). -// -// Status: Beta / Should be working. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc6.php -// http://www.righto.com/2010/12/64-bit-rc6-codes-arduino-and-xbox.html -// http://www.pcbheaven.com/userpages/The_Philips_RC6_Protocol/ -uint64_t IRsend::encodeRC6(uint32_t address, uint8_t command, uint16_t mode) { +/// Encode a Philips RC-6 data message. +/// Status: Beta / Should be working. +/// @param[in] address The address (aka. control) value for the message. +/// Includes the field/mode/toggle bits. +/// @param[in] command The 8-bit command value for the message. +/// (aka. information) +/// @param[in] mode Which protocol to use. +/// Defined by nr. of bits in the protocol. +/// @return A data message suitable for use in `sendRC6()`. +uint64_t IRsend::encodeRC6(const uint32_t address, const uint8_t command, + const uint16_t mode) { switch (mode) { case kRC6Mode0Bits: return ((address & 0xFFF) << 8) | (command & 0xFF); @@ -222,22 +180,15 @@ uint64_t IRsend::encodeRC6(uint32_t address, uint8_t command, uint16_t mode) { } } -// Send a Philips RC-6 packet. -// Note: Caller needs to take care of flipping the toggle bit (The 4th Most -// Significant Bit). That bit differentiates between key press & key release. -// -// Args: -// data: The message you wish to send. -// nbits: Bit size of the protocol you want to send. -// repeat: Nr. of extra times the data will be sent. -// -// Status: Stable. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc6.php -// http://www.righto.com/2010/12/64-bit-rc6-codes-arduino-and-xbox.html -// https://en.wikipedia.org/wiki/Manchester_code -void IRsend::sendRC6(uint64_t data, uint16_t nbits, uint16_t repeat) { +/// Send a Philips RC-6 packet. +/// Status: Stable. +/// @note Caller needs to take care of flipping the toggle bit (The 4th Most +/// Significant Bit). That bit differentiates between key press & key release. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +void IRsend::sendRC6(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { // Check we can send the number of bits requested. if (nbits > sizeof(data) * 8) return; // Set 36kHz IR carrier frequency & a 1/3 (33%) duty cycle. @@ -271,27 +222,28 @@ void IRsend::sendRC6(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_RC6 #if (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG) -// Gets one undecoded level at a time from the raw buffer. -// The RC5/6 decoding is easier if the data is broken into time intervals. -// E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, -// successive calls to getRClevel will return MARK, MARK, SPACE. -// offset and used are updated to keep track of the current position. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: Ptr to the currect offset to the rawbuf. -// used: Ptr to the current used counter. -// bitTime: Time interval of single bit in microseconds. -// maxwidth: Maximum number of successive levels to find in a single level -// (default 3) -// Returns: -// int: MARK, SPACE, or -1 for error (The measured time interval is not a -// multiple of t1.) -// Ref: -// https://en.wikipedia.org/wiki/Manchester_code +/// Gets one undecoded level at a time from the raw buffer. +/// The RC5/6 decoding is easier if the data is broken into time intervals. +/// E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, +/// successive calls to getRClevel will return MARK, MARK, SPACE. +/// offset and used are updated to keep track of the current position. +/// @param[in,out] results Ptr to the data to decode and where to store the +/// decode result. +/// @param[in,out] offset Ptr to the currect offset to the rawbuf. +/// @param[in,out] used Ptr to the current used counter. +/// @param[in] bitTime Time interval of single bit in microseconds. +/// @param[in] tolerance Percent tolerance to be used in matching. +/// @param[in] excess Extra useconds to add to Marks & removed from Spaces. +/// @param[in] delta A non-scaling (+/-) error margin (in useconds). +/// @param[in] maxwidth Maximum number of successive levels to find in a single +/// level (default is 3) +/// @return MARK, SPACE, or -1 for error. +/// (The measured time interval is not a multiple of t1.) +/// @see https://en.wikipedia.org/wiki/Manchester_code int16_t IRrecv::getRClevel(decode_results *results, uint16_t *offset, - uint16_t *used, uint16_t bitTime, uint8_t tolerance, - int16_t excess, uint16_t delta, uint8_t maxwidth) { + uint16_t *used, const uint16_t bitTime, + const uint8_t tolerance, const int16_t excess, + const uint16_t delta, const uint8_t maxwidth) { DPRINT("DEBUG: getRClevel: offset = "); DPRINTLN(uint64ToString(*offset)); DPRINT("DEBUG: getRClevel: rawlen = "); @@ -343,28 +295,17 @@ int16_t IRrecv::getRClevel(decode_results *results, uint16_t *offset, #endif // (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG) #if DECODE_RC5 -// Decode the supplied RC-5/RC5X message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: RC-5 (stable), RC-5X (alpha) -// -// Note: -// The 'toggle' bit is included as the 6th (MSB) address bit, the MSB of data, -// & in the count of bits decoded. -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc5.php -// https://en.wikipedia.org/wiki/RC-5 -// https://en.wikipedia.org/wiki/Manchester_code -// TODO(anyone): -// Serious testing of the RC-5X and strict aspects needs to be done. +/// Decode the supplied RC-5/RC5X message. +/// Status: RC-5 (stable), RC-5X (alpha) +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note The 'toggle' bit is included as the 6th (MSB) address bit, the MSB of +/// data, & in the count of bits decoded. +/// @todo Serious testing of the RC-5X and strict aspects needs to be done. bool IRrecv::decodeRC5(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= kRc5SamplesMin + kHeader - 1 + offset) return false; @@ -430,24 +371,15 @@ bool IRrecv::decodeRC5(decode_results *results, uint16_t offset, #endif // DECODE_RC5 #if DECODE_RC6 -// Decode the supplied RC6 message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Stable. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rc6.php -// https://en.wikipedia.org/wiki/Manchester_code -// TODO(anyone): -// Testing of the strict compliance aspects. +/// Decode the supplied RC6 message. +/// Status: Stable. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @todo Testing of the strict compliance aspects. bool IRrecv::decodeRC6(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= kHeader + 2 + 4 + offset) diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_RCMM.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_RCMM.cpp similarity index 80% rename from lib/IRremoteESP8266-2.7.7/src/ir_RCMM.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_RCMM.cpp index ea0e05e9d..023b82517 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_RCMM.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_RCMM.cpp @@ -1,6 +1,8 @@ // Copyright 2017 David Conran -// Send & decode support for Phillips RC-MM added by David Conran +/// @file +/// @brief Support for the Phillips RC-MM protocol. +/// @see http://www.sbprojects.com/knowledge/ir/rcmm.php // Supports: // Brand: Microsoft, Model: XBOX 360 @@ -12,8 +14,6 @@ #include "IRutils.h" // Constants -// Ref: -// http://www.sbprojects.com/knowledge/ir/rcmm.php const uint16_t kRcmmTick = 28; // Technically it would be 27.777* const uint16_t kRcmmHdrMarkTicks = 15; const uint16_t kRcmmHdrMark = 416; @@ -38,17 +38,11 @@ const uint8_t kRcmmTolerance = 10; const uint16_t kRcmmExcess = 50; #if SEND_RCMM -// Send a Philips RC-MM packet. -// -// Args: -// data: The data we want to send. MSB first. -// nbits: The number of bits of data to send. (Typically 12, 24, or 32[Nokia]) -// repeat: The nr. of times the message should be sent. -// -// Status: STABLE / Should be working. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rcmm.php +/// Send a Philips RC-MM packet. +/// Status: STABLE / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendRCMM(uint64_t data, uint16_t nbits, uint16_t repeat) { // Set 36kHz IR carrier frequency & a 1/3 (33%) duty cycle. enableIROut(36, 33); @@ -88,24 +82,17 @@ void IRsend::sendRCMM(uint64_t data, uint16_t nbits, uint16_t repeat) { space(std::max(kRcmmRptLength - usecs.elapsed(), kRcmmMinGap)); } } -#endif +#endif // SEND_RCMM #if DECODE_RCMM -// Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. -// Places successful decode information in the results pointer. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. Typically kRCMMBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Should be working. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/rcmm.php +/// Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. +/// Status: STABLE / Should be working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeRCMM(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { uint64_t data = 0; @@ -174,4 +161,4 @@ bool IRrecv::decodeRCMM(decode_results *results, uint16_t offset, results->command = 0; return true; } -#endif +#endif // DECODE_RCMM diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Samsung.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Samsung.cpp similarity index 70% rename from lib/IRremoteESP8266-2.7.7/src/ir_Samsung.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Samsung.cpp index 78b36e146..02aa4abdd 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Samsung.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Samsung.cpp @@ -1,7 +1,12 @@ // Copyright 2009 Ken Shirriff // Copyright 2017, 2018, 2019 David Conran - -// Samsung remote emulation +/// @file +/// @brief Support for Samsung protocols. +/// Samsung originally added from https://github.com/shirriff/Arduino-IRremote/ +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/505 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/621 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 +/// @see http://elektrolab.wz.cz/katalog/samsung_protocol.pdf #include "ir_Samsung.h" #include @@ -14,11 +19,7 @@ #include "IRtext.h" #include "IRutils.h" -// Samsung originally added from https://github.com/shirriff/Arduino-IRremote/ - // Constants -// Ref: -// http://elektrolab.wz.cz/katalog/samsung_protocol.pdf const uint16_t kSamsungTick = 560; const uint16_t kSamsungHdrMarkTicks = 8; const uint16_t kSamsungHdrMark = kSamsungHdrMarkTicks * kSamsungTick; @@ -62,19 +63,15 @@ using irutils::setBit; using irutils::setBits; #if SEND_SAMSUNG -// Send a Samsung formatted message. -// Samsung has a separate message to indicate a repeat, like NEC does. -// TODO(crankyoldgit): Confirm that is actually how Samsung sends a repeat. -// The refdoc doesn't indicate it is true. -// -// Args: -// data: The message to be sent. -// nbits: The bit size of the message being sent. typically kSamsungBits. -// repeat: The number of times the message is to be repeated. -// -// Status: STABLE / Should be working. -// -// Ref: http://elektrolab.wz.cz/katalog/samsung_protocol.pdf +/// Send a 32-bit Samsung formatted message. +/// Status: STABLE / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see http://elektrolab.wz.cz/katalog/samsung_protocol.pdf +/// @note Samsung has a separate message to indicate a repeat, like NEC does. +/// @todo Confirm that is actually how Samsung sends a repeat. +/// The refdoc doesn't indicate it is true. void IRsend::sendSAMSUNG(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { sendGeneric(kSamsungHdrMark, kSamsungHdrSpace, kSamsungBitMark, @@ -83,16 +80,12 @@ void IRsend::sendSAMSUNG(const uint64_t data, const uint16_t nbits, nbits, 38, true, repeat, 33); } -// Construct a raw Samsung message from the supplied customer(address) & -// command. -// -// Args: -// customer: The customer code. (aka. Address) -// command: The command code. -// Returns: -// A raw 32-bit Samsung message suitable for sendSAMSUNG(). -// -// Status: STABLE / Should be working. +/// Construct a raw Samsung message from the supplied customer(address) & +/// command. +/// Status: STABLE / Should be working. +/// @param[in] customer The customer code. (aka. Address) +/// @param[in] command The command code. +/// @return A raw 32-bit Samsung message suitable for `sendSAMSUNG()`. uint32_t IRsend::encodeSAMSUNG(const uint8_t customer, const uint8_t command) { uint8_t revcustomer = reverseBits(customer, sizeof(customer) * 8); uint8_t revcommand = reverseBits(command, sizeof(command) * 8); @@ -102,27 +95,20 @@ uint32_t IRsend::encodeSAMSUNG(const uint8_t customer, const uint8_t command) { #endif #if DECODE_SAMSUNG -// Decode the supplied Samsung message. -// Samsung messages whilst 32 bits in size, only contain 16 bits of distinct -// data. e.g. In transmition order: -// customer_byte + customer_byte(same) + address_byte + invert(address_byte) -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. Typically kSamsungBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE -// -// Note: -// LG 32bit protocol appears near identical to the Samsung protocol. -// They differ on their compliance criteria and how they repeat. -// Ref: -// http://elektrolab.wz.cz/katalog/samsung_protocol.pdf +/// Decode the supplied Samsung 32-bit message. +/// Status: STABLE +/// @note Samsung messages whilst 32 bits in size, only contain 16 bits of +/// distinct data. e.g. In transmition order: +/// customer_byte + customer_byte(same) + address_byte + invert(address_byte) +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note LG 32bit protocol appears near identical to the Samsung protocol. +/// They differ on their compliance criteria and how they repeat. +/// @see http://elektrolab.wz.cz/katalog/samsung_protocol.pdf bool IRrecv::decodeSAMSUNG(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kSamsungBits) @@ -159,20 +145,12 @@ bool IRrecv::decodeSAMSUNG(decode_results *results, uint16_t offset, #endif #if SEND_SAMSUNG36 -// Send a Samsung 36-bit formatted message. -// -// Args: -// data: The message to be sent. -// nbits: The bit size of the message being sent. typically kSamsung36Bits. -// repeat: The number of times the message is to be repeated. -// -// Status: Alpha / Experimental. -// -// Note: -// Protocol is used by Samsung Bluray Remote: ak59-00167a -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/621 +/// Send a Samsung 36-bit formatted message. +/// Status: Alpha / Experimental. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/621 void IRsend::sendSamsung36(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { if (nbits < 16) return; // To small to send. @@ -196,25 +174,15 @@ void IRsend::sendSamsung36(const uint64_t data, const uint16_t nbits, #endif // SEND_SAMSUNG36 #if DECODE_SAMSUNG36 -// Decode the supplied Samsung36 message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. -// Typically kSamsung36Bits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Alpha / Experimental -// -// Note: -// Protocol is used by Samsung Bluray Remote: ak59-00167a -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/621 +/// Decode the supplied Samsung36 message. +/// Status: Alpha / Experimental +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/621 bool IRrecv::decodeSamsung36(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * nbits + kHeader + kFooter * 2 - 1 + offset) @@ -258,17 +226,12 @@ bool IRrecv::decodeSamsung36(decode_results *results, uint16_t offset, #endif // DECODE_SAMSUNG36 #if SEND_SAMSUNG_AC -// Send a Samsung A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kSamsungAcStateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: Stable / Known working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/505 +/// Send a Samsung A/C message. +/// Status: Stable / Known working. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/505 +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendSamsungAC(const uint8_t data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kSamsungAcStateLength && nbytes % kSamsungAcSectionLength) @@ -294,16 +257,20 @@ void IRsend::sendSamsungAC(const uint8_t data[], const uint16_t nbytes, } #endif // SEND_SAMSUNG_AC +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRSamsungAc::IRSamsungAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } -// Reset the internal state of the emulation. -// Args: -// forcepower: A flag indicating if force sending a special power message -// with the first `send()` call. Default: true +/// Reset the internal state of the emulation. +/// @param[in] forcepower A flag indicating if force sending a special power +/// message with the first `send()` call. +/// @param[in] initialPower Set the initial power state. True, on. False, off. void IRSamsungAc::stateReset(const bool forcepower, const bool initialPower) { static const uint8_t kReset[kSamsungAcExtendedStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x02, 0xAE, 0x71, 0x00, @@ -314,8 +281,13 @@ void IRSamsungAc::stateReset(const bool forcepower, const bool initialPower) { setPower(initialPower); } +/// Set up hardware to be able to send a message. void IRSamsungAc::begin(void) { _irsend.begin(); } +/// Calculate the checksum for a given state. +/// @param[in] state The array to calc the checksum of. +/// @param[in] length The length/size of the array. +/// @return The calculated checksum value. uint8_t IRSamsungAc::calcChecksum(const uint8_t state[], const uint16_t length) { uint8_t sum = 0; @@ -331,6 +303,10 @@ uint8_t IRSamsungAc::calcChecksum(const uint8_t state[], return GETBITS8(28 - sum, kLowNibble, kNibbleSize); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRSamsungAc::validChecksum(const uint8_t state[], const uint16_t length) { if (length < kSamsungAcStateLength) return true; // No checksum to compare with. Assume okay. @@ -342,7 +318,8 @@ bool IRSamsungAc::validChecksum(const uint8_t state[], const uint16_t length) { IRSamsungAc::calcChecksum(state, length - (7 + offset))); } -// Update the checksum for the internal state. +/// Update the checksum for the internal state. +/// @param[in] length The length/size of the internal array to checksum. void IRSamsungAc::checksum(uint16_t length) { if (length < 13) return; setBits(&remote_state[length - 6], kHighNibble, kNibbleSize, @@ -352,8 +329,11 @@ void IRSamsungAc::checksum(uint16_t length) { } #if SEND_SAMSUNG_AC -// Use for most function/mode/settings changes to the unit. -// i.e. When the device is already running. +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +/// @param[in] calcchecksum Do we update the checksum before sending? +/// @note Use for most function/mode/settings changes to the unit. +/// i.e. When the device is already running. void IRSamsungAc::send(const uint16_t repeat, const bool calcchecksum) { if (calcchecksum) this->checksum(); // Do we need to send a the special power on/off message? @@ -369,9 +349,12 @@ void IRSamsungAc::send(const uint16_t repeat, const bool calcchecksum) { _irsend.sendSamsungAC(remote_state, kSamsungAcStateLength, repeat); } -// Use this for when you need to power on/off the device. -// Samsung A/C requires an extended length message when you want to -// change the power operating mode of the A/C unit. +/// Send the extended current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +/// @param[in] calcchecksum Do we update the checksum before sending? +/// @note Use this for when you need to power on/off the device. +/// Samsung A/C requires an extended length message when you want to +/// change the power operating mode of the A/C unit. void IRSamsungAc::sendExtended(const uint16_t repeat, const bool calcchecksum) { if (calcchecksum) this->checksum(); uint8_t extended_state[kSamsungAcExtendedStateLength] = { @@ -389,9 +372,10 @@ void IRSamsungAc::sendExtended(const uint16_t repeat, const bool calcchecksum) { _irsend.sendSamsungAC(extended_state, kSamsungAcExtendedStateLength, repeat); } -// Send the special extended "On" message as the library can't seem to reproduce -// this message automatically. -// See: https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036 +/// Send the special extended "On" message as the library can't seem to +/// reproduce this message automatically. +/// @param[in] repeat Nr. of times the message will be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036 void IRSamsungAc::sendOn(const uint16_t repeat) { const uint8_t extended_state[21] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, @@ -401,9 +385,10 @@ void IRSamsungAc::sendOn(const uint16_t repeat) { _lastsentpowerstate = true; // On } -// Send the special extended "Off" message as the library can't seem to -// reproduce this message automatically. -// See: https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036 +/// Send the special extended "Off" message as the library can't seem to +/// reproduce this message automatically. +/// @param[in] repeat Nr. of times the message will be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036 void IRSamsungAc::sendOff(const uint16_t repeat) { const uint8_t extended_state[21] = { 0x02, 0xB2, 0x0F, 0x00, 0x00, 0x00, 0xC0, @@ -414,11 +399,16 @@ void IRSamsungAc::sendOff(const uint16_t repeat) { } #endif // SEND_SAMSUNG_AC +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRSamsungAc::getRaw(void) { this->checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length/size of the new_code array. void IRSamsungAc::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kSamsungAcExtendedStateLength)); @@ -429,23 +419,30 @@ void IRSamsungAc::setRaw(const uint8_t new_code[], const uint16_t length) { } } +/// Set the requested power state of the A/C to on. void IRSamsungAc::on(void) { setPower(true); } +/// Set the requested power state of the A/C to off. void IRSamsungAc::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSamsungAc::setPower(const bool on) { setBit(&remote_state[1], kSamsungAcPower1Offset, !on); // Cleared when on. setBits(&remote_state[6], kSamsungAcPower6Offset, kSamsungAcPower6Size, on ? 0b11 : 0b00); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRSamsungAc::getPower(void) { return (GETBITS8(remote_state[6], kSamsungAcPower6Offset, kSamsungAcPower6Size) == 0b11) && !GETBIT8(remote_state[1], kSamsungAcPower1Offset); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRSamsungAc::setTemp(const uint8_t temp) { uint8_t newtemp = std::max(kSamsungAcMinTemp, temp); newtemp = std::min(kSamsungAcMaxTemp, newtemp); @@ -453,12 +450,15 @@ void IRSamsungAc::setTemp(const uint8_t temp) { newtemp - kSamsungAcMinTemp); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRSamsungAc::getTemp(void) { return GETBITS8(remote_state[11], kHighNibble, kNibbleSize) + kSamsungAcMinTemp; } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRSamsungAc::setMode(const uint8_t mode) { // If we get an unexpected mode, default to AUTO. uint8_t newmode = mode; @@ -475,10 +475,14 @@ void IRSamsungAc::setMode(const uint8_t mode) { } } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRSamsungAc::getMode(void) { return GETBITS8(remote_state[12], kSamsungAcModeOffset, kModeBitsSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRSamsungAc::setFan(const uint8_t speed) { switch (speed) { case kSamsungAcFanAuto: @@ -497,47 +501,65 @@ void IRSamsungAc::setFan(const uint8_t speed) { setBits(&remote_state[12], kSamsungAcFanOffest, kSamsungAcFanSize, speed); } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRSamsungAc::getFan(void) { return GETBITS8(remote_state[12], kSamsungAcFanOffest, kSamsungAcFanSize); } +/// Get the vertical swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. +/// @todo (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. +/// e.g. 0xAE or 0XAF for swing move. bool IRSamsungAc::getSwing(void) { - // TODO(Hollako): Explain why sometimes the LSB of remote_state[9] is a 1. - // e.g. 0xAE or 0XAF for swing move. return GETBITS8(remote_state[9], kSamsungAcSwingOffset, kSamsungAcSwingSize) == kSamsungAcSwingMove; } +/// Set the vertical swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @todo (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. +/// e.g. 0xAE or 0XAF for swing move. void IRSamsungAc::setSwing(const bool on) { - // TODO(Hollako): Explain why sometimes the LSB of remote_state[9] is a 1. - // e.g. 0xAE or 0XAF for swing move. setBits(&remote_state[9], kSamsungAcSwingOffset, kSamsungAcSwingSize, on ? kSamsungAcSwingMove : kSamsungAcSwingStop); } +/// Get the Beep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSamsungAc::getBeep(void) { return GETBIT8(remote_state[13], kSamsungAcBeepOffset); } +/// Set the Beep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSamsungAc::setBeep(const bool on) { setBit(&remote_state[13], kSamsungAcBeepOffset, on); } +/// Get the Clean setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSamsungAc::getClean(void) { return GETBIT8(remote_state[10], kSamsungAcClean10Offset) && GETBIT8(remote_state[11], kSamsungAcClean11Offset); } +/// Set the Clean setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSamsungAc::setClean(const bool on) { setBit(&remote_state[10], kSamsungAcClean10Offset, on); setBit(&remote_state[11], kSamsungAcClean11Offset, on); } +/// Get the Quiet setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSamsungAc::getQuiet(void) { return !GETBIT8(remote_state[1], kSamsungAcQuiet1Offset) && GETBIT8(remote_state[5], kSamsungAcQuiet5Offset); } +/// Set the Quiet setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSamsungAc::setQuiet(const bool on) { setBit(&remote_state[1], kSamsungAcQuiet1Offset, !on); // Cleared when on. setBit(&remote_state[5], kSamsungAcQuiet5Offset, on); @@ -548,6 +570,8 @@ void IRSamsungAc::setQuiet(const bool on) { } } +/// Get the Powerful (Turbo) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSamsungAc::getPowerful(void) { return !(remote_state[8] & kSamsungAcPowerfulMask8) && (GETBITS8(remote_state[10], kSamsungAcPowerful10Offset, @@ -555,6 +579,8 @@ bool IRSamsungAc::getPowerful(void) { (this->getFan() == kSamsungAcFanTurbo); } +/// Set the Powerful (Turbo) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSamsungAc::setPowerful(const bool on) { uint8_t off_value = this->getBreeze() ? kSamsungAcBreezeOn : 0b000; setBits(&remote_state[10], kSamsungAcPowerful10Offset, @@ -571,16 +597,18 @@ void IRSamsungAc::setPowerful(const bool on) { } } -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 -// Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree +/// Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree +/// @return true, the setting is on. false, the setting is off. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 bool IRSamsungAc::getBreeze(void) { return (GETBITS8(remote_state[10], kSamsungAcBreezeOffset, kSamsungAcBreezeSize) == kSamsungAcBreezeOn) && (this->getFan() == kSamsungAcFanAuto && !getSwing()); } -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 -// Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree +/// Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree +/// @param[in] on true, the setting is on. false, the setting is off. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 void IRSamsungAc::setBreeze(const bool on) { uint8_t off_value = this->getPowerful() ? kSamsungAcPowerful10On : 0b000; setBits(&remote_state[10], kSamsungAcBreezeOffset, @@ -591,23 +619,33 @@ void IRSamsungAc::setBreeze(const bool on) { } } +/// Get the Display (Light/LED) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSamsungAc::getDisplay(void) { return GETBIT8(remote_state[10], kSamsungAcDisplayOffset); } +/// Set the Display (Light/LED) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSamsungAc::setDisplay(const bool on) { setBit(&remote_state[10], kSamsungAcDisplayOffset, on); } +/// Get the Ion (Filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSamsungAc::getIon(void) { return GETBIT8(remote_state[11], kSamsungAcIonOffset); } +/// Set the Ion (Filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSamsungAc::setIon(const bool on) { setBit(&remote_state[11], kSamsungAcIonOffset, on); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRSamsungAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kSamsungAcCool; @@ -618,7 +656,9 @@ uint8_t IRSamsungAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRSamsungAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -630,7 +670,9 @@ uint8_t IRSamsungAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRSamsungAc::toCommonMode(const uint8_t mode) { switch (mode) { case kSamsungAcCool: return stdAc::opmode_t::kCool; @@ -641,7 +683,9 @@ stdAc::opmode_t IRSamsungAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRSamsungAc::toCommonFanSpeed(const uint8_t spd) { switch (spd) { case kSamsungAcFanTurbo: return stdAc::fanspeed_t::kMax; @@ -652,7 +696,8 @@ stdAc::fanspeed_t IRSamsungAc::toCommonFanSpeed(const uint8_t spd) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRSamsungAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::SAMSUNG_AC; @@ -678,7 +723,8 @@ stdAc::state_t IRSamsungAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRSamsungAc::toString(void) { String result = ""; result.reserve(115); // Reserve some heap for the string to reduce fragging. @@ -723,21 +769,15 @@ String IRSamsungAc::toString(void) { } #if DECODE_SAMSUNG_AC -// Decode the supplied Samsung A/C message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kSamsungAcBits -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Stable / Known to be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/505 +/// Decode the supplied Samsung A/C message. +/// Status: Stable / Known to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/505 bool IRrecv::decodeSamsungAC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * nbits + kHeader * 3 + kFooter * 2 - 1 + offset) diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Samsung.h b/lib/IRremoteESP8266-2.7.8/src/ir_Samsung.h similarity index 76% rename from lib/IRremoteESP8266-2.7.7/src/ir_Samsung.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Samsung.h index 9c9e6ab8e..fa6f9f2f3 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Samsung.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Samsung.h @@ -1,6 +1,23 @@ -// Samsung A/C -// // Copyright 2018 David Conran +/// @file +/// @brief Support for Samsung protocols. +/// Samsung originally added from https://github.com/shirriff/Arduino-IRremote/ +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/505 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/621 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 +/// @see http://elektrolab.wz.cz/katalog/samsung_protocol.pdf + +// Supports: +// Brand: Samsung, Model: UA55H6300 TV (SAMSUNG) +// Brand: Samsung, Model: BN59-01178B TV remote (SAMSUNG) +// Brand: Samsung, Model: DB63-03556X003 remote +// Brand: Samsung, Model: DB93-16761C remote +// Brand: Samsung, Model: IEC-R03 remote +// Brand: Samsung, Model: AK59-00167A Bluray remote (SAMSUNG36) +// Brand: Samsung, Model: AR09FSSDAWKNFA A/C (SAMSUNG_AC) +// Brand: Samsung, Model: AR12KSFPEWQNET A/C (SAMSUNG_AC) +// Brand: Samsung, Model: AR12HSSDBWKNEU A/C (SAMSUNG_AC) +// Brand: Samsung, Model: AR12NXCXAWKXEU A/C (SAMSUNG_AC) #ifndef IR_SAMSUNG_H_ #define IR_SAMSUNG_H_ @@ -16,21 +33,9 @@ #include "IRsend_test.h" #endif -// Supports: -// Brand: Samsung, Model: UA55H6300 TV -// Brand: Samsung, Model: DB63-03556X003 remote -// Brand: Samsung, Model: DB93-16761C remote -// Brand: Samsung, Model: IEC-R03 remote -// Brand: Samsung, Model: AR09FSSDAWKNFA A/C -// Brand: Samsung, Model: AR12KSFPEWQNET A/C -// Brand: Samsung, Model: AR12HSSDBWKNEU A/C -// Brand: Samsung, Model: AR12NXCXAWKXEU A/C - -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/505 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 - // Constants + +// SamsungAc // Byte[1] // Checksum 0b11110000 ??? const uint8_t kSamsungAcPower1Offset = 5; // Mask 0b00100000 @@ -86,11 +91,11 @@ const uint16_t kSamsungAcSectionLength = 7; const uint64_t kSamsungAcPowerSection = 0x1D20F00000000; // Classes +/// Class for handling detailed Samsung A/C messages. class IRSamsungAc { public: explicit IRSamsungAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(const bool forcepower = true, const bool initialPower = true); #if SEND_SAMSUNG_AC void send(const uint16_t repeat = kSamsungAcDefaultRepeat, @@ -99,6 +104,10 @@ class IRSamsungAc { const bool calcchecksum = true); void sendOn(const uint16_t repeat = kSamsungAcDefaultRepeat); void sendOff(const uint16_t repeat = kSamsungAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_SAMSUNG_AC void begin(void); @@ -128,7 +137,6 @@ class IRSamsungAc { bool getDisplay(void); void setIon(const bool on); bool getIon(void); - uint8_t* getRaw(void); void setRaw(const uint8_t new_code[], const uint16_t length = kSamsungAcStateLength); @@ -145,13 +153,14 @@ class IRSamsungAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kSamsungAcExtendedStateLength]; - bool _forcepower; // Hack to know when we need to send a special power mesg. + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kSamsungAcExtendedStateLength]; ///< State in code form. + bool _forcepower; ///< Hack to know when we need to send a special power mesg bool _lastsentpowerstate; void checksum(const uint16_t length = kSamsungAcStateLength); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Sanyo.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Sanyo.cpp similarity index 55% rename from lib/IRremoteESP8266-2.7.7/src/ir_Sanyo.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Sanyo.cpp index f797fb678..25baf380b 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Sanyo.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Sanyo.cpp @@ -2,19 +2,27 @@ // Copyright 2016 marcosamarinho // Copyright 2017 David Conran +/// @file +/// @brief Support for Sanyo protocols. +/// Sanyo LC7461 support originally by marcosamarinho +/// Sanyo SA 8650B originally added from +/// https://github.com/shirriff/Arduino-IRremote/ +/// @see https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Sanyo.cpp +/// @see http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp +/// @see http://slydiman.narod.ru/scr/kb/sanyo.htm + +// Supports: +// Brand: Sanyo, Model: SA 8650B - disabled +// Brand: Sanyo, Model: LC7461 transmitter IC (SANYO_LC7461) + #include #include "IRrecv.h" #include "IRsend.h" -// Sanyo SA 8650B originally added from: -// https://github.com/shirriff/Arduino-IRremote/ -// Sanyo LC7461 support originally by marcosamarinho // Constants // Sanyo SA 8650B -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Sanyo.cpp - const uint16_t kSanyoSa8650bHdrMark = 3500; // seen range 3500 const uint16_t kSanyoSa8650bHdrSpace = 950; // seen 950 const uint16_t kSanyoSa8650bOneMark = 2400; // seen 2400 @@ -22,12 +30,8 @@ const uint16_t kSanyoSa8650bZeroMark = 700; // seen 700 // usually see 713 - not using ticks as get number wrapround const uint16_t kSanyoSa8650bDoubleSpaceUsecs = 800; const uint16_t kSanyoSa8650bRptLength = 45000; -// Sanyo LC7461 -// Ref: -// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp -// http://slydiman.narod.ru/scr/kb/sanyo.htm -// http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf +// Sanyo LC7461 const uint16_t kSanyoLc7461AddressMask = (1 << kSanyoLC7461AddressBits) - 1; const uint16_t kSanyoLc7461CommandMask = (1 << kSanyoLC7461CommandBits) - 1; const uint16_t kSanyoLc7461HdrMark = 9000; @@ -45,18 +49,15 @@ const uint16_t kSanyoLc7461MinGap = kSanyoLc7461BitMark); #if SEND_SANYO -// Construct a Sanyo LC7461 message. -// -// Args: -// address: The 13 bit value of the address(Custom) portion of the protocol. -// command: The 8 bit value of the command(Key) portion of the protocol. -// Returns: -// An uint64_t with the encoded raw 42 bit Sanyo LC7461 data value. -// -// Notes: -// This protocol uses the NEC protocol timings. However, data is -// formatted as : address(13 bits), !address, command(8 bits), !command. -// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon +/// Construct a Sanyo LC7461 message. +/// @param[in] address The 13 bit value of the address(Custom) portion of the +/// protocol. +/// @param[in] command The 8 bit value of the command(Key) portion of the +/// protocol. +/// @return An uint64_t with the encoded raw 42 bit Sanyo LC7461 data value. +/// @note This protocol uses the NEC protocol timings. However, data is +/// formatted as : address(13 bits), !address, command(8 bits), !command. +/// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon uint64_t IRsend::encodeSanyoLC7461(uint16_t address, uint8_t command) { // Mask our input values to ensure the correct bit sizes. address &= kSanyoLc7461AddressMask; @@ -75,56 +76,44 @@ uint64_t IRsend::encodeSanyoLC7461(uint16_t address, uint8_t command) { return data; } -// Send a Sanyo LC7461 message. -// -// Args: -// data: The contents of the command you want to send. -// nbits: The bit size of the command being sent. -// repeat: The number of times you want the command to be repeated. -// -// Status: BETA / Probably works. -// -// Notes: -// Based on @marcosamarinho's work. -// This protocol uses the NEC protocol timings. However, data is -// formatted as : address(13 bits), !address, command (8 bits), !command. -// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon -// Information for this protocol is available at the Sanyo LC7461 datasheet. -// Repeats are performed similar to the NEC method of sending a special -// repeat message, rather than duplicating the entire message. -// Ref: -// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp -// http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf -void IRsend::sendSanyoLC7461(uint64_t data, uint16_t nbits, uint16_t repeat) { +/// Send a Sanyo LC7461 message. +/// Status: BETA / Probably works. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Based on \@marcosamarinho's work. +/// This protocol uses the NEC protocol timings. However, data is +/// formatted as : address(13 bits), !address, command (8 bits), !command. +/// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon +/// Information for this protocol is available at the Sanyo LC7461 datasheet. +/// Repeats are performed similar to the NEC method of sending a special +/// repeat message, rather than duplicating the entire message. +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp +/// @see http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf +void IRsend::sendSanyoLC7461(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { // This protocol appears to be another 42-bit variant of the NEC protocol. sendNEC(data, nbits, repeat); } #endif // SEND_SANYO #if DECODE_SANYO -// Decode the supplied SANYO LC7461 message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: BETA / Probably works. -// -// Notes: -// Based on @marcosamarinho's work. -// This protocol uses the NEC protocol. However, data is -// formatted as : address(13 bits), !address, command (8 bits), !command. -// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon -// Information for this protocol is available at the Sanyo LC7461 datasheet. -// Ref: -// http://slydiman.narod.ru/scr/kb/sanyo.htm -// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp -// http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf +/// Decode the supplied SANYO LC7461 message. +/// Status: BETA / Probably works. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note Based on \@marcosamarinho's work. +/// This protocol uses the NEC protocol. However, data is +/// formatted as : address(13 bits), !address, command (8 bits), !command. +/// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon +/// Information for this protocol is available at the Sanyo LC7461 datasheet. +/// @see http://slydiman.narod.ru/scr/kb/sanyo.htm +/// @see https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp +/// @see http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf bool IRrecv::decodeSanyoLC7461(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kSanyoLC7461Bits) @@ -162,24 +151,21 @@ bool IRrecv::decodeSanyoLC7461(decode_results *results, uint16_t offset, } /* NOTE: Disabled due to poor quality. -// Decode the supplied Sanyo SA 8650B message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Depricated. -// -// NOTE: This decoder looks like rubbish. Only keeping it for compatibility -// with the Arduino IRremote library. Seriously, don't trust it. -// If someone has a device that this is supposed to be for, please log an -// Issue on github with a rawData dump please. We should probably remove -// it. We think this is a Sanyo decoder - serial = SA 8650B -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Sanyo.cpp +/// Decode the supplied Sanyo SA 8650B message. +/// Status: Depricated. +/// @depricated Disabled due to poor quality. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @warning This decoder looks like rubbish. Only keeping it for compatibility +/// with the Arduino IRremote library. Seriously, don't trust it. +/// If someone has a device that this is supposed to be for, please log an +/// Issue on github with a rawData dump please. We should probably remove it. +/// We think this is a Sanyo decoder - serial = SA 8650B +/// @see https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Sanyo.cpp bool IRrecv::decodeSanyo(decode_results *results, uint16_t nbits, bool strict) { if (results->rawlen < 2 * nbits + kHeader - 1) return false; // Shorter than shortest possible. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Sharp.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Sharp.cpp similarity index 64% rename from lib/IRremoteESP8266-2.7.7/src/ir_Sharp.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Sharp.cpp index 95a3de5cc..4ba23ac89 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Sharp.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Sharp.cpp @@ -1,7 +1,15 @@ // Copyright 2009 Ken Shirriff // Copyright 2017, 2019 David Conran -// Sharp remote emulation +/// @file +/// @brief Support for Sharp protocols. +/// @see http://www.sbprojects.com/knowledge/ir/sharp.htm +/// @see http://lirc.sourceforge.net/remotes/sharp/GA538WJSA +/// @see http://www.mwftr.com/ucF08/LEC14%20PIC%20IR.pdf +/// @see http://www.hifi-remote.com/johnsfine/DecodeIR.html#Sharp +/// @see GlobalCache's IR Control Tower data. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/638 +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp #include "ir_Sharp.h" #include @@ -14,17 +22,8 @@ #include "IRtext.h" #include "IRutils.h" -// Equipment it seems compatible with: -// * Sharp LC-52D62U -// * Sharp AH-AxSAY A/C (Remote CRMC-A907 JBEZ) -// * -// - // Constants // period time = 1/38000Hz = 26.316 microseconds. -// Ref: -// GlobalCache's IR Control Tower data. -// http://www.sbprojects.com/knowledge/ir/sharp.php const uint16_t kSharpTick = 26; const uint16_t kSharpBitMarkTicks = 10; const uint16_t kSharpBitMark = kSharpBitMarkTicks * kSharpTick; @@ -50,28 +49,18 @@ using irutils::minsToString; using irutils::setBit; using irutils::setBits; +// Also used by Denon protocol #if (SEND_SHARP || SEND_DENON) -// Send a (raw) Sharp message -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kSharpBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: STABLE / Working fine. -// -// Notes: -// This procedure handles the inversion of bits required per protocol. -// The protocol spec says to send the LSB first, but legacy code & usage -// has us sending the MSB first. Grrrr. Normal invocation of encodeSharp() -// handles this for you, assuming you are using the correct/standard values. -// e.g. sendSharpRaw(encodeSharp(address, command)); -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/sharp.htm -// http://lirc.sourceforge.net/remotes/sharp/GA538WJSA -// http://www.mwftr.com/ucF08/LEC14%20PIC%20IR.pdf -// http://www.hifi-remote.com/johnsfine/DecodeIR.html#Sharp +/// Send a (raw) Sharp message +/// @note Status: STABLE / Working fine. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note his procedure handles the inversion of bits required per protocol. +/// The protocol spec says to send the LSB first, but legacy code & usage +/// has us sending the MSB first. Grrrr. Normal invocation of encodeSharp() +/// handles this for you, assuming you are using the correct/standard values. +/// e.g. sendSharpRaw(encodeSharp(address, command)); void IRsend::sendSharpRaw(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { uint64_t tempdata = data; @@ -93,30 +82,20 @@ void IRsend::sendSharpRaw(const uint64_t data, const uint16_t nbits, } } -// Encode a (raw) Sharp message from it's components. -// -// Args: -// address: The value of the address to be sent. -// command: The value of the address to be sent. (8 bits) -// expansion: The value of the expansion bit to use. (0 or 1, typically 1) -// check: The value of the check bit to use. (0 or 1, typically 0) -// MSBfirst: Flag indicating MSB first or LSB first order. (Default: false) -// Returns: -// An uint32_t containing the raw Sharp message for sendSharpRaw(). -// -// Status: STABLE / Works okay. -// -// Notes: -// Assumes the standard Sharp bit sizes. -// Historically sendSharp() sends address & command in -// MSB first order. This is actually incorrect. It should be sent in LSB -// order. The behaviour of sendSharp() hasn't been changed to maintain -// backward compatibility. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/sharp.htm -// http://lirc.sourceforge.net/remotes/sharp/GA538WJSA -// http://www.mwftr.com/ucF08/LEC14%20PIC%20IR.pdf +/// Encode a (raw) Sharp message from it's components. +/// Status: STABLE / Works okay. +/// @param[in] address The value of the address to be sent. +/// @param[in] command The value of the address to be sent. (8 bits) +/// @param[in] expansion The value of the expansion bit to use. +/// (0 or 1, typically 1) +/// @param[in] check The value of the check bit to use. (0 or 1, typically 0) +/// @param[in] MSBfirst Flag indicating MSB first or LSB first order. +/// @return A uint32_t containing the raw Sharp message for `sendSharpRaw()`. +/// @note Assumes the standard Sharp bit sizes. +/// Historically sendSharp() sends address & command in +/// MSB first order. This is actually incorrect. It should be sent in LSB +/// order. The behaviour of sendSharp() hasn't been changed to maintain +/// backward compatibility. uint32_t IRsend::encodeSharp(const uint16_t address, const uint16_t command, const uint16_t expansion, const uint16_t check, const bool MSBfirst) { @@ -135,60 +114,45 @@ uint32_t IRsend::encodeSharp(const uint16_t address, const uint16_t command, (tempexpansion << 1) | tempcheck; } -// Send a Sharp message -// -// Args: -// address: Address value to be sent. -// command: Command value to be sent. -// nbits: Nr. of bits of data to be sent. Typically kSharpBits. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: DEPRICATED / Previously working fine. -// -// Notes: -// This procedure has a non-standard invocation style compared to similar -// sendProtocol() routines. This is due to legacy, compatibility, & historic -// reasons. Normally the calling syntax version is like sendSharpRaw(). -// This procedure transmits the address & command in MSB first order, which is -// incorrect. This behaviour is left as-is to maintain backward -// compatibility with legacy code. -// In short, you should use sendSharpRaw(), encodeSharp(), and the correct -// values of address & command instead of using this, & the wrong values. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/sharp.htm -// http://lirc.sourceforge.net/remotes/sharp/GA538WJSA -// http://www.mwftr.com/ucF08/LEC14%20PIC%20IR.pdf +/// Send a Sharp message +/// Status: DEPRECATED / Previously working fine. +/// @deprecated Only use this if you are using legacy from the original +/// Arduino-IRremote library. 99% of the time, you will want to use +/// `sendSharpRaw()` instead +/// @param[in] address Address value to be sent. +/// @param[in] command Command value to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note This procedure has a non-standard invocation style compared to similar +/// sendProtocol() routines. This is due to legacy, compatibility, & historic +/// reasons. Normally the calling syntax version is like sendSharpRaw(). +/// This procedure transmits the address & command in MSB first order, which is +/// incorrect. This behaviour is left as-is to maintain backward +/// compatibility with legacy code. +/// In short, you should use sendSharpRaw(), encodeSharp(), and the correct +/// values of address & command instead of using this, & the wrong values. void IRsend::sendSharp(const uint16_t address, uint16_t const command, const uint16_t nbits, const uint16_t repeat) { sendSharpRaw(encodeSharp(address, command, 1, 0, true), nbits, repeat); } #endif // (SEND_SHARP || SEND_DENON) +// Used by decodeDenon too. #if (DECODE_SHARP || DECODE_DENON) -// Decode the supplied Sharp message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. Typically kSharpBits. -// strict: Flag indicating if we should perform strict matching. -// expansion: Should we expect the expansion bit to be set. Default is true. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working fine. -// -// Note: -// This procedure returns a value suitable for use in sendSharpRaw(). -// TODO(crankyoldgit): Need to ensure capture of the inverted message as it can -// be missed due to the interrupt timeout used to detect an end of message. -// Several compliance checks are disabled until that is resolved. -// Ref: -// http://www.sbprojects.com/knowledge/ir/sharp.php -// http://www.mwftr.com/ucF08/LEC14%20PIC%20IR.pdf -// http://www.hifi-remote.com/johnsfine/DecodeIR.html#Sharp +/// Decode the supplied Sharp message. +/// Status: STABLE / Working fine. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @param[in] expansion Should we expect the expansion bit to be set. +/// Default is true. +/// @return True if it can decode it, false if it can't. +/// @note This procedure returns a value suitable for use in `sendSharpRaw()`. +/// @todo Need to ensure capture of the inverted message as it can +/// be missed due to the interrupt timeout used to detect an end of message. +/// Several compliance checks are disabled until that is resolved. bool IRrecv::decodeSharp(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict, const bool expansion) { @@ -253,18 +217,13 @@ bool IRrecv::decodeSharp(decode_results *results, uint16_t offset, #endif // (DECODE_SHARP || DECODE_DENON) #if SEND_SHARP_AC -// Send a Sharp A/C message. -// -// Args: -// data: An array of kSharpAcStateLength bytes containing the IR command. -// nbytes: Nr. of bytes of data to send. i.e. length of `data`. -// repeat: Nr. of times the message should be repeated. -// -// Status: Alpha / Untested. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/638 -// https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp +/// Send a Sharp A/C message. +/// Status: Alpha / Untested. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/638 +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp void IRsend::sendSharpAc(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kSharpAcStateLength) @@ -278,24 +237,29 @@ void IRsend::sendSharpAc(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_SHARP_AC +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRSharpAc::IRSharpAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Set up hardware to be able to send a message. void IRSharpAc::begin(void) { _irsend.begin(); } #if SEND_SHARP_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRSharpAc::send(const uint16_t repeat) { _irsend.sendSharpAc(getRaw(), kSharpAcStateLength, repeat); } #endif // SEND_SHARP_AC -// Calculate the checksum for a given state. -// Args: -// state: The array to verify the checksums of. -// length: The size of the state. -// Returns: -// The 4 bit checksum. +/// Calculate the checksum for a given state. +/// @param[in] state The array to calc the checksum of. +/// @param[in] length The length/size of the array. +/// @return The calculated 4-bit checksum value. uint8_t IRSharpAc::calcChecksum(uint8_t state[], const uint16_t length) { uint8_t xorsum = xorBytes(state, length - 1); xorsum ^= GETBITS8(state[length - 1], kLowNibble, kNibbleSize); @@ -303,23 +267,22 @@ uint8_t IRSharpAc::calcChecksum(uint8_t state[], const uint16_t length) { return GETBITS8(xorsum, kLowNibble, kNibbleSize); } -// Verify the checksums are valid for a given state. -// Args: -// state: The array to verify the checksums of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRSharpAc::validChecksum(uint8_t state[], const uint16_t length) { return GETBITS8(state[length - 1], kHighNibble, kNibbleSize) == IRSharpAc::calcChecksum(state, length); } -// Calculate and set the checksum values for the internal state. +/// Calculate and set the checksum values for the internal state. void IRSharpAc::checksum(void) { setBits(&remote[kSharpAcStateLength - 1], kHighNibble, kNibbleSize, this->calcChecksum(remote)); } +/// Reset the state of the remote to a known good state/sequence. void IRSharpAc::stateReset(void) { static const uint8_t reset[kSharpAcStateLength] = { 0xAA, 0x5A, 0xCF, 0x10, 0x00, 0x01, 0x00, 0x00, 0x08, 0x80, 0x00, 0xE0, @@ -330,31 +293,42 @@ void IRSharpAc::stateReset(void) { _fan = getFan(); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t *IRSharpAc::getRaw(void) { this->checksum(); // Ensure correct settings before sending. return remote; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length/size of the new_code array. void IRSharpAc::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote, new_code, std::min(length, kSharpAcStateLength)); } +/// Set the value of the Power Special setting without any checks. +/// @param[in] value The value to set Power Special to. void IRSharpAc::setPowerSpecial(const uint8_t value) { setBits(&remote[kSharpAcBytePowerSpecial], kSharpAcPowerSetSpecialOffset, kSharpAcPowerSpecialSize, value); } +/// Get the value of the Power Special setting. +/// @return The setting's value. uint8_t IRSharpAc::getPowerSpecial(void) { return GETBITS8(remote[kSharpAcBytePowerSpecial], kSharpAcPowerSetSpecialOffset, kSharpAcPowerSpecialSize); } -// Clear the "special"/non-normal bits in the power section. -// e.g. for normal/common command modes. +/// Clear the "special"/non-normal bits in the power section. +/// e.g. for normal/common command modes. void IRSharpAc::clearPowerSpecial(void) { setPowerSpecial(getPowerSpecial() & kSharpAcPowerOn); } +/// Is one of the special power states in use? +/// @return true, it is. false, it isn't. bool IRSharpAc::isPowerSpecial(void) { switch (getPowerSpecial()) { case kSharpAcPowerSetSpecialOff: @@ -364,10 +338,15 @@ bool IRSharpAc::isPowerSpecial(void) { } } +/// Set the requested power state of the A/C to on. void IRSharpAc::on(void) { setPower(true); } +/// Set the requested power state of the A/C to off. void IRSharpAc::off(void) { setPower(false); } +/// Change the power setting, including the previous power state. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @param[in] prev_on true, the setting is on. false, the setting is off. void IRSharpAc::setPower(const bool on, const bool prev_on) { setPowerSpecial(on ? (prev_on ? kSharpAcPowerOn : kSharpAcPowerOnFromOff) : kSharpAcPowerOff); @@ -376,6 +355,8 @@ void IRSharpAc::setPower(const bool on, const bool prev_on) { setSpecial(kSharpAcSpecialPower); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRSharpAc::getPower(void) { switch (getPowerSpecial()) { case kSharpAcPowerUnknown: @@ -384,6 +365,8 @@ bool IRSharpAc::getPower(void) { } } +/// Set the value of the Special (button/command?) setting. +/// @param[in] mode The value to set Special to. void IRSharpAc::setSpecial(const uint8_t mode) { switch (mode) { case kSharpAcSpecialPower: @@ -400,12 +383,13 @@ void IRSharpAc::setSpecial(const uint8_t mode) { } } +/// Get the value of the Special (button/command?) setting. +/// @return The setting's value. uint8_t IRSharpAc::getSpecial(void) { return remote[kSharpAcByteSpecial]; } -// Set the temp in deg C -// Args: -// temp: Desired Temperature (Celsius) -// save: Do we save this Temperature as a user set temp? (Default: true) +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. +/// @param[in] save Do we save this setting as a user set one? void IRSharpAc::setTemp(const uint8_t temp, const bool save) { switch (this->getMode()) { // Auto & Dry don't allow temp changes and have a special temp. @@ -425,15 +409,22 @@ void IRSharpAc::setTemp(const uint8_t temp, const bool save) { clearPowerSpecial(); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRSharpAc::getTemp(void) { return GETBITS8(remote[kSharpAcByteTemp], kLowNibble, kNibbleSize) + kSharpAcMinTemp; } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRSharpAc::getMode(void) { return GETBITS8(remote[kSharpAcByteMode], kLowNibble, kSharpAcModeSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +/// @param[in] save Do we save this setting as a user set one? void IRSharpAc::setMode(const uint8_t mode, const bool save) { switch (mode) { case kSharpAcAuto: @@ -458,7 +449,9 @@ void IRSharpAc::setMode(const uint8_t mode, const bool save) { clearPowerSpecial(); } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] speed The desired setting. +/// @param[in] save Do we save this setting as a user set one? void IRSharpAc::setFan(const uint8_t speed, const bool save) { switch (speed) { case kSharpAcFanAuto: @@ -478,57 +471,76 @@ void IRSharpAc::setFan(const uint8_t speed, const bool save) { clearPowerSpecial(); } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRSharpAc::getFan(void) { return GETBITS8(remote[kSharpAcByteFan], kSharpAcFanOffset, kSharpAcFanSize); } +/// Get the Turbo setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSharpAc::getTurbo(void) { return (getPowerSpecial() == kSharpAcPowerSetSpecialOn) && (getSpecial() == kSharpAcSpecialTurbo); } -// Note: If you use this method, you will need to send it before making -// other changes to the settings, as they may overwrite some of the bits -// used by this setting. +/// Set the Turbo setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note If you use this method, you will need to send it before making +/// other changes to the settings, as they may overwrite some of the bits +/// used by this setting. void IRSharpAc::setTurbo(const bool on) { if (on) setFan(kSharpAcFanMax); setPowerSpecial(on ? kSharpAcPowerSetSpecialOn : kSharpAcPowerSetSpecialOff); setSpecial(kSharpAcSpecialTurbo); } +/// Get the (vertical) Swing Toggle setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSharpAc::getSwingToggle(void) { return GETBITS8(remote[kSharpAcByteSwing], kSharpAcSwingOffset, kSharpAcSwingSize) == kSharpAcSwingToggle; } +/// Set the (vertical) Swing Toggle setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSharpAc::setSwingToggle(const bool on) { setBits(&remote[kSharpAcByteSwing], kSharpAcSwingOffset, kSharpAcSwingSize, on ? kSharpAcSwingToggle : kSharpAcSwingNoToggle); if (on) setSpecial(kSharpAcSpecialSwing); } +/// Get the Ion (Filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSharpAc::getIon(void) { return GETBIT8(remote[kSharpAcByteIon], kSharpAcBitIonOffset); } +/// Set the Ion (Filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRSharpAc::setIon(const bool on) { setBit(&remote[kSharpAcByteIon], kSharpAcBitIonOffset, on); clearPowerSpecial(); if (on) setSpecial(kSharpAcSpecialSwing); } +/// Get the Economical mode toggle setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSharpAc::getEconoToggle(void) { return (getPowerSpecial() == kSharpAcPowerSetSpecialOn) && (getSpecial() == kSharpAcSpecialTempEcono); } -// Warning: Probably incompatible with `setTurbo()` +/// Set the Economical mode toggle setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @warning Probably incompatible with `setTurbo()` void IRSharpAc::setEconoToggle(const bool on) { if (on) setSpecial(kSharpAcSpecialTempEcono); setPowerSpecial(on ? kSharpAcPowerSetSpecialOn : kSharpAcPowerSetSpecialOff); } -// Returns how long the timer is set for, in minutes. +/// Get how long the timer is set for, in minutes. +/// @return The time in nr of minutes. uint16_t IRSharpAc::getTimerTime(void) { return GETBITS8(remote[kSharpAcByteTimer], kSharpAcTimerHoursOffset, kSharpAcTimerHoursSize) * kSharpAcTimerIncrement * 2 + @@ -536,21 +548,23 @@ uint16_t IRSharpAc::getTimerTime(void) { : 0); } +/// Is the Timer enabled? +/// @return true, the setting is on. false, the setting is off. bool IRSharpAc::getTimerEnabled(void) { return GETBIT8(remote[kSharpAcByteTimer], kSharpAcBitTimerEnabled); } +/// Get the current timer type. +/// @return true, It's an "On" timer. false, It's an "Off" timer. bool IRSharpAc::getTimerType(void) { return GETBIT8(remote[kSharpAcByteTimer], kSharpAcBitTimerType); } -// Set or cancel the timer function. -// Args: -// enable: Is the timer to be enabled (true) or canceled(false)? -// timer_type: An On (true) or an Off (false). Ignored if canceled. -// mins: Nr. of minutes the timer is to be set to. -// Rounds down to 30 min increments. -// (max: 720 mins (12h), 0 is Off) +/// Set or cancel the timer function. +/// @param[in] enable Is the timer to be enabled (true) or canceled(false)? +/// @param[in] timer_type An On (true) or an Off (false). Ignored if canceled. +/// @param[in] mins Nr. of minutes the timer is to be set to. +/// @note Rounds down to 30 min increments. (max: 720 mins (12h), 0 is Off) void IRSharpAc::setTimer(bool enable, bool timer_type, uint16_t mins) { uint8_t half_hours = std::min(mins / kSharpAcTimerIncrement, kSharpAcTimerHoursMax * 2); @@ -569,11 +583,15 @@ void IRSharpAc::setTimer(bool enable, bool timer_type, uint16_t mins) { setPowerSpecial(kSharpAcPowerTimerSetting); } +/// Get the Clean setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRSharpAc::getClean(void) { return GETBIT8(remote[kSharpAcByteClean], kSharpAcBitCleanOffset); } -// Note: Officially A/C unit needs to be "Off" before clean mode can be entered. +/// Set the Economical mode toggle setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +/// @note Officially A/C unit needs to be "Off" before clean mode can be entered void IRSharpAc::setClean(const bool on) { // Clean mode appears to be just default dry mode, with an extra bit set. if (on) { @@ -588,7 +606,9 @@ void IRSharpAc::setClean(const bool on) { clearPowerSpecial(); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRSharpAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kSharpAcCool; @@ -599,7 +619,9 @@ uint8_t IRSharpAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRSharpAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -611,7 +633,9 @@ uint8_t IRSharpAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRSharpAc::toCommonMode(const uint8_t mode) { switch (mode) { case kSharpAcCool: return stdAc::opmode_t::kCool; @@ -621,7 +645,9 @@ stdAc::opmode_t IRSharpAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRSharpAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kSharpAcFanMax: return stdAc::fanspeed_t::kMax; @@ -632,7 +658,8 @@ stdAc::fanspeed_t IRSharpAc::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRSharpAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::SHARP_AC; @@ -658,7 +685,8 @@ stdAc::state_t IRSharpAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRSharpAc::toString(void) { String result = ""; result.reserve(135); // Reserve some heap for the string to reduce fragging. @@ -682,21 +710,16 @@ String IRSharpAc::toString(void) { } #if DECODE_SHARP_AC -// Decode the supplied Sharp A/C message. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. (kSharpAcBits) -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Known working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/638 -// https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp +/// Decode the supplied Sharp A/C message. +/// Status: STABLE / Known working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/638 +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp bool IRrecv::decodeSharpAc(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { // Compliance diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Sharp.h b/lib/IRremoteESP8266-2.7.8/src/ir_Sharp.h similarity index 82% rename from lib/IRremoteESP8266-2.7.7/src/ir_Sharp.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Sharp.h index 31f340817..38d01a0b0 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Sharp.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Sharp.h @@ -1,9 +1,20 @@ // Copyright 2019 crankyoldgit +/// @file +/// @brief Support for Sharp protocols. +/// @see http://www.sbprojects.com/knowledge/ir/sharp.htm +/// @see http://lirc.sourceforge.net/remotes/sharp/GA538WJSA +/// @see http://www.mwftr.com/ucF08/LEC14%20PIC%20IR.pdf +/// @see http://www.hifi-remote.com/johnsfine/DecodeIR.html#Sharp +/// @see GlobalCache's IR Control Tower data. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/638 +/// @see https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp + // Supports: // Brand: Sharp, Model: LC-52D62U TV // Brand: Sharp, Model: AY-ZP40KR A/C // Brand: Sharp, Model: AH-AxSAY A/C +// Brand: Sharp, Model: CRMC-A907 JBEZ remote // Brand: Sharp, Model: AH-XP10NRY A/C // Brand: Sharp, Model: CRMC-820JBEZ remote @@ -92,14 +103,18 @@ const uint8_t kSharpAcByteIon = 11; const uint8_t kSharpAcBitIonOffset = 2; // Mask 0b00000x00 // Byte[12] (Checksum) - +// Classes +/// Class for handling detailed Sharp A/C messages. class IRSharpAc { public: explicit IRSharpAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - #if SEND_SHARP_AC void send(const uint16_t repeat = kSharpAcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_SHARP_AC void begin(void); @@ -144,15 +159,16 @@ class IRSharpAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // # of bytes per command - uint8_t remote[kSharpAcStateLength]; - uint8_t _temp; // Saved copy of the desired temp. - uint8_t _mode; // Saved copy of the desired mode. - uint8_t _fan; // Saved copy of the desired fan speed. + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote[kSharpAcStateLength]; ///< State of the remote in IR code form + uint8_t _temp; ///< Saved copy of the desired temp. + uint8_t _mode; ///< Saved copy of the desired mode. + uint8_t _fan; ///< Saved copy of the desired fan speed. void stateReset(void); void checksum(void); static uint8_t calcChecksum(uint8_t state[], diff --git a/lib/IRremoteESP8266-2.7.8/src/ir_Sherwood.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Sherwood.cpp new file mode 100644 index 000000000..475168721 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Sherwood.cpp @@ -0,0 +1,24 @@ +// Copyright 2017 David Conran + +/// @file +/// @brief Support for Sherwood protocols. + +// Supports: +// Brand: Sherwood, Model: RC-138 remote +// Brand: Sherwood, Model: RD6505(B) Receiver + +#include +#include "IRsend.h" + +#if SEND_SHERWOOD +/// Send an IR command to a Sherwood device. +/// Status: STABLE / Known working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note Sherwood remote codes appear to be NEC codes with a manditory repeat +/// code. i.e. repeat should be >= kSherwoodMinRepeat (1). +void IRsend::sendSherwood(uint64_t data, uint16_t nbits, uint16_t repeat) { + sendNEC(data, nbits, std::max((uint16_t)kSherwoodMinRepeat, repeat)); +} +#endif // SEND_SHERWOOD diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Sony.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Sony.cpp similarity index 57% rename from lib/IRremoteESP8266-2.7.7/src/ir_Sony.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Sony.cpp index 9ff0c50cc..357fde504 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Sony.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Sony.cpp @@ -2,7 +2,12 @@ // Copyright 2016 marcosamarinho // Copyright 2017,2020 David Conran -// Sony Remote Emulation +/// @file +/// @brief Support for Sony SIRC(Serial Infra-Red Control) protocols. +/// Sony originally added from https://github.com/shirriff/Arduino-IRremote/ +/// Updates from marcosamarinho +/// @see http://www.sbprojects.com/knowledge/ir/sirc.php +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1018 // Supports: // Brand: Sony, Model: HT-CT380 Soundbar (Uses 38kHz & 3 repeats) @@ -12,12 +17,8 @@ #include "IRsend.h" #include "IRutils.h" -// Sony originally added from https://github.com/shirriff/Arduino-IRremote/ -// Updates from marcosamarinho // Constants -// Ref: -// http://www.sbprojects.com/knowledge/ir/sirc.php const uint16_t kSonyTick = 200; const uint16_t kSonyHdrMarkTicks = 12; const uint16_t kSonyHdrMark = kSonyHdrMarkTicks * kSonyTick; @@ -35,80 +36,57 @@ const uint16_t kSonyStdFreq = 40000; // kHz const uint16_t kSonyAltFreq = 38000; // kHz #if SEND_SONY -// Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) -// -// Args: -// data: message to be sent. -// nbits: Nr. of bits of the message to be sent. -// repeat: Nr. of additional times the message is to be sent. (Default: 2) -// -// Status: STABLE / Known working. -// -// Notes: -// sendSony() should typically be called with repeat=2 as Sony devices -// expect the message to be sent at least 3 times. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/sirc.php -void IRsend::sendSony(uint64_t data, uint16_t nbits, uint16_t repeat) { +/// Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) +/// Status: STABLE / Known working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note sendSony() should typically be called with repeat=2 as Sony devices +/// expect the message to be sent at least 3 times. +void IRsend::sendSony(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { _sendSony(data, nbits, repeat, kSonyStdFreq); } -// Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. -// -// Args: -// data: message to be sent. -// nbits: Nr. of bits of the message to be sent. -// repeat: Nr. of additional times the message is to be sent. (Default: 3) -// -// Status: STABLE / Known working. -// -// Notes: -// - `sendSony38()`` should typically be called with repeat=3 as these Sony -// devices expect the message to be sent at least 4 times. -// - Messages send via this method will be detected by this library as just -// `SONY`, not `SONY_38K` as the library has no way to determine the -// modulation frequency used. Hence, there is no `decodeSony38()`. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/sirc.php -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1018 -void IRsend::sendSony38(uint64_t data, uint16_t nbits, uint16_t repeat) { +/// Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. +/// Status: STABLE / Known working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @note `sendSony38()` should typically be called with repeat=3 as these Sony +/// devices expect the message to be sent at least 4 times. +/// @warning Messages send via this method will be detected by this library as +/// just `SONY`, not `SONY_38K` as the library has no way to determine the +/// modulation frequency used. Hence, there is no `decodeSony38()`. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1018 +void IRsend::sendSony38(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { _sendSony(data, nbits, repeat, kSonyAltFreq); } -// Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message. -// -// Args: -// data: message to be sent. -// nbits: Nr. of bits of the message to be sent. -// repeat: Nr. of additional times the message is to be sent. -// freq: Frequency of the modulation to transmit at. (Hz or kHz) -// -// Status: STABLE / Known working. -// -// Ref: -// http://www.sbprojects.com/knowledge/ir/sirc.php -void IRsend::_sendSony(uint64_t data, uint16_t nbits, uint16_t repeat, - uint16_t freq) { +/// Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message +/// Status: STABLE / Known working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @param[in] freq Frequency of the modulation to transmit at. (Hz or kHz) +void IRsend::_sendSony(const uint64_t data, const uint16_t nbits, + const uint16_t repeat, const uint16_t freq) { sendGeneric(kSonyHdrMark, kSonySpace, kSonyOneMark, kSonySpace, kSonyZeroMark, kSonySpace, 0, // No Footer mark. kSonyMinGap, kSonyRptLength, data, nbits, freq, true, repeat, 33); } -// Convert Sony/SIRC command, address, & extended bits into sendSony format. -// Args: -// nbits: Sony protocol bit size. -// command: Sony command bits. -// address: Sony address bits. -// extended: Sony extended bits. -// Returns: -// A sendSony compatible data message. -// -// Status: STABLE / Should be working. -uint32_t IRsend::encodeSony(uint16_t nbits, uint16_t command, uint16_t address, - uint16_t extended) { +/// Convert Sony/SIRC command, address, & extended bits into sendSony format. +/// Status: STABLE / Should be working. +/// @param[in] nbits Sony protocol bit size. +/// @param[in] command Sony command bits. +/// @param[in] address Sony address bits. +/// @param[in] extended Sony extended bits. +/// @return A `sendSony()` etc compatible data message. +uint32_t IRsend::encodeSony(const uint16_t nbits, const uint16_t command, + const uint16_t address, const uint16_t extended) { uint32_t result = 0; switch (nbits) { case 12: // 5 address bits. @@ -127,26 +105,19 @@ uint32_t IRsend::encodeSony(uint16_t nbits, uint16_t command, uint16_t address, result = (result << 7) | (command & 0x7F); // All sizes have 7 command bits. return reverseBits(result, nbits); // sendSony uses reverse ordered bits. } -#endif +#endif // SEND_SONY #if DECODE_SONY -// Decode the supplied Sony/SIRC message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Should be working. strict mode is ALPHA / Untested. -// -// Notes: -// SONY protocol, SIRC (Serial Infra-Red Control) can be 12,15,20 bits long. -// Ref: -// http://www.sbprojects.com/knowledge/ir/sirc.php +/// Decode the supplied Sony/SIRC message. +/// Status: STABLE / Should be working. strict mode is ALPHA / Untested. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @note SONY protocol, SIRC (Serial Infra-Red Control) can be 12, 15, or 20 +/// bits long. bool IRrecv::decodeSony(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= 2 * nbits + kHeader - 1 + offset) @@ -217,4 +188,4 @@ bool IRrecv::decodeSony(decode_results *results, uint16_t offset, } return true; } -#endif +#endif // DECODE_SONY diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Symphony.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Symphony.cpp similarity index 62% rename from lib/IRremoteESP8266-2.7.7/src/ir_Symphony.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Symphony.cpp index a65821c33..d5fedb29b 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Symphony.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Symphony.cpp @@ -1,6 +1,10 @@ // Copyright 2020 David Conran -// Send & decode support for Symphony added by David Conran +/// @file +/// @brief Support for Symphony protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1057 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1105 +/// @see https://www.alldatasheet.com/datasheet-pdf/pdf/124369/ANALOGICTECH/SM5021B.html // Supports: // Brand: Symphony, Model: Air Cooler 3Di @@ -22,8 +26,6 @@ #include "IRutils.h" // Constants -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1057 const uint16_t kSymphonyZeroMark = 400; const uint16_t kSymphonyZeroSpace = 1250; const uint16_t kSymphonyOneMark = kSymphonyZeroSpace; @@ -32,19 +34,11 @@ const uint32_t kSymphonyFooterGap = 4 * (kSymphonyZeroMark + kSymphonyZeroSpace); #if SEND_SYMPHONY -// Send a Symphony packet. -// -// Args: -// data: The data we want to send. MSB first. -// nbits: The number of bits of data to send. (Typically 12, 24, or 32[Nokia]) -// repeat: The nr. of times the message should be sent. -// -// Status: STABLE / Should be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1057 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1105 -// https://www.alldatasheet.com/datasheet-pdf/pdf/124369/ANALOGICTECH/SM5021B.html +/// Send a Symphony packet. +/// Status: STABLE / Should be working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendSymphony(uint64_t data, uint16_t nbits, uint16_t repeat) { sendGeneric(0, 0, kSymphonyOneMark, kSymphonyOneSpace, @@ -55,23 +49,14 @@ void IRsend::sendSymphony(uint64_t data, uint16_t nbits, uint16_t repeat) { #endif // SEND_SYMPHONY #if DECODE_SYMPHONY -// Decode a Symphony packet if possible. -// Places successful decode information in the results pointer. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of bits to expect in the data portion. Typically kSymphonyBits -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Should be working. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1057 -// https://github.com/crankyoldgit/IRremoteESP8266/issues/1105 -// https://www.alldatasheet.com/datasheet-pdf/pdf/124369/ANALOGICTECH/SM5021B.html +/// Decode the supplied Symphony packet/message. +/// Status: STABLE / Should be working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeSymphony(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { uint64_t data = 0; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Tcl.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Tcl.cpp similarity index 64% rename from lib/IRremoteESP8266-2.7.7/src/ir_Tcl.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Tcl.cpp index ff144e9c1..a818377fd 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Tcl.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Tcl.cpp @@ -1,5 +1,8 @@ // Copyright 2019 David Conran +/// @file +/// @brief Support for TCL protocols. + #include "ir_Tcl.h" #include #include @@ -22,6 +25,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_TCL112AC +/// Send a TCL 112-bit A/C message. +/// Status: Beta / Probably working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendTcl112Ac(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { sendGeneric(kTcl112AcHdrMark, kTcl112AcHdrSpace, @@ -32,24 +40,29 @@ void IRsend::sendTcl112Ac(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_TCL112AC +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRTcl112Ac::IRTcl112Ac(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } +/// Set up hardware to be able to send a message. void IRTcl112Ac::begin(void) { this->_irsend.begin(); } #if SEND_TCL112AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRTcl112Ac::send(const uint16_t repeat) { this->_irsend.sendTcl112Ac(getRaw(), kTcl112AcStateLength, repeat); } #endif // SEND_TCL112AC -// Calculate the checksum for a given array. -// Args: -// state: The array to calculate the checksum over. -// length: The size of the array. -// Returns: -// The 8 bit checksum value. +/// Calculate the checksum for a given state. +/// @param[in] state The array to calc the checksum of. +/// @param[in] length The length/size of the array. +/// @return The calculated checksum value. uint8_t IRTcl112Ac::calcChecksum(uint8_t state[], const uint16_t length) { if (length) return sumBytes(state, length - 1); @@ -57,23 +70,23 @@ uint8_t IRTcl112Ac::calcChecksum(uint8_t state[], const uint16_t length) { return 0; } -// Calculate & set the checksum for the current internal state of the remote. +/// Calculate & set the checksum for the current internal state of the remote. +/// @param[in] length The length/size of the internal array to checksum. void IRTcl112Ac::checksum(const uint16_t length) { // Stored the checksum value in the last byte. if (length > 1) remote_state[length - 1] = calcChecksum(remote_state, length); } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRTcl112Ac::validChecksum(uint8_t state[], const uint16_t length) { return (length > 1 && state[length - 1] == calcChecksum(state, length)); } +/// Reset the internal state of the emulation. (On, Cool, 24C) void IRTcl112Ac::stateReset(void) { // A known good state. (On, Cool, 24C) static const uint8_t reset[kTcl112AcStateLength] = { @@ -82,41 +95,48 @@ void IRTcl112Ac::stateReset(void) { memcpy(remote_state, reset, kTcl112AcStateLength); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t* IRTcl112Ac::getRaw(void) { this->checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length/size of the new_code array. void IRTcl112Ac::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kTcl112AcStateLength)); } -// Set the requested power state of the A/C to on. +/// Set the requested power state of the A/C to on. void IRTcl112Ac::on(void) { this->setPower(true); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRTcl112Ac::off(void) { this->setPower(false); } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTcl112Ac::setPower(const bool on) { setBit(&remote_state[5], kTcl112AcPowerOffset, on); } -// Return the requested power state of the A/C. +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRTcl112Ac::getPower(void) { return GETBIT8(remote_state[5], kTcl112AcPowerOffset); } -// Get the requested climate operation mode of the a/c unit. -// Returns: -// A uint8_t containing the A/C mode. +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRTcl112Ac::getMode(void) { return remote_state[6] & 0xF; } -// Set the requested climate operation mode of the a/c unit. -// Note: Fan/Ventilation mode sets the fan speed to high. -// Unknown values default to Auto. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +/// @note Fan/Ventilation mode sets the fan speed to high. +/// Unknown values default to Auto. void IRTcl112Ac::setMode(const uint8_t mode) { // If we get an unexpected mode, default to AUTO. switch (mode) { @@ -134,6 +154,9 @@ void IRTcl112Ac::setMode(const uint8_t mode) { } } +/// Set the temperature. +/// @param[in] celsius The temperature in degrees celsius. +/// @note The temperature resolution is 0.5 of a degree. void IRTcl112Ac::setTemp(const float celsius) { // Make sure we have desired temp in the correct range. float safecelsius = std::max(celsius, kTcl112AcTempMin); @@ -146,6 +169,9 @@ void IRTcl112Ac::setTemp(const float celsius) { (uint8_t)kTcl112AcTempMax - nrHalfDegrees / 2); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. +/// @note The temperature resolution is 0.5 of a degree. float IRTcl112Ac::getTemp(void) { float result = kTcl112AcTempMax - GETBITS8(remote_state[7], kLowNibble, kNibbleSize); @@ -153,8 +179,9 @@ float IRTcl112Ac::getTemp(void) { return result; } -// Set the speed of the fan. -// Unknown speeds will default to Auto. +/// Set the speed of the fan. +/// @param[in] speed The desired setting. +/// @note Unknown speeds will default to Auto. void IRTcl112Ac::setFan(const uint8_t speed) { switch (speed) { case kTcl112AcFanAuto: @@ -168,63 +195,75 @@ void IRTcl112Ac::setFan(const uint8_t speed) { } } -// Return the currect fan speed. +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRTcl112Ac::getFan(void) { return GETBITS8(remote_state[8], kLowNibble, kTcl112AcFanSize); } -// Control economy mode. +/// Set the economy setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTcl112Ac::setEcono(const bool on) { setBit(&remote_state[5], kTcl112AcBitEconoOffset, on); } -// Return the economy state of the A/C. +/// Get the economy setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTcl112Ac::getEcono(void) { return GETBIT8(remote_state[5], kTcl112AcBitEconoOffset); } -// Control Health mode. +/// Set the Health (Filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTcl112Ac::setHealth(const bool on) { setBit(&remote_state[6], kTcl112AcBitHealthOffset, on); } -// Return the Health mode state of the A/C. +/// Get the Health (Filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTcl112Ac::getHealth(void) { return GETBIT8(remote_state[6], kTcl112AcBitHealthOffset); } -// Control Light/Display mode. +/// Set the Light (LED/Display) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTcl112Ac::setLight(const bool on) { setBit(&remote_state[5], kTcl112AcBitLightOffset, !on); // Cleared when on. } -// Return the Light/Display mode state of the A/C. +/// Get the Light (LED/Display) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTcl112Ac::getLight(void) { return !GETBIT8(remote_state[5], kTcl112AcBitLightOffset); } -// Control Horizontal Swing. +/// Set the horizontal swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTcl112Ac::setSwingHorizontal(const bool on) { setBit(&remote_state[12], kTcl112AcBitSwingHOffset, on); } -// Return the Horizontal Swing state of the A/C. +/// Get the horizontal swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTcl112Ac::getSwingHorizontal(void) { return GETBIT8(remote_state[12], kTcl112AcBitSwingHOffset); } -// Control Vertical Swing. +/// Set the vertical swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTcl112Ac::setSwingVertical(const bool on) { setBits(&remote_state[8], kTcl112AcSwingVOffset, kTcl112AcSwingVSize, on ? kTcl112AcSwingVOn : kTcl112AcSwingVOff); } -// Return the Vertical Swing state of the A/C. +/// Get the vertical swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTcl112Ac::getSwingVertical(void) { return GETBITS8(remote_state[8], kTcl112AcSwingVOffset, kTcl112AcSwingVSize); } -// Control the Turbo setting. +/// Set the Turbo setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTcl112Ac::setTurbo(const bool on) { setBit(&remote_state[6], kTcl112AcBitTurboOffset, on); if (on) { @@ -233,12 +272,15 @@ void IRTcl112Ac::setTurbo(const bool on) { } } -// Return the Turbo setting state of the A/C. +/// Get the Turbo setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTcl112Ac::getTurbo(void) { return GETBIT8(remote_state[6], kTcl112AcBitTurboOffset); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRTcl112Ac::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kTcl112AcCool; @@ -249,7 +291,9 @@ uint8_t IRTcl112Ac::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRTcl112Ac::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -261,7 +305,9 @@ uint8_t IRTcl112Ac::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRTcl112Ac::toCommonMode(const uint8_t mode) { switch (mode) { case kTcl112AcCool: return stdAc::opmode_t::kCool; @@ -272,7 +318,9 @@ stdAc::opmode_t IRTcl112Ac::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRTcl112Ac::toCommonFanSpeed(const uint8_t spd) { switch (spd) { case kTcl112AcFanHigh: return stdAc::fanspeed_t::kMax; @@ -282,7 +330,8 @@ stdAc::fanspeed_t IRTcl112Ac::toCommonFanSpeed(const uint8_t spd) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRTcl112Ac::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::TCL112AC; @@ -309,7 +358,8 @@ stdAc::state_t IRTcl112Ac::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRTcl112Ac::toString(void) { String result = ""; result.reserve(140); // Reserve some heap for the string to reduce fragging. @@ -332,7 +382,8 @@ String IRTcl112Ac::toString(void) { } #if DECODE_TCL112AC -// NOTE: There is no `decodedecodeTcl112Ac()`. -// It's the same as `decodeMitsubishi112()`. A shared routine is used. -// You can find it in: ir_Mitsubishi.cpp +/// @file +/// @note There is no `decodedecodeTcl112Ac()`. +/// It's the same as `decodeMitsubishi112()`. A shared routine is used. +/// You can find it in: ir_Mitsubishi.cpp #endif // DECODE_TCL112AC diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Tcl.h b/lib/IRremoteESP8266-2.7.8/src/ir_Tcl.h similarity index 84% rename from lib/IRremoteESP8266-2.7.7/src/ir_Tcl.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Tcl.h index 3eef6838a..940b68113 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Tcl.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Tcl.h @@ -1,5 +1,8 @@ // Copyright 2019 David Conran +/// @file +/// @brief Support for TCL protocols. + // Supports: // Brand: Leberg, Model: LBS-TOR07 A/C @@ -55,17 +58,22 @@ const uint8_t kTcl112AcSwingVOn = 0b111; const uint8_t kTcl112AcSwingVOff = 0b000; const uint8_t kTcl112AcBitTurboOffset = 6; - +// Classes +/// Class for handling detailed TCL A/C messages. class IRTcl112Ac { public: explicit IRTcl112Ac(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - #if SEND_TCL112AC void send(const uint16_t repeat = kTcl112AcDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_TCL void begin(void); + void stateReset(void); uint8_t* getRaw(void); void setRaw(const uint8_t new_code[], const uint16_t length = kTcl112AcStateLength); @@ -104,12 +112,13 @@ class IRTcl112Ac { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kTcl112AcStateLength]; - void stateReset(void); + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kTcl112AcStateLength]; ///< The State in IR code form. void checksum(const uint16_t length = kTcl112AcStateLength); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Teco.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Teco.cpp similarity index 65% rename from lib/IRremoteESP8266-2.7.7/src/ir_Teco.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Teco.cpp index 8e33e04ec..733be6247 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Teco.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Teco.cpp @@ -1,7 +1,7 @@ // Copyright 2019 Fabien Valthier -/* -Node MCU/ESP8266 Sketch to emulate Teco -*/ + +/// @file +/// @brief Support for Teco protocols. #include "ir_Teco.h" #include @@ -31,12 +31,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_TECO -// Send a Teco A/C message. -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kTecoBits. -// repeat: Nr. of additional times the message is to be sent. +/// Send a Teco A/C message. +/// Status: Beta / Probably working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendTeco(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { sendGeneric(kTecoHdrMark, kTecoHdrSpace, kTecoBitMark, kTecoOneSpace, @@ -45,40 +44,59 @@ void IRsend::sendTeco(const uint64_t data, const uint16_t nbits, } #endif // SEND_TECO -// Class for decoding and constructing Teco AC messages. +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRTecoAc::IRTecoAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Set up hardware to be able to send a message. void IRTecoAc::begin(void) { _irsend.begin(); } #if SEND_TECO +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRTecoAc::send(const uint16_t repeat) { _irsend.sendTeco(remote_state, kTecoBits, repeat); } #endif // SEND_TECO +/// Reset the internal state of the emulation. +/// @note Mode:auto, Power:Off, fan:auto, temp:16, swing:off, sleep:off void IRTecoAc::stateReset(void) { - // Mode:auto, Power:Off, fan:auto, temp:16, swing:off, sleep:off remote_state = kTecoReset; } +/// Get a copy of the internal state/code for this protocol. +/// @return A code for this protocol based on the current internal state. uint64_t IRTecoAc::getRaw(void) { return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. void IRTecoAc::setRaw(const uint64_t new_code) { remote_state = new_code; } +/// Set the requested power state of the A/C to on. void IRTecoAc::on(void) { setPower(true); } +/// Set the requested power state of the A/C to off. void IRTecoAc::off(void) { setPower(false); } +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTecoAc::setPower(const bool on) { setBit(&remote_state, kTecoPowerOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRTecoAc::getPower(void) { return GETBIT64(remote_state, kTecoPowerOffset); } +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRTecoAc::setTemp(const uint8_t temp) { uint8_t newtemp = temp; newtemp = std::min(newtemp, kTecoMaxTemp); @@ -87,11 +105,14 @@ void IRTecoAc::setTemp(const uint8_t temp) { newtemp - kTecoMinTemp); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRTecoAc::getTemp(void) { return GETBITS64(remote_state, kTecoTempOffset, kTecoTempSize) + kTecoMinTemp; } -// Set the speed of the fan +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRTecoAc::setFan(const uint8_t speed) { uint8_t newspeed = speed; switch (speed) { @@ -104,10 +125,14 @@ void IRTecoAc::setFan(const uint8_t speed) { setBits(&remote_state, kTecoFanOffset, kTecoFanSize, newspeed); } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRTecoAc::getFan(void) { return GETBITS64(remote_state, kTecoFanOffset, kTecoFanSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRTecoAc::setMode(const uint8_t mode) { uint8_t newmode = mode; switch (mode) { @@ -121,54 +146,80 @@ void IRTecoAc::setMode(const uint8_t mode) { setBits(&remote_state, kTecoModeOffset, kModeBitsSize, newmode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRTecoAc::getMode(void) { return GETBITS64(remote_state, kTecoModeOffset, kModeBitsSize); } +/// Set the (vertical) swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTecoAc::setSwing(const bool on) { setBit(&remote_state, kTecoSwingOffset, on); } +/// Get the (vertical) swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTecoAc::getSwing(void) { return GETBIT64(remote_state, kTecoSwingOffset); } +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTecoAc::setSleep(const bool on) { setBit(&remote_state, kTecoSleepOffset, on); } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTecoAc::getSleep(void) { return GETBIT64(remote_state, kTecoSleepOffset); } +/// Set the Light (LED/Display) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTecoAc::setLight(const bool on) { setBit(&remote_state, kTecoLightOffset, on); } +/// Get the Light (LED/Display) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTecoAc::getLight(void) { return GETBIT64(remote_state, kTecoLightOffset); } +/// Set the Humid setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTecoAc::setHumid(const bool on) { setBit(&remote_state, kTecoHumidOffset, on); } +/// Get the Humid setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTecoAc::getHumid(void) { return GETBIT64(remote_state, kTecoHumidOffset); } +/// Set the Save setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTecoAc::setSave(const bool on) { setBit(&remote_state, kTecoSaveOffset, on); } +/// Get the Save setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTecoAc::getSave(void) { return GETBIT64(remote_state, kTecoSaveOffset); } +/// Is the timer function enabled? +/// @return true, the setting is on. false, the setting is off. bool IRTecoAc::getTimerEnabled(void) { return GETBIT64(remote_state, kTecoTimerOnOffset); } +/// Get the timer time for when the A/C unit will switch power state. +/// @return The number of minutes left on the timer. `0` means off. uint16_t IRTecoAc::getTimer(void) { uint16_t mins = 0; if (getTimerEnabled()) { @@ -181,11 +232,10 @@ uint16_t IRTecoAc::getTimer(void) { return mins; } -// Set the timer for when the A/C unit will switch power state. -// Args: -// nr_mins: Number of minutes before power state change. -// `0` will clear the timer. Max is 24 hrs. -// Time is stored internaly in increments of 30 mins. +/// Set the timer for when the A/C unit will switch power state. +/// @param[in] nr_mins Number of minutes before power state change. +/// `0` will clear the timer. Max is 24 hrs. +/// @note Time is stored internaly in increments of 30 mins. void IRTecoAc::setTimer(const uint16_t nr_mins) { uint16_t mins = std::min(nr_mins, (uint16_t)(24 * 60)); // Limit to 24 hrs. uint8_t hours = mins / 60; @@ -200,7 +250,9 @@ void IRTecoAc::setTimer(const uint16_t nr_mins) { hours / 10); } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRTecoAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kTecoCool; @@ -211,7 +263,9 @@ uint8_t IRTecoAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRTecoAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -223,7 +277,9 @@ uint8_t IRTecoAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRTecoAc::toCommonMode(const uint8_t mode) { switch (mode) { case kTecoCool: return stdAc::opmode_t::kCool; @@ -234,7 +290,9 @@ stdAc::opmode_t IRTecoAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRTecoAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kTecoFanHigh: return stdAc::fanspeed_t::kMax; @@ -244,7 +302,8 @@ stdAc::fanspeed_t IRTecoAc::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRTecoAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::TECO; @@ -270,7 +329,8 @@ stdAc::state_t IRTecoAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRTecoAc::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -294,18 +354,14 @@ String IRTecoAc::toString(void) { } #if DECODE_TECO -// Decode the supplied Teco message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kTecoBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Tested. +/// Decode the supplied Teco message. +/// Status: STABLE / Tested. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeTeco(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { if (strict && nbits != kTecoBits) return false; // Not what is expected diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Teco.h b/lib/IRremoteESP8266-2.7.8/src/ir_Teco.h similarity index 85% rename from lib/IRremoteESP8266-2.7.7/src/ir_Teco.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Teco.h index 8bee1b72b..770890caa 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Teco.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Teco.h @@ -1,5 +1,12 @@ // Copyright 2019 Fabien Valthier +/// @file +/// @brief Support for Teco protocols. + +// Supports: +// Brand: Alaska, Model: SAC9010QC A/C +// Brand: Alaska, Model: SAC9010QC remote + #ifndef IR_TECO_H_ #define IR_TECO_H_ @@ -12,10 +19,6 @@ #include "IRsend_test.h" #endif -// Supports: -// Brand: Alaska, Model: SAC9010QC A/C -// Brand: Alaska, Model: SAC9010QC remote - // Constants. const uint8_t kTecoAuto = 0; const uint8_t kTecoCool = 1; @@ -100,14 +103,19 @@ const uint64_t kTecoReset = 0b01001010000000000000010000000000000; */ // Classes +/// Class for handling detailed Teco A/C messages. class IRTecoAc { public: explicit IRTecoAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_TECO void send(const uint16_t repeat = kTecoDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_TECO void begin(void); void on(void); @@ -155,12 +163,13 @@ class IRTecoAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint64_t remote_state; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint64_t remote_state; ///< The state of the IR remote in IR code form. bool getTimerEnabled(void); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Toshiba.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Toshiba.cpp similarity index 68% rename from lib/IRremoteESP8266-2.7.7/src/ir_Toshiba.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Toshiba.cpp index 3113e1b09..c28b700f8 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Toshiba.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Toshiba.cpp @@ -1,7 +1,9 @@ // Copyright 2017 David Conran -// Toshiba A/C support added by David Conran - +/// @file +/// @brief Support for Toshiba protocols. +/// @see https://github.com/r45635/HVAC-IR-Control +/// @see https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L77 #include "ir_Toshiba.h" #include @@ -14,18 +16,9 @@ #include "IRtext.h" #include "IRutils.h" -// -// Equipment it seems compatible with: -// * Toshiba RAS-B13N3KV2 / Akita EVO II -// * Toshiba RAS-B13N3KVP-E, RAS 18SKP-ES -// * Toshiba WH-TA04NE, WC-L03SE -// * - // Constants // Toshiba A/C -// Ref: -// https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L77 const uint16_t kToshibaAcHdrMark = 4400; const uint16_t kToshibaAcHdrSpace = 4300; const uint16_t kToshibaAcBitMark = 543; @@ -43,16 +36,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_TOSHIBA_AC -// Send a Toshiba A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kToshibaACStateLength) -// repeat: Nr. of times the message is to be repeated. -// (Default = kToshibaACMinRepeat). -// -// Status: StABLE / Working. -// +/// Send a Toshiba A/C message. +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendToshibaAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kToshibaACStateLength) @@ -64,56 +52,52 @@ void IRsend::sendToshibaAC(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_TOSHIBA_AC -// Code to emulate Toshiba A/C IR remote control unit. -// Inspired and derived from the work done at: -// https://github.com/r45635/HVAC-IR-Control -// -// Status: STABLE / Working. -// -// Initialise the object. +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRToshibaAC::IRToshibaAC(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } -// Reset the state of the remote to a known good state/sequence. +/// Reset the state of the remote to a known good state/sequence. +/// @see https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L103 void IRToshibaAC::stateReset(void) { - // The state of the IR remote in IR code form. - // Known good state obtained from: - // https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L103 static const uint8_t kReset[kToshibaACStateLength] = { 0xF2, 0x0D, 0x03, 0xFC, 0x01}; memcpy(remote_state, kReset, kToshibaACStateLength); mode_state = getMode(true); } -// Configure the pin for output. +/// Set up hardware to be able to send a message. void IRToshibaAC::begin(void) { _irsend.begin(); } #if SEND_TOSHIBA_AC -// Send the current desired state to the IR LED. +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRToshibaAC::send(const uint16_t repeat) { _irsend.sendToshibaAC(getRaw(), kToshibaACStateLength, repeat); } #endif // SEND_TOSHIBA_AC -// Return a pointer to the internal state date of the remote. +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t* IRToshibaAC::getRaw(void) { this->checksum(); return remote_state; } -// Override the internal state with the new state. +/// Set the internal state from a valid code for this protocol. +/// @param[in] newState A valid code for this protocol. void IRToshibaAC::setRaw(const uint8_t newState[]) { memcpy(remote_state, newState, kToshibaACStateLength); mode_state = this->getMode(true); } -// Calculate the checksum for a given array. -// Args: -// state: The array to calculate the checksum over. -// length: The size of the array. -// Returns: -// The 8 bit checksum value. +/// Calculate the checksum for a given state. +/// @param[in] state The array to calc the checksum of. +/// @param[in] length The length/size of the array. +/// @return The calculated checksum value. uint8_t IRToshibaAC::calcChecksum(const uint8_t state[], const uint16_t length) { uint8_t checksum = 0; @@ -125,31 +109,32 @@ uint8_t IRToshibaAC::calcChecksum(const uint8_t state[], return checksum; } -// Verify the checksum is valid for a given state. -// Args: -// state: The array to verify the checksum of. -// length: The size of the state. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRToshibaAC::validChecksum(const uint8_t state[], const uint16_t length) { return (length > 1 && state[length - 1] == IRToshibaAC::calcChecksum(state, length)); } -// Calculate & set the checksum for the current internal state of the remote. +/// Calculate & set the checksum for the current internal state of the remote. +/// @param[in] length The length/size of the internal array to checksum. + void IRToshibaAC::checksum(const uint16_t length) { // Stored the checksum value in the last byte. if (length > 1) remote_state[length - 1] = this->calcChecksum(remote_state, length); } -// Set the requested power state of the A/C to on. +/// Set the requested power state of the A/C to on. void IRToshibaAC::on(void) { setPower(true); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRToshibaAC::off(void) { setPower(false); } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRToshibaAC::setPower(const bool on) { setBit(&remote_state[6], kToshibaAcPowerOffset, !on); // Cleared when on. if (on) @@ -159,12 +144,15 @@ void IRToshibaAC::setPower(const bool on) { kToshibaAcHeat); } -// Return the requested power state of the A/C. + +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRToshibaAC::getPower(void) { return !GETBIT8(remote_state[6], kToshibaAcPowerOffset); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] degrees The temperature in degrees celsius. void IRToshibaAC::setTemp(const uint8_t degrees) { uint8_t temp = std::max((uint8_t)kToshibaAcMinTemp, degrees); temp = std::min((uint8_t)kToshibaAcMaxTemp, temp); @@ -172,14 +160,15 @@ void IRToshibaAC::setTemp(const uint8_t degrees) { temp - kToshibaAcMinTemp); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRToshibaAC::getTemp(void) { return GETBITS8(remote_state[5], kToshibaAcTempOffset, kToshibaAcTempSize) + kToshibaAcMinTemp; } -// Set the speed of the fan, 0-5. -// 0 is auto, 1-5 is the speed, 5 is Max. +/// Set the speed of the fan. +/// @param[in] speed The desired setting (0 is Auto, 1-5 is the speed, 5 is Max) void IRToshibaAC::setFan(const uint8_t speed) { uint8_t fan = speed; // Bounds check @@ -189,7 +178,8 @@ void IRToshibaAC::setFan(const uint8_t speed) { setBits(&remote_state[6], kToshibaAcFanOffset, kToshibaAcFanSize, fan); } -// Return the requested state of the unit's fan. +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRToshibaAC::getFan(void) { uint8_t fan = GETBITS8(remote_state[6], kToshibaAcFanOffset, kToshibaAcFanSize); @@ -197,11 +187,9 @@ uint8_t IRToshibaAC::getFan(void) { return --fan; } -// Get the requested climate operation mode of the a/c unit. -// Args: -// useRaw: Indicate to get the mode from the state array. (Default: false) -// Returns: -// A uint8_t containing the A/C mode. +/// Get the operating mode setting of the A/C. +/// @param[in] useRaw Indicate to get the mode from the internal state array. +/// @return The current operating mode setting. uint8_t IRToshibaAC::getMode(const bool useRaw) { if (useRaw) return GETBITS8(remote_state[6], kToshibaAcModeOffset, kToshibaAcModeSize); @@ -209,9 +197,10 @@ uint8_t IRToshibaAC::getMode(const bool useRaw) { return mode_state; } -// Set the requested climate operation mode of the a/c unit. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +/// @note If we get an unexpected mode, default to AUTO. void IRToshibaAC::setMode(const uint8_t mode) { - // If we get an unexpected mode, default to AUTO. switch (mode) { case kToshibaAcAuto: case kToshibaAcCool: @@ -227,7 +216,9 @@ void IRToshibaAC::setMode(const uint8_t mode) { } } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRToshibaAC::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kToshibaAcCool; @@ -238,7 +229,9 @@ uint8_t IRToshibaAC::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRToshibaAC::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: return kToshibaAcFanMax - 4; @@ -250,7 +243,9 @@ uint8_t IRToshibaAC::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRToshibaAC::toCommonMode(const uint8_t mode) { switch (mode) { case kToshibaAcCool: return stdAc::opmode_t::kCool; @@ -260,7 +255,9 @@ stdAc::opmode_t IRToshibaAC::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRToshibaAC::toCommonFanSpeed(const uint8_t spd) { switch (spd) { case kToshibaAcFanMax: return stdAc::fanspeed_t::kMax; @@ -272,7 +269,8 @@ stdAc::fanspeed_t IRToshibaAC::toCommonFanSpeed(const uint8_t spd) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRToshibaAC::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::TOSHIBA_AC; @@ -297,7 +295,8 @@ stdAc::state_t IRToshibaAC::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRToshibaAC::toString(void) { String result = ""; result.reserve(40); @@ -312,21 +311,14 @@ String IRToshibaAC::toString(void) { } #if DECODE_TOSHIBA_AC -// Decode a Toshiba AC IR message if possible. -// Places successful decode information in the results pointer. -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kToshibaACBits. -// strict: Flag to indicate if we strictly adhere to the specification. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. -// -// Ref: -// +/// Decode the supplied Toshiba A/C message. +/// Status: STABLE / Working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeToshibaAC(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { // Compliance diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Toshiba.h b/lib/IRremoteESP8266-2.7.8/src/ir_Toshiba.h similarity index 78% rename from lib/IRremoteESP8266-2.7.7/src/ir_Toshiba.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Toshiba.h index 22fbd7240..0e5022ae7 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Toshiba.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Toshiba.h @@ -1,6 +1,9 @@ // Copyright 2017 David Conran -// Toshiba A/C support added by David Conran +/// @file +/// @brief Support for Toshiba protocols. +/// @see https://github.com/r45635/HVAC-IR-Control +/// @see https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L77 // Supports: // Brand: Toshiba, Model: RAS-B13N3KV2 @@ -54,14 +57,19 @@ const uint8_t kToshibaAcMaxTemp = 30; // 30C #define TOSHIBA_AC_MIN_TEMP kToshibaAcMinTemp #define TOSHIBA_AC_MAX_TEMP kToshibaAcMaxTemp +// Classes +/// Class for handling detailed Toshiba A/C messages. class IRToshibaAC { public: explicit IRToshibaAC(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_TOSHIBA_AC void send(const uint16_t repeat = kToshibaACMinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_TOSHIBA_AC void begin(void); @@ -88,11 +96,13 @@ class IRToshibaAC { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kToshibaACStateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kToshibaACStateLength]; ///< The state in IR code form. void checksum(const uint16_t length = kToshibaACStateLength); static uint8_t calcChecksum(const uint8_t state[], const uint16_t length = kToshibaACStateLength); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Trotec.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Trotec.cpp similarity index 65% rename from lib/IRremoteESP8266-2.7.7/src/ir_Trotec.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Trotec.cpp index d8b87e034..c2e4d5c00 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Trotec.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Trotec.cpp @@ -1,6 +1,11 @@ // Copyright 2017 stufisher // Copyright 2019 crankyoldgit +/// @file +/// @brief Support for Trotec protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/pull/279 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1176 + #include "ir_Trotec.h" #include #include @@ -30,7 +35,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_TROTEC - +/// Send a Trotec message. +/// Status: Beta / Probably Working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendTrotec(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kTrotecStateLength) return; @@ -49,33 +58,49 @@ void IRsend::sendTrotec(const unsigned char data[], const uint16_t nbytes, } #endif // SEND_TROTEC +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRTrotecESP::IRTrotecESP(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Set up hardware to be able to send a message. void IRTrotecESP::begin(void) { _irsend.begin(); } #if SEND_TROTEC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. void IRTrotecESP::send(const uint16_t repeat) { - this->checksum(); - _irsend.sendTrotec(remote_state, kTrotecStateLength, repeat); + _irsend.sendTrotec(getRaw(), kTrotecStateLength, repeat); } #endif // SEND_TROTEC +/// Calculate the checksum for a given state. +/// @param[in] state The array to calc the checksum of. +/// @param[in] length The length/size of the array. +/// @return The calculated checksum value. uint8_t IRTrotecESP::calcChecksum(const uint8_t state[], const uint16_t length) { return sumBytes(state + 2, length - 3); } +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRTrotecESP::validChecksum(const uint8_t state[], const uint16_t length) { return state[length - 1] == calcChecksum(state, length); } +/// Calculate & set the checksum for the current internal state of the remote. void IRTrotecESP::checksum(void) { remote_state[kTrotecStateLength - 1] = sumBytes(remote_state + 2, kTrotecStateLength - 3); } +/// Reset the state of the remote to a known good state/sequence. void IRTrotecESP::stateReset(void) { for (uint8_t i = 2; i < kTrotecStateLength; i++) remote_state[i] = 0x0; @@ -88,41 +113,65 @@ void IRTrotecESP::stateReset(void) { this->setMode(kTrotecAuto); } +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. uint8_t* IRTrotecESP::getRaw(void) { this->checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] state A valid code for this protocol. void IRTrotecESP::setRaw(const uint8_t state[]) { memcpy(remote_state, state, kTrotecStateLength); } +/// Set the requested power state of the A/C to on. +void IRTrotecESP::on(void) { this->setPower(true); } + +/// Set the requested power state of the A/C to off. +void IRTrotecESP::off(void) { this->setPower(false); } + +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTrotecESP::setPower(const bool on) { setBit(&remote_state[2], kTrotecPowerBitOffset, on); } +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRTrotecESP::getPower(void) { return GETBIT8(remote_state[2], kTrotecPowerBitOffset); } +/// Set the speed of the fan. +/// @param[in] fan The desired setting. void IRTrotecESP::setSpeed(const uint8_t fan) { uint8_t speed = std::min(fan, kTrotecFanHigh); setBits(&remote_state[2], kTrotecFanOffset, kTrotecFanSize, speed); } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRTrotecESP::getSpeed(void) { return GETBITS8(remote_state[2], kTrotecFanOffset, kTrotecFanSize); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRTrotecESP::setMode(const uint8_t mode) { setBits(&remote_state[2], kTrotecModeOffset, kTrotecModeSize, (mode > kTrotecFan) ? kTrotecAuto : mode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRTrotecESP::getMode(void) { return GETBITS8(remote_state[2], kTrotecModeOffset, kTrotecModeSize); } +/// Set the temperature. +/// @param[in] celsius The temperature in degrees celsius. void IRTrotecESP::setTemp(const uint8_t celsius) { uint8_t temp = std::max(celsius, kTrotecMinTemp); temp = std::min(temp, kTrotecMaxTemp); @@ -130,27 +179,39 @@ void IRTrotecESP::setTemp(const uint8_t celsius) { temp - kTrotecMinTemp); } +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRTrotecESP::getTemp(void) { return GETBITS8(remote_state[3], kTrotecTempOffset, kTrotecTempSize) + kTrotecMinTemp; } +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRTrotecESP::setSleep(const bool on) { setBit(&remote_state[3], kTrotecSleepBitOffset, on); } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRTrotecESP::getSleep(void) { return GETBIT8(remote_state[3], kTrotecSleepBitOffset); } +/// Set the timer time in nr. of Hours. +/// @param[in] timer Nr. of Hours. Max is `kTrotecMaxTimer` void IRTrotecESP::setTimer(const uint8_t timer) { setBit(&remote_state[5], kTrotecTimerBitOffset, timer); remote_state[6] = (timer > kTrotecMaxTimer) ? kTrotecMaxTimer : timer; } +/// Get the timer time in nr. of Hours. +/// @return Nr. of Hours. uint8_t IRTrotecESP::getTimer(void) { return remote_state[6]; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRTrotecESP::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kTrotecCool; @@ -161,7 +222,9 @@ uint8_t IRTrotecESP::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRTrotecESP::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -173,8 +236,9 @@ uint8_t IRTrotecESP::convertFan(const stdAc::fanspeed_t speed) { } } - -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRTrotecESP::toCommonMode(const uint8_t mode) { switch (mode) { case kTrotecCool: return stdAc::opmode_t::kCool; @@ -184,7 +248,9 @@ stdAc::opmode_t IRTrotecESP::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRTrotecESP::toCommonFanSpeed(const uint8_t spd) { switch (spd) { case kTrotecFanHigh: return stdAc::fanspeed_t::kMax; @@ -194,7 +260,8 @@ stdAc::fanspeed_t IRTrotecESP::toCommonFanSpeed(const uint8_t spd) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRTrotecESP::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::TROTEC; @@ -219,7 +286,8 @@ stdAc::state_t IRTrotecESP::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRTrotecESP::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -234,24 +302,18 @@ String IRTrotecESP::toString(void) { } #if DECODE_TROTEC -// Decode the supplied Trotec message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kTrotecBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Works. Untested on real devices. -// -// Ref: +/// Decode the supplied Trotec message. +/// Status: STABLE / Works. Untested on real devices. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeTrotec(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= 2 * nbits + kHeader + 2 * kFooter - 1 + offset) - return false; // Can't possibly be a valid Samsung A/C message. + return false; // Can't possibly be a valid Trotec A/C message. if (strict && nbits != kTrotecBits) return false; uint16_t used; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Trotec.h b/lib/IRremoteESP8266-2.7.8/src/ir_Trotec.h similarity index 75% rename from lib/IRremoteESP8266-2.7.7/src/ir_Trotec.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Trotec.h index cc7f0b2fd..951bdf7b2 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Trotec.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Trotec.h @@ -1,6 +1,15 @@ // Copyright 2017 stufisher // Copyright 2019 crankyoldgit +/// @file +/// @brief Support for Trotec protocols. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/pull/279 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1176 + +// Supports: +// Brand: Trotec, Model: PAC 3200 A/C +// Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C + #ifndef IR_TROTEC_H_ #define IR_TROTEC_H_ @@ -62,17 +71,25 @@ const uint8_t kTrotecMaxTimer = 23; #define TROTEC_MAX_TEMP kTrotecMaxTemp #define TROTEC_MAX_TIMER kTrotecMaxTimer +// Class +/// Class for handling detailed Trotec A/C messages. class IRTrotecESP { public: explicit IRTrotecESP(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - #if SEND_TROTEC void send(const uint16_t repeat = kTrotecDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_TROTEC void begin(void); + void stateReset(void); + void on(void); + void off(void); void setPower(const bool state); bool getPower(void); @@ -104,14 +121,15 @@ class IRTrotecESP { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint8_t remote_state[kTrotecStateLength]; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kTrotecStateLength]; ///< Remote state in IR code form. static uint8_t calcChecksum(const uint8_t state[], const uint16_t length = kTrotecStateLength); - void stateReset(void); void checksum(void); }; diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Vestel.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Vestel.cpp similarity index 67% rename from lib/IRremoteESP8266-2.7.7/src/ir_Vestel.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Vestel.cpp index 4378497e0..0a67c4e59 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Vestel.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Vestel.cpp @@ -1,7 +1,9 @@ // Copyright 2018 Erdem U. Altinyurt // Copyright 2019 David Conran -// Vestel added by Erdem U. Altinyurt +/// @file +/// @brief Support for Vestel protocols. +/// Vestel added by Erdem U. Altinyurt #include "ir_Vestel.h" #include @@ -15,10 +17,6 @@ #include "IRutils.h" #include "ir_Haier.h" -// Equipment it seems compatible with: -// * Vestel AC Model BIOX CXP-9 (9K BTU) -// * - // Ref: // None. Totally reverse engineered. @@ -32,14 +30,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_VESTEL_AC -// Send a Vestel message -// -// Args: -// data: Contents of the message to be sent. -// nbits: Nr. of bits of data to be sent. Typically kVestelBits. -// -// Status: STABLE / Working. -// +/// Send a Vestel message +/// Status: STABLE / Working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendVestelAc(const uint64_t data, const uint16_t nbits, const uint16_t repeat) { if (nbits % 8 != 0) return; // nbits is required to be a multiple of 8. @@ -50,41 +45,45 @@ void IRsend::sendVestelAc(const uint64_t data, const uint16_t nbits, kVestelAcBitMark, 100000, // Footer + repeat gap data, nbits, 38, false, repeat, 50); } -#endif +#endif // SEND_VESTEL_AC -// Code to emulate Vestel A/C IR remote control unit. - -// Initialise the object. +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRVestelAc::IRVestelAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } -// Reset the state of the remote to a known good state/sequence. +/// Reset the state of the remote to a known good state/sequence. +/// @note Power On, Mode Auto, Fan Auto, Temp = 25C/77F void IRVestelAc::stateReset(void) { - // Power On, Mode Auto, Fan Auto, Temp = 25C/77F remote_state = kVestelAcStateDefault; remote_time_state = kVestelAcTimeStateDefault; use_time_state = false; } -// Configure the pin for output. -void IRVestelAc::begin(void) { - _irsend.begin(); -} +/// Set up hardware to be able to send a message. +void IRVestelAc::begin(void) { _irsend.begin(); } #if SEND_VESTEL_AC -// Send the current desired state to the IR LED. -void IRVestelAc::send(void) { _irsend.sendVestelAc(getRaw()); } +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +void IRVestelAc::send(const uint16_t repeat) { + _irsend.sendVestelAc(getRaw(), kVestelAcBits, repeat); +} #endif // SEND_VESTEL_AC -// Return the internal state date of the remote. +/// Get a copy of the internal state/code for this protocol. +/// @return A code for this protocol based on the current internal state. uint64_t IRVestelAc::getRaw(void) { this->checksum(); if (use_time_state) return remote_time_state; return remote_state; } -// Override the internal state with the new state. +/// Set the internal state from a valid code for this protocol. +/// @param[in] newState A valid code for this protocol. void IRVestelAc::setRaw(const uint8_t* newState) { uint64_t upState = 0; for (int i = 0; i < 7; i++) @@ -92,6 +91,8 @@ void IRVestelAc::setRaw(const uint8_t* newState) { this->setRaw(upState); } +/// Set the internal state from a valid code for this protocol. +/// @param[in] newState A valid code for this protocol. void IRVestelAc::setRaw(const uint64_t newState) { use_time_state = false; remote_state = newState; @@ -104,25 +105,28 @@ void IRVestelAc::setRaw(const uint64_t newState) { } } -// Set the requested power state of the A/C to on. +/// Set the requested power state of the A/C to on. void IRVestelAc::on(void) { setPower(true); } -// Set the requested power state of the A/C to off. +/// Set the requested power state of the A/C to off. void IRVestelAc::off(void) { setPower(false); } -// Set the requested power state of the A/C. +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setPower(const bool on) { setBits(&remote_state, kVestelAcPowerOffset, kVestelAcPowerSize, on ? 0b11 : 0b00); use_time_state = false; } -// Return the requested power state of the A/C. +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::getPower(void) { return GETBITS64(remote_state, kVestelAcPowerOffset, kVestelAcPowerSize); } -// Set the temperature in Celsius degrees. +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRVestelAc::setTemp(const uint8_t temp) { uint8_t new_temp = std::max(kVestelAcMinTempC, temp); new_temp = std::min(kVestelAcMaxTemp, new_temp); @@ -131,13 +135,15 @@ void IRVestelAc::setTemp(const uint8_t temp) { use_time_state = false; } -// Return the set temperature. +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRVestelAc::getTemp(void) { return GETBITS64(remote_state, kVestelAcTempOffset, kNibbleSize) + kVestelAcMinTempH; } -// Set the speed of the fan, +/// Set the speed of the fan. +/// @param[in] fan The desired setting. void IRVestelAc::setFan(const uint8_t fan) { switch (fan) { case kVestelAcFanLow: @@ -154,21 +160,22 @@ void IRVestelAc::setFan(const uint8_t fan) { use_time_state = false; } -// Return the requested state of the unit's fan. +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRVestelAc::getFan(void) { return GETBITS64(remote_state, kVestelAcFanOffset, kVestelAcFanSize); } -// Get the requested climate operation mode of the a/c unit. -// Returns: -// A uint8_t containing the A/C mode. +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRVestelAc::getMode(void) { return GETBITS64(remote_state, kVestelAcModeOffset, kModeBitsSize); } -// Set the requested climate operation mode of the a/c unit. +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +/// @note If we get an unexpected mode, default to AUTO. void IRVestelAc::setMode(const uint8_t mode) { - // If we get an unexpected mode, default to AUTO. switch (mode) { case kVestelAcAuto: case kVestelAcCool: @@ -183,7 +190,8 @@ void IRVestelAc::setMode(const uint8_t mode) { use_time_state = false; } -// Set Auto mode of AC. +/// Set Auto mode/level of the A/C. +/// @param[in] autoLevel The auto mode/level setting. void IRVestelAc::setAuto(const int8_t autoLevel) { if (autoLevel < -2 || autoLevel > 2) return; setMode(kVestelAcAuto); @@ -200,18 +208,23 @@ void IRVestelAc::setAuto(const int8_t autoLevel) { setTemp(17); } +/// Set the timer to be active on the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setTimerActive(const bool on) { setBit(&remote_time_state, kVestelAcTimerFlagOffset, on); use_time_state = true; } +/// Get if the Timer is active on the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::isTimerActive(void) { return GETBIT64(remote_time_state, kVestelAcTimerFlagOffset); } -// Set Timer option of AC. -// Valid time arguments are 0, 0.5, 1, 2, 3 and 5 hours (in min). 0 disables the -// timer. +/// Set Timer option of A/C. +/// @param[in] minutes Nr of minutes the timer is to be set for. +/// @note Valid arguments are 0, 0.5, 1, 2, 3 and 5 hours (in minutes). +/// 0 disables the timer. void IRVestelAc::setTimer(const uint16_t minutes) { // Clear both On & Off timers. remote_time_state &= ~((uint64_t)0xFFFF << kVestelAcOffTimeOffset); @@ -225,9 +238,12 @@ void IRVestelAc::setTimer(const uint16_t minutes) { use_time_state = true; } +/// Get the Timer time of A/C. +/// @return The number of minutes of time on the timer. uint16_t IRVestelAc::getTimer(void) { return getOffTimer(); } -// Set the AC's internal clock +/// Set the A/C's internal clock. +/// @param[in] minutes The time expressed in nr. of minutes past midnight. void IRVestelAc::setTime(const uint16_t minutes) { setBits(&remote_time_state, kVestelAcHourOffset, kVestelAcHourSize, minutes / 60); @@ -236,22 +252,30 @@ void IRVestelAc::setTime(const uint16_t minutes) { use_time_state = true; } +/// Get the A/C's internal clock's time. +/// @return The time expressed in nr. of minutes past midnight. uint16_t IRVestelAc::getTime(void) { return GETBITS64(remote_time_state, kVestelAcHourOffset, kVestelAcHourSize) * 60 + GETBITS64(remote_time_state, kVestelAcMinuteOffset, kVestelAcMinuteSize); } +/// Set the On timer to be active on the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setOnTimerActive(const bool on) { setBit(&remote_time_state, kVestelAcOnTimerFlagOffset, on); use_time_state = true; } +/// Get if the On Timer is active on the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::isOnTimerActive(void) { return GETBIT64(remote_time_state, kVestelAcOnTimerFlagOffset); } -// Set a given timer (via offset). Takes time in nr. of minutes. +/// Set a given timer time at a given bit offset. +/// @param[in] minutes Time in nr. of minutes. +/// @param[in] offset Nr. of bits offset from the start of the state. void IRVestelAc::_setTimer(const uint16_t minutes, const uint8_t offset) { setBits(&remote_time_state, offset, kVestelAcTimerSize, ((minutes / 60) << 3) + (minutes % 60) / 10); @@ -259,112 +283,129 @@ void IRVestelAc::_setTimer(const uint16_t minutes, const uint8_t offset) { use_time_state = true; } -// Get the number of mins a timer is set for. +/// Get the number of minutes a timer is set for. +/// @param[in] offset Nr. of bits offset from the start of the state. +/// @return The time expressed in nr. of minutes. uint16_t IRVestelAc::_getTimer(const uint8_t offset) { return GETBITS64(remote_time_state, offset + kVestelAcTimerMinsSize, kVestelAcTimerHourSize) * 60 + // Hrs GETBITS64(remote_time_state, offset, kVestelAcTimerMinsSize) * 10; // Min } -// Set AC's wake up time. Takes time in minute. + +/// Set the On timer time on the A/C. +/// @param[in] minutes Time in nr. of minutes. void IRVestelAc::setOnTimer(const uint16_t minutes) { setOnTimerActive(minutes); _setTimer(minutes, kVestelAcOnTimeOffset); } +/// Get the A/C's On Timer time. +/// @return The time expressed in nr. of minutes. uint16_t IRVestelAc::getOnTimer(void) { return _getTimer(kVestelAcOnTimeOffset); } +/// Set the Off timer to be active on the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setOffTimerActive(const bool on) { setBit(&remote_time_state, kVestelAcOffTimerFlagOffset, on); use_time_state = true; } +/// Get if the Off Timer is active on the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::isOffTimerActive(void) { return GETBIT64(remote_time_state, kVestelAcOffTimerFlagOffset); } -// Set AC's turn off time. Takes time in minute. +/// Set the Off timer time on the A/C. +/// @param[in] minutes Time in nr. of minutes. void IRVestelAc::setOffTimer(const uint16_t minutes) { setOffTimerActive(minutes); _setTimer(minutes, kVestelAcOffTimeOffset); } +/// Get the A/C's Off Timer time. +/// @return The time expressed in nr. of minutes. uint16_t IRVestelAc::getOffTimer(void) { return _getTimer(kVestelAcOffTimeOffset); } -// Set the Sleep state of the A/C. +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setSleep(const bool on) { setBits(&remote_state, kVestelAcTurboSleepOffset, kNibbleSize, on ? kVestelAcSleep : kVestelAcNormal); use_time_state = false; } -// Return the Sleep state of the A/C. +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::getSleep(void) { return GETBITS64(remote_state, kVestelAcTurboSleepOffset, kNibbleSize) == kVestelAcSleep; } -// Set the Turbo state of the A/C. +/// Set the Turbo setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setTurbo(const bool on) { setBits(&remote_state, kVestelAcTurboSleepOffset, kNibbleSize, on ? kVestelAcTurbo : kVestelAcNormal); use_time_state = false; } -// Return the Turbo state of the A/C. +/// Get the Turbo setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::getTurbo(void) { return GETBITS64(remote_state, kVestelAcTurboSleepOffset, kNibbleSize) == kVestelAcTurbo; } -// Set the Ion state of the A/C. +/// Set the Ion (Filter) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setIon(const bool on) { setBit(&remote_state, kVestelAcIonOffset, on); use_time_state = false; } -// Return the Ion state of the A/C. +/// Get the Ion (Filter) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::getIon(void) { return GETBIT64(remote_state, kVestelAcIonOffset); } -// Set the Swing Roaming state of the A/C. +/// Set the Swing Roaming setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRVestelAc::setSwing(const bool on) { setBits(&remote_state, kVestelAcSwingOffset, kNibbleSize, on ? kVestelAcSwing : 0xF); use_time_state = false; } -// Return the Swing Roaming state of the A/C. +/// Get the Swing Roaming setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRVestelAc::getSwing(void) { return GETBITS64(remote_state, kVestelAcSwingOffset, kNibbleSize) == kVestelAcSwing; } -// Calculate the checksum for a given array. -// Args: -// state: The state to calculate the checksum over. -// Returns: -// The 8 bit checksum value. +/// Calculate the checksum for a given state. +/// @param[in] state The state to calc the checksum of. +/// @return The calculated checksum value. uint8_t IRVestelAc::calcChecksum(const uint64_t state) { // Just counts the set bits +1 on stream and take inverse after mask return 0xFF - countBits(GETBITS64(state, 20, 44), 44, true, 2); } -// Verify the checksum is valid for a given state. -// Args: -// state: The state to verify the checksum of. -// Returns: -// A boolean. +/// Verify the checksum is valid for a given state. +/// @param[in] state The state to verify the checksum of. +/// @return true, if the state has a valid checksum. Otherwise, false. bool IRVestelAc::validChecksum(const uint64_t state) { return GETBITS64(state, kVestelAcChecksumOffset, kVestelAcChecksumSize) == IRVestelAc::calcChecksum(state); } -// Calculate & set the checksum for the current internal state of the remote. +/// Calculate & set the checksum for the current internal state of the remote. void IRVestelAc::checksum(void) { // Stored the checksum value in the last byte. setBits(&remote_state, kVestelAcChecksumOffset, kVestelAcChecksumSize, @@ -373,12 +414,16 @@ void IRVestelAc::checksum(void) { this->calcChecksum(remote_time_state)); } +/// Is the current state a time command? +/// @return true, if the state is a time message. Otherwise, false. bool IRVestelAc::isTimeCommand(void) { return !GETBITS64(remote_state, kVestelAcPowerOffset, kNibbleSize) || use_time_state; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRVestelAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kVestelAcCool; @@ -389,7 +434,9 @@ uint8_t IRVestelAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRVestelAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -401,7 +448,9 @@ uint8_t IRVestelAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRVestelAc::toCommonMode(const uint8_t mode) { switch (mode) { case kVestelAcCool: return stdAc::opmode_t::kCool; @@ -412,7 +461,9 @@ stdAc::opmode_t IRVestelAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRVestelAc::toCommonFanSpeed(const uint8_t spd) { switch (spd) { case kVestelAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -422,7 +473,8 @@ stdAc::fanspeed_t IRVestelAc::toCommonFanSpeed(const uint8_t spd) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRVestelAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::VESTEL_AC; @@ -448,7 +500,8 @@ stdAc::state_t IRVestelAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRVestelAc::toString(void) { String result = ""; result.reserve(100); // Reserve some heap for the string to reduce fragging. @@ -508,19 +561,14 @@ String IRVestelAc::toString(void) { } #if DECODE_VESTEL_AC -// Decode the supplied Vestel message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kVestelBits. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: Alpha / Needs testing against a real device. -// +/// Decode the supplied Vestel message. +/// Status: Alpha / Needs testing against a real device. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeVestelAc(decode_results* results, uint16_t offset, const uint16_t nbits, const bool strict) { if (nbits % 8 != 0) // nbits has to be a multiple of nr. of bits in a byte. diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Vestel.h b/lib/IRremoteESP8266-2.7.8/src/ir_Vestel.h similarity index 87% rename from lib/IRremoteESP8266-2.7.7/src/ir_Vestel.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Vestel.h index 5facdc278..b545a5a2f 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Vestel.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Vestel.h @@ -1,6 +1,10 @@ // Copyright 2018 Erdem U. Altinyurt // Copyright 2019 David Conran +/// @file +/// @brief Support for Vestel protocols. +/// Vestel added by Erdem U. Altinyurt + // Supports: // Brand: Vestel, Model: BIOX CXP-9 A/C (9K BTU) @@ -18,7 +22,6 @@ #include "IRsend_test.h" #endif -// Vestel added by Erdem U. Altinyurt // Structure of a Command message (56 bits) // Signature: 12 bits. e.g. 0x201 @@ -108,14 +111,19 @@ const uint8_t kVestelAcMinuteSize = 8; // Nr. of bits const uint64_t kVestelAcStateDefault = 0x0F00D9001FEF201ULL; const uint64_t kVestelAcTimeStateDefault = 0x201ULL; +// Classes +/// Class for handling detailed Vestel A/C messages. class IRVestelAc { public: explicit IRVestelAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_VESTEL_AC - void send(void); + void send(const uint16_t repeat = kNoRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_VESTEL_AC void begin(void); @@ -167,12 +175,14 @@ class IRVestelAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - uint64_t remote_state; - uint64_t remote_time_state; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint64_t remote_state; ///< The state of the IR remote in IR code form. + uint64_t remote_time_state; ///< The time state of the remote in code form. bool use_time_state; void checksum(void); void _setTimer(const uint16_t minutes, const uint8_t offset); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Whirlpool.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Whirlpool.cpp similarity index 71% rename from lib/IRremoteESP8266-2.7.7/src/ir_Whirlpool.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Whirlpool.cpp index 3ba781c4c..c04e32300 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Whirlpool.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Whirlpool.cpp @@ -1,18 +1,12 @@ // Copyright 2018 David Conran -// -// Code to emulate Whirlpool protocol compatible devices. -// Should be compatible with: -// * SPIS409L, SPIS412L, SPIW409L, SPIW412L, SPIW418L -// Remotes: -// * DG11J1-3A / DG11J1-04 -// * DG11J1-91 -// -// Note: Smart, iFeel, AroundU, PowerSave, & Silent modes are unsupported. -// Advanced 6thSense, Dehumidify, & Sleep modes are not supported. -// FYI: -// Dim == !Light -// Jet == Super == Turbo -// + +/// @file +/// @brief Support for Whirlpool protocols. +/// Decoding help from: \@redmusicxd, \@josh929800, \@raducostea +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/509 +/// @note Smart, iFeel, AroundU, PowerSave, & Silent modes are unsupported. +/// Advanced 6thSense, Dehumidify, & Sleep modes are not supported. +/// @note Dim == !Light, Jet == Super == Turbo #include "ir_Whirlpool.h" #include @@ -27,7 +21,6 @@ #include "IRutils.h" // Constants -// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/509 const uint16_t kWhirlpoolAcHdrMark = 8950; const uint16_t kWhirlpoolAcHdrSpace = 4484; const uint16_t kWhirlpoolAcBitMark = 597; @@ -49,17 +42,11 @@ using irutils::setBit; using irutils::setBits; #if SEND_WHIRLPOOL_AC -// Send a Whirlpool A/C message. -// -// Args: -// data: An array of bytes containing the IR command. -// nbytes: Nr. of bytes of data in the array. (>=kWhirlpoolAcStateLength) -// repeat: Nr. of times the message is to be repeated. (Default = 0). -// -// Status: BETA / Probably works. -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/509 +/// Send a Whirlpool A/C message. +/// Status: BETA / Probably works. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. void IRsend::sendWhirlpoolAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat) { if (nbytes < kWhirlpoolAcStateLength) @@ -89,13 +76,16 @@ void IRsend::sendWhirlpoolAC(const unsigned char data[], const uint16_t nbytes, #endif // SEND_WHIRLPOOL_AC // Class for emulating a Whirlpool A/C remote. -// Decoding help from: -// @redmusicxd, @josh929800, @raducostea +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? IRWhirlpoolAc::IRWhirlpoolAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { this->stateReset(); } +/// Reset the state of the remote to a known good state/sequence. void IRWhirlpoolAc::stateReset(void) { for (uint8_t i = 2; i < kWhirlpoolAcStateLength; i++) remote_state[i] = 0x0; remote_state[0] = 0x83; @@ -104,9 +94,15 @@ void IRWhirlpoolAc::stateReset(void) { this->_setTemp(kWhirlpoolAcAutoTemp); // Default to a sane value. } +/// Set up hardware to be able to send a message. void IRWhirlpoolAc::begin(void) { _irsend.begin(); } -bool IRWhirlpoolAc::validChecksum(uint8_t state[], const uint16_t length) { +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. +bool IRWhirlpoolAc::validChecksum(const uint8_t state[], + const uint16_t length) { if (length > kWhirlpoolAcChecksumByte1 && state[kWhirlpoolAcChecksumByte1] != xorBytes(state + 2, kWhirlpoolAcChecksumByte1 - 1 - 2)) { @@ -124,7 +120,8 @@ bool IRWhirlpoolAc::validChecksum(uint8_t state[], const uint16_t length) { return true; } -// Update the checksum for the internal state. +/// Calculate & set the checksum for the current internal state of the remote. +/// @param[in] length The length/size of the internal state array. void IRWhirlpoolAc::checksum(uint16_t length) { if (length >= kWhirlpoolAcChecksumByte1) remote_state[kWhirlpoolAcChecksumByte1] = @@ -136,21 +133,32 @@ void IRWhirlpoolAc::checksum(uint16_t length) { } #if SEND_WHIRLPOOL_AC +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +/// @param[in] calcchecksum Do we need to calculate the checksum?. void IRWhirlpoolAc::send(const uint16_t repeat, const bool calcchecksum) { if (calcchecksum) this->checksum(); _irsend.sendWhirlpoolAC(remote_state, kWhirlpoolAcStateLength, repeat); } #endif // SEND_WHIRLPOOL_AC +/// Get a copy of the internal state/code for this protocol. +/// @param[in] calcchecksum Do we need to calculate the checksum?. +/// @return A code for this protocol based on the current internal state. uint8_t *IRWhirlpoolAc::getRaw(const bool calcchecksum) { if (calcchecksum) this->checksum(); return remote_state; } +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +/// @param[in] length The length/size of the new_code array. void IRWhirlpoolAc::setRaw(const uint8_t new_code[], const uint16_t length) { memcpy(remote_state, new_code, std::min(length, kWhirlpoolAcStateLength)); } +/// Get/Detect the model of the A/C. +/// @return The enum of the compatible model. whirlpool_ac_remote_model_t IRWhirlpoolAc::getModel(void) { if (GETBIT8(remote_state[kWhirlpoolAcAltTempPos], kWhirlpoolAcAltTempOffset)) return DG11J191; @@ -158,6 +166,8 @@ whirlpool_ac_remote_model_t IRWhirlpoolAc::getModel(void) { return DG11J13A; } +/// Set the model of the A/C to emulate. +/// @param[in] model The enum of the appropriate model. void IRWhirlpoolAc::setModel(const whirlpool_ac_remote_model_t model) { switch (model) { case DG11J191: @@ -172,7 +182,8 @@ void IRWhirlpoolAc::setModel(const whirlpool_ac_remote_model_t model) { this->_setTemp(_desiredtemp); // Different models have different temp values. } -// Return the temp. offset in deg C for the current model. +/// Calculate the temp. offset in deg C for the current model. +/// @return The temperature offset. int8_t IRWhirlpoolAc::getTempOffset(void) { switch (this->getModel()) { case whirlpool_ac_remote_model_t::DG11J191: return -2; @@ -180,7 +191,10 @@ int8_t IRWhirlpoolAc::getTempOffset(void) { } } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. +/// @param[in] remember Do we save this temperature? +/// @note Internal use only. void IRWhirlpoolAc::_setTemp(const uint8_t temp, const bool remember) { if (remember) _desiredtemp = temp; int8_t offset = this->getTempOffset(); // Cache the min temp for the model. @@ -190,19 +204,24 @@ void IRWhirlpoolAc::_setTemp(const uint8_t temp, const bool remember) { newtemp - (kWhirlpoolAcMinTemp + offset)); } -// Set the temp. in deg C +/// Set the temperature. +/// @param[in] temp The temperature in degrees celsius. void IRWhirlpoolAc::setTemp(const uint8_t temp) { this->_setTemp(temp); this->setSuper(false); // Changing temp cancels Super/Jet mode. this->setCommand(kWhirlpoolAcCommandTemp); } -// Return the set temp. in deg C +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees celsius. uint8_t IRWhirlpoolAc::getTemp(void) { return GETBITS8(remote_state[kWhirlpoolAcTempPos], kHighNibble, kNibbleSize) + kWhirlpoolAcMinTemp + this->getTempOffset(); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +/// @note Internal use only. void IRWhirlpoolAc::_setMode(const uint8_t mode) { switch (mode) { case kWhirlpoolAcAuto: @@ -224,16 +243,22 @@ void IRWhirlpoolAc::_setMode(const uint8_t mode) { if (mode == kWhirlpoolAcAuto) this->setCommand(kWhirlpoolAcCommand6thSense); } +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. void IRWhirlpoolAc::setMode(const uint8_t mode) { this->setSuper(false); // Changing mode cancels Super/Jet mode. this->_setMode(mode); } +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. uint8_t IRWhirlpoolAc::getMode(void) { return GETBITS8(remote_state[kWhirlpoolAcModePos], kWhirlpoolAcModeOffset, kModeBitsSize); } +/// Set the speed of the fan. +/// @param[in] speed The desired setting. void IRWhirlpoolAc::setFan(const uint8_t speed) { switch (speed) { case kWhirlpoolAcFanAuto: @@ -248,32 +273,45 @@ void IRWhirlpoolAc::setFan(const uint8_t speed) { } } +/// Get the current fan speed setting. +/// @return The current fan speed/mode. uint8_t IRWhirlpoolAc::getFan(void) { return GETBITS8(remote_state[kWhirlpoolAcFanPos], kWhirlpoolAcFanOffset, kWhirlpoolAcFanSize); } +/// Set the (vertical) swing setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRWhirlpoolAc::setSwing(const bool on) { setBit(&remote_state[kWhirlpoolAcFanPos], kWhirlpoolAcSwing1Offset, on); setBit(&remote_state[kWhirlpoolAcOffTimerPos], kWhirlpoolAcSwing2Offset, on); setCommand(kWhirlpoolAcCommandSwing); } +/// Get the (vertical) swing setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRWhirlpoolAc::getSwing(void) { return GETBIT8(remote_state[kWhirlpoolAcFanPos], kWhirlpoolAcSwing1Offset) && GETBIT8(remote_state[kWhirlpoolAcOffTimerPos], kWhirlpoolAcSwing2Offset); } +/// Set the Light (Display/LED) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRWhirlpoolAc::setLight(const bool on) { // Cleared when on. setBit(&remote_state[kWhirlpoolAcClockPos], kWhirlpoolAcLightOffset, !on); } +/// Get the Light (Display/LED) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRWhirlpoolAc::getLight(void) { return !GETBIT8(remote_state[kWhirlpoolAcClockPos], kWhirlpoolAcLightOffset); } +/// Set the time in nr. of minutes past midnight. +/// @param[in] pos The byte offset to write to. +/// @param[in] minspastmidnight Nr. of minutes past midnight. void IRWhirlpoolAc::setTime(const uint16_t pos, const uint16_t minspastmidnight) { // Hours @@ -284,6 +322,9 @@ void IRWhirlpoolAc::setTime(const uint16_t pos, kWhirlpoolAcMinuteSize, minspastmidnight % 60); } +/// Get the time in nr. of minutes past midnight. +/// @param[in] pos The byte offset to read from. +/// @return The time in Nr. of minutes past midnight. uint16_t IRWhirlpoolAc::getTime(const uint16_t pos) { return GETBITS8(remote_state[pos], kWhirlpoolAcHourOffset, kWhirlpoolAcHourSize) * 60 + @@ -291,56 +332,84 @@ uint16_t IRWhirlpoolAc::getTime(const uint16_t pos) { kWhirlpoolAcMinuteSize); } +/// Is the timer enabled at the given byte offset? +/// @param[in] pos The byte offset to read from. +/// @return true, the Timer is on. false, the Timer is off. bool IRWhirlpoolAc::isTimerEnabled(const uint16_t pos) { return GETBIT8(remote_state[pos - 1], kWhirlpoolAcTimerEnableOffset); } +/// Enable the timer enabled at the given byte offset. +/// @param[in] pos The byte offset to write to. +/// @param[in] on true, the timer is enabled. false, the timer is disabled. void IRWhirlpoolAc::enableTimer(const uint16_t pos, const bool on) { setBit(&remote_state[pos - 1], kWhirlpoolAcTimerEnableOffset, on); } +/// Set the clock time in nr. of minutes past midnight. +/// @param[in] minspastmidnight The time expressed as minutes past midnight. void IRWhirlpoolAc::setClock(const uint16_t minspastmidnight) { this->setTime(kWhirlpoolAcClockPos, minspastmidnight); } +/// Get the clock time in nr. of minutes past midnight. +/// @return The time expressed as the Nr. of minutes past midnight. uint16_t IRWhirlpoolAc::getClock(void) { return this->getTime(kWhirlpoolAcClockPos); } +/// Set the Off Timer time. +/// @param[in] minspastmidnight The time expressed as minutes past midnight. void IRWhirlpoolAc::setOffTimer(const uint16_t minspastmidnight) { this->setTime(kWhirlpoolAcOffTimerPos, minspastmidnight); } +/// Get the Off Timer time.. +/// @return The time expressed as the Nr. of minutes past midnight. uint16_t IRWhirlpoolAc::getOffTimer(void) { return this->getTime(kWhirlpoolAcOffTimerPos); } +/// Is the Off timer enabled? +/// @return true, the Timer is enabled. false, the Timer is disabled. bool IRWhirlpoolAc::isOffTimerEnabled(void) { return this->isTimerEnabled(kWhirlpoolAcOffTimerPos); } +/// Enable the Off Timer. +/// @param[in] on true, the timer is enabled. false, the timer is disabled. void IRWhirlpoolAc::enableOffTimer(const bool on) { this->enableTimer(kWhirlpoolAcOffTimerPos, on); this->setCommand(kWhirlpoolAcCommandOffTimer); } +/// Set the On Timer time. +/// @param[in] minspastmidnight The time expressed as minutes past midnight. void IRWhirlpoolAc::setOnTimer(const uint16_t minspastmidnight) { this->setTime(kWhirlpoolAcOnTimerPos, minspastmidnight); } +/// Get the On Timer time.. +/// @return The time expressed as the Nr. of minutes past midnight. uint16_t IRWhirlpoolAc::getOnTimer(void) { return this->getTime(kWhirlpoolAcOnTimerPos); } +/// Is the On timer enabled? +/// @return true, the Timer is enabled. false, the Timer is disabled. bool IRWhirlpoolAc::isOnTimerEnabled(void) { return this->isTimerEnabled(kWhirlpoolAcOnTimerPos); } +/// Enable the On Timer. +/// @param[in] on true, the timer is enabled. false, the timer is disabled. void IRWhirlpoolAc::enableOnTimer(const bool on) { this->enableTimer(kWhirlpoolAcOnTimerPos, on); this->setCommand(kWhirlpoolAcCommandOnTimer); } +/// Change the power toggle setting. +/// @param[in] on true, the setting is on. false, the setting is off. void IRWhirlpoolAc::setPowerToggle(const bool on) { setBit(&remote_state[kWhirlpoolAcPowerTogglePos], kWhirlpoolAcPowerToggleOffset, on); @@ -348,15 +417,21 @@ void IRWhirlpoolAc::setPowerToggle(const bool on) { this->setCommand(kWhirlpoolAcCommandPower); } +/// Get the value of the current power toggle setting. +/// @return true, the setting is on. false, the setting is off. bool IRWhirlpoolAc::getPowerToggle(void) { return GETBIT8(remote_state[kWhirlpoolAcPowerTogglePos], kWhirlpoolAcPowerToggleOffset); } +/// Get the Command (Button) setting of the A/C. +/// @return The current Command (Button) of the A/C. uint8_t IRWhirlpoolAc::getCommand(void) { return remote_state[kWhirlpoolAcCommandPos]; } +/// Set the Sleep setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRWhirlpoolAc::setSleep(const bool on) { setBit(&remote_state[kWhirlpoolAcSleepPos], kWhirlpoolAcSleepOffset, on); @@ -364,11 +439,14 @@ void IRWhirlpoolAc::setSleep(const bool on) { this->setCommand(kWhirlpoolAcCommandSleep); } +/// Get the Sleep setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRWhirlpoolAc::getSleep(void) { return GETBIT8(remote_state[kWhirlpoolAcSleepPos], kWhirlpoolAcSleepOffset); } -// AKA Jet/Turbo mode. +/// Set the Super (Turbo/Jet) setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. void IRWhirlpoolAc::setSuper(const bool on) { if (on) { this->setFan(kWhirlpoolAcFanHigh); @@ -389,15 +467,21 @@ void IRWhirlpoolAc::setSuper(const bool on) { this->setCommand(kWhirlpoolAcCommandSuper); } +/// Get the Super (Turbo/Jet) setting of the A/C. +/// @return true, the setting is on. false, the setting is off. bool IRWhirlpoolAc::getSuper(void) { return remote_state[kWhirlpoolAcSuperPos] & kWhirlpoolAcSuperMask; } +/// Set the Command (Button) setting of the A/C. +/// @param[in] code The current Command (Button) of the A/C. void IRWhirlpoolAc::setCommand(const uint8_t code) { remote_state[kWhirlpoolAcCommandPos] = code; } -// Convert a standard A/C mode into its native mode. +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRWhirlpoolAc::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kWhirlpoolAcCool; @@ -408,7 +492,9 @@ uint8_t IRWhirlpoolAc::convertMode(const stdAc::opmode_t mode) { } } -// Convert a standard A/C Fan speed into its native fan speed. +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivilant of the enum. uint8_t IRWhirlpoolAc::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: @@ -420,7 +506,9 @@ uint8_t IRWhirlpoolAc::convertFan(const stdAc::fanspeed_t speed) { } } -// Convert a native mode to it's common equivalent. +/// Convert a native mode into its stdAc equivilant. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::opmode_t IRWhirlpoolAc::toCommonMode(const uint8_t mode) { switch (mode) { case kWhirlpoolAcCool: return stdAc::opmode_t::kCool; @@ -431,7 +519,9 @@ stdAc::opmode_t IRWhirlpoolAc::toCommonMode(const uint8_t mode) { } } -// Convert a native fan speed to it's common equivalent. +/// Convert a native fan speed into its stdAc equivilant. +/// @param[in] speed The native setting to be converted. +/// @return The stdAc equivilant of the native setting. stdAc::fanspeed_t IRWhirlpoolAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kWhirlpoolAcFanHigh: return stdAc::fanspeed_t::kMax; @@ -441,7 +531,8 @@ stdAc::fanspeed_t IRWhirlpoolAc::toCommonFanSpeed(const uint8_t speed) { } } -// Convert the A/C state to it's common equivalent. +/// Convert the current internal state into its stdAc::state_t equivilant. +/// @return The stdAc equivilant of the native settings. stdAc::state_t IRWhirlpoolAc::toCommon(void) { stdAc::state_t result; result.protocol = decode_type_t::WHIRLPOOL_AC; @@ -467,7 +558,8 @@ stdAc::state_t IRWhirlpoolAc::toCommon(void) { return result; } -// Convert the internal state into a human readable string. +/// Convert the current internal state into a human readable string. +/// @return A human readable string. String IRWhirlpoolAc::toString(void) { String result = ""; result.reserve(200); // Reserve some heap for the string to reduce fragging. @@ -538,22 +630,15 @@ String IRWhirlpoolAc::toString(void) { } #if DECODE_WHIRLPOOL_AC -// Decode the supplied Whirlpool A/C message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: The number of data bits to expect. Typically kWhirlpoolAcBits -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working as intended. -// -// -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/509 + +/// Decode the supplied Whirlpool A/C message. +/// Status: STABLE / Working as intended. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. bool IRrecv::decodeWhirlpoolAC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen < 2 * nbits + 4 + kHeader + kFooter - 1 + offset) diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Whirlpool.h b/lib/IRremoteESP8266-2.7.8/src/ir_Whirlpool.h similarity index 83% rename from lib/IRremoteESP8266-2.7.7/src/ir_Whirlpool.h rename to lib/IRremoteESP8266-2.7.8/src/ir_Whirlpool.h index d0cf95bef..3fd4e86dd 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Whirlpool.h +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Whirlpool.h @@ -1,7 +1,13 @@ -// Whirlpool A/C -// // Copyright 2018 David Conran +/// @file +/// @brief Support for Whirlpool protocols. +/// Decoding help from: \@redmusicxd, \@josh929800, \@raducostea +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/509 +/// @note Smart, iFeel, AroundU, PowerSave, & Silent modes are unsupported. +/// Advanced 6thSense, Dehumidify, & Sleep modes are not supported. +/// @note Dim == !Light, Jet == Super == Turbo + // Supports: // Brand: Whirlpool, Model: DG11J1-3A remote // Brand: Whirlpool, Model: DG11J1-04 remote @@ -26,9 +32,6 @@ #include "IRsend_test.h" #endif -// Ref: -// https://github.com/crankyoldgit/IRremoteESP8266/issues/509 - // Constants const uint8_t kWhirlpoolAcChecksumByte1 = 13; const uint8_t kWhirlpoolAcChecksumByte2 = kWhirlpoolAcStateLength - 1; @@ -84,20 +87,22 @@ const uint8_t kWhirlpoolAcAltTempOffset = 3; const uint8_t kWhirlpoolAcAltTempPos = 18; // Classes +/// Class for handling detailed Whirlpool A/C messages. class IRWhirlpoolAc { public: explicit IRWhirlpoolAc(const uint16_t pin, const bool inverted = false, const bool use_modulation = true); - void stateReset(void); #if SEND_WHIRLPOOL_AC void send(const uint16_t repeat = kWhirlpoolAcDefaultRepeat, const bool calcchecksum = true); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_WHIRLPOOL_AC void begin(void); - void on(void); - void off(void); void setPowerToggle(const bool on); bool getPowerToggle(void); void setSleep(const bool on); @@ -131,7 +136,7 @@ class IRWhirlpoolAc { uint8_t* getRaw(const bool calcchecksum = true); void setRaw(const uint8_t new_code[], const uint16_t length = kWhirlpoolAcStateLength); - static bool validChecksum(uint8_t state[], + static bool validChecksum(const uint8_t state[], const uint16_t length = kWhirlpoolAcStateLength); uint8_t convertMode(const stdAc::opmode_t mode); uint8_t convertFan(const stdAc::fanspeed_t speed); @@ -142,13 +147,14 @@ class IRWhirlpoolAc { #ifndef UNIT_TEST private: - IRsend _irsend; -#else - IRsendTest _irsend; -#endif - // The state of the IR remote in IR code form. - uint8_t remote_state[kWhirlpoolAcStateLength]; - uint8_t _desiredtemp; + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + uint8_t remote_state[kWhirlpoolAcStateLength]; ///< The state in IR code form + uint8_t _desiredtemp; ///< The last user explicitly set temperature. void checksum(const uint16_t length = kWhirlpoolAcStateLength); uint16_t getTime(const uint16_t pos); void setTime(const uint16_t pos, const uint16_t minspastmidnight); diff --git a/lib/IRremoteESP8266-2.7.7/src/ir_Whynter.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Whynter.cpp similarity index 70% rename from lib/IRremoteESP8266-2.7.7/src/ir_Whynter.cpp rename to lib/IRremoteESP8266-2.7.8/src/ir_Whynter.cpp index 92bad25ce..7b184eb0b 100644 --- a/lib/IRremoteESP8266-2.7.7/src/ir_Whynter.cpp +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Whynter.cpp @@ -1,8 +1,10 @@ // Copyright 2009 Ken Shirriff // Copyright 2017 David Conran -// Whynter A/C ARC-110WD added by Francesco Meschia -// Whynter originally added from https://github.com/shirriff/Arduino-IRremote/ +/// @file +/// @brief Support for Whynter protocols. +/// Whynter A/C ARC-110WD added by Francesco Meschia +/// Whynter originally added from https://github.com/shirriff/Arduino-IRremote/ // Supports: // Brand: Whynter, Model: ARC-110WD A/C @@ -13,7 +15,6 @@ #include "IRutils.h" // Constants - const uint16_t kWhynterTick = 50; const uint16_t kWhynterHdrMarkTicks = 57; const uint16_t kWhynterHdrMark = kWhynterHdrMarkTicks * kWhynterTick; @@ -35,18 +36,14 @@ const uint16_t kWhynterMinGapTicks = const uint16_t kWhynterMinGap = kWhynterMinGapTicks * kWhynterTick; #if SEND_WHYNTER -// Send a Whynter message. -// -// Args: -// data: message to be sent. -// nbits: Nr. of bits of the message to be sent. -// repeat: Nr. of additional times the message is to be sent. -// -// Status: STABLE -// -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp -void IRsend::sendWhynter(uint64_t data, uint16_t nbits, uint16_t repeat) { +/// Send a Whynter message. +/// Status: STABLE +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +/// @see https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp +void IRsend::sendWhynter(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { // Set IR carrier frequency enableIROut(38); @@ -62,24 +59,18 @@ void IRsend::sendWhynter(uint64_t data, uint16_t nbits, uint16_t repeat) { 50); } } -#endif +#endif // SEND_WHYNTER #if DECODE_WHYNTER -// Decode the supplied Whynter message. -// -// Args: -// results: Ptr to the data to decode and where to store the decode result. -// offset: The starting index to use when attempting to decode the raw data. -// Typically/Defaults to kStartOffset. -// nbits: Nr. of data bits to expect. -// strict: Flag indicating if we should perform strict matching. -// Returns: -// boolean: True if it can decode it, false if it can't. -// -// Status: STABLE / Working. Strict mode is ALPHA. -// -// Ref: -// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp +/// Decode the supplied Whynter message. +/// Status: STABLE / Working. Strict mode is ALPHA. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +/// @see https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp bool IRrecv::decodeWhynter(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { if (results->rawlen <= 2 * nbits + 2 * kHeader + kFooter - 1 + offset) @@ -109,4 +100,4 @@ bool IRrecv::decodeWhynter(decode_results *results, uint16_t offset, results->command = 0; return true; } -#endif +#endif // DECODE_WHYNTER diff --git a/lib/IRremoteESP8266-2.7.8/src/ir_Zepeal.cpp b/lib/IRremoteESP8266-2.7.8/src/ir_Zepeal.cpp new file mode 100644 index 000000000..96017226c --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/src/ir_Zepeal.cpp @@ -0,0 +1,94 @@ +// Copyright 2020 Christian Nilsson (nikize) + +/// @file +/// @brief Support for Zepeal protocol. +/// This protocol uses fixed length bit encoding. +/// Most official information about Zepeal seems to be from Denkyosha +/// @see https://www.denkyosha.co.jp/ + +// Supports: +// Brand: Zepeal, Model: DRT-A3311(BG) floor fan +// Brand: Zepeal, Model: DRT-A3311(BG) 5 button remote + +#include "IRrecv.h" +#include "IRsend.h" +#include "IRutils.h" + +// Constants + +const uint16_t kZepealHdrMark = 2330; +const uint16_t kZepealHdrSpace = 3380; +const uint16_t kZepealOneMark = 1300; +const uint16_t kZepealZeroMark = 420; +const uint16_t kZepealOneSpace = kZepealZeroMark; +const uint16_t kZepealZeroSpace = kZepealOneMark; +const uint16_t kZepealFooterMark = 420; +const uint16_t kZepealGap = 6750; + +const uint8_t kZepealTolerance = 40; + +// Signature limits possible false possitvies, +// but might need change (removal) if more devices are detected +const uint8_t kZepealSignature = 0x6C; + +// Known Zepeal DRT-A3311(BG) Buttons - documentation rather than actual usage +const uint16_t kZepealCommandSpeed = 0x6C82; +const uint16_t kZepealCommandOffOn = 0x6C81; +const uint16_t kZepealCommandRhythm = 0x6C84; +const uint16_t kZepealCommandOffTimer = 0x6C88; +const uint16_t kZepealCommandOnTimer = 0x6CC3; + +#if SEND_ZEPEAL +/// Send a Zepeal formatted message. +/// Status: STABLE / Works on real device. +/// @param[in] data The message to be sent. +/// @param[in] nbits The bit size of the message being sent. +/// @param[in] repeat The number of times the message is to be repeated. +void IRsend::sendZepeal(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { + sendGeneric(kZepealHdrMark, kZepealHdrSpace, + kZepealOneMark, kZepealOneSpace, + kZepealZeroMark, kZepealZeroSpace, + kZepealFooterMark, kZepealGap, + data, nbits, 38, true, repeat, kDutyDefault); +} +#endif // SEND_ZEPEAL + +#if DECODE_ZEPEAL +/// Decode the supplied Zepeal message. +/// Status: STABLE / Works on real device. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// result. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. Typically kZepealBits. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +bool IRrecv::decodeZepeal(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset) + return false; // Can't possibly be a valid message. + if (strict && nbits != kZepealBits) + return false; // Not strictly a message. + + uint64_t data = 0; + uint16_t used; + used = matchGeneric(results->rawbuf + offset, &data, + results->rawlen - offset, nbits, + kZepealHdrMark, kZepealHdrSpace, + kZepealOneMark, kZepealOneSpace, + kZepealZeroMark, kZepealZeroSpace, + kZepealFooterMark, kZepealGap, true, + kZepealTolerance); + if (!used) return false; + if (strict && (data >> 8) != kZepealSignature) return false; + + // Success + results->value = data; + results->decode_type = decode_type_t::ZEPEAL; + results->bits = nbits; + results->address = 0; + results->command = 0; + return true; +} +#endif // DECODE_ZEPEAL diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/README.md b/lib/IRremoteESP8266-2.7.8/src/locale/README.md similarity index 68% rename from lib/IRremoteESP8266-2.7.7/src/locale/README.md rename to lib/IRremoteESP8266-2.7.8/src/locale/README.md index 6b55571bf..b8689f34a 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/README.md +++ b/lib/IRremoteESP8266-2.7.8/src/locale/README.md @@ -10,7 +10,7 @@ There is _no_ runtime option to change locales. ### Change `_IR_LOCALE_` in the `src/IRremoteESP8266.h` file. In the [IRremoteESP8266.h](../IRremoteESP8266.h#L57-L59) file, find and locate the lines that look like: -``` +```c++ #ifndef _IR_LOCALE_ #define _IR_LOCALE_ en-AU #endif // _IR_LOCALE_ @@ -52,19 +52,19 @@ e.g. `en` is English. `de` is German etc. and `YY` is the ISO country code. e.g. Modify the comments and all `LOCALE_EN_AU_H_`s in the file to `LOCALE_XX_YY_H_` for your locale. -### Override any `#define` values that reside in `defaults.h` -Go through the [defaults.h](defaults.h) file, and find any `#define` lines that define a macro starting with `D_` that has text +### Override any `#‍define` values that reside in `defaults.h` +Go through the [defaults.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/defaults.h) file, and find any `#‍define` lines that define a macro starting with `D_` that has text that needs to change for your locale. -Copy or create a corresponding `#define D_STR_HELLOWORLD "Hello World"` in your `xx-YY.h` file, and translate the text appropriately -e.g. `#define D_STR_HELLOWORLD "Bonjour le monde"` (French) +Copy or create a corresponding `#‍define D_STR_HELLOWORLD "Hello World"` in your `xx-YY.h` file, and translate the text appropriately +e.g. `#‍define D_STR_HELLOWORLD "Bonjour le monde"` (French) -Any values you `#define` in `xx-YY.h` will override the corresponding value in the [defaults.h](defaults.h) file. +Any values you `#‍define` in `xx-YY.h` will override the corresponding value in the [defaults.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/defaults.h) file. -### Supporting a dialect/regional varient of another _existing_ language/locale. +### Supporting a dialect/regional variant of another _existing_ language/locale. Similar to the previous step, if you only need to modify a small subset of the strings used in another locale file, then include the -other locale file and then make sure to `#undef` any strings that need to be (re-)changed. -See the [Swiss-German](de-CH.h) for an example of how to do this. i.e. It `#include "locale/de-DE.h"`s the German locale, and -redefines any strings that are not standard [German](de-DE.h). +other locale file and then make sure to `#‍undef` any strings that need to be (re-)changed. +See the [Swiss-German](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/de-CH.h) for an example of how to do this. i.e. It `#‍include "locale/de-DE.h"`s the German locale, and +redefines any strings that are not standard [German](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/de-DE.h). ## Adding new text strings to the library. If you need to add an entirely new string to the library to support some feature etc. e.g. _"Widget"_. @@ -72,26 +72,26 @@ You should first understand how the library tries to do this such that it is eas 1. Use a constant named `kWidgetStr` in the appropriate statement in the `.cpp` file. 2. Edit [IRtext.cpp](IRtext.cpp), and add the appropriate line for your new constant. e.g. -``` +```c++ String kWidgetStr = D_STR_WIDGET; ``` The `kWidgetStr` variable will house the sole copy of the string for the entire library. This limits any duplication. The `D_STR_WIDGET` macro will be what is targeted by the different language / locales files. -3. Edit [locale/defaults.h](defaults.h), and add the appropriate stanza for your new string. e.g. -``` +3. Edit [locale/defaults.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/defaults.h), and add the appropriate stanza for your new string. e.g. +```c++ #ifndef D_STR_WIDGET #define D_STR_WIDGET "Turbo" #endif // D_STR_WIDGET ``` -4. _(Manual)_ Update [IRtext.h](../IRtext.h), and add the appropriate line for your new constant. e.g. -``` +4. _(Manual)_ Update [IRtext.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRtext.h), and add the appropriate line for your new constant. e.g. +```c++ extern const String kWidgetStr; ``` -For any file that `#include `s this file, it will tell it that the string is stored elsewhere, +For any file that `#‍include `s this file, it will tell it that the string is stored elsewhere, and to look for it elsewhere at the object linking stage of the build. This is what makes the string be referenced from a central location. -4. _(Automatic)_ Run `tools/generate_irtext_h.sh` to update [IRtext.h](../IRtext.h). -In the [src/locale](../locale) directory. Run the `../../tools/generate_irtext_h.sh` command. It will update the file for you automatically. +4. _(Automatic)_ Run `tools/generate_irtext_h.sh` to update [IRtext.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRtext.h). +In the [src/locale](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/) directory. Run the `../../tools/generate_irtext_h.sh` command. It will update the file for you automatically. diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/de-CH.h b/lib/IRremoteESP8266-2.7.8/src/locale/de-CH.h similarity index 98% rename from lib/IRremoteESP8266-2.7.7/src/locale/de-CH.h rename to lib/IRremoteESP8266-2.7.8/src/locale/de-CH.h index 2c34ca97b..875ffd394 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/de-CH.h +++ b/lib/IRremoteESP8266-2.7.8/src/locale/de-CH.h @@ -143,12 +143,12 @@ #undef D_STR_REPEAT #define D_STR_REPEAT "Wiederhole" -// IRrecvDumpV2 +// IRrecvDumpV2+ #undef D_STR_TIMESTAMP #define D_STR_TIMESTAMP "Ziitstämpfel" #undef D_STR_IRRECVDUMP_STARTUP #define D_STR_IRRECVDUMP_STARTUP \ - "IRrecvDumpV2 lauft und wartet uf IR Iigab ufem Pin %d" + "IRrecvDump lauft und wartet uf IR Iigab ufem Pin %d" #undef D_WARN_BUFFERFULL #define D_WARN_BUFFERFULL \ "WARNUNG: IR Code isch zgross für de Buffer (>= %d). " \ diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/de-DE.h b/lib/IRremoteESP8266-2.7.8/src/locale/de-DE.h similarity index 97% rename from lib/IRremoteESP8266-2.7.7/src/locale/de-DE.h rename to lib/IRremoteESP8266-2.7.8/src/locale/de-DE.h index f366936b0..70ebc4854 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/de-DE.h +++ b/lib/IRremoteESP8266-2.7.8/src/locale/de-DE.h @@ -112,12 +112,12 @@ #define D_STR_REPEAT "Wiederholen" -// IRrecvDumpV2 +// IRrecvDumpV2+ #define D_STR_TIMESTAMP "Zeitstempel" #define D_STR_LIBRARY "Bibliothek" #define D_STR_MESGDESC "Nachr. Beschr." #define D_STR_IRRECVDUMP_STARTUP \ - "IRrecvDumpV2 läuft und wartet auf IR Eingabe auf Pin %d" + "IRrecvDump läuft und wartet auf IR Eingabe auf Pin %d" #define D_WARN_BUFFERFULL \ "WARNUNG: IR Code ist zu gross für Buffer (>= %d). " \ "Dem Resultat sollte nicht vertraut werden bevor das behoben ist. " \ diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/defaults.h b/lib/IRremoteESP8266-2.7.8/src/locale/defaults.h similarity index 97% rename from lib/IRremoteESP8266-2.7.7/src/locale/defaults.h rename to lib/IRremoteESP8266-2.7.8/src/locale/defaults.h index 5df78f7b9..340e2b8fe 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/defaults.h +++ b/lib/IRremoteESP8266-2.7.8/src/locale/defaults.h @@ -372,6 +372,9 @@ #ifndef D_STR_POWERTOGGLE #define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE #endif // D_STR_POWERTOGGLE +#ifndef D_STR_POWERBUTTON +#define D_STR_POWERBUTTON D_STR_POWER " " D_STR_BUTTON +#endif // D_STR_POWERBUTTON #ifndef D_STR_PREVIOUSPOWER #define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER #endif // D_STR_PREVIOUSPOWER @@ -484,6 +487,9 @@ #ifndef D_STR_COOLIX #define D_STR_COOLIX "COOLIX" #endif // D_STR_COOLIX +#ifndef D_STR_CORONA_AC +#define D_STR_CORONA_AC "CORONA_AC" +#endif // D_STR_CORONA_AC #ifndef D_STR_DAIKIN #define D_STR_DAIKIN "DAIKIN" #endif // D_STR_DAIKIN @@ -559,6 +565,9 @@ #ifndef D_STR_HITACHI_AC3 #define D_STR_HITACHI_AC3 "HITACHI_AC3" #endif // D_STR_HITACHI_AC3 +#ifndef D_STR_HITACHI_AC344 +#define D_STR_HITACHI_AC344 "HITACHI_AC344" +#endif // D_STR_HITACHI_AC344 #ifndef D_STR_HITACHI_AC424 #define D_STR_HITACHI_AC424 "HITACHI_AC424" #endif // D_STR_HITACHI_AC424 @@ -592,6 +601,9 @@ #ifndef D_STR_MIDEA #define D_STR_MIDEA "MIDEA" #endif // D_STR_MIDEA +#ifndef D_STR_MIDEA24 +#define D_STR_MIDEA24 "MIDEA24" +#endif // D_STR_MIDEA24 #ifndef D_STR_MITSUBISHI #define D_STR_MITSUBISHI "MITSUBISHI" #endif // D_STR_MITSUBISHI @@ -718,8 +730,11 @@ #ifndef D_STR_WHYNTER #define D_STR_WHYNTER "WHYNTER" #endif // D_STR_WHYNTER +#ifndef D_STR_ZEPEAL +#define D_STR_ZEPEAL "ZEPEAL" +#endif // D_STR_ZEPEAL -// IRrecvDumpV2 +// IRrecvDumpV2+ #ifndef D_STR_TIMESTAMP #define D_STR_TIMESTAMP "Timestamp" #endif // D_STR_TIMESTAMP @@ -731,7 +746,7 @@ #endif // D_STR_MESGDESC #ifndef D_STR_IRRECVDUMP_STARTUP #define D_STR_IRRECVDUMP_STARTUP \ - "IRrecvDumpV2 is now running and waiting for IR input on Pin %d" + "IRrecvDump is now running and waiting for IR input on Pin %d" #endif // D_STR_IRRECVDUMP_STARTUP #ifndef D_WARN_BUFFERFULL #define D_WARN_BUFFERFULL \ diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/en-AU.h b/lib/IRremoteESP8266-2.7.8/src/locale/en-AU.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/src/locale/en-AU.h rename to lib/IRremoteESP8266-2.7.8/src/locale/en-AU.h diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/en-IE.h b/lib/IRremoteESP8266-2.7.8/src/locale/en-IE.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/src/locale/en-IE.h rename to lib/IRremoteESP8266-2.7.8/src/locale/en-IE.h diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/en-UK.h b/lib/IRremoteESP8266-2.7.8/src/locale/en-UK.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/src/locale/en-UK.h rename to lib/IRremoteESP8266-2.7.8/src/locale/en-UK.h diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/en-US.h b/lib/IRremoteESP8266-2.7.8/src/locale/en-US.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/src/locale/en-US.h rename to lib/IRremoteESP8266-2.7.8/src/locale/en-US.h diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/es-ES.h b/lib/IRremoteESP8266-2.7.8/src/locale/es-ES.h similarity index 97% rename from lib/IRremoteESP8266-2.7.7/src/locale/es-ES.h rename to lib/IRremoteESP8266-2.7.8/src/locale/es-ES.h index 52f22333d..e8e54e5b2 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/es-ES.h +++ b/lib/IRremoteESP8266-2.7.8/src/locale/es-ES.h @@ -121,11 +121,11 @@ #define D_STR_REPEAT "Repetir" #define D_STR_CODE "Codigo" -// IRrecvDumpV2 +// IRrecvDumpV2+ #define D_STR_TIMESTAMP "marca de tiempo" #define D_STR_LIBRARY "Libreria" #define D_STR_IRRECVDUMP_STARTUP \ - "IRrecvDumpV2 esta ahora corriendo y esperando por comando IR en Pin %d" + "IRrecvDump esta ahora corriendo y esperando por comando IR en Pin %d" #ifndef D_WARN_BUFFERFULL #define D_WARN_BUFFERFULL \ "WARNING: Codigo IR es muy grande para el buffer (>= %d). "\ diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/fr-FR.h b/lib/IRremoteESP8266-2.7.8/src/locale/fr-FR.h similarity index 97% rename from lib/IRremoteESP8266-2.7.7/src/locale/fr-FR.h rename to lib/IRremoteESP8266-2.7.8/src/locale/fr-FR.h index 0eae39e2e..f8c2f8235 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/fr-FR.h +++ b/lib/IRremoteESP8266-2.7.8/src/locale/fr-FR.h @@ -103,12 +103,12 @@ #define D_STR_REPEAT "Répetition" -// IRrecvDumpV2 +// IRrecvDumpV2+ #define D_STR_TIMESTAMP "Horodatage" #define D_STR_LIBRARY "Bibliothèque" #define D_STR_MESGDESC "Rèférence" #define D_STR_IRRECVDUMP_STARTUP \ - "IRrecvDumpV2 fonctionne et attend l’entrée IR sur la broche %d" + "IRrecvDump fonctionne et attend l’entrée IR sur la broche %d" #define D_WARN_BUFFERFULL \ "ATTENTION: IR Code est trop gros pour le buffer (>= %d). " \ "Le résultat ne doit pas être approuvé avant que cela soit résolu. " \ diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/it-IT.h b/lib/IRremoteESP8266-2.7.8/src/locale/it-IT.h similarity index 98% rename from lib/IRremoteESP8266-2.7.7/src/locale/it-IT.h rename to lib/IRremoteESP8266-2.7.8/src/locale/it-IT.h index b04a129d2..9457b6e40 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/it-IT.h +++ b/lib/IRremoteESP8266-2.7.8/src/locale/it-IT.h @@ -141,12 +141,12 @@ #define D_STR_REPEAT "Ripeti" #define D_STR_CODE "Codice" #define D_STR_BITS "Bit" -// IRrecvDumpV2 +// IRrecvDumpV2+ #define D_STR_LIBRARY "Libreria" #define D_STR_MESGDESC "Desc. Mess." #define D_STR_IRRECVDUMP_STARTUP \ - "IRrecvDumpV2 è ora attivo e in attesa di segnali IR dal pin %d" + "IRrecvDump è ora attivo e in attesa di segnali IR dal pin %d" #ifndef D_WARN_BUFFERFULL #define D_WARN_BUFFERFULL \ diff --git a/lib/IRremoteESP8266-2.7.7/src/locale/zh-CN.h b/lib/IRremoteESP8266-2.7.8/src/locale/zh-CN.h similarity index 99% rename from lib/IRremoteESP8266-2.7.7/src/locale/zh-CN.h rename to lib/IRremoteESP8266-2.7.8/src/locale/zh-CN.h index bcb30392c..5330c93e3 100644 --- a/lib/IRremoteESP8266-2.7.7/src/locale/zh-CN.h +++ b/lib/IRremoteESP8266-2.7.8/src/locale/zh-CN.h @@ -416,7 +416,7 @@ #ifndef D_STR_THREELETTERDAYS #define D_STR_THREELETTERDAYS "周一至周末" #endif // D_STR_THREELETTERDAYS -*/ +*/ #ifndef D_STR_YES #define D_STR_YES "是" @@ -441,7 +441,7 @@ #define D_STR_BITS "位" #endif // D_STR_BITS -// IRrecvDumpV2 +// IRrecvDumpV2+ #ifndef D_STR_TIMESTAMP #define D_STR_TIMESTAMP "时间戳记" #endif // D_STR_TIMESTAMP @@ -453,7 +453,7 @@ #endif // D_STR_MESGDESC #ifndef D_STR_IRRECVDUMP_STARTUP #define D_STR_IRRECVDUMP_STARTUP \ - "IRrecvDumpV2 运行当中,等待红外信息输入位于引脚 %d" + "IRrecvDump 运行当中,等待红外信息输入位于引脚 %d" #endif // D_STR_IRRECVDUMP_STARTUP #ifndef D_WARN_BUFFERFULL #define D_WARN_BUFFERFULL \ diff --git a/lib/IRremoteESP8266-2.7.7/test/IRac_test.cpp b/lib/IRremoteESP8266-2.7.8/test/IRac_test.cpp similarity index 93% rename from lib/IRremoteESP8266-2.7.7/test/IRac_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/IRac_test.cpp index 93b8a73cb..a0f975666 100644 --- a/lib/IRremoteESP8266-2.7.7/test/IRac_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/IRac_test.cpp @@ -3,6 +3,9 @@ #include #include "ir_Amcor.h" #include "ir_Argo.h" +#include "ir_Carrier.h" +#include "ir_Coolix.h" +#include "ir_Corona.h" #include "ir_Daikin.h" #include "ir_Delonghi.h" #include "ir_Electra.h" @@ -80,6 +83,40 @@ TEST(TestIRac, Argo) { EXPECT_FALSE(ac.getNight()); // Sleep } +TEST(TestIRac, Carrier64) { + IRCarrierAc64 ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + + char expected[] = + "Power: On, Mode: 1 (Heat), Temp: 21C, Fan: 3 (High), Swing(V): On, " + "Sleep: On, On Timer: Off, Off Timer: Off"; + + ac.begin(); + irac.carrier64(&ac, + true, // Power + stdAc::opmode_t::kHeat, // Mode + 21, // Celsius + stdAc::fanspeed_t::kHigh, // Fan speed + stdAc::swingv_t::kAuto, // Veritcal swing + 1); // Sleep + EXPECT_TRUE(ac.getPower()); // Power. + EXPECT_EQ(kCarrierAc64Heat, ac.getMode()); // Operating mode. + EXPECT_EQ(21, ac.getTemp()); // Temperature. + EXPECT_EQ(kCarrierAc64FanHigh, ac.getFan()); // Fan Speed + EXPECT_TRUE(ac.getSwingV()); // SwingV + EXPECT_TRUE(ac.getSleep()); // Sleep + + ASSERT_EQ(expected, ac.toString()); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(CARRIER_AC64, ac._irsend.capture.decode_type); + ASSERT_EQ(kCarrierAc64Bits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); +} + TEST(TestIRac, Coolix) { IRCoolixAC ac(0); IRac irac(0); @@ -141,6 +178,48 @@ TEST(TestIRac, Coolix) { ac._irsend.outputStr()); } +TEST(TestIRac, Corona) { + IRCoronaAc ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + + char expectedAfterSent[] = + "Power: On, Power Button: On, Mode: 0 (Heat), Temp: 21C, " + "Fan: 3 (High), Swing(V) Toggle: On, Econo: On, " + "On Timer: Off, Off Timer: Off"; + + char expectedCapture[] = + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 21C, " + "Fan: 3 (High), Swing(V) Toggle: On, Econo: On, " + "On Timer: Off, Off Timer: Off"; + + ac.begin(); + // this sends as well + irac.corona(&ac, + true, // Power + stdAc::opmode_t::kHeat, // Mode + 21, // Celsius + stdAc::fanspeed_t::kHigh, // Fan speed + stdAc::swingv_t::kAuto, // Veritcal swing + true); // Econo (PowerSave) + EXPECT_TRUE(ac.getPower()); // Power. + EXPECT_TRUE(ac.getPowerButton()); // Power.button + EXPECT_EQ(kCoronaAcModeHeat, ac.getMode()); // Operating mode. + EXPECT_EQ(21, ac.getTemp()); // Temperature. + EXPECT_EQ(kCoronaAcFanHigh, ac.getFan()); // Fan Speed + EXPECT_TRUE(ac.getSwingVToggle()); // SwingV + EXPECT_TRUE(ac.getEcono()); // Econo (PowerSave) + + ASSERT_EQ(expectedAfterSent, ac.toString()); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(CORONA_AC, ac._irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, ac._irsend.capture.bits); + ASSERT_EQ(expectedCapture, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); +} + TEST(TestIRac, Daikin) { IRDaikinESP ac(0); IRac irac(0); @@ -690,16 +769,67 @@ TEST(TestIRac, Hitachi1) { ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); } +TEST(TestIRac, Hitachi344) { + IRHitachiAc344 ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + char expected_swingon[] = + "Power: On, Mode: 6 (Heat), Temp: 25C, Fan: 6 (Max), " + "Button: 129 (Swing(V)), Swing(V): Off, Swing(H): 2 (Right)"; + + ac.begin(); + irac.hitachi344(&ac, + true, // Power + stdAc::opmode_t::kHeat, // Mode + 25, // Celsius + stdAc::fanspeed_t::kMax, // Fan speed + stdAc::swingv_t::kAuto, // Swing(V) + stdAc::swingh_t::kRight); // Swing(H) + + ASSERT_EQ(expected_swingon, ac.toString()); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(HITACHI_AC344, ac._irsend.capture.decode_type); + ASSERT_EQ(kHitachiAc344Bits, ac._irsend.capture.bits); + ASSERT_EQ(expected_swingon, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); + EXPECT_EQ(decode_type_t::HITACHI_AC344, r.protocol); + EXPECT_TRUE(r.power); + EXPECT_EQ(stdAc::opmode_t::kHeat, r.mode); + EXPECT_EQ(25, r.degrees); + + char expected_swingoff[] = + "Power: On, Mode: 6 (Heat), Temp: 25C, Fan: 6 (Max), " + "Button: 19 (Power/Mode), Swing(V): Off, Swing(H): 2 (Right)"; + + ac._irsend.reset(); + irac.hitachi344(&ac, + true, // Power + stdAc::opmode_t::kHeat, // Mode + 25, // Celsius + stdAc::fanspeed_t::kMax, // Fan speed + stdAc::swingv_t::kOff, // Swing(V) + stdAc::swingh_t::kRight); // Swing(H) + ASSERT_EQ(expected_swingoff, ac.toString()); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(HITACHI_AC344, ac._irsend.capture.decode_type); + ASSERT_EQ(kHitachiAc344Bits, ac._irsend.capture.bits); + ASSERT_EQ(expected_swingoff, + IRAcUtils::resultAcToString(&ac._irsend.capture)); +} + TEST(TestIRac, Hitachi424) { IRHitachiAc424 ac(0); IRac irac(0); IRrecv capture(0); char expected[] = "Power: On, Mode: 6 (Heat), Temp: 25C, Fan: 6 (Max), " - "Swing(V) Toggle: Off, Button: 19 (Power/Mode)"; + "Button: 19 (Power/Mode), Swing(V) Toggle: Off"; char expected_swingv[] = "Power: On, Mode: 3 (Cool), Temp: 26C, Fan: 1 (Min), " - "Swing(V) Toggle: On, Button: 129 (Swing(V))"; + "Button: 129 (Swing(V)), Swing(V) Toggle: On"; ac.begin(); irac.hitachi424(&ac, diff --git a/lib/IRremoteESP8266-2.7.7/test/IRrecv_test.cpp b/lib/IRremoteESP8266-2.7.8/test/IRrecv_test.cpp similarity index 85% rename from lib/IRremoteESP8266-2.7.7/test/IRrecv_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/IRrecv_test.cpp index e66866be1..08649978c 100644 --- a/lib/IRremoteESP8266-2.7.7/test/IRrecv_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/IRrecv_test.cpp @@ -1595,11 +1595,37 @@ TEST(TestManchesterCode, matchManchester) { IRrecv irrecv(0); const uint16_t rawData[163] = { + // 0 2860, 3862, + // 11 00 11 00 1 0 11 0 1 0 1 0 1 + // 0 1 0 1 0 0 1 1 1 + // 1 4 + // 1 0 1 0 1 1 0 0 0 + // 2 B 1924, 1952, 1926, 1952, 956, 984, 1924, 1028, 952, 958, 980, 956, 982, + // 00 1 0 11 00 11 0 1 0 1 0 1 0 + // 1 0 0 1 0 1 1 1 1 + // F 2 F + // 0 1 1 0 1 0 0 0 0 + // 0 D 0 1882, 1016, 950, 1958, 1920, 1948, 1004, 954, 956, 984, 956, 952, 984, + // 1 0 1 0 1 00 1 0 11 0 1 0 1 + // 1 1 1 0 0 1 1 + // E + // 0 0 0 1 1 0 0 + // 1 974, 966, 974, 964, 974, 1888, 1010, 960, 1948, 1002, 946, 962, 978, + // 0 1 0 1 0 1 00 1 0 11 00 1 0 + // 1 1 1 1 0 0 1 0 + // 7 E + // 0 0 0 0 1 1 0 1 + // 8 1 962, 976, 960, 948, 992, 978, 1886, 982, 984, 1924, 1954, 952, 986, + // 1 + // 0 + // 4 + // 1 + // B 3892, 3862, 1924, 1954, 1924, 1954, 984, 952, 1956, 996, 954, 990, 948, 958, 980, 1882, 1016, 952, 1958, 1920, 1956, 994, 944, 962, 986, 956, 972, 962, @@ -1616,11 +1642,11 @@ TEST(TestManchesterCode, matchManchester) { uint16_t offset = 1; uint64_t result = 0; - uint16_t nbits = 32; + uint16_t nbits = 34; EXPECT_EQ(56, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, irsend.capture.rawlen - offset, nbits, - 2860, 3800, 1000, 0, 3800)); - EXPECT_EQ(0x4F2FE7E4, result); + 2860, 2860, 1000, 2860, 2860)); + EXPECT_EQ(0x14F2FE7E4, result); irsend.reset(); irsend.sendRaw(rawData, 55, 38); // Send just the bare minimum. @@ -1628,8 +1654,8 @@ TEST(TestManchesterCode, matchManchester) { EXPECT_EQ(55, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, irsend.capture.rawlen - offset, nbits, - 2860, 3800, 1000, 0, 3800)); - EXPECT_EQ(0x4F2FE7E4, result); + 2860, 2860, 1000, 2860, 2860)); + EXPECT_EQ(0x14F2FE7E4, result); irsend.reset(); irsend.sendRaw(rawData, 52, 38); // Now, just too short. @@ -1637,7 +1663,7 @@ TEST(TestManchesterCode, matchManchester) { EXPECT_EQ(0, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, irsend.capture.rawlen - offset, nbits, - 2860, 3800, 1000, 0, 0)); + 2860, 2860, 1000, 2860, 2860)); } TEST(TestManchesterCode, ManchesterLoopBackGEThomasTest) { @@ -1650,7 +1676,7 @@ TEST(TestManchesterCode, ManchesterLoopBackGEThomasTest) { irsend.reset(); irsend.sendManchester(5000, 7000, 1000, 0, 10000, 0x12345678, nbits); irsend.makeDecodeResult(); - EXPECT_EQ(52, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, + EXPECT_EQ(50, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, irsend.capture.rawlen - offset, nbits, 5000, 7000, 1000, 0, 10000, true, kUseDefTol, kMarkExcess, true, true)); @@ -1659,7 +1685,7 @@ TEST(TestManchesterCode, ManchesterLoopBackGEThomasTest) { irsend.reset(); irsend.sendManchester(5000, 7000, 1000, 0, 10000, 0x87654321, nbits); irsend.makeDecodeResult(); - EXPECT_EQ(52, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, + EXPECT_EQ(50, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, irsend.capture.rawlen - offset, nbits, 5000, 7000, 1000, 0, 10000, true, kUseDefTol, kMarkExcess, true, true)); @@ -1677,7 +1703,7 @@ TEST(TestManchesterCode, ManchesterLoopBackIEEE802_3Test) { irsend.sendManchester(5000, 7000, 1000, 0, 10000, 0x12345678, nbits, 38000, true, kNoRepeat, kDutyDefault, false); irsend.makeDecodeResult(); - EXPECT_EQ(52, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, + EXPECT_EQ(50, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, irsend.capture.rawlen - offset, nbits, 5000, 7000, 1000, 0, 10000, true, kUseDefTol, kMarkExcess, true, false)); @@ -1687,9 +1713,198 @@ TEST(TestManchesterCode, ManchesterLoopBackIEEE802_3Test) { irsend.sendManchester(5000, 7000, 1000, 0, 10000, 0x87654321, nbits, 38000, true, kNoRepeat, kDutyDefault, false); irsend.makeDecodeResult(); - EXPECT_EQ(54, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, + EXPECT_EQ(50, irrecv.matchManchester(irsend.capture.rawbuf + offset, &result, irsend.capture.rawlen - offset, nbits, 5000, 7000, 1000, 0, 10000, true, kUseDefTol, kMarkExcess, true, false)); EXPECT_EQ(0x87654321, result); } + +TEST(TestMatchManchesterData, Normal) { + IRsendTest irsend(0); + IRrecv irrecv(0); + uint16_t offset = 1; + uint64_t result = 0; + irsend.begin(); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1111, 4); + irsend.makeDecodeResult(); + EXPECT_EQ(8, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset, + 4, 1000)); + EXPECT_EQ(0b1111, result); + EXPECT_EQ("f38000d50m1000s1000m1000s1000m1000s1000m1000s1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1011, 4); + irsend.makeDecodeResult(); + EXPECT_EQ(6, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset, + 4, 1000)); + EXPECT_EQ(0b1011, result); + EXPECT_EQ("f38000d50m1000s2000m2000s1000m1000s1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1010, 4); + irsend.makeDecodeResult(); + EXPECT_EQ(5, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset, + 4, 1000)); + EXPECT_EQ(0b1010, result); + EXPECT_EQ("f38000d50m1000s2000m2000s2000m1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1000, 4); + irsend.makeDecodeResult(); + EXPECT_EQ(7, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset, + 4, 1000)); + EXPECT_EQ(0b1000, result); + EXPECT_EQ("f38000d50m1000s2000m1000s1000m1000s1000m1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1001, 4); + irsend.makeDecodeResult(); + EXPECT_EQ(6, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset, + 4, 1000)); + EXPECT_EQ(0b1001, result); + EXPECT_EQ("f38000d50m1000s2000m1000s1000m2000s1000", + irsend.outputStr()); +} + +TEST(TestMatchManchesterData, SimulateAtEndOfARealMessage) { + IRsendTest irsend(0); + IRrecv irrecv(0); + uint16_t offset = 1; + uint64_t result = 0; + irsend.begin(); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1111, 4); + irsend.makeDecodeResult(); + // To simulate an normal (no space at the end) reduce the remaining by 1. + EXPECT_EQ(7, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset - 1, + 4, 1000)); + EXPECT_EQ(0b1111, result); + EXPECT_EQ("f38000d50m1000s1000m1000s1000m1000s1000m1000s1000", + irsend.outputStr()); + + uint16_t rawData[7] = {1000, 1000, 1000, 1000, 1000, 1000, 1000}; + irsend.reset(); + irsend.enableIROut(38); + irsend.sendRaw(rawData, 7, 38); + irsend.makeDecodeResult(); + EXPECT_EQ(7, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset, + 4, 1000)); + EXPECT_EQ(0b1111, result); + EXPECT_EQ("f38000d50m1000s1000m1000s1000m1000s1000m1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1011, 4); + irsend.makeDecodeResult(); + // To simulate an normal (no space at the end) reduce the remaining by 1. + EXPECT_EQ(5, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset - 1, + 4, 1000)); + EXPECT_EQ(0b1011, result); + EXPECT_EQ("f38000d50m1000s2000m2000s1000m1000s1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1010, 4); + irsend.makeDecodeResult(); + // To simulate an normal (no space at the end) reduce the remaining by 1. + EXPECT_EQ(4, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset - 1, + 4, 1000)); + EXPECT_EQ(0b1010, result); + EXPECT_EQ("f38000d50m1000s2000m2000s2000m1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1000, 4); + irsend.makeDecodeResult(); + // To simulate an normal (no space at the end) reduce the remaining by 1. + EXPECT_EQ(6, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset - 1, + 4, 1000)); + EXPECT_EQ(0b1000, result); + EXPECT_EQ("f38000d50m1000s2000m1000s1000m1000s1000m1000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1001, 4); + irsend.makeDecodeResult(); + // To simulate an normal (no space at the end) reduce the remaining by 1. + EXPECT_EQ(5, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset - 1, + 4, 1000)); + EXPECT_EQ(0b1001, result); + EXPECT_EQ("f38000d50m1000s2000m1000s1000m2000s1000", + irsend.outputStr()); +} + +TEST(TestMatchManchesterData, SimulateLongFooter) { + IRsendTest irsend(0); + IRrecv irrecv(0); + uint16_t offset = 1; + uint64_t result = 0; + irsend.begin(); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1110, 4); + irsend.mark(4000); + irsend.makeDecodeResult(); + EXPECT_EQ(6, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset, + 4, 1000)); + EXPECT_EQ(0b1110, result); + EXPECT_EQ("f38000d50m1000s1000m1000s1000m1000s2000m5000", + irsend.outputStr()); + + irsend.reset(); + irsend.enableIROut(38); + irsend.sendManchesterData(1000, 0b1001, 4); + irsend.space(4000); + irsend.makeDecodeResult(); + // To simulate an normal (no space at the end) reduce the remaining by 1. + EXPECT_EQ(5, irrecv.matchManchesterData(irsend.capture.rawbuf + offset, + &result, + irsend.capture.rawlen - offset - 1, + 4, 1000)); + EXPECT_EQ(0b1001, result); + EXPECT_EQ("f38000d50m1000s2000m1000s1000m2000s5000", + irsend.outputStr()); +} diff --git a/lib/IRremoteESP8266-2.7.7/test/IRrecv_test.h b/lib/IRremoteESP8266-2.7.8/test/IRrecv_test.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/IRrecv_test.h rename to lib/IRremoteESP8266-2.7.8/test/IRrecv_test.h diff --git a/lib/IRremoteESP8266-2.7.7/test/IRsend_test.cpp b/lib/IRremoteESP8266-2.7.8/test/IRsend_test.cpp similarity index 96% rename from lib/IRremoteESP8266-2.7.7/test/IRsend_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/IRsend_test.cpp index 2f39e323d..51fae7499 100644 --- a/lib/IRremoteESP8266-2.7.7/test/IRsend_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/IRsend_test.cpp @@ -794,9 +794,9 @@ TEST(TestSendManchester, SendZeroBits) { IRsendTest irsend(0); irsend.begin(); irsend.sendManchester(0, 0, 1, 0, 0, 0b1, 0); - EXPECT_EQ("f36000d25m0f38000d50s1m2s1", irsend.outputStr()); + EXPECT_EQ("", irsend.outputStr()); irsend.sendManchester(1, 2, 100, 3, 4, 0b1, 0); - EXPECT_EQ("f38000d50m1s102m200s100m3s4", irsend.outputStr()); + EXPECT_EQ("f38000d50m1s2m3s4", irsend.outputStr()); } // Test sending zero and one. @@ -804,10 +804,10 @@ TEST(TestSendManchester, SendSingleBit) { IRsendTest irsend(0); irsend.begin(); irsend.sendManchester(1000, 2000, 100, 3000, 4000, 0b0, 1); - EXPECT_EQ("f38000d50m1000s2100m200s200m3100s4000", irsend.outputStr()); + EXPECT_EQ("f38000d50m1000s2100m3100s4000", irsend.outputStr()); irsend.sendManchester(1000, 2000, 100, 3000, 4000, 0b0, 1, 38, true, kNoRepeat, kDutyDefault, false); - EXPECT_EQ("f38000d50m1000s2000m100s200m200s100m3000s4000", + EXPECT_EQ("f38000d50m1000s2000m100s100m3000s4000", irsend.outputStr()); } @@ -816,14 +816,14 @@ TEST(TestSendManchester, TestingBitSendOrder) { IRsendTest irsend(0); irsend.begin(); irsend.sendManchester(1000, 2000, 100, 3000, 0, 0b10, 2); - EXPECT_EQ("f38000d50m1000s2100m200s100m100s200m3100", irsend.outputStr()); + EXPECT_EQ("f38000d50m1000s2000m100s200m3100", irsend.outputStr()); irsend.sendManchester(1000, 2000, 100, 3000, 0, 0b10, 2, 38, false); - EXPECT_EQ("f38000d50m1000s2100m200s200m200s100m3000", irsend.outputStr()); + EXPECT_EQ("f38000d50m1000s2100m200s100m3000", irsend.outputStr()); irsend.sendManchester(1000, 2000, 100, 3000, 0, 0b0001, 4, 38, true); - EXPECT_EQ("f38000d50m1000s2100m200s200m100s100m100s100m200s100m3000", + EXPECT_EQ("f38000d50m1000s2100m100s100m100s100m200s100m3000", irsend.outputStr()); irsend.sendManchester(1000, 2000, 100, 3000, 0, 0b0001, 4, 38, false); - EXPECT_EQ("f38000d50m1000s2100m200s100m100s200m100s100m100s100m3100", + EXPECT_EQ("f38000d50m1000s2000m100s200m100s100m100s100m3100", irsend.outputStr()); } @@ -835,16 +835,16 @@ TEST(TestSendManchester, SendTypicalData) { irsend.sendManchester(0, 0, 100, 0, 0, 0b10100111001, 11, 38, true); EXPECT_EQ( "f38000d50" - "m0s100m200s100" "m100s200m200s200m100s100m200s100m100s100m100s200m100s100m200s100", irsend.outputStr()); irsend.sendManchester(100, 200, 1, 300, 0, 0x1234567890ABCDEF, 64, 38, true); EXPECT_EQ( "f38000d50" "m100s201" - "m2s2m1s1m1s1m2s2m1s1m2s2m1s1m1s1m2s1m1s2m2s2m1s1m1s1m2s2m2s2m2s1m1s2m1s1" - "m2s1m1s1m1s1m1s2m1s1m1s1m2s2m1s1m2s2m1s1m1s1m1s1m2s2m2s2m2s2m2s1m1s1m1s1" - "m1s2m1s1m2s1m1s2m2s1m1s1m1s1m1s2m2s1m1s1m1s1m1s1m300", + "m1s1m1s1m2s2m1s1m2s2m1s1m1s1m2s1m1s2m2s2m1s1m1s1m2s2m2s2m2s1m1s2m1s1m2s1" + "m1s1m1s1m1s2m1s1m1s1m2s2m1s1m2s2m1s1m1s1m1s1m2s2m2s2m2s2m2s1m1s1m1s1m1s2" + "m1s1m2s1m1s2m2s1m1s1m1s1m1s2m2s1m1s1m1s1m1s1" + "m300", irsend.outputStr()); } @@ -856,7 +856,7 @@ TEST(TestSendManchester, SendOverLargeData) { EXPECT_EQ( "f38000d50" "m100s201" - "m2s2m1s1m1s1m1s1m1s1m1s1m2s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1" + "m1s1m1s1m1s1m1s1m1s1m2s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1" "m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1" "m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1" "m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1m1s1" diff --git a/lib/IRremoteESP8266-2.7.7/test/IRsend_test.h b/lib/IRremoteESP8266-2.7.8/test/IRsend_test.h similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/IRsend_test.h rename to lib/IRremoteESP8266-2.7.8/test/IRsend_test.h diff --git a/lib/IRremoteESP8266-2.7.7/test/IRutils_test.cpp b/lib/IRremoteESP8266-2.7.8/test/IRutils_test.cpp similarity index 95% rename from lib/IRremoteESP8266-2.7.7/test/IRutils_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/IRutils_test.cpp index b079893cd..ecb23dbbf 100644 --- a/lib/IRremoteESP8266-2.7.7/test/IRutils_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/IRutils_test.cpp @@ -518,6 +518,7 @@ TEST(TestUtils, MinsToString) { } TEST(TestUtils, sumNibbles) { + // PTR/Array variant. uint8_t testdata[] = {0x01, 0x23, 0x45}; EXPECT_EQ(0, irutils::sumNibbles(testdata, 0)); EXPECT_EQ(1, irutils::sumNibbles(testdata, 0, 1)); @@ -525,6 +526,30 @@ TEST(TestUtils, sumNibbles) { EXPECT_EQ(2, irutils::sumNibbles(testdata, 1, 1)); EXPECT_EQ(15, irutils::sumNibbles(testdata, 3)); EXPECT_EQ(115, irutils::sumNibbles(testdata, 3, 100)); + + // Integer variant. + EXPECT_EQ(0x0, irutils::sumNibbles(0x0)); + EXPECT_EQ(0x1, irutils::sumNibbles(0x1)); + EXPECT_EQ(0xF, irutils::sumNibbles(0xF)); + EXPECT_EQ(0x4, irutils::sumNibbles(0x1111)); + EXPECT_EQ(0x8, irutils::sumNibbles(0x2222)); + EXPECT_EQ(0x0, irutils::sumNibbles(0x4444)); + EXPECT_EQ(0xA, irutils::sumNibbles(0x1234)); + EXPECT_EQ(0xA, irutils::sumNibbles(0x4321)); + EXPECT_EQ(0xE, irutils::sumNibbles(0xABCD)); + EXPECT_EQ(0x1, irutils::sumNibbles(0x4AE5)); + EXPECT_EQ(0xC, irutils::sumNibbles(0xFFFF)); + EXPECT_EQ(0x1, irutils::sumNibbles(0xC005)); + EXPECT_EQ(0x4, irutils::sumNibbles(0xC035)); + EXPECT_EQ(0x2, irutils::sumNibbles(0x88C0051)); + EXPECT_EQ(0x1, irutils::sumNibbles(0x88C0051, 1)); + EXPECT_EQ(0x2, irutils::sumNibbles(0x88C0051, 1, 1)); + EXPECT_EQ(0x6, irutils::sumNibbles(0x88C0051, 2)); + EXPECT_EQ(0x6, irutils::sumNibbles(0x88C0051, 4)); + EXPECT_EQ(0x2, irutils::sumNibbles(0x88C0051, 5)); + EXPECT_EQ(0x22, irutils::sumNibbles(0x88C0051, 16, 0, false)); + EXPECT_EQ(0x12, irutils::sumNibbles(0x88C0051, 5, 0, false)); + EXPECT_EQ(0x22, irutils::sumNibbles(0x88C0051, 255, 0, false)); } TEST(TestUtils, BCD) { diff --git a/lib/IRremoteESP8266-2.7.7/test/Makefile b/lib/IRremoteESP8266-2.7.8/test/Makefile similarity index 99% rename from lib/IRremoteESP8266-2.7.7/test/Makefile rename to lib/IRremoteESP8266-2.7.8/test/Makefile index 7b36c5743..ab64e28ed 100644 --- a/lib/IRremoteESP8266-2.7.7/test/Makefile +++ b/lib/IRremoteESP8266-2.7.8/test/Makefile @@ -24,7 +24,7 @@ INCLUDES = -I$(USER_DIR) -I. CPPFLAGS += -isystem $(GTEST_DIR)/include -DUNIT_TEST -D_IR_LOCALE_=en-AU # Flags passed to the C++ compiler. -CXXFLAGS += -g -Wall -Wextra -pthread -std=gnu++11 +CXXFLAGS += -g -Wall -Wextra -Werror -pthread -std=gnu++11 # All tests produced by this Makefile. generated from all *_test.cpp files TESTS = $(patsubst %.cpp,%,$(wildcard *_test.cpp)) diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Airwell_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Airwell_test.cpp similarity index 72% rename from lib/IRremoteESP8266-2.7.7/test/ir_Airwell_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Airwell_test.cpp index b58bceced..09300bac2 100644 --- a/lib/IRremoteESP8266-2.7.7/test/ir_Airwell_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/ir_Airwell_test.cpp @@ -41,7 +41,7 @@ TEST(TestDecodeAirwell, RealExample) { ASSERT_TRUE(irrecv.decode(&irsend.capture)); ASSERT_EQ(decode_type_t::AIRWELL, irsend.capture.decode_type); ASSERT_EQ(kAirwellBits, irsend.capture.bits); - EXPECT_EQ(0x4F2FE7E4, irsend.capture.value); + EXPECT_EQ(0x2B0D0181B, irsend.capture.value); EXPECT_EQ(0x0, irsend.capture.address); EXPECT_EQ(0x0, irsend.capture.command); @@ -73,7 +73,7 @@ TEST(TestDecodeAirwell, RealExample) { ASSERT_TRUE(irrecv.decode(&irsend.capture)); ASSERT_EQ(decode_type_t::AIRWELL, irsend.capture.decode_type); ASSERT_EQ(kAirwellBits, irsend.capture.bits); - EXPECT_EQ(0x8F07E7E4, irsend.capture.value); + EXPECT_EQ(0x270F8181B, irsend.capture.value); EXPECT_EQ(0x0, irsend.capture.address); EXPECT_EQ(0x0, irsend.capture.command); } @@ -83,46 +83,16 @@ TEST(TestDecodeAirwell, SyntheticExample) { IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); - irsend.sendAirwell(0xB0D0181B); + irsend.sendAirwell(0x2B0D0181B); irsend.makeDecodeResult(); ASSERT_TRUE(irrecv.decode(&irsend.capture)); EXPECT_EQ(decode_type_t::AIRWELL, irsend.capture.decode_type); EXPECT_EQ(kAirwellBits, irsend.capture.bits); - EXPECT_EQ(0xB0D0181B, irsend.capture.value); + EXPECT_EQ(0x2B0D0181B, irsend.capture.value); EXPECT_EQ(0x0, irsend.capture.address); EXPECT_EQ(0x0, irsend.capture.command); - EXPECT_EQ( - "f38000d50" - "m2850s3800" - "m1900s950m950s1900m1900s950m950s1900m950s950m950s950m950s950" - "m1900s950m950s1900m1900s1900m950s950m950s950m950s950m950s950" - "m950s950m950s950m1900s950m950s1900m950s950m950s950m950s950" - "m950s950m950s950m1900s950m950s1900m1900s950m950s950" - "m2850s3800" - "m1900s950m950s1900m1900s950m950s1900m950s950m950s950m950s950" - "m1900s950m950s1900m1900s1900m950s950m950s950m950s950m950s950" - "m950s950m950s950m1900s950m950s1900m950s950m950s950m950s950" - "m950s950m950s950m1900s950m950s1900m1900s950m950s950" - "m2850s3800" - "m1900s950m950s1900m1900s950m950s1900m950s950m950s950m950s950" - "m1900s950m950s1900m1900s1900m950s950m950s950m950s950m950s950" - "m950s950m950s950m1900s950m950s1900m950s950m950s950m950s950" - "m950s950m950s950m1900s950m950s1900m1900s950m950s950" - "m3800s100000", - irsend.outputStr()); - - irsend.reset(); - irsend.sendAirwell(0x4F2FE7E4); - irsend.makeDecodeResult(); - - ASSERT_TRUE(irrecv.decode(&irsend.capture)); - EXPECT_EQ(decode_type_t::AIRWELL, irsend.capture.decode_type); - EXPECT_EQ(kAirwellBits, irsend.capture.bits); - EXPECT_EQ(0x4F2FE7E4, irsend.capture.value); - EXPECT_EQ(0x0, irsend.capture.address); - EXPECT_EQ(0x0, irsend.capture.command); EXPECT_EQ( "f38000d50" "m2850s3800" @@ -143,6 +113,36 @@ TEST(TestDecodeAirwell, SyntheticExample) { "m4750s100000", irsend.outputStr()); + irsend.reset(); + irsend.sendAirwell(0x60080002); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(decode_type_t::AIRWELL, irsend.capture.decode_type); + EXPECT_EQ(kAirwellBits, irsend.capture.bits); + EXPECT_EQ(0x60080002, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + EXPECT_EQ( + "f38000d50" + "m2850s2850" + "m950s950m950s950m950s1900m950s950m1900s950m950s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s1900m1900s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s950m950s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s950m950s1900m1900s950" + "m2850s2850" + "m950s950m950s950m950s1900m950s950m1900s950m950s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s1900m1900s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s950m950s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s950m950s1900m1900s950" + "m2850s2850" + "m950s950m950s950m950s1900m950s950m1900s950m950s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s1900m1900s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s950m950s950m950s950m950s950" + "m950s950m950s950m950s950m950s950m950s950m950s1900m1900s950" + "m3800s100000", + irsend.outputStr()); + irsend.reset(); irsend.sendAirwell(0x70F8181B); irsend.makeDecodeResult(); @@ -214,3 +214,40 @@ TEST(TestUtils, Housekeeping) { ASSERT_EQ(kAirwellBits, IRsend::defaultBits(decode_type_t::AIRWELL)); ASSERT_EQ(kAirwellMinRepeats, IRsend::minRepeats(decode_type_t::AIRWELL)); } + +// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1069 +// Data from: +// https://docs.google.com/spreadsheets/d/1MeqVsgXQAMSiAx7zNunG8qbFcIT8tqZtcjLmMa0GEng/edit#gid=1053299474&range=M2:GW2 +TEST(TestDecodeAirwell, RealExample3) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + const uint16_t rawData[193] = { + 3010, 2852, + 904, 1042, 872, 1052, 872, 1932, 904, 956, 1878, 1050, 874, 1046, 872, + 956, 876, 1048, 872, 1044, 876, 1046, 874, 958, 872, 1050, 872, 1966, + 1880, 956, 872, 1048, 874, 1048, 872, 1050, 872, 958, 872, 1050, 872, + 1048, 872, 1050, 872, 958, 872, 1048, 872, 1050, 872, 1048, 872, 958, 872, + 1050, 872, 1048, 872, 1050, 872, 1872, 1880, 1048, + 2978, 2880, + 872, 1048, 872, 1050, 872, 1964, 872, 958, 1880, 1050, 872, 1050, 872, + 958, 872, 1050, 872, 1050, 872, 1050, 872, 958, 872, 1050, 872, 1964, + 1882, 958, 870, 1050, 872, 1048, 872, 1050, 872, 958, 872, 1048, 872, + 1050, 872, 1050, 872, 958, 872, 1050, 872, 1050, 872, 1050, 872, 958, 872, + 1050, 872, 1050, 872, 1050, 872, 1874, 1880, 1050, + 2978, 2880, + 872, 1050, 872, 1050, 872, 1964, 872, 958, 1880, 1050, 872, 1050, 872, + 958, 872, 1050, 872, 1050, 872, 1050, 872, 958, 872, 1050, 872, 1964, + 1880, 958, 872, 1050, 872, 1050, 872, 1050, 872, 958, 872, 1052, 870, + 1050, 872, 1050, 872, 958, 872, 1050, 872, 1050, 872, 1050, 872, 958, 872, + 1050, 872, 1050, 872, 1050, 872, 1874, 1880, 1050, 3894}; + irsend.reset(); + irsend.sendRaw(rawData, 193, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decodeAirwell(&irsend.capture)); + ASSERT_EQ(decode_type_t::AIRWELL, irsend.capture.decode_type); + ASSERT_EQ(kAirwellBits, irsend.capture.bits); + EXPECT_EQ(0x60080002, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); +} diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Aiwa_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Aiwa_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Aiwa_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Aiwa_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Amcor_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Amcor_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Amcor_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Amcor_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Argo_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Argo_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Argo_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Argo_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Carrier_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Carrier_test.cpp similarity index 75% rename from lib/IRremoteESP8266-2.7.7/test/ir_Carrier_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Carrier_test.cpp index 5e7a53220..fb6fb1b1b 100644 --- a/lib/IRremoteESP8266-2.7.7/test/ir_Carrier_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/ir_Carrier_test.cpp @@ -1,5 +1,6 @@ // Copyright 2018, 2020 David Conran +#include "ir_Carrier.h" #include "IRac.h" #include "IRrecv.h" #include "IRsend.h" @@ -256,7 +257,7 @@ TEST(TestUtils, Housekeeping) { ASSERT_EQ("CARRIER_AC64", typeToString(decode_type_t::CARRIER_AC64)); ASSERT_EQ(decode_type_t::CARRIER_AC64, strToDecodeType("CARRIER_AC64")); ASSERT_FALSE(hasACState(decode_type_t::CARRIER_AC64)); - ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::CARRIER_AC64)); + ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::CARRIER_AC64)); ASSERT_EQ(kCarrierAc64Bits, IRsend::defaultBits(decode_type_t::CARRIER_AC64)); ASSERT_EQ(kCarrierAc64MinRepeat, @@ -318,7 +319,7 @@ TEST(TestDecodeCarrierAC40, SyntheticExample) { "m547s497m547s497m547s497m547s1540m547s497m547s497m547s1540m547s497" "m547s1540m547s1540m547s497m547s497m547s497m547s497m547s497m547s497" "m547s1540m547s1540m547s1540m547s1540m547s497m547s1540m547s497m547s497" - "m547s20000" + "m547s150000" // Repeat #1 "m8402s4166" "m547s1540m547s1540m547s1540m547s1540m547s497m547s497m547s497m547s497" @@ -326,7 +327,7 @@ TEST(TestDecodeCarrierAC40, SyntheticExample) { "m547s497m547s497m547s497m547s1540m547s497m547s497m547s1540m547s497" "m547s1540m547s1540m547s497m547s497m547s497m547s497m547s497m547s497" "m547s1540m547s1540m547s1540m547s1540m547s497m547s1540m547s497m547s497" - "m547s20000" + "m547s150000" // Repeat #2 "m8402s4166" "m547s1540m547s1540m547s1540m547s1540m547s497m547s497m547s497m547s497" @@ -334,7 +335,7 @@ TEST(TestDecodeCarrierAC40, SyntheticExample) { "m547s497m547s497m547s497m547s1540m547s497m547s497m547s1540m547s497" "m547s1540m547s1540m547s497m547s497m547s497m547s497m547s497m547s497" "m547s1540m547s1540m547s1540m547s1540m547s497m547s1540m547s497m547s497" - "m547s20000", + "m547s150000", irsend.outputStr()); } @@ -368,6 +369,10 @@ TEST(TestDecodeCarrierAC64, RealExample) { EXPECT_EQ(0x404000102E5E5584, irsend.capture.value); EXPECT_EQ(0, irsend.capture.address); EXPECT_EQ(0, irsend.capture.command); + EXPECT_EQ( + "Power: On, Mode: 1 (Heat), Temp: 30C, Fan: 1 (Low), Swing(V): On, " + "Sleep: Off, On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); } /// Send & Decode a synthetic message. @@ -403,3 +408,207 @@ TEST(TestDecodeCarrierAC64, SyntheticExample) { "m503s100000", irsend.outputStr()); } + +// Tests for IRCarrierAc64 class. + +TEST(TestCarrierAc64Class, Power) { + IRCarrierAc64 ac(kGpioUnused); + ac.begin(); + + ac.on(); + EXPECT_TRUE(ac.getPower()); + + ac.off(); + EXPECT_FALSE(ac.getPower()); + + ac.setPower(true); + EXPECT_TRUE(ac.getPower()); + + ac.setPower(false); + EXPECT_FALSE(ac.getPower()); + + ASSERT_EQ(36, kCarrierAc64PowerOffset); +} + +TEST(TestCarrierAc64Class, Temperature) { + IRCarrierAc64 ac(kGpioUnused); + ac.begin(); + + ac.setTemp(0); + EXPECT_EQ(kCarrierAc64MinTemp, ac.getTemp()); + + ac.setTemp(255); + EXPECT_EQ(kCarrierAc64MaxTemp, ac.getTemp()); + + ac.setTemp(kCarrierAc64MinTemp); + EXPECT_EQ(kCarrierAc64MinTemp, ac.getTemp()); + + ac.setTemp(kCarrierAc64MaxTemp); + EXPECT_EQ(kCarrierAc64MaxTemp, ac.getTemp()); + + ac.setTemp(kCarrierAc64MinTemp - 1); + EXPECT_EQ(kCarrierAc64MinTemp, ac.getTemp()); + + ac.setTemp(kCarrierAc64MaxTemp + 1); + EXPECT_EQ(kCarrierAc64MaxTemp, ac.getTemp()); + + ac.setTemp(17); + EXPECT_EQ(17, ac.getTemp()); + + ac.setTemp(21); + EXPECT_EQ(21, ac.getTemp()); + + ac.setTemp(25); + EXPECT_EQ(25, ac.getTemp()); + + ac.setTemp(29); + EXPECT_EQ(29, ac.getTemp()); +} + +TEST(TestCarrierAc64Class, OperatingMode) { + IRCarrierAc64 ac(kGpioUnused); + ac.begin(); + + ac.setMode(kCarrierAc64Cool); + EXPECT_EQ(kCarrierAc64Cool, ac.getMode()); + + ac.setMode(kCarrierAc64Fan); + EXPECT_EQ(kCarrierAc64Fan, ac.getMode()); + + ac.setMode(kCarrierAc64Heat); + EXPECT_EQ(kCarrierAc64Heat, ac.getMode()); + + ac.setMode(kCarrierAc64Fan + 1); + EXPECT_EQ(kCarrierAc64Cool, ac.getMode()); + + ac.setMode(255); + EXPECT_EQ(kCarrierAc64Cool, ac.getMode()); + ac.setMode(0); + EXPECT_EQ(kCarrierAc64Cool, ac.getMode()); +} + +TEST(TestCarrierAc64Class, Sleep) { + IRCarrierAc64 ac(kGpioUnused); + ac.begin(); + ac.setSleep(true); + EXPECT_TRUE(ac.getSleep()); + ac.setSleep(false); + EXPECT_FALSE(ac.getSleep()); + ac.setSleep(true); + EXPECT_TRUE(ac.getSleep()); +} + +TEST(TestCarrierAc64Class, SwingVertical) { + IRCarrierAc64 ac(kGpioUnused); + ac.begin(); + ac.setSwingV(true); + EXPECT_TRUE(ac.getSwingV()); + ac.setSwingV(false); + EXPECT_FALSE(ac.getSwingV()); + ac.setSwingV(true); + EXPECT_TRUE(ac.getSwingV()); +} + +TEST(TestCarrierAc64Class, FanSpeed) { + IRCarrierAc64 ac(kGpioUnused); + ac.begin(); + + // Unexpected value should default to Auto. + ac.setFan(255); + EXPECT_EQ(kCarrierAc64FanAuto, ac.getFan()); + ac.setFan(5); + EXPECT_EQ(kCarrierAc64FanAuto, ac.getFan()); + + ac.setFan(kCarrierAc64FanHigh); + EXPECT_EQ(kCarrierAc64FanHigh, ac.getFan()); + + // Beyond High should default to Auto. + ac.setFan(kCarrierAc64FanHigh + 1); + EXPECT_EQ(kCarrierAc64FanAuto, ac.getFan()); + + ac.setFan(kCarrierAc64FanMedium); + EXPECT_EQ(kCarrierAc64FanMedium, ac.getFan()); + + ac.setFan(kCarrierAc64FanLow); + EXPECT_EQ(kCarrierAc64FanLow, ac.getFan()); + + ac.setFan(kCarrierAc64FanAuto); + EXPECT_EQ(kCarrierAc64FanAuto, ac.getFan()); +} + +TEST(TestCarrierAc64Class, ChecksumAndSetGetRaw) { + IRCarrierAc64 ac(kGpioUnused); + + const uint64_t valid = 0x90900030205C5584; + const uint64_t invalid = 0x9090003020505584; + ASSERT_NE(valid, invalid); + ASSERT_EQ(0x0C, IRCarrierAc64::calcChecksum(valid)); + ASSERT_TRUE(IRCarrierAc64::validChecksum(valid)); + ASSERT_FALSE(IRCarrierAc64::validChecksum(invalid)); + ac.setRaw(valid); + ASSERT_EQ(valid, ac.getRaw()); + ac.setRaw(invalid); + ASSERT_EQ(valid, ac.getRaw()); + + // Additional known states. + ASSERT_TRUE(IRCarrierAc64::validChecksum(0x109000002C2A5584)); + ASSERT_TRUE(IRCarrierAc64::validChecksum(0x109000102C2B5584)); +} + +// Test human readable output. +TEST(TestCarrierAc64Class, HumanReadable) { + IRCarrierAc64 ac(kGpioUnused); + EXPECT_EQ( + "Power: Off, Mode: 2 (Cool), Temp: 28C, Fan: 0 (Auto), Swing(V): On, " + "Sleep: Off, On Timer: Off, Off Timer: Off", + ac.toString()); + ac.setPower(true); + ac.setMode(kCarrierAc64Fan); + ac.setTemp(30); + ac.setFan(kCarrierAc64FanAuto); + ac.setSwingV(true); + EXPECT_EQ( + "Power: On, Mode: 3 (Fan), Temp: 30C, Fan: 0 (Auto), Swing(V): On, " + "Sleep: Off, On Timer: Off, Off Timer: Off", + ac.toString()); + ac.setOffTimer(8* 60 + 37); + EXPECT_EQ( + "Power: On, Mode: 3 (Fan), Temp: 30C, Fan: 0 (Auto), Swing(V): On, " + "Sleep: Off, On Timer: Off, Off Timer: 08:00", + ac.toString()); + ac.setOnTimer(5 * 60 + 59); + EXPECT_EQ( + "Power: On, Mode: 3 (Fan), Temp: 30C, Fan: 0 (Auto), Swing(V): On, " + "Sleep: Off, On Timer: 05:00, Off Timer: Off", + ac.toString()); + ac.setOnTimer(59); + EXPECT_EQ( + "Power: On, Mode: 3 (Fan), Temp: 30C, Fan: 0 (Auto), Swing(V): On, " + "Sleep: Off, On Timer: Off, Off Timer: Off", + ac.toString()); + ac.setSleep(true); + EXPECT_EQ( + "Power: On, Mode: 3 (Fan), Temp: 30C, Fan: 0 (Auto), Swing(V): On, " + "Sleep: On, On Timer: Off, Off Timer: Off", + ac.toString()); +} + +TEST(TestCarrierAc64Class, ReconstructKnownState) { + IRCarrierAc64 ac(kGpioUnused); + const uint64_t expected = 0x2030009020555584; + ac.begin(); + ac.stateReset(); + ASSERT_NE(expected, ac.getRaw()); + ac.on(); + ac.setMode(kCarrierAc64Heat); + ac.setTemp(16); + ac.setFan(kCarrierAc64FanLow); + ac.setSwingV(true); + ac.setOnTimer(3 * 60); + ac.setSleep(true); + EXPECT_EQ(expected, ac.getRaw()); + EXPECT_EQ( + "Power: On, Mode: 1 (Heat), Temp: 16C, Fan: 1 (Low), Swing(V): On, " + "Sleep: On, On Timer: Off, Off Timer: Off", + ac.toString()); +} diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Coolix_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Coolix_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Coolix_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Coolix_test.cpp diff --git a/lib/IRremoteESP8266-2.7.8/test/ir_Corona_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Corona_test.cpp new file mode 100644 index 000000000..4bada0854 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/test/ir_Corona_test.cpp @@ -0,0 +1,1690 @@ +// Copyright 2020 Christian Nilsson + +#include "ir_Corona.h" +#include "IRac.h" +#include "IRrecv.h" +#include "IRrecv_test.h" +#include "IRsend.h" +#include "IRsend_test.h" +#include "gtest/gtest.h" + +// Tests for decodeCoronaAc(). +TEST(TestDecodeCoronaAc, RealExample) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + + const uint16_t rawData_On[347] = { + 3520, 1686, + 460, 386, 452, 454, 408, 452, 410, 1320, 434, 428, 434, 1296, + 410, 452, 490, 374, 438, 1292, 434, 430, 434, 428, 438, 424, + 438, 426, 438, 1266, 464, 1266, 462, 402, 462, 1266, 464, 400, + 462, 1268, 464, 1266, 462, 1266, 464, 1268, 486, 376, 462, 402, + 472, 1256, 488, 378, 514, 346, 464, 1266, 488, 1240, 462, 404, + 462, 426, 460, 376, 462, 402, 488, 1240, 464, 1266, 462, 402, + 462, 400, 490, 1240, 462, 1266, 486, 1244, 460, 1268, 462, 1266, + 462, 1266, 462, 404, 458, 1270, 458, 1268, 462, 400, 464, 428, + 434, 402, 460, 402, 462, 398, 462, 1268, 462, 404, 460, 402, + 460, 1266, 466, 1264, + 462, 10808, + 3502, 1686, + 462, 400, 462, 400, 462, 400, 464, 1266, 462, 404, 458, 1266, + 464, 402, 460, 402, 462, 1266, 464, 404, 458, 402, 460, 400, + 488, 374, 464, 1266, 462, 1266, 466, 398, 462, 1268, 462, 400, + 518, 1208, 438, 1292, 440, 426, 488, 1242, 466, 1264, 460, 402, + 490, 1238, 490, 1238, 490, 1242, 514, 1212, 464, 1268, 490, 1238, + 464, 1266, 490, 1238, 462, 406, 458, 400, 464, 398, 464, 402, + 488, 374, 486, 376, 460, 402, 488, 372, 464, 1268, 462, 1264, + 464, 1266, 462, 1268, 462, 1266, 466, 1266, 490, 1242, 458, 1264, + 516, 348, 462, 404, 460, 404, 462, 398, 516, 344, 462, 400, + 464, 402, 488, 376, + 460, 10810, + 3526, 1658, + 462, 404, 460, 400, 488, 374, 464, 1264, 462, 402, 464, 1266, + 462, 402, 486, 374, 462, 1266, 546, 318, 462, 400, 464, 400, + 462, 402, 460, 1268, 466, 1262, 492, 374, 516, 1212, 464, 400, + 462, 1266, 516, 1212, 464, 402, 462, 424, 462, 1242, 460, 1268, + 488, 1242, 462, 1268, 490, 1236, 466, 1264, 462, 1268, 464, 1266, + 460, 1268, 464, 1266, 462, 338, 528, 402, 486, 374, 462, 402, + 460, 402, 490, 374, 458, 406, 458, 402, 488, 1240, 490, 1238, + 462, 1268, 464, 1268, 490, 1238, 488, 1242, 462, 1264, 464, 1270, + 462, 398, 436, 426, 460, 406, 458, 404, 434, 424, 464, 400, + 462, 400, 460, 402, + 462}; // UNKNOWN 94D81276 * ON + const uint8_t expectedState_On[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x37, 0xC8, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_On, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_On, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: On, Mode: 0 (Heat), Temp: 23C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_Off[347] = { + 3520, 1686, + 462, 400, 460, 402, 462, 382, 482, 1266, 462, 400, 462, 1268, + 462, 404, 488, 372, 462, 1266, 464, 402, 458, 404, 458, 382, + 482, 400, 462, 1266, 438, 1294, 488, 376, 460, 1268, 460, 400, + 470, 1260, 460, 1270, 462, 1268, 460, 1268, 462, 404, 458, 402, + 460, 1266, 462, 402, 462, 400, 462, 1268, 464, 1264, 462, 384, + 480, 400, 460, 404, 448, 414, 460, 1268, 462, 1268, 460, 402, + 490, 372, 462, 1268, 464, 1266, 462, 1268, 460, 1266, 464, 1266, + 464, 1266, 462, 404, 460, 400, 438, 1294, 486, 376, 462, 400, + 462, 402, 462, 400, 460, 402, 462, 1268, 460, 1268, 462, 404, + 486, 1240, 464, 1268, + 460, 10788, + 3524, 1682, + 462, 402, 462, 402, 460, 404, 460, 1266, 490, 374, 460, 1268, + 464, 400, 460, 406, 460, 1268, 464, 400, 458, 402, 462, 404, + 458, 404, 460, 1268, 460, 1268, 464, 400, 466, 1268, 456, 404, + 460, 1268, 460, 1268, 462, 402, 462, 1268, 462, 1266, 462, 402, + 462, 1268, 462, 1266, 488, 1242, 462, 1264, 460, 1270, 462, 1266, + 464, 1264, 462, 1270, 460, 402, 462, 402, 462, 400, 460, 402, + 462, 402, 462, 400, 462, 400, 460, 402, 462, 1266, 462, 1266, + 460, 1270, 462, 1268, 462, 1266, 460, 1268, 462, 1268, 462, 1268, + 462, 400, 458, 404, 466, 396, 436, 428, 460, 402, 460, 404, + 460, 402, 436, 428, + 462, 10794, + 3520, 1682, + 490, 376, 460, 402, 462, 402, 462, 1266, 462, 400, 462, 1268, + 460, 402, 460, 400, 462, 1266, 464, 400, 460, 402, 488, 378, + 456, 384, 482, 1268, 460, 1268, 462, 402, 460, 1268, 460, 404, + 460, 1268, 436, 1276, 480, 404, 456, 404, 460, 1268, 462, 1268, + 460, 1268, 462, 1270, 462, 1268, 462, 1268, 462, 1266, 460, 1268, + 462, 1268, 462, 1268, 462, 400, 462, 384, 478, 404, 460, 384, + 480, 400, 488, 376, 460, 404, 458, 404, 460, 1268, 464, 1264, + 462, 1268, 462, 1268, 462, 1270, 462, 1268, 486, 1244, 460, 1266, + 462, 400, 462, 400, 462, 402, 460, 404, 460, 400, 460, 404, + 486, 374, 462, 400, + 464}; // UNKNOWN A37A38D7 * Off + const uint8_t expectedState_Off[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x27, 0xD8, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_Off, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_Off, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: Off, Power Button: On, Mode: 0 (Heat), Temp: 23C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_17C[347] = { + 3522, 1686, + 458, 404, 486, 374, 434, 432, 482, 1244, 462, 400, 460, 1268, + 462, 400, 462, 386, 478, 1268, 462, 402, 462, 404, 458, 400, + 464, 400, 462, 1272, 456, 1268, 460, 402, 460, 1270, 434, 428, + 462, 1268, 460, 1268, 464, 1268, 460, 1266, 462, 402, 460, 382, + 482, 1264, 464, 400, 462, 402, 460, 1268, 460, 1270, 462, 404, + 460, 400, 460, 402, 462, 382, 506, 1242, 462, 1268, 464, 398, + 460, 398, 466, 1268, 458, 1268, 462, 1266, 462, 1266, 462, 402, + 458, 406, 460, 402, 460, 1270, 460, 406, 432, 428, 462, 402, + 438, 424, 460, 1268, 462, 1270, 460, 1266, 462, 402, 462, 1266, + 462, 1270, 460, 1268, + 438, 10814, + 3522, 1684, + 462, 402, 464, 402, 460, 400, 462, 1266, 462, 400, 462, 1266, + 466, 398, 462, 402, 460, 1270, 460, 384, 478, 402, 434, 428, + 462, 402, 516, 1212, 436, 1294, 460, 402, 460, 1268, 464, 400, + 460, 1268, 462, 1268, 434, 428, 462, 1266, 462, 1266, 462, 400, + 460, 1270, 462, 1268, 458, 1268, 436, 1274, 480, 1268, 460, 1266, + 490, 1240, 462, 1268, 460, 404, 460, 402, 488, 376, 462, 402, + 460, 402, 492, 370, 462, 400, 464, 402, 458, 1268, 490, 1240, + 460, 1268, 464, 1266, 462, 1266, 460, 1272, 460, 1266, 462, 1266, + 464, 400, 462, 404, 462, 400, 462, 402, 458, 384, 480, 402, + 458, 402, 460, 402, + 464, 10810, + 3528, 1660, + 490, 374, 462, 404, 458, 400, 462, 1268, 460, 404, 460, 1270, + 458, 402, 460, 402, 462, 1266, 486, 378, 460, 382, 506, 376, + 458, 404, 460, 1270, 460, 1270, 460, 402, 460, 1268, 464, 402, + 456, 1268, 462, 1268, 462, 402, 460, 402, 462, 1266, 462, 1266, + 464, 1266, 460, 1272, 460, 1266, 464, 1266, 462, 1266, 462, 1268, + 462, 1266, 462, 1268, 462, 402, 460, 404, 462, 402, 512, 352, + 512, 346, 438, 426, 462, 402, 460, 400, 462, 1268, 462, 1268, + 462, 1268, 460, 1270, 434, 1292, 464, 1266, 462, 1268, 460, 1270, + 514, 350, 432, 430, 460, 402, 460, 404, 460, 384, 480, 400, + 490, 374, 458, 404, + 462}; // UNKNOWN 8CC3C997 * 17C + const uint8_t expectedState_17C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x11, 0xEE, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_17C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_17C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 17C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_18C[347] = { + 3520, 1686, + 462, 400, 460, 402, 436, 426, 488, 1242, 460, 402, 460, 1270, + 460, 404, 462, 398, 462, 1268, 462, 402, 462, 402, 436, 326, + 536, 430, 458, 1266, 462, 1268, 486, 380, 456, 1270, 462, 400, + 462, 1268, 462, 1266, 490, 1240, 438, 1292, 462, 404, 462, 400, + 462, 1266, 460, 404, 458, 404, 484, 1244, 466, 1264, 460, 402, + 436, 430, 458, 400, 436, 426, 460, 1268, 462, 1268, 438, 426, + 434, 428, 462, 1268, 462, 1266, 464, 1266, 462, 428, 436, 1268, + 436, 406, 480, 402, 462, 1270, 458, 404, 460, 402, 488, 374, + 464, 1246, 480, 400, 436, 1292, 488, 1242, 462, 402, 460, 1268, + 462, 1250, 480, 1268, + 462, 10790, + 3520, 1684, + 464, 402, 460, 404, 462, 398, 462, 1266, 464, 400, 462, 1270, + 460, 402, 458, 406, 456, 1268, 436, 424, 464, 400, 460, 404, + 462, 400, 462, 1268, 462, 1268, 464, 398, 488, 1238, 464, 400, + 462, 1268, 462, 1248, 478, 384, 482, 1264, 436, 1292, 462, 402, + 462, 1266, 464, 1266, 460, 1268, 464, 1268, 462, 1266, 462, 1266, + 464, 1266, 462, 1268, 462, 402, 486, 376, 464, 398, 460, 404, + 462, 402, 436, 426, 462, 428, 408, 428, 460, 1268, 460, 1268, + 436, 1290, 466, 1264, 464, 1266, 460, 1270, 462, 1264, 462, 1268, + 460, 404, 462, 402, 460, 400, 462, 404, 458, 404, 460, 404, + 460, 382, 482, 400, + 460, 10812, + 3480, 1706, + 464, 402, 482, 376, 460, 404, 458, 1270, 462, 402, 462, 1268, + 462, 400, 460, 402, 462, 1268, 462, 400, 462, 400, 464, 400, + 436, 426, 436, 1294, 462, 1268, 462, 402, 516, 1212, 462, 402, + 464, 1266, 460, 1266, 438, 428, 460, 402, 460, 1268, 462, 1268, + 488, 1242, 462, 1264, 460, 1270, 462, 1266, 462, 1266, 462, 1268, + 462, 1268, 460, 1270, 462, 400, 462, 402, 460, 400, 462, 400, + 488, 378, 458, 402, 462, 400, 516, 348, 460, 1268, 436, 1276, + 478, 1268, 436, 1292, 462, 1270, 460, 1268, 462, 1248, 484, 1266, + 460, 400, 464, 402, 460, 404, 432, 426, 436, 430, 462, 400, + 432, 428, 434, 426, + 464}; // UNKNOWN 513BFA3A * 18C + const uint8_t expectedState_18C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x12, 0xED, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_18C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_18C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 18C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_19C[347] = { + 3508, 1682, + 490, 350, 488, 372, 514, 372, 466, 1262, 468, 398, 464, 1262, + 466, 396, 466, 396, 496, 1234, 442, 400, 488, 396, 470, 396, + 464, 396, 466, 1262, 468, 1260, 466, 396, 468, 1262, 466, 396, + 520, 1210, 474, 1254, 470, 1260, 466, 1266, 464, 396, 494, 368, + 468, 1260, 468, 364, 498, 396, 466, 1264, 470, 1260, 466, 394, + 466, 398, 468, 392, 494, 370, 466, 1262, 524, 1206, 466, 398, + 466, 396, 520, 1210, 492, 1238, 464, 1268, 466, 1260, 492, 1236, + 494, 350, 484, 398, 466, 1262, 468, 1264, 466, 396, 468, 396, + 492, 350, 486, 398, 466, 1262, 494, 1236, 466, 394, 468, 396, + 492, 1236, 494, 1236, + 466, 10804, + 3508, 1680, + 466, 292, 572, 396, 464, 396, 466, 1262, 466, 398, 466, 1264, + 468, 374, 488, 296, 568, 1262, 464, 396, 524, 288, 520, 396, + 468, 396, 492, 1234, 466, 1266, 464, 398, 464, 1262, 468, 398, + 492, 1234, 468, 1262, 466, 396, 442, 1286, 468, 1264, 466, 394, + 468, 1264, 518, 1210, 492, 1238, 466, 1264, 520, 1206, 468, 1262, + 468, 1260, 472, 1260, 466, 394, 468, 396, 494, 348, 488, 376, + 484, 396, 470, 396, 464, 396, 494, 346, 492, 1260, 468, 1262, + 468, 1262, 492, 1236, 494, 1236, 492, 1236, 466, 1262, 468, 1262, + 468, 394, 466, 398, 492, 370, 466, 396, 468, 394, 496, 368, + 492, 370, 466, 398, + 490, 10780, + 3510, 1680, + 468, 374, 486, 396, 494, 348, 486, 1264, 492, 368, 492, 1236, + 468, 398, 466, 394, 468, 1262, 464, 304, 536, 402, 512, 370, + 492, 370, 492, 1236, 468, 1262, 468, 394, 492, 1238, 466, 398, + 466, 1264, 468, 1262, 490, 372, 492, 290, 546, 1262, 522, 1208, + 466, 1264, 466, 1264, 468, 1258, 494, 1236, 468, 1264, 466, 1264, + 520, 1208, 494, 1238, 494, 370, 466, 396, 464, 396, 520, 292, + 518, 394, 468, 398, 464, 376, 490, 394, 468, 1264, 464, 1264, + 466, 1260, 466, 1264, 496, 1232, 466, 1262, 468, 1262, 466, 1264, + 466, 396, 492, 372, 468, 374, 486, 398, 464, 396, 468, 398, + 464, 398, 466, 396, + 464}; // CORONA_AC * On 19C + const uint8_t expectedState_19C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x33, 0xCC, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_19C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_19C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: On, Mode: 0 (Heat), Temp: 19C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_20C[347] = { + 3522, 1684, + 466, 398, 462, 402, 462, 382, 480, 1266, 460, 404, 462, 1266, + 464, 400, 464, 398, 462, 1268, 462, 400, 462, 404, 460, 402, + 458, 402, 466, 1266, 434, 1292, 462, 402, 460, 1268, 460, 386, + 478, 1266, 462, 1268, 460, 1268, 460, 1268, 462, 404, 460, 402, + 462, 1266, 462, 384, 480, 404, 460, 1268, 436, 1294, 460, 402, + 462, 400, 464, 402, 456, 406, 460, 1268, 464, 1264, 468, 398, + 460, 402, 460, 1270, 488, 1240, 460, 1270, 434, 430, 458, 402, + 458, 1270, 462, 402, 462, 1268, 462, 400, 462, 400, 462, 402, + 462, 1266, 464, 1264, 462, 404, 432, 1296, 438, 426, 462, 1268, + 458, 1270, 460, 1268, + 464, 10788, + 3518, 1686, + 488, 376, 462, 400, 462, 402, 460, 1268, 436, 426, 438, 1292, + 462, 402, 518, 344, 462, 1266, 462, 400, 460, 402, 436, 428, + 460, 402, 458, 1268, 438, 1292, 438, 424, 464, 1266, 460, 404, + 460, 1266, 462, 1268, 462, 400, 462, 1268, 462, 1266, 462, 400, + 462, 1268, 462, 1268, 464, 1264, 462, 1266, 460, 1270, 486, 1242, + 462, 1268, 436, 1294, 508, 292, 526, 400, 462, 402, 460, 402, + 488, 374, 462, 404, 436, 424, 462, 402, 438, 1292, 460, 1266, + 462, 1268, 460, 1266, 464, 1268, 460, 1268, 436, 1294, 490, 1240, + 434, 428, 438, 424, 460, 404, 436, 426, 462, 404, 484, 374, + 462, 404, 462, 400, + 460, 10792, + 3546, 1658, + 436, 430, 460, 400, 462, 404, 460, 1266, 462, 402, 438, 1292, + 462, 402, 458, 404, 436, 1290, 494, 374, 460, 402, 460, 402, + 462, 398, 436, 1292, 462, 1268, 462, 402, 436, 1290, 464, 400, + 462, 1266, 438, 1292, 462, 402, 490, 374, 434, 1296, 432, 1298, + 432, 1292, 464, 1266, 460, 1268, 462, 1268, 490, 1240, 436, 1292, + 464, 1266, 438, 1290, 462, 402, 436, 426, 462, 400, 460, 402, + 460, 402, 436, 426, 488, 374, 436, 428, 460, 1270, 462, 1268, + 462, 1268, 436, 1292, 462, 1266, 462, 1268, 460, 1266, 462, 1268, + 460, 406, 458, 402, 462, 402, 436, 408, 482, 400, 438, 426, + 434, 428, 460, 404, + 434}; // UNKNOWN 48F17976 * 20C + const uint8_t expectedState_20C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x14, 0xEB, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_20C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_20C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 20C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_21C[347] = { + 3522, 1684, + 434, 430, 430, 412, 460, 418, 462, 1268, 460, 386, 452, 1296, + 460, 426, 432, 386, 480, 1268, 458, 404, 432, 430, 434, 428, + 434, 428, 460, 1266, 490, 1240, 462, 402, 460, 1268, 460, 386, + 452, 1296, 458, 1272, 460, 1266, 462, 1270, 460, 404, 434, 428, + 458, 1270, 434, 430, 432, 430, 460, 1268, 462, 1270, 458, 430, + 406, 432, 456, 404, 458, 404, 466, 1262, 460, 1270, 458, 406, + 456, 406, 458, 1268, 460, 1270, 488, 1240, 490, 1240, 460, 384, + 478, 1268, 436, 430, 432, 1294, 462, 384, 450, 456, 432, 404, + 436, 430, 458, 1270, 434, 430, 460, 1268, 460, 404, 464, 1264, + 460, 1268, 460, 1270, + 460, 10808, + 3504, 1682, + 462, 402, 460, 430, 430, 406, 460, 1268, 462, 428, 436, 1268, + 434, 432, 458, 404, 458, 1272, 458, 426, 432, 406, 460, 404, + 460, 428, 406, 1296, 462, 1268, 434, 454, 408, 1278, 480, 426, + 408, 1294, 460, 1268, 460, 404, 432, 1294, 462, 1268, 458, 384, + 480, 1272, 460, 1266, 460, 1270, 460, 1268, 462, 1266, 462, 1268, + 460, 1268, 462, 1268, 436, 428, 436, 428, 464, 424, 434, 386, + 478, 428, 434, 406, 432, 410, 478, 386, 476, 1270, 462, 1270, + 462, 1266, 460, 1270, 458, 1272, 458, 1270, 436, 1292, 464, 1266, + 434, 430, 460, 428, 408, 430, 458, 404, 484, 378, 432, 430, + 460, 404, 458, 406, + 458, 10796, + 3542, 1662, + 460, 402, 434, 456, 430, 406, 458, 1270, 458, 408, 432, 1294, + 462, 382, 480, 384, 450, 1296, 488, 374, 458, 406, 432, 430, + 432, 456, 432, 1270, 436, 1292, 462, 402, 434, 1294, 434, 428, + 460, 1268, 460, 1270, 458, 402, 464, 400, 462, 1266, 460, 1270, + 460, 1270, 434, 1294, 464, 1268, 486, 1242, 464, 1266, 460, 1270, + 486, 1244, 458, 1268, 464, 402, 458, 402, 460, 404, 434, 452, + 410, 428, 432, 432, 456, 432, 408, 426, 462, 1268, 462, 1268, + 434, 1296, 462, 1268, 458, 1270, 466, 1262, 464, 1272, 456, 1268, + 460, 406, 458, 402, 460, 404, 460, 404, 460, 402, 458, 430, + 430, 386, 480, 402, + 460}; // UNKNOWN D1869C5B * 21C + const uint8_t expectedState_21C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x15, 0xEA, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_21C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_21C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 21C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_22C[347] = { + 3524, 1686, + 460, 404, 458, 402, 462, 400, 462, 1248, 482, 400, 460, 1268, + 436, 428, 488, 374, 460, 1268, 460, 404, 460, 402, 462, 402, + 460, 402, 462, 1268, 458, 1270, 458, 404, 460, 1248, 480, 402, + 462, 1268, 436, 1292, 462, 1270, 460, 1268, 462, 400, 460, 402, + 462, 1266, 460, 404, 436, 428, 462, 1266, 462, 1268, 460, 402, + 462, 402, 460, 404, 434, 428, 462, 1266, 438, 1290, 462, 404, + 460, 404, 434, 1292, 466, 1266, 436, 1294, 462, 400, 462, 1268, + 436, 1294, 460, 402, 462, 1268, 436, 426, 492, 374, 458, 400, + 464, 1266, 462, 400, 436, 428, 460, 1266, 492, 372, 462, 1268, + 460, 1268, 462, 1268, + 488, 10762, + 3496, 1710, + 462, 400, 462, 400, 460, 402, 460, 1270, 434, 426, 462, 1268, + 460, 400, 438, 424, 438, 1292, 436, 426, 460, 402, 436, 426, + 438, 426, 460, 1268, 464, 1266, 462, 400, 462, 1268, 464, 400, + 434, 1294, 464, 1268, 488, 372, 462, 1268, 464, 1264, 436, 426, + 490, 1240, 438, 1292, 464, 1264, 460, 1270, 436, 1294, 460, 1268, + 434, 1294, 462, 1266, 438, 426, 460, 402, 462, 400, 462, 402, + 462, 400, 460, 402, 462, 402, 460, 382, 482, 1268, 436, 1294, + 462, 1266, 436, 1294, 460, 1268, 438, 1290, 462, 1268, 462, 1268, + 462, 400, 462, 400, 464, 400, 462, 402, 462, 400, 488, 372, + 492, 372, 460, 402, + 460, 10810, + 3528, 1660, + 462, 404, 434, 426, 464, 400, 434, 1294, 462, 400, 464, 1266, + 462, 400, 464, 398, 466, 1264, 462, 402, 460, 402, 464, 398, + 464, 398, 462, 1268, 462, 1266, 440, 422, 462, 1268, 462, 404, + 462, 1264, 436, 1294, 460, 402, 462, 400, 438, 1292, 464, 1266, + 460, 1268, 462, 1266, 464, 1268, 462, 1266, 462, 1266, 462, 1266, + 438, 1292, 464, 1266, 460, 400, 462, 384, 480, 402, 460, 404, + 434, 428, 462, 402, 434, 428, 460, 402, 458, 1270, 462, 1266, + 464, 1266, 464, 1266, 464, 1264, 464, 1266, 462, 1246, 484, 1266, + 438, 424, 438, 424, 462, 402, 462, 400, 438, 424, 460, 402, + 462, 400, 436, 428, + 434}; // UNKNOWN 21DD90BB * 22C + const uint8_t expectedState_22C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x16, 0xE9, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_22C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_22C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 22C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_23C[347] = { + 3522, 1684, + 460, 402, 462, 428, 406, 430, 458, 1270, 462, 400, 460, 1268, + 462, 402, 462, 402, 462, 1266, 462, 404, 432, 428, 434, 428, + 462, 402, 458, 1266, 464, 1268, 458, 402, 516, 1216, 460, 404, + 458, 1268, 462, 1268, 462, 1266, 462, 1266, 462, 402, 460, 406, + 456, 1268, 462, 402, 460, 402, 462, 1268, 462, 1266, 462, 402, + 460, 402, 488, 374, 490, 398, 434, 1270, 460, 1268, 460, 404, + 460, 430, 408, 1292, 462, 1268, 462, 1266, 462, 1268, 460, 1250, + 506, 1242, 462, 400, 460, 1268, 462, 400, 460, 408, 456, 404, + 458, 404, 460, 398, 462, 404, 458, 1268, 434, 430, 460, 1268, + 462, 1266, 462, 1268, + 464, 10790, + 3520, 1682, + 464, 402, 460, 428, 406, 430, 458, 1270, 462, 402, 460, 1268, + 462, 406, 488, 374, 430, 1296, 460, 402, 462, 402, 462, 400, + 462, 402, 458, 1268, 490, 1242, 460, 402, 460, 1272, 460, 400, + 460, 1268, 462, 1266, 462, 404, 462, 1264, 462, 1266, 490, 374, + 464, 1268, 458, 1268, 492, 1236, 462, 1266, 464, 1264, 462, 1250, + 478, 1266, 462, 1268, 462, 402, 460, 384, 478, 402, 434, 428, + 460, 404, 460, 402, 462, 400, 460, 430, 430, 1270, 490, 1240, + 460, 1268, 462, 1268, 460, 1272, 460, 1268, 436, 1294, 462, 1264, + 464, 400, 460, 386, 504, 400, 434, 404, 460, 402, 462, 384, + 476, 384, 454, 426, + 462, 10792, + 3548, 1656, + 462, 404, 460, 400, 516, 350, 458, 1268, 462, 400, 434, 1294, + 464, 424, 434, 382, 480, 1270, 462, 406, 454, 406, 458, 402, + 462, 402, 434, 1294, 514, 1216, 462, 400, 434, 1298, 458, 404, + 460, 1268, 460, 1270, 460, 402, 464, 398, 460, 1268, 464, 1266, + 436, 1294, 460, 1268, 460, 1270, 462, 1264, 436, 1292, 462, 1268, + 436, 1294, 460, 1268, 460, 402, 460, 402, 486, 376, 462, 402, + 460, 402, 462, 428, 408, 430, 464, 426, 430, 1272, 460, 1270, + 462, 1268, 434, 1292, 462, 1268, 464, 1266, 464, 1268, 462, 1266, + 464, 402, 458, 432, 434, 402, 434, 430, 488, 398, 410, 428, + 460, 402, 460, 428, + 410}; // UNKNOWN F68FE737 * 23C + const uint8_t expectedState_23C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x17, 0xE8, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_23C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_23C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 23C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_24C[347] = { + 3522, 1686, + 460, 428, 406, 454, 410, 454, 432, 1272, 458, 432, 432, 1270, + 434, 454, 436, 424, 436, 1270, 458, 388, 474, 432, 406, 458, + 432, 384, 452, 1296, 434, 1294, 458, 428, 436, 1270, 432, 412, + 476, 1270, 456, 1272, 434, 1292, 462, 1296, 434, 428, 410, 454, + 408, 1320, 434, 428, 432, 432, 408, 1296, 434, 1320, 408, 454, + 410, 454, 434, 428, 408, 454, 436, 1268, 436, 1296, 442, 418, + 464, 384, 450, 1298, 458, 1296, 408, 1296, 462, 424, 434, 428, + 434, 430, 406, 1322, 434, 1270, 460, 384, 452, 412, 474, 430, + 434, 1296, 432, 1272, 436, 1320, 434, 428, 434, 430, 434, 1298, + 430, 1294, 464, 1266, + 410, 10816, + 3516, 1716, + 408, 454, 412, 450, 408, 454, 408, 1322, 432, 430, 434, 1296, + 406, 456, 408, 454, 434, 1296, 408, 454, 434, 430, 408, 452, + 408, 454, 410, 1294, 434, 1296, 460, 428, 436, 1270, 458, 430, + 408, 1296, 462, 1292, 434, 430, 408, 1322, 408, 1322, 434, 430, + 432, 1270, 438, 1322, 406, 1322, 432, 1272, 434, 1294, 436, 1318, + 408, 1324, 406, 1296, 450, 394, 480, 428, 432, 388, 450, 456, + 408, 454, 432, 430, 408, 454, 408, 456, 432, 1274, 486, 1240, + 434, 1296, 436, 1292, 458, 1270, 460, 1268, 462, 1270, 458, 1270, + 438, 450, 434, 430, 434, 428, 410, 452, 434, 430, 434, 384, + 476, 430, 432, 406, + 432, 10822, + 3516, 1690, + 456, 386, 480, 430, 428, 430, 434, 1272, 456, 430, 408, 1296, + 458, 426, 410, 454, 408, 1294, 464, 426, 434, 430, 412, 450, + 436, 428, 406, 1324, 434, 1294, 432, 408, 456, 1272, 458, 384, + 506, 1242, 458, 1272, 458, 430, 434, 428, 432, 1296, 408, 1296, + 458, 1272, 456, 1272, 460, 1292, 434, 1270, 462, 1294, 434, 1298, + 430, 1272, 460, 1294, 406, 454, 434, 430, 432, 430, 432, 430, + 410, 454, 406, 456, 408, 456, 432, 428, 436, 1270, 458, 1296, + 434, 1294, 436, 1294, 406, 1322, 410, 1294, 460, 1294, 432, 1298, + 432, 430, 408, 456, 406, 414, 476, 430, 434, 428, 434, 428, + 436, 426, 410, 454, + 434}; // UNKNOWN 914A12BF * 24C + const uint8_t expectedState_24C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x18, 0xE7, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_24C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_24C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 24C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_25C[347] = { + 3518, 1690, + 458, 426, 436, 384, 478, 432, 432, 1270, 460, 384, 480, 1268, + 458, 386, 452, 430, 432, 1294, 462, 428, 434, 404, 458, 432, + 432, 428, 436, 1268, 458, 1270, 458, 386, 454, 1294, 486, 360, + 480, 1268, 436, 1296, 460, 1270, 434, 1294, 460, 430, 408, 454, + 436, 1268, 434, 454, 406, 456, 408, 1276, 480, 1268, 460, 428, + 410, 426, 460, 430, 430, 406, 462, 1266, 460, 1274, 430, 456, + 434, 384, 450, 1296, 460, 1268, 434, 1298, 460, 1266, 460, 386, + 510, 350, 452, 1296, 434, 1296, 486, 404, 434, 424, 436, 426, + 434, 432, 430, 1298, 408, 1296, 434, 454, 408, 454, 434, 1270, + 434, 1296, 432, 1296, + 434, 10816, + 3516, 1690, + 458, 426, 408, 458, 432, 388, 476, 1296, 434, 428, 458, 1244, + 462, 430, 406, 430, 460, 1270, 458, 386, 476, 384, 476, 386, + 478, 386, 450, 1296, 460, 1270, 460, 382, 478, 1270, 460, 426, + 410, 1294, 462, 1270, 434, 454, 434, 1270, 432, 1296, 458, 386, + 478, 1294, 432, 1272, 436, 1294, 460, 1272, 432, 1298, 434, 1294, + 462, 1250, 452, 1298, 432, 432, 486, 400, 410, 454, 408, 414, + 476, 430, 430, 386, 476, 404, 460, 428, 410, 1296, 456, 1274, + 432, 1294, 460, 1250, 480, 1268, 436, 1292, 462, 1268, 488, 1242, + 458, 406, 482, 380, 458, 428, 408, 456, 414, 448, 410, 428, + 458, 430, 432, 404, + 434, 10822, + 3516, 1688, + 460, 428, 436, 424, 410, 428, 460, 1270, 460, 428, 410, 1276, + 478, 384, 476, 430, 408, 1296, 460, 432, 414, 418, 436, 454, + 434, 406, 456, 1270, 456, 1270, 462, 428, 408, 1298, 458, 430, + 406, 1296, 460, 1296, 408, 428, 460, 430, 432, 1268, 460, 1270, + 434, 1296, 432, 1294, 460, 1272, 432, 1298, 456, 1272, 460, 1268, + 460, 1270, 458, 1270, 460, 430, 432, 430, 434, 388, 476, 404, + 456, 430, 406, 458, 406, 456, 406, 412, 476, 1270, 460, 1270, + 460, 1270, 460, 1270, 434, 1294, 462, 1268, 460, 1296, 436, 1268, + 460, 428, 432, 430, 432, 430, 408, 440, 448, 388, 450, 452, + 410, 428, 460, 428, + 408}; // UNKNOWN 7A72A3B * 25C + const uint8_t expectedState_25C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x19, 0xE6, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_25C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_25C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 25C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_26C[347] = { + 3516, 1668, + 480, 402, 458, 386, 504, 380, 458, 1266, 462, 402, 462, 1268, + 460, 402, 462, 402, 458, 1270, 460, 402, 462, 400, 486, 376, + 460, 404, 436, 1292, 460, 1268, 460, 404, 462, 1268, 460, 402, + 458, 1270, 460, 1268, 462, 1266, 436, 1294, 458, 404, 488, 358, + 480, 1268, 460, 402, 488, 374, 458, 1270, 462, 1266, 462, 404, + 462, 400, 460, 404, 486, 376, 460, 1268, 460, 1270, 462, 400, + 458, 404, 458, 1270, 460, 1270, 462, 1266, 462, 400, 460, 1270, + 462, 402, 460, 1268, 462, 1268, 460, 402, 462, 402, 460, 402, + 460, 1270, 460, 402, 460, 1268, 460, 402, 482, 380, 460, 1268, + 490, 1244, 462, 1264, + 460, 10792, + 3518, 1686, + 460, 402, 462, 402, 460, 402, 460, 1270, 470, 388, 466, 1268, + 462, 402, 460, 402, 462, 1266, 462, 402, 460, 402, 460, 384, + 480, 400, 488, 1242, 460, 1268, 462, 402, 462, 1266, 462, 402, + 460, 1270, 460, 1268, 462, 384, 482, 1266, 462, 1266, 462, 402, + 460, 1266, 462, 1270, 460, 1266, 462, 1268, 462, 1268, 460, 1270, + 462, 1268, 458, 1268, 462, 402, 460, 402, 458, 402, 464, 400, + 460, 402, 462, 402, 460, 402, 462, 402, 458, 1270, 462, 1268, + 460, 1268, 462, 1266, 462, 1268, 462, 1268, 458, 1270, 460, 1266, + 462, 402, 516, 346, 460, 404, 460, 402, 488, 376, 458, 404, + 460, 402, 460, 400, + 460, 10794, + 3520, 1684, + 464, 400, 462, 402, 460, 400, 462, 1268, 462, 402, 462, 1270, + 458, 402, 462, 402, 460, 1268, 462, 402, 460, 402, 460, 404, + 460, 402, 462, 1268, 462, 1268, 460, 384, 480, 1266, 462, 404, + 458, 1272, 458, 1268, 462, 402, 460, 402, 460, 1270, 460, 1268, + 462, 1268, 462, 1266, 464, 1266, 462, 1266, 462, 1268, 462, 1268, + 488, 1240, 486, 1242, 466, 400, 462, 402, 460, 400, 460, 404, + 462, 398, 486, 380, 458, 406, 458, 404, 458, 1268, 436, 1292, + 462, 1268, 462, 1268, 460, 1272, 460, 1268, 486, 1242, 460, 1270, + 462, 400, 460, 404, 436, 428, 464, 398, 460, 402, 462, 404, + 458, 404, 458, 404, + 458}; // UNKNOWN 881F925B * 26C + const uint8_t expectedState_26C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1A, 0xE5, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_26C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_26C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 26C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_30C[347] = { + 3520, 1688, + 462, 400, 460, 404, 460, 404, 456, 1270, 462, 402, 462, 1266, + 490, 374, 464, 398, 462, 1266, 464, 400, 460, 402, 490, 376, + 460, 402, 462, 1248, 478, 1268, 462, 382, 534, 1214, 462, 402, + 458, 1268, 464, 1266, 458, 1270, 462, 1266, 462, 400, 464, 400, + 464, 1264, 462, 406, 456, 402, 460, 1268, 462, 1266, 462, 404, + 460, 402, 462, 400, 462, 404, 458, 1270, 464, 1266, 460, 402, + 462, 402, 434, 1294, 462, 1248, 480, 1270, 490, 372, 462, 1272, + 456, 1268, 464, 1268, 458, 1268, 464, 400, 464, 400, 460, 402, + 462, 1268, 462, 398, 462, 402, 458, 404, 462, 400, 462, 1266, + 438, 1292, 462, 1270, + 460, 10790, + 3520, 1684, + 462, 402, 462, 402, 458, 404, 458, 1272, 462, 400, 460, 1270, + 462, 400, 436, 428, 484, 1244, 462, 380, 482, 402, 486, 376, + 490, 372, 462, 1266, 460, 1270, 462, 402, 460, 1268, 490, 372, + 460, 1270, 460, 1268, 488, 378, 458, 1268, 436, 1296, 488, 374, + 462, 1268, 434, 1292, 462, 1268, 460, 1268, 460, 1270, 436, 1292, + 460, 1268, 462, 1270, 456, 404, 460, 402, 464, 398, 460, 402, + 462, 402, 486, 374, 460, 402, 460, 404, 460, 1270, 460, 1268, + 460, 1268, 462, 1266, 460, 1268, 460, 1268, 462, 1268, 462, 1250, + 504, 376, 462, 400, 436, 428, 458, 404, 460, 400, 462, 406, + 458, 400, 460, 384, + 478, 10796, + 3570, 1632, + 464, 400, 458, 406, 456, 404, 486, 1242, 460, 384, 482, 1264, + 462, 402, 460, 402, 458, 1270, 462, 402, 462, 402, 460, 402, + 462, 400, 490, 1240, 486, 1242, 438, 424, 488, 1242, 462, 402, + 458, 1270, 462, 1266, 464, 400, 460, 404, 462, 1268, 458, 1270, + 462, 1266, 462, 1266, 462, 1270, 460, 1266, 462, 1268, 460, 1268, + 462, 1250, 478, 1268, 464, 400, 462, 404, 458, 400, 488, 378, + 458, 402, 488, 374, 462, 404, 512, 350, 460, 1270, 488, 1242, + 488, 1240, 462, 1266, 464, 1264, 490, 1240, 490, 1240, 462, 1266, + 462, 400, 462, 400, 460, 404, 460, 402, 462, 400, 460, 404, + 458, 382, 480, 402, + 462}; // UNKNOWN B0D0585F * 30C + const uint8_t expectedState_30C[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1E, 0xE1, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_30C, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_30C, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 30C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); +} + +TEST(TestDecodeCoronaAc, RealExample2) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + const uint16_t rawData_TOn5[347] = { + 3520, 1684, + 436, 452, 410, 412, 476, 430, 434, 1294, 410, 454, 406, 1296, + 458, 430, 436, 424, 436, 1270, 434, 454, 408, 454, 410, 454, + 434, 428, 434, 1296, 436, 1270, 432, 454, 462, 1268, 434, 386, + 452, 1320, 434, 1270, 434, 1294, 458, 1272, 458, 428, 410, 452, + 436, 1268, 434, 412, 450, 454, 434, 1270, 458, 1274, 456, 388, + 476, 426, 410, 454, 408, 454, 410, 1318, 410, 1296, 458, 430, + 408, 412, 452, 1322, 430, 1298, 434, 1296, 434, 434, 428, 1272, + 458, 1296, 410, 1296, 460, 1294, 432, 430, 408, 452, 434, 430, + 408, 1296, 458, 386, 478, 428, 410, 454, 434, 428, 434, 1272, + 456, 1294, 432, 1272, + 458, 10794, + 3518, 1684, + 464, 426, 410, 454, 488, 374, 434, 1296, 436, 382, 452, 1320, + 436, 428, 406, 454, 410, 1296, 458, 384, 482, 384, 454, 450, + 434, 386, 478, 1268, 460, 1298, 404, 454, 434, 1270, 458, 430, + 410, 1292, 462, 1296, 436, 426, 436, 1270, 434, 1320, 430, 388, + 476, 384, 478, 386, 452, 454, 434, 1294, 412, 452, 432, 1270, + 434, 456, 406, 456, 410, 1292, 460, 1272, 460, 1266, 462, 428, + 434, 1294, 434, 430, 434, 1294, 434, 1272, 460, 1266, 464, 1292, + 438, 426, 434, 428, 408, 432, 460, 1294, 436, 384, 452, 454, + 410, 454, 436, 426, 436, 1270, 458, 1296, 410, 1322, 432, 430, + 434, 1294, 408, 1322, + 436, 10812, + 3478, 1736, + 406, 416, 472, 430, 410, 452, 410, 1322, 408, 454, 436, 1270, + 434, 454, 410, 408, 478, 1268, 460, 430, 434, 428, 408, 454, + 432, 406, 432, 1322, 432, 1296, 434, 430, 408, 1294, 458, 430, + 406, 1322, 434, 1272, 460, 426, 438, 426, 408, 1320, 408, 1296, + 460, 1270, 434, 1296, 434, 1322, 406, 1320, 434, 1252, 476, 1296, + 438, 1268, 432, 1296, 488, 400, 410, 410, 476, 430, 432, 386, + 452, 410, 458, 420, 488, 400, 436, 428, 434, 1294, 408, 1296, + 460, 1294, 410, 1296, 458, 1270, 432, 1298, 432, 1296, 434, 1296, + 460, 428, 408, 452, 462, 402, 432, 430, 406, 430, 438, 450, + 408, 454, 410, 454, + 412}; // UNKNOWN 96CCC404 * On Timer 5H 30C + const uint8_t expectedState_TOn5[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1E, 0xE1, + 0x28, 0x61, 0x6D, 0x28, 0xD7, 0x23, 0xDC, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_TOn5, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_TOn5, + irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 30C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: 05:00, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_TOn1[347] = { + 3522, 1684, + 462, 428, 434, 426, 434, 428, 408, 1296, 462, 424, 436, 1266, + 464, 402, 488, 400, 440, 1264, 460, 402, 434, 454, 434, 404, + 460, 404, 460, 1264, 464, 1268, 460, 404, 460, 1266, 462, 404, + 434, 1294, 436, 1292, 464, 1268, 460, 1268, 462, 402, 460, 402, + 458, 1268, 462, 404, 434, 452, 436, 1266, 462, 1268, 462, 402, + 462, 400, 462, 428, 436, 400, 460, 1266, 490, 1240, 492, 372, + 488, 376, 458, 1270, 486, 1242, 464, 1266, 460, 402, 462, 1266, + 464, 1268, 462, 1266, 464, 1270, 462, 396, 464, 400, 460, 402, + 436, 1292, 464, 402, 462, 400, 434, 428, 486, 378, 460, 1266, + 462, 1268, 460, 1266, + 464, 10804, + 3506, 1682, + 462, 402, 462, 400, 460, 428, 438, 1268, 460, 428, 462, 1242, + 460, 428, 436, 400, 462, 1268, 460, 428, 436, 400, 460, 430, + 466, 368, 464, 1266, 438, 1292, 462, 400, 462, 1268, 462, 426, + 410, 1296, 460, 1266, 464, 398, 490, 1242, 488, 1238, 462, 428, + 438, 424, 436, 400, 462, 404, 460, 1266, 462, 404, 460, 404, + 460, 402, 460, 402, 464, 1264, 464, 1264, 464, 1266, 488, 376, + 464, 1266, 458, 1268, 464, 1264, 462, 1266, 466, 1264, 488, 1244, + 462, 1262, 468, 422, 434, 402, 464, 402, 462, 400, 462, 424, + 438, 400, 462, 402, 462, 402, 486, 1242, 460, 1268, 464, 1264, + 436, 1292, 462, 1268, + 460, 10810, + 3504, 1684, + 462, 428, 436, 398, 492, 374, 460, 1268, 462, 404, 462, 1264, + 462, 404, 460, 400, 460, 1266, 490, 400, 438, 424, 438, 400, + 462, 428, 410, 1292, 464, 1268, 460, 428, 460, 1242, 464, 402, + 460, 1266, 460, 1270, 462, 426, 462, 402, 412, 1272, 482, 1266, + 436, 1292, 436, 1294, 462, 1268, 462, 1266, 464, 1264, 464, 1270, + 488, 1238, 464, 1266, 464, 396, 464, 426, 438, 402, 458, 402, + 464, 398, 462, 430, 408, 426, 460, 428, 492, 1210, 440, 1292, + 464, 1266, 438, 1292, 460, 1266, 464, 1266, 464, 1268, 460, 1266, + 438, 430, 458, 402, 458, 406, 460, 406, 456, 400, 434, 426, + 464, 400, 460, 402, + 462}; // UNKNOWN 446E2F48 * On Timer 1H 30C + const uint8_t expectedState_TOn1[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1E, 0xE1, + 0x28, 0x61, 0x6D, 0x08, 0xF7, 0x07, 0xF8, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_TOn1, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_TOn1, + irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 30C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: 01:00, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_TOn2[347] = { + 3516, 1716, + 410, 452, 408, 454, 412, 450, 434, 1270, 460, 430, 432, 1272, + 456, 406, 460, 384, 452, 1298, 458, 428, 406, 456, 436, 428, + 434, 430, 432, 1298, 434, 1298, 408, 428, 458, 1298, 432, 430, + 434, 1294, 434, 1296, 432, 1272, 458, 1296, 408, 454, 436, 428, + 436, 1268, 458, 430, 436, 428, 434, 1272, 432, 1320, 460, 402, + 410, 454, 432, 388, 474, 388, 452, 1296, 460, 1270, 458, 386, + 450, 412, 478, 1296, 430, 1272, 458, 1298, 434, 428, 434, 1254, + 474, 1296, 410, 1320, 434, 1270, 460, 384, 478, 428, 434, 428, + 434, 1272, 460, 384, 478, 428, 432, 430, 434, 428, 410, 1296, + 458, 1274, 454, 1270, + 460, 10810, + 3500, 1716, + 432, 430, 408, 452, 434, 430, 410, 1294, 456, 428, 434, 1298, + 408, 432, 544, 314, 462, 1270, 430, 454, 436, 430, 458, 404, + 432, 386, 478, 1268, 460, 1270, 458, 388, 450, 1322, 430, 434, + 458, 1268, 434, 1294, 410, 454, 434, 1270, 460, 1294, 432, 430, + 410, 454, 434, 428, 406, 456, 432, 430, 408, 1320, 408, 456, + 432, 430, 434, 428, 410, 1294, 434, 1294, 486, 1268, 432, 1272, + 460, 426, 414, 1292, 462, 1294, 432, 1298, 430, 388, 478, 1296, + 408, 1296, 458, 1270, 458, 386, 452, 456, 408, 454, 436, 426, + 434, 1272, 432, 430, 458, 430, 434, 430, 406, 1320, 436, 1294, + 434, 1296, 410, 1320, + 434, 10812, + 3504, 1686, + 432, 452, 434, 430, 436, 428, 406, 1296, 460, 404, 460, 1292, + 436, 428, 436, 428, 436, 1268, 436, 454, 412, 452, 408, 454, + 434, 428, 408, 1296, 462, 1266, 462, 384, 480, 1266, 458, 430, + 410, 1320, 434, 1270, 434, 428, 436, 452, 412, 1294, 432, 1320, + 432, 1274, 458, 1270, 434, 1294, 460, 1270, 460, 1296, 434, 1268, + 436, 1294, 434, 1296, 460, 430, 434, 424, 436, 428, 434, 426, + 410, 410, 478, 430, 432, 408, 456, 428, 408, 1298, 458, 1268, + 436, 1296, 460, 1292, 462, 1268, 436, 1270, 460, 1294, 434, 1294, + 436, 402, 488, 400, 408, 456, 432, 386, 478, 428, 408, 452, + 408, 456, 410, 454, + 406}; // UNKNOWN D49AF170 * On Timer 2H 30C + const uint8_t expectedState_TOn2[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1E, 0xE1, + 0x28, 0x61, 0x6D, 0x10, 0xEF, 0x0E, 0xF1, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_TOn2, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_TOn2, + irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 30C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: 02:00, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_21C2[347] = { + 3522, 1682, + 438, 426, 460, 402, 462, 402, 434, 1296, 434, 426, 460, 1270, + 436, 430, 460, 400, 436, 1294, 462, 398, 436, 428, 462, 400, + 462, 400, 438, 1292, 460, 1270, 460, 404, 434, 1294, 462, 402, + 462, 1268, 434, 1294, 462, 1268, 490, 1240, 462, 400, 460, 404, + 460, 1268, 436, 426, 462, 402, 462, 1266, 460, 1268, 438, 428, + 458, 404, 460, 402, 462, 398, 462, 1272, 460, 1266, 462, 404, + 458, 402, 436, 1294, 460, 1268, 436, 1292, 464, 1266, 436, 428, + 462, 1268, 462, 400, 438, 1290, 460, 404, 460, 402, 462, 404, + 434, 424, 462, 1268, 436, 426, 462, 1272, 456, 404, 460, 1270, + 434, 1292, 438, 1292, + 462, 10786, + 3498, 1714, + 458, 404, 458, 402, 462, 400, 464, 1264, 466, 398, 462, 1266, + 438, 428, 436, 424, 462, 1266, 490, 374, 436, 424, 436, 428, + 434, 426, 464, 1266, 464, 1268, 434, 428, 462, 1266, 466, 396, + 436, 1294, 462, 1270, 460, 402, 460, 1266, 462, 1268, 460, 404, + 458, 1270, 434, 1294, 460, 1268, 464, 1266, 462, 1266, 464, 1266, + 462, 1268, 462, 1266, 464, 400, 434, 426, 438, 426, 460, 402, + 436, 426, 464, 400, 470, 370, 486, 398, 464, 1264, 440, 1292, + 462, 1266, 464, 1266, 464, 1266, 462, 1266, 462, 1268, 460, 1270, + 462, 398, 462, 400, 438, 426, 462, 400, 462, 402, 434, 430, + 458, 402, 460, 400, + 436, 10820, + 3496, 1708, + 462, 402, 464, 400, 438, 422, 438, 1294, 460, 400, 462, 1266, + 464, 400, 462, 400, 464, 1266, 462, 402, 436, 426, 460, 404, + 436, 426, 462, 1266, 436, 1294, 462, 400, 462, 1266, 462, 400, + 460, 1268, 464, 1266, 462, 402, 436, 426, 436, 1294, 436, 1294, + 438, 1290, 462, 1268, 462, 1266, 436, 1292, 462, 1268, 460, 1248, + 482, 1268, 462, 1270, 458, 404, 434, 426, 464, 400, 460, 406, + 434, 426, 462, 402, 460, 384, 480, 400, 436, 1294, 460, 1268, + 492, 1238, 462, 1268, 460, 1272, 434, 1292, 462, 1266, 438, 1292, + 464, 400, 462, 400, 436, 426, 438, 424, 488, 374, 462, 402, + 462, 400, 464, 400, + 438}; // UNKNOWN D1869C5B * 21C + const uint8_t expectedState_21C2[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x15, 0xEA, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_21C2, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_21C2, + irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 21C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_20C2[347] = { + 3498, 1708, + 436, 430, 434, 426, 464, 398, 460, 1268, 456, 388, 482, 1266, + 436, 426, 436, 426, 438, 1292, 436, 426, 436, 428, 436, 424, + 460, 404, 436, 1290, 438, 1292, 462, 404, 434, 1292, 438, 426, + 462, 1266, 516, 1212, 438, 1292, 436, 1292, 438, 424, 438, 424, + 462, 1268, 438, 424, 436, 426, 438, 1292, 460, 1268, 460, 402, + 436, 428, 436, 426, 438, 426, 434, 1294, 436, 1294, 436, 428, + 436, 426, 464, 1264, 436, 1274, 484, 1264, 440, 424, 460, 402, + 438, 1292, 434, 426, 438, 1292, 436, 428, 436, 426, 464, 398, + 492, 1238, 438, 1292, 436, 428, 460, 1248, 456, 426, 438, 1294, + 434, 1296, 434, 1296, + 434, 10812, + 3498, 1710, + 436, 428, 434, 426, 438, 424, 438, 1294, 438, 424, 438, 1292, + 434, 426, 442, 420, 438, 1290, 438, 426, 466, 396, 462, 400, + 436, 428, 436, 1294, 438, 1290, 466, 398, 436, 1294, 436, 426, + 460, 1268, 462, 1268, 436, 426, 438, 1290, 438, 1294, 462, 402, + 462, 1266, 462, 1266, 462, 1266, 436, 1294, 440, 1290, 464, 1266, + 436, 1292, 436, 1294, 436, 426, 462, 400, 438, 424, 436, 426, + 462, 400, 438, 426, 462, 400, 436, 426, 438, 1292, 438, 1292, + 438, 1292, 462, 1266, 438, 1270, 458, 1292, 438, 1294, 462, 1266, + 438, 428, 434, 426, 464, 398, 436, 426, 436, 428, 436, 426, + 492, 370, 438, 426, + 436, 10818, + 3492, 1712, + 462, 402, 460, 402, 438, 426, 440, 1292, 436, 424, 464, 1266, + 438, 424, 462, 400, 438, 1288, 438, 428, 434, 428, 486, 376, + 462, 402, 434, 1292, 436, 1292, 438, 424, 462, 1268, 436, 426, + 438, 1294, 462, 1266, 436, 428, 436, 424, 438, 1292, 438, 1290, + 440, 1292, 434, 1294, 436, 1294, 436, 1294, 514, 1212, 438, 1292, + 436, 1296, 458, 1268, 438, 424, 460, 404, 460, 400, 462, 400, + 462, 400, 438, 426, 434, 430, 434, 426, 466, 1266, 464, 1262, + 436, 1294, 434, 1294, 464, 1266, 464, 1264, 460, 1268, 464, 1266, + 462, 404, 460, 402, 436, 428, 434, 428, 436, 428, 462, 400, + 462, 400, 462, 400, + 464}; // UNKNOWN 27CBC9D7 * 20C + const uint8_t expectedState_20C2[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x14, 0xEB, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_20C2, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_20C2, + irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 20C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_Off2[347] = { + 3522, 1684, + 436, 428, 460, 404, 436, 424, 464, 1266, 436, 426, 462, 1270, + 452, 390, 480, 404, 462, 1268, 436, 424, 462, 402, 462, 400, + 434, 428, 436, 1292, 462, 1268, 462, 402, 460, 1268, 460, 402, + 436, 1292, 462, 1266, 436, 1294, 438, 1292, 436, 426, 460, 402, + 462, 1268, 438, 424, 462, 400, 462, 1270, 458, 1270, 436, 428, + 458, 404, 460, 400, 436, 426, 464, 1268, 460, 1266, 464, 398, + 464, 398, 462, 1270, 434, 1292, 438, 1292, 460, 404, 436, 1296, + 458, 402, 462, 402, 460, 404, 460, 1268, 460, 402, 436, 426, + 434, 1274, 482, 400, 438, 1292, 490, 1240, 462, 1268, 460, 402, + 436, 1292, 438, 1294, + 460, 10808, + 3474, 1692, + 482, 400, 462, 402, 460, 402, 460, 1268, 464, 400, 488, 1240, + 462, 400, 462, 402, 460, 1270, 434, 426, 462, 402, 462, 402, + 462, 400, 462, 1268, 462, 1266, 462, 400, 436, 1294, 460, 402, + 436, 1292, 438, 1292, 436, 428, 460, 1268, 462, 1268, 436, 428, + 438, 1290, 466, 1266, 462, 1266, 464, 1266, 460, 1268, 462, 1268, + 436, 1292, 462, 1266, 452, 390, 482, 400, 436, 428, 462, 400, + 464, 400, 462, 402, 434, 428, 460, 402, 462, 1266, 462, 1266, + 462, 1270, 436, 1294, 460, 1268, 460, 1268, 438, 1296, 432, 1294, + 464, 398, 462, 402, 434, 430, 460, 400, 462, 400, 460, 402, + 460, 402, 438, 426, + 436, 10816, + 3522, 1686, + 436, 428, 434, 426, 464, 400, 460, 1270, 460, 400, 438, 1294, + 460, 400, 464, 400, 438, 1296, 436, 424, 460, 402, 460, 402, + 464, 400, 462, 1266, 438, 1292, 462, 402, 434, 1296, 432, 428, + 460, 1270, 462, 1266, 436, 428, 436, 428, 458, 1268, 438, 1290, + 438, 1292, 460, 1270, 434, 1294, 460, 1268, 462, 1246, 456, 1294, + 438, 1290, 460, 1268, 446, 388, 490, 400, 436, 426, 462, 400, + 438, 424, 462, 402, 436, 428, 434, 430, 460, 1270, 458, 1266, + 462, 1268, 438, 1292, 438, 1290, 436, 1294, 462, 1268, 462, 1266, + 460, 404, 434, 428, 460, 400, 462, 402, 436, 426, 434, 428, + 434, 426, 438, 430, + 458}; // UNKNOWN FBD27697 * OFF + const uint8_t expectedState_Off2[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x22, 0xDD, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_Off2, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_Off2, + irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: Off, Power Button: On, Mode: 0 (Heat), Temp: 18C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + + const uint16_t rawData_U[347] = { + 3520, 1686, + 462, 402, 460, 402, 462, 402, 436, 1276, 478, 402, 462, 1266, + 464, 400, 460, 402, 462, 1268, 452, 392, 478, 402, 464, 380, + 480, 404, 432, 1296, 462, 1266, 460, 404, 460, 1270, 460, 402, + 460, 1270, 458, 1270, 460, 1270, 456, 1270, 462, 402, 460, 402, + 460, 1270, 460, 400, 464, 400, 460, 1268, 464, 1264, 462, 404, + 458, 402, 434, 428, 464, 402, 456, 1270, 462, 1270, 460, 404, + 458, 402, 438, 1292, 460, 1268, 464, 1266, 464, 1264, 462, 404, + 458, 1272, 458, 1270, 460, 1268, 464, 402, 458, 402, 462, 400, + 462, 400, 462, 1270, 458, 406, 430, 430, 458, 400, 462, 1270, + 460, 1266, 464, 1266, + 462, 10790, + 3520, 1682, + 462, 404, 434, 428, 464, 400, 460, 1270, 460, 400, 464, 1266, + 462, 404, 460, 402, 464, 1264, 460, 406, 460, 402, 458, 406, + 460, 402, 458, 1270, 464, 1266, 460, 404, 460, 1270, 462, 402, + 488, 1240, 460, 1268, 462, 400, 462, 1268, 462, 1266, 462, 400, + 462, 1268, 460, 1250, 482, 1266, 462, 1270, 462, 1266, 462, 1268, + 458, 1270, 462, 1268, 460, 400, 462, 402, 460, 400, 462, 402, + 462, 398, 462, 404, 486, 374, 460, 404, 458, 1270, 460, 1270, + 486, 1244, 458, 1270, 464, 1266, 460, 1268, 462, 1268, 460, 1270, + 462, 400, 460, 406, 458, 402, 462, 400, 462, 404, 458, 400, + 516, 350, 458, 402, + 462, 10794, + 3520, 1684, + 460, 402, 460, 402, 460, 406, 460, 1268, 458, 406, 458, 1268, + 462, 400, 464, 400, 460, 1268, 462, 402, 460, 402, 464, 426, + 436, 400, 462, 1264, 462, 1270, 460, 402, 460, 1266, 464, 400, + 460, 1268, 464, 1266, 460, 406, 456, 404, 462, 1268, 462, 1268, + 460, 1266, 490, 1240, 464, 1266, 460, 1270, 438, 1294, 460, 1250, + 478, 1266, 462, 1270, 460, 404, 462, 400, 462, 400, 462, 402, + 462, 398, 460, 404, 460, 402, 460, 402, 460, 1268, 460, 1270, + 460, 1272, 458, 1270, 460, 1268, 464, 1268, 434, 1296, 462, 1266, + 464, 398, 462, 402, 434, 426, 462, 404, 460, 402, 462, 404, + 456, 406, 460, 400, + 462}; // UNKNOWN 2D1BA8F7 * unk + const uint8_t expectedState_U[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1D, 0xE2, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_U, 347, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_U, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 29C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); +} + +TEST(TestDecodeCoronaAc, RealExampleShort) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + const uint16_t rawData_A1[115] = { + 3548, 1658, + 462, 400, 464, 424, 436, 428, 436, 1272, 460, 400, 462, 1266, + 464, 426, 436, 426, 434, 1270, 432, 454, 436, 402, 460, 384, + 482, 400, 486, 1244, 460, 1268, 462, 404, 484, 1242, 460, 428, + 460, 1250, 430, 1292, 462, 1266, 464, 404, 456, 384, 480, 1266, + 462, 428, 436, 1270, 460, 1268, 462, 428, 434, 1270, 460, 430, + 434, 404, 460, 1294, 460, 1242, 462, 382, 478, 428, 436, 1268, + 458, 406, 460, 1268, 460, 1268, 460, 404, 458, 404, 434, 430, + 462, 426, 434, 430, 432, 1268, 462, 426, 436, 402, 460, 404, + 458, 1268, 464, 1270, 432, 1294, 464, 1266, 458, 404, 462, 1268, + 460, 1268, 464, 1266, + 462}; // UNKNOWN AEDD5409 * Auto1 + const uint8_t expectedState_A1[kCoronaAcStateLengthShort] = { + 0x28, 0x61, 0x9D, 0x96, 0x69, 0x10, 0xEF}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_A1, 115, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBitsShort, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState_A1, irsend.capture.state, irsend.capture.bits); + // this is special, but showing what it might be + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 16C, " + "Fan: 2 (Medium), Swing(V) Toggle: Off, Econo: Off, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); +} + +TEST(TestDecodeCoronaAc, SyntheticExample1) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + irsend.reset(); + const uint8_t state[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1D, 0xE2, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.sendCoronaAc(state); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + EXPECT_EQ(kCoronaAcBits, irsend.capture.bits); + EXPECT_STATE_EQ(state, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 29C, " + "Fan: 1 (Low), Swing(V) Toggle: Off, Econo: On, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + EXPECT_EQ( + "f38000d50" + "m3500s1680" + "m450s420m450s420m450s420m450s1270m450s420m450s1270m450s420m450s420" + "m450s1270m450s420m450s420m450s420m450s420m450s1270m450s1270m450s420" + "m450s1270m450s420m450s1270m450s1270m450s1270m450s1270m450s420m450s420" + "m450s1270m450s420m450s420m450s1270m450s1270m450s420m450s420m450s420" + "m450s420m450s1270m450s1270m450s420m450s420m450s1270m450s1270m450s1270" + "m450s1270m450s420m450s1270m450s1270m450s1270m450s420m450s420m450s420" + "m450s420m450s1270m450s420m450s420m450s420m450s1270m450s1270m450s1270" + "m450s10800" + "m3500s1680" + "m450s420m450s420m450s420m450s1270m450s420m450s1270m450s420m450s420" + "m450s1270m450s420m450s420m450s420m450s420m450s1270m450s1270m450s420" + "m450s1270m450s420m450s1270m450s1270m450s420m450s1270m450s1270m450s420" + "m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270" + "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" + "m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270" + "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" + "m450s10800" + "m3500s1680" + "m450s420m450s420m450s420m450s1270m450s420m450s1270m450s420m450s420" + "m450s1270m450s420m450s420m450s420m450s420m450s1270m450s1270m450s420" + "m450s1270m450s420m450s1270m450s1270m450s420m450s420m450s1270m450s1270" + "m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270" + "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" + "m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270m450s1270" + "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" + "m450s10800", + irsend.outputStr()); + + irsend.reset(); + const uint8_t stateShort[kCoronaAcStateLengthShort] = { + 0x28, 0x61, 0x9D, 0x96, 0x69, 0x10, 0xEF}; + irsend.sendCoronaAc(stateShort, kCoronaAcStateLengthShort); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + ASSERT_EQ(kCoronaAcBitsShort, irsend.capture.bits); + EXPECT_STATE_EQ(stateShort, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 0 (Heat), Temp: 16C, " + "Fan: 2 (Medium), Swing(V) Toggle: Off, Econo: Off, " + "On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + + EXPECT_EQ( + "f38000d50" + "m3500s1680" + "m450s420m450s420m450s420m450s1270m450s420m450s1270m450s420m450s420" + "m450s1270m450s420m450s420m450s420m450s420m450s1270m450s1270m450s420" + "m450s1270m450s420m450s1270m450s1270m450s1270m450s420m450s420m450s1270" + "m450s420m450s1270m450s1270m450s420m450s1270m450s420m450s420m450s1270" + "m450s1270m450s420m450s420m450s1270m450s420m450s1270m450s1270m450s420" + "m450s420m450s420m450s420m450s420m450s1270m450s420m450s420m450s420" + "m450s1270m450s1270m450s1270m450s1270m450s420m450s1270m450s1270m450s1270" + "m450s10800", + irsend.outputStr()); +} + +TEST(TestDecodeCoronaAc, SyntheticExampleNonMatch) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + + // Test checksum and prefix + // first base example match + irsend.begin(); + irsend.reset(); + const uint8_t stateOk[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1D, 0xE2, + 0x28, 0x61, 0x6D, 0xE8, 0x17, 0x17, 0xE8, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.sendCoronaAc(stateOk); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(decode_type_t::CORONA_AC, irsend.capture.decode_type); + + irsend.begin(); + irsend.reset(); + // non valid Corona header section 1 + const uint8_t stateHeaderFail1[kCoronaAcStateLength] = { + 0x00, 0x61, 0x3D, 0x19, 0xE6, 0x1D, 0xE2, + 0x28, 0x61, 0x6D, 0xE8, 0x17, 0x17, 0xE8, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.sendCoronaAc(stateHeaderFail1); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_NE(decode_type_t::CORONA_AC, irsend.capture.decode_type); + + irsend.begin(); + irsend.reset(); + // non valid Corona header section 1 b2 + const uint8_t stateHeaderFail12[kCoronaAcStateLength] = { + 0x28, 0x00, 0x3D, 0x19, 0xE6, 0x1D, 0xE2, + 0x28, 0x61, 0x6D, 0xE8, 0x17, 0x17, 0xE8, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.sendCoronaAc(stateHeaderFail12); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_NE(decode_type_t::CORONA_AC, irsend.capture.decode_type); + + irsend.begin(); + irsend.reset(); + // non valid Corona section number + const uint8_t stateSection1NumFail[kCoronaAcStateLength] = { + 0x28, 0x61, 0x2D, 0x19, 0xE6, 0x1D, 0xE2, + 0x28, 0x61, 0x6D, 0xE8, 0x17, 0x17, 0xE8, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.sendCoronaAc(stateSection1NumFail); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_NE(decode_type_t::CORONA_AC, irsend.capture.decode_type); + + irsend.begin(); + irsend.reset(); + // non valid Corona invert D0 + const uint8_t stateInvertD0Fail[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0x19, 0x1D, 0xE2, + 0x28, 0x61, 0x6D, 0xE8, 0x17, 0x17, 0xE8, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.sendCoronaAc(stateInvertD0Fail); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_NE(decode_type_t::CORONA_AC, irsend.capture.decode_type); + + irsend.begin(); + irsend.reset(); + // non valid Corona invert D1 + const uint8_t stateInvertD1Fail[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x19, 0xE6, 0x1D, 0x1D, + 0x28, 0x61, 0x6D, 0xE8, 0x17, 0x17, 0xE8, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + irsend.sendCoronaAc(stateInvertD1Fail); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_NE(decode_type_t::CORONA_AC, irsend.capture.decode_type); +} + +TEST(TestUtils, Housekeeping) { + ASSERT_EQ("CORONA_AC", typeToString(decode_type_t::CORONA_AC)); + ASSERT_EQ(decode_type_t::CORONA_AC, strToDecodeType("CORONA_AC")); + ASSERT_TRUE(hasACState(decode_type_t::CORONA_AC)); + ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::CORONA_AC)); + ASSERT_EQ(kCoronaAcBits, IRsend::defaultBits(decode_type_t::CORONA_AC)); + ASSERT_EQ(kNoRepeat, IRsend::minRepeats(decode_type_t::CORONA_AC)); + ASSERT_EQ(kCoronaAcStateLength, 7 * 3); + ASSERT_EQ(kCoronaAcStateLengthShort, 7); + ASSERT_EQ(kCoronaAcSectionBytes, 7); + ASSERT_EQ(kCoronaAcSections, 3); +} + +// Tests for IRCoronaAc class. + +TEST(TestCoronaAcClass, Power) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + + ac.on(); + EXPECT_TRUE(ac.getPower()); + EXPECT_TRUE(ac.getPowerButton()); + + ac.off(); + EXPECT_FALSE(ac.getPower()); + EXPECT_TRUE(ac.getPowerButton()); + + ac.setOnTimer(60); + EXPECT_FALSE(ac.getPowerButton()); + ac.setPower(true); + EXPECT_TRUE(ac.getPower()); + EXPECT_EQ(0, ac.getOnTimer()); + EXPECT_FALSE(ac.getPowerButton()); + + ac.setOffTimer(60); + EXPECT_FALSE(ac.getPowerButton()); + ac.setPower(false); + EXPECT_FALSE(ac.getPower()); + EXPECT_EQ(0, ac.getOffTimer()); + EXPECT_FALSE(ac.getPowerButton()); + + ASSERT_EQ(4, kCoronaAcPowerOffset); + ASSERT_EQ(5, kCoronaAcPowerButtonOffset); +} + +TEST(TestCoronaAcClass, Temperature) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + + ac.setTemp(0); + EXPECT_EQ(kCoronaAcMinTemp, ac.getTemp()); + + ac.setTemp(255); + EXPECT_EQ(kCoronaAcMaxTemp, ac.getTemp()); + + ac.setTemp(kCoronaAcMinTemp); + EXPECT_EQ(kCoronaAcMinTemp, ac.getTemp()); + + ac.setTemp(kCoronaAcMaxTemp); + EXPECT_EQ(kCoronaAcMaxTemp, ac.getTemp()); + + ac.setTemp(kCoronaAcMinTemp - 1); + EXPECT_EQ(kCoronaAcMinTemp, ac.getTemp()); + + ac.setTemp(kCoronaAcMaxTemp + 1); + EXPECT_EQ(kCoronaAcMaxTemp, ac.getTemp()); + + ac.setTemp(17); + EXPECT_EQ(17, ac.getTemp()); + + ac.setTemp(21); + EXPECT_EQ(21, ac.getTemp()); + + ac.setTemp(25); + EXPECT_EQ(25, ac.getTemp()); + + ac.setTemp(29); + EXPECT_EQ(29, ac.getTemp()); +} + +TEST(TestCoronaAcClass, OperatingMode) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + + ac.setMode(kCoronaAcModeCool); + EXPECT_EQ(kCoronaAcModeCool, ac.getMode()); + + ac.setMode(kCoronaAcModeFan); + EXPECT_EQ(kCoronaAcModeFan, ac.getMode()); + + ac.setMode(kCoronaAcModeHeat); + EXPECT_EQ(kCoronaAcModeHeat, ac.getMode()); + + ac.setMode(kCoronaAcModeFan + 1); + EXPECT_EQ(kCoronaAcModeCool, ac.getMode()); + + ac.setMode(255); + EXPECT_EQ(kCoronaAcModeCool, ac.getMode()); + ac.setMode(0); + EXPECT_EQ(kCoronaAcModeHeat, ac.getMode()); +} + +TEST(TestCoronaAcClass, EconoPowerSave) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + ac.setEcono(true); + EXPECT_TRUE(ac.getEcono()); + ac.setEcono(false); + EXPECT_FALSE(ac.getEcono()); + ac.setEcono(true); + EXPECT_TRUE(ac.getEcono()); +} + +TEST(TestCoronaAcClass, SwingVerticalToggle) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + ac.setSwingVToggle(true); + EXPECT_TRUE(ac.getSwingVToggle()); + ac.setSwingVToggle(false); + EXPECT_FALSE(ac.getSwingVToggle()); + ac.setSwingVToggle(true); + EXPECT_TRUE(ac.getSwingVToggle()); +} + +TEST(TestCoronaAcClass, Timer) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + ac.setPowerButton(false); + ac.setMode(kCoronaAcModeHeat); + const uint8_t expectedStateNoTimer[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x10, 0xEF, 0x01, 0xFE, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + ASSERT_FALSE(ac.getPower()); + ASSERT_FALSE(ac.getPowerButton()); + EXPECT_STATE_EQ(expectedStateNoTimer, ac.getRaw(), kCoronaAcBits); + + ac.setOnTimer(3 * 60); + EXPECT_EQ(3 * 60, ac.getOnTimer()); + const uint8_t expectedStateOnTimer3H[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x10, 0xEF, 0x11, 0xEE, + 0x28, 0x61, 0x6D, 0x18, 0xE7, 0x15, 0xEA, // 5400 + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + ASSERT_TRUE(ac.getPower()); // remote should be on from timer + ASSERT_FALSE(ac.getPowerButton()); + EXPECT_STATE_EQ(expectedStateOnTimer3H, ac.getRaw(), kCoronaAcBits); + + ac.setOnTimer(0); + EXPECT_EQ(0, ac.getOnTimer()); + ASSERT_FALSE(ac.getPowerButton()); + ASSERT_TRUE(ac.getPower()); // remote should still be on + ac.off(); // set it to off + EXPECT_STATE_EQ(expectedStateNoTimer, ac.getRaw(), kCoronaAcBits); + ac.setOnTimer(kCoronaAcTimerOff); + EXPECT_EQ(0, ac.getOnTimer()); + EXPECT_FALSE(ac.getPowerButton()); + EXPECT_STATE_EQ(expectedStateNoTimer, ac.getRaw(), kCoronaAcBits); + + ac.setOffTimer(1); + EXPECT_EQ(1, ac.getOffTimer()); + ASSERT_TRUE(ac.getPower()); // remote should be on from timer + const uint8_t expectedStateOffTimer1m[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x10, 0xEF, 0x11, 0xEE, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0x1E, 0xE1, 0x00, 0xFF}; // 30 + ASSERT_FALSE(ac.getPowerButton()); + EXPECT_STATE_EQ(expectedStateOffTimer1m, ac.getRaw(), kCoronaAcBits); + + ac.setOnTimer(2); + EXPECT_EQ(2, ac.getOnTimer()); + ASSERT_TRUE(ac.getPower()); // remote should be on from timer + // setting any of the timers needs to reset the other one + ASSERT_EQ(0, ac.getOffTimer()); + const uint8_t expectedStateOnTimer2m[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x10, 0xEF, 0x11, 0xEE, + 0x28, 0x61, 0x6D, 0x3C, 0xC3, 0x00, 0xFF, // 60 + 0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00}; + ASSERT_FALSE(ac.getPowerButton()); + EXPECT_STATE_EQ(expectedStateOnTimer2m, ac.getRaw(), kCoronaAcBits); + + // setting a higher value than max should instead disable + ac.setOnTimer(kCoronaAcTimerMax + 1); + ASSERT_EQ(0, ac.getOnTimer()); + ASSERT_FALSE(ac.getPowerButton()); + ASSERT_TRUE(ac.getPower()); // remote should still be on + ac.off(); + ASSERT_FALSE(ac.getPowerButton()); + EXPECT_STATE_EQ(expectedStateNoTimer, ac.getRaw(), kCoronaAcBits); +} + + +TEST(TestCoronaAcClass, FanSpeed) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + + // Unexpected value should default to Auto. + ac.setFan(255); + EXPECT_EQ(kCoronaAcFanAuto, ac.getFan()); + ac.setFan(5); + EXPECT_EQ(kCoronaAcFanAuto, ac.getFan()); + + ac.setFan(kCoronaAcFanHigh); + EXPECT_EQ(kCoronaAcFanHigh, ac.getFan()); + + // Beyond High should default to Auto. + ac.setFan(kCoronaAcFanHigh + 1); + EXPECT_EQ(kCoronaAcFanAuto, ac.getFan()); + + ac.setFan(kCoronaAcFanMedium); + EXPECT_EQ(kCoronaAcFanMedium, ac.getFan()); + + ac.setFan(kCoronaAcFanLow); + EXPECT_EQ(kCoronaAcFanLow, ac.getFan()); + + ac.setFan(kCoronaAcFanAuto); + EXPECT_EQ(kCoronaAcFanAuto, ac.getFan()); +} + +// Test human readable output. +TEST(TestCoronaAcClass, HumanReadable) { + IRCoronaAc ac(kGpioUnused); + EXPECT_EQ( + "Power: Off, Power Button: On, Mode: 2 (Cool), Temp: 17C, " + "Fan: 0 (Auto), Swing(V) Toggle: Off, Econo: Off, " + "On Timer: Off, Off Timer: Off", + ac.toString()); + ac.setPower(true); + ac.setMode(kCoronaAcModeFan); + ac.setTemp(30); + ac.setFan(kCoronaAcFanAuto); + ac.setSwingVToggle(true); + EXPECT_EQ( + "Power: On, Power Button: On, Mode: 3 (Fan), Temp: 30C, " + "Fan: 0 (Auto), Swing(V) Toggle: On, Econo: Off, " + "On Timer: Off, Off Timer: Off", + ac.toString()); + ac.setOffTimer(8 * 60 + 37); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 3 (Fan), Temp: 30C, " + "Fan: 0 (Auto), Swing(V) Toggle: On, Econo: Off, " + "On Timer: Off, Off Timer: 08:37", + ac.toString()); + ac.setOnTimer(5 * 60 + 59); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 3 (Fan), Temp: 30C, " + "Fan: 0 (Auto), Swing(V) Toggle: On, Econo: Off, " + "On Timer: 05:59, Off Timer: Off", + ac.toString()); + ac.setOnTimer(59); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 3 (Fan), Temp: 30C, " + "Fan: 0 (Auto), Swing(V) Toggle: On, Econo: Off, " + "On Timer: 00:59, Off Timer: Off", + ac.toString()); + ac.setEcono(true); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 3 (Fan), Temp: 30C, " + "Fan: 0 (Auto), Swing(V) Toggle: On, Econo: On, " + "On Timer: 00:59, Off Timer: Off", + ac.toString()); +} + +TEST(TestCoronaAcClass, ReconstructKnownState) { + IRCoronaAc ac(kGpioUnused); + const uint8_t expectedState[kCoronaAcStateLength] = { + 0x28, 0x61, 0x3D, 0x59, 0xA6, 0xD3, 0x2C, + 0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00, + 0x28, 0x61, 0xCD, 0x18, 0xE7, 0x15, 0xEA}; + ASSERT_TRUE(IRCoronaAc::validSection(expectedState, + 0 * kCoronaAcSectionBytes, 0)); + ASSERT_TRUE(IRCoronaAc::validSection(expectedState, + 1 * kCoronaAcSectionBytes, 1)); + ASSERT_TRUE(IRCoronaAc::validSection(expectedState, + 2 * kCoronaAcSectionBytes, 2)); + ac.begin(); + ac.stateReset(); + // ASSERT_STATE_NE(expectedState, ac.getRaw()); + ac.on(); + ac.setMode(kCoronaAcModeFan); + ac.setTemp(19); + ac.setFan(kCoronaAcFanLow); + ac.setSwingVToggle(true); + ac.setOffTimer(3 * 60); + ac.setEcono(true); + EXPECT_STATE_EQ(expectedState, ac.getRaw(), kCoronaAcBits); + EXPECT_EQ( + "Power: On, Power Button: Off, Mode: 3 (Fan), Temp: 19C, " + "Fan: 1 (Low), Swing(V) Toggle: On, Econo: On, " + "On Timer: Off, Off Timer: 03:00", + ac.toString()); +} + +TEST(TestCoronaAcClass, toCommon) { + IRCoronaAc ac(kGpioUnused); + ac.begin(); + ac.stateReset(); + ac.on(); + ac.setMode(kCoronaAcModeFan); + ac.setTemp(20); + ac.setFan(kCoronaAcFanLow); + ac.setSwingVToggle(true); + ac.setOffTimer(3 * 60); + ac.setEcono(true); + // Now test it. + ASSERT_EQ(decode_type_t::CORONA_AC, ac.toCommon().protocol); + ASSERT_EQ(-1, ac.toCommon().model); + ASSERT_TRUE(ac.toCommon().power); + ASSERT_TRUE(ac.toCommon().celsius); + ASSERT_EQ(20, ac.toCommon().degrees); + ASSERT_EQ(stdAc::opmode_t::kFan, ac.toCommon().mode); + ASSERT_EQ(stdAc::fanspeed_t::kLow, ac.toCommon().fanspeed); + ASSERT_EQ(stdAc::swingv_t::kAuto, ac.toCommon().swingv); + ASSERT_TRUE(ac.toCommon().econo); + // Unsupported. + ASSERT_EQ(stdAc::swingh_t::kOff, ac.toCommon().swingh); + ASSERT_FALSE(ac.toCommon().turbo); + ASSERT_FALSE(ac.toCommon().quiet); + ASSERT_FALSE(ac.toCommon().clean); + ASSERT_FALSE(ac.toCommon().light); + ASSERT_FALSE(ac.toCommon().filter); + ASSERT_FALSE(ac.toCommon().beep); + ASSERT_EQ(-1, ac.toCommon().sleep); + ASSERT_EQ(-1, ac.toCommon().clock); +} diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Daikin_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Daikin_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Daikin_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Daikin_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Delonghi_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Delonghi_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Delonghi_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Delonghi_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Denon_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Denon_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Denon_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Denon_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Dish_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Dish_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Dish_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Dish_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Doshisha_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Doshisha_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Doshisha_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Doshisha_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Electra_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Electra_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Electra_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Electra_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Epson_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Epson_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Epson_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Epson_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Fujitsu_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Fujitsu_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Fujitsu_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Fujitsu_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_GICable_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_GICable_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_GICable_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_GICable_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_GlobalCache_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_GlobalCache_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_GlobalCache_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_GlobalCache_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Goodweather_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Goodweather_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Goodweather_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Goodweather_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Gree_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Gree_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Gree_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Gree_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Haier_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Haier_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Haier_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Haier_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Hitachi_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Hitachi_test.cpp similarity index 89% rename from lib/IRremoteESP8266-2.7.7/test/ir_Hitachi_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Hitachi_test.cpp index aef8008ff..2bbbd29e9 100644 --- a/lib/IRremoteESP8266-2.7.7/test/ir_Hitachi_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/ir_Hitachi_test.cpp @@ -811,16 +811,28 @@ TEST(TestUtils, Housekeeping) { ASSERT_EQ(decode_type_t::HITACHI_AC, strToDecodeType("HITACHI_AC")); ASSERT_TRUE(hasACState(decode_type_t::HITACHI_AC)); ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::HITACHI_AC)); + ASSERT_EQ(kHitachiAcBits, + IRsend::defaultBits(decode_type_t::HITACHI_AC)); + ASSERT_EQ(kNoRepeat, + IRsend::minRepeats(decode_type_t::HITACHI_AC)); ASSERT_EQ("HITACHI_AC1", typeToString(decode_type_t::HITACHI_AC1)); ASSERT_EQ(decode_type_t::HITACHI_AC1, strToDecodeType("HITACHI_AC1")); ASSERT_TRUE(hasACState(decode_type_t::HITACHI_AC1)); ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::HITACHI_AC1)); + ASSERT_EQ(kHitachiAc1Bits, + IRsend::defaultBits(decode_type_t::HITACHI_AC1)); + ASSERT_EQ(kNoRepeat, + IRsend::minRepeats(decode_type_t::HITACHI_AC1)); ASSERT_EQ("HITACHI_AC2", typeToString(decode_type_t::HITACHI_AC2)); ASSERT_EQ(decode_type_t::HITACHI_AC2, strToDecodeType("HITACHI_AC2")); ASSERT_TRUE(hasACState(decode_type_t::HITACHI_AC2)); ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::HITACHI_AC2)); + ASSERT_EQ(kHitachiAc2Bits, + IRsend::defaultBits(decode_type_t::HITACHI_AC2)); + ASSERT_EQ(kNoRepeat, + IRsend::minRepeats(decode_type_t::HITACHI_AC2)); ASSERT_EQ("HITACHI_AC3", typeToString(decode_type_t::HITACHI_AC3)); ASSERT_EQ(decode_type_t::HITACHI_AC3, strToDecodeType("HITACHI_AC3")); @@ -831,6 +843,19 @@ TEST(TestUtils, Housekeeping) { ASSERT_EQ(decode_type_t::HITACHI_AC424, strToDecodeType("HITACHI_AC424")); ASSERT_TRUE(hasACState(decode_type_t::HITACHI_AC424)); ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::HITACHI_AC424)); + ASSERT_EQ(kHitachiAc424Bits, + IRsend::defaultBits(decode_type_t::HITACHI_AC424)); + ASSERT_EQ(kNoRepeat, + IRsend::minRepeats(decode_type_t::HITACHI_AC424)); + + ASSERT_EQ("HITACHI_AC344", typeToString(decode_type_t::HITACHI_AC344)); + ASSERT_EQ(decode_type_t::HITACHI_AC344, strToDecodeType("HITACHI_AC344")); + ASSERT_TRUE(hasACState(decode_type_t::HITACHI_AC344)); + ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::HITACHI_AC344)); + ASSERT_EQ(kHitachiAc344Bits, + IRsend::defaultBits(decode_type_t::HITACHI_AC344)); + ASSERT_EQ(kNoRepeat, + IRsend::minRepeats(decode_type_t::HITACHI_AC344)); } // Decode a 'real' HitachiAc424 message. @@ -924,7 +949,7 @@ TEST(TestDecodeHitachiAc424, RealExample) { ac.setRaw(irsend.capture.state); EXPECT_EQ( "Power: On, Mode: 3 (Cool), Temp: 23C, Fan: 5 (Auto), " - "Swing(V) Toggle: Off, Button: 19 (Power/Mode)", + "Button: 19 (Power/Mode), Swing(V) Toggle: Off", IRAcUtils::resultAcToString(&irsend.capture)); stdAc::state_t r, p; ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p)); @@ -1099,29 +1124,29 @@ TEST(TestIRHitachiAc424Class, HumanReadable) { ac.setFan(kHitachiAc424FanHigh); EXPECT_EQ( "Power: On, Mode: 6 (Heat), Temp: 32C, Fan: 4 (High), " - "Swing(V) Toggle: Off, Button: 66 (Fan)", + "Button: 66 (Fan), Swing(V) Toggle: Off", ac.toString()); ac.setMode(kHitachiAc424Cool); ac.setFan(kHitachiAc424FanMin); ac.setTemp(kHitachiAc424MinTemp); EXPECT_EQ( "Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 1 (Min), " - "Swing(V) Toggle: Off, Button: 67 (Temp Down)", + "Button: 67 (Temp Down), Swing(V) Toggle: Off", ac.toString()); ac.setSwingVToggle(true); EXPECT_EQ( "Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 1 (Min), " - "Swing(V) Toggle: On, Button: 129 (Swing(V))", + "Button: 129 (Swing(V)), Swing(V) Toggle: On", ac.toString()); ac.setTemp(ac.getTemp() + 1); EXPECT_EQ( "Power: On, Mode: 3 (Cool), Temp: 17C, Fan: 1 (Min), " - "Swing(V) Toggle: Off, Button: 68 (Temp Up)", + "Button: 68 (Temp Up), Swing(V) Toggle: Off", ac.toString()); ac.setTemp(ac.getTemp() - 1); EXPECT_EQ( "Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 1 (Min), " - "Swing(V) Toggle: Off, Button: 67 (Temp Down)", + "Button: 67 (Temp Down), Swing(V) Toggle: Off", ac.toString()); } @@ -1801,3 +1826,161 @@ TEST(TestIRHitachiAc1Class, FanSpeedInDryMode) { "On Timer: Off, Off Timer: Off", ac.toString()); } + +// Decode a 'real' HitachiAc344 message. +TEST(TestDecodeHitachiAc344, RealExample) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + + uint8_t expected[kHitachiAc344StateLength] = { + 0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x98, 0x67, 0x13, + 0xEC, 0x68, 0x97, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x13, 0xEC, 0xF1, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x03, + 0xFC, 0x20, 0xDF, 0x00, 0xFF, 0x00, 0xFF}; + + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1134#issue-622516158 + const uint16_t rawData[691] = {3410, 1624, 482, 1226, 458, 464, 458, 462, 456, + 464, 460, 460, 462, 460, 460, 462, 460, 460, 460, 462, 460, 462, 456, 466, + 458, 462, 456, 1228, 462, 460, 460, 462, 460, 462, 458, 462, 456, 466, + 456, 464, 458, 464, 456, 466, 460, 460, 460, 462, 460, 460, 458, 464, 456, + 464, 458, 464, 456, 464, 460, 462, 454, 466, 458, 1226, 460, 462, 456, + 1226, 456, 1230, 456, 1228, 456, 1230, 458, 1228, 456, 1228, 456, 464, + 456, 1230, 454, 1230, 458, 1228, 458, 1226, 454, 1230, 454, 1230, 454, + 1230, 458, 1228, 458, 1230, 452, 468, 456, 464, 454, 468, 456, 464, 418, + 502, 456, 466, 458, 464, 458, 462, 458, 464, 454, 468, 456, 1230, 454, + 1230, 454, 466, 456, 464, 456, 1228, 456, 1230, 456, 1230, 456, 1230, 456, + 464, 458, 464, 458, 1228, 456, 1230, 456, 464, 454, 466, 456, 466, 456, + 464, 458, 462, 458, 1228, 458, 1228, 458, 464, 454, 468, 456, 1228, 458, + 1228, 458, 1228, 456, 1228, 456, 464, 454, 468, 456, 1228, 458, 1226, 458, + 464, 458, 1226, 456, 1230, 454, 468, 458, 462, 452, 1232, 460, 462, 458, + 460, 460, 462, 456, 466, 458, 462, 456, 1230, 456, 1228, 460, 462, 460, + 1226, 458, 1228, 458, 1226, 460, 460, 456, 468, 458, 464, 456, 1226, 460, + 462, 458, 1228, 456, 1228, 458, 462, 462, 1224, 460, 1226, 458, 1226, 460, + 464, 458, 1228, 456, 462, 460, 462, 460, 1226, 460, 460, 462, 460, 458, + 462, 458, 462, 456, 464, 460, 460, 462, 460, 462, 460, 460, 1224, 462, + 1224, 462, 1224, 458, 1226, 462, 1224, 460, 1224, 400, 1284, 446, 1240, + 446, 476, 458, 462, 464, 458, 462, 460, 460, 460, 458, 462, 462, 462, 456, + 464, 460, 1226, 460, 1226, 460, 1224, 462, 1224, 460, 1224, 460, 1224, + 460, 1224, 462, 1224, 462, 460, 460, 462, 460, 460, 458, 464, 458, 462, + 458, 464, 458, 462, 460, 460, 462, 1224, 460, 1226, 458, 1228, 456, 1226, + 462, 1222, 460, 1228, 458, 1226, 460, 1226, 460, 460, 458, 462, 460, 462, + 460, 460, 460, 462, 460, 462, 458, 464, 460, 458, 460, 1226, 456, 1228, + 462, 1224, 460, 1224, 458, 1228, 458, 1226, 458, 1228, 462, 1224, 460, + 462, 460, 462, 458, 464, 460, 460, 456, 466, 458, 462, 460, 460, 462, + 458, 460, 1224, 460, 1224, 458, 1226, 460, 1224, 460, 1226, 460, 1226, + 458, 1228, 456, 1230, 456, 1228, 462, 1224, 460, 460, 458, 462, 458, + 1228, 456, 466, 458, 462, 454, 468, 458, 462, 458, 462, 460, 1226, 456, + 1228, 458, 464, 420, 1264, 458, 1228, 458, 1228, 456, 1228, 454, 468, 456, + 464, 456, 466, 456, 1228, 460, 1226, 456, 1230, 456, 1228, 456, 464, 456, + 1230, 458, 1226, 458, 1226, 452, 468, 456, 466, 376, 546, 456, 466, 456, + 464, 456, 466, 458, 464, 458, 464, 456, 466, 424, 496, 456, 464, 416, 504, + 454, 1230, 454, 1232, 456, 1228, 456, 1228, 456, 1230, 456, 1230, 454, + 1230, 460, 1226, 426, 496, 424, 496, 456, 466, 374, 546, 454, 468, 374, + 544, 458, 464, 456, 464, 458, 1228, 424, 1262, 454, 1232, 426, 1258, 458, + 1228, 426, 1260, 454, 1230, 456, 1228, 426, 496, 374, 546, 426, 494, 426, + 496, 424, 496, 426, 496, 424, 496, 456, 1230, 456, 1230, 456, 1228, 458, + 1228, 456, 1230, 456, 1230, 456, 1230, 424, 1260, 458, 464, 426, 1258, + 456, 1230, 422, 500, 456, 466, 418, 504, 424, 496, 426, 496, 456, 464, + 420, 500, 454, 468, 456, 1230, 424, 1260, 420, 1264, 422, 1264, 418, + 1266, 420, 1264, 420, 500, 456, 466, 426, 494, 454, 468, 456, 464, 420, + 1266, 452, 470, 454, 466, 374, 1310, 456, 1228, 456, 1230, 452, 1232, 420, + 1266, 424, 498, 456, 1230, 456, 1230, 456, 466, 450, 470, 456, 464, 376, + 546, 456, 466, 422, 498, 426, 496, 458, 464, 424, 1260, 454, 1232, 454, + 1232, 454, 1232, 458, 1228, 422, 1262, 456, 1228, 454, 1230, 456, 468, + 416, 504, 422, 498, 424, 498, 454, 466, 456, 466, 422, 500, 456, 466, 374, + 1310, 418, 1266, 424, 1262, 422, 1262, 376, 1310, 376, 1308, 422, 1264, + 424, 1262, 350}; // UNKNOWN 919B8582 + + irsend.reset(); + irsend.sendRaw(rawData, 691, kHitachiAcFreq); + irsend.makeDecodeResult(); + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(HITACHI_AC344, irsend.capture.decode_type); + ASSERT_EQ(kHitachiAc344Bits, irsend.capture.bits); + EXPECT_STATE_EQ(expected, irsend.capture.state, irsend.capture.bits); +} + +// Decode a synthetic HitachiAc344 message. +TEST(TestDecodeHitachiAc344, SyntheticExample) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + + uint8_t expected[kHitachiAc344StateLength] = { + 0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x98, 0x67, 0x13, + 0xEC, 0x68, 0x97, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x13, 0xEC, 0xF1, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x03, + 0xFC, 0x20, 0xDF, 0x00, 0xFF, 0x00, 0xFF}; + + irsend.reset(); + irsend.sendHitachiAc344(expected); + irsend.makeDecodeResult(); + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(HITACHI_AC344, irsend.capture.decode_type); + ASSERT_EQ(kHitachiAc344Bits, irsend.capture.bits); + EXPECT_STATE_EQ(expected, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Mode: 3 (Cool), Temp: 26C, Fan: 1 (Min), " + "Button: 19 (Power/Mode), Swing(V): On, Swing(H): 3 (Middle)", + IRAcUtils::resultAcToString(&irsend.capture)); +} + +TEST(TestDecodeIRHitachiAc344, ExampleMessages) { + IRHitachiAc344 ac(kGpioUnused); + + // On, 17, Hot, Auto + // Ref: https://docs.google.com/spreadsheets/d/1LPd8K9V437oyEMZT6JDv5LlPXh61RPmgeoVcHLWWr7k/edit#gid=1093727366&range=E21 + // but bit order revered. + const uint8_t state[kHitachiAc344StateLength] = { + 0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x92, 0x6D, 0x13, + 0xEC, 0x44, 0xBB, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x56, 0xA9, 0xF1, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x03, + 0xFC, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF}; + ac.setRaw(state); + EXPECT_EQ( + "Power: On, Mode: 6 (Heat), Temp: 17C, Fan: 5 (Auto), " + "Button: 19 (Power/Mode), Swing(V): Off, Swing(H): 3 (Middle)", + ac.toString()); +} + +TEST(TestIRHitachiAc344Class, ReconstructKnownState) { + IRHitachiAc344 ac(kGpioUnused); + + // On, 17, Hot, Auto + const uint8_t expected[kHitachiAc344StateLength] = { + 0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x92, 0x6D, 0x13, + 0xEC, 0x44, 0xBB, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x56, 0xA9, 0xF1, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x03, + 0xFC, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF}; + ac.setMode(kHitachiAc344Heat); + ac.setTemp(17); + ac.setFan(kHitachiAc344FanAuto); + ac.setButton(kHitachiAc344ButtonPowerMode); + EXPECT_STATE_EQ(expected, ac.getRaw(), kHitachiAc344Bits); +} + +TEST(TestIRHitachiAc344Class, SwingV) { + IRHitachiAc344 ac(kGpioUnused); + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1134#issuecomment-635760537 + + // https://docs.google.com/spreadsheets/d/1LPd8K9V437oyEMZT6JDv5LlPXh61RPmgeoVcHLWWr7k/edit#gid=874235844&range=G4 + // aka. On 17 Cool Auto SwingV off SwingH off + const uint8_t start[43] = { + 0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x92, 0x6D, 0x44, + 0xBB, 0x44, 0xBB, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x53, 0xAC, 0xF1, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x03, + 0xFC, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF}; + ac.setRaw(start); + EXPECT_FALSE(ac.getSwingV()); + const uint8_t turn_on_swingv[43] = { + 0x01, 0x10, 0x00, 0x40, 0xBF, 0xFF, 0x00, 0xCC, 0x33, 0x92, 0x6D, 0x81, + 0x7E, 0x44, 0xBB, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0x53, 0xAC, 0xF1, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x03, + 0xFC, 0x20, 0xDF, 0x00, 0xFF, 0x00, 0xFF}; + ac.setSwingV(true); // Turn it on. + EXPECT_TRUE(ac.getSwingV()); + EXPECT_STATE_EQ(turn_on_swingv, ac.getRaw(), kHitachiAc344Bits); + ac.setSwingV(false); + EXPECT_FALSE(ac.getSwingV()); +} diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Inax_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Inax_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Inax_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Inax_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_JVC_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_JVC_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_JVC_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_JVC_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Kelvinator_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Kelvinator_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Kelvinator_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Kelvinator_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_LG_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_LG_test.cpp similarity index 97% rename from lib/IRremoteESP8266-2.7.7/test/ir_LG_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_LG_test.cpp index 3c04c902f..d899576b9 100644 --- a/lib/IRremoteESP8266-2.7.7/test/ir_LG_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/ir_LG_test.cpp @@ -6,24 +6,6 @@ #include "IRsend_test.h" #include "gtest/gtest.h" -// Tests for calcLGChecksum() -TEST(TestCalcLGChecksum, General) { - EXPECT_EQ(0x0, calcLGChecksum(0x0)); - EXPECT_EQ(0x1, calcLGChecksum(0x1)); - EXPECT_EQ(0xF, calcLGChecksum(0xF)); - EXPECT_EQ(0x4, calcLGChecksum(0x1111)); - EXPECT_EQ(0x8, calcLGChecksum(0x2222)); - EXPECT_EQ(0x0, calcLGChecksum(0x4444)); - EXPECT_EQ(0xA, calcLGChecksum(0x1234)); - EXPECT_EQ(0xA, calcLGChecksum(0x4321)); - EXPECT_EQ(0xE, calcLGChecksum(0xABCD)); - EXPECT_EQ(0x1, calcLGChecksum(0x4AE5)); - EXPECT_EQ(0xC, calcLGChecksum(0xFFFF)); - EXPECT_EQ(0x1, calcLGChecksum(0xC005)); - EXPECT_EQ(0x1, IRLgAc::calcChecksum(0x88C0051)); - EXPECT_EQ(0x4, calcLGChecksum(0xC035)); - EXPECT_EQ(0x4, IRLgAc::calcChecksum(0x88C0354)); -} // Tests for sendLG(). @@ -670,6 +652,11 @@ TEST(TestIRLgAcClass, isValidLgAc) { ASSERT_FALSE(ac.isValidLgAc()); } +TEST(TestIRLgAcClass, calcChecksum) { + EXPECT_EQ(0x1, IRLgAc::calcChecksum(0x88C0051)); + EXPECT_EQ(0x4, IRLgAc::calcChecksum(0x88C0354)); +} + TEST(TestUtils, Housekeeping) { ASSERT_EQ("LG", typeToString(decode_type_t::LG)); ASSERT_EQ(decode_type_t::LG, strToDecodeType("LG")); diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Lasertag_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Lasertag_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Lasertag_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Lasertag_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Lego_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Lego_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Lego_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Lego_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Lutron_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Lutron_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Lutron_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Lutron_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_MWM_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_MWM_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_MWM_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_MWM_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Magiquest_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Magiquest_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Magiquest_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Magiquest_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Midea_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Midea_test.cpp similarity index 79% rename from lib/IRremoteESP8266-2.7.7/test/ir_Midea_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Midea_test.cpp index 4c437a576..24c2610a4 100644 --- a/lib/IRremoteESP8266-2.7.7/test/ir_Midea_test.cpp +++ b/lib/IRremoteESP8266-2.7.8/test/ir_Midea_test.cpp @@ -790,3 +790,165 @@ TEST(TestDecodeMidea, Issue887) { EXPECT_EQ(kMideaBits, irsend.capture.bits); EXPECT_EQ(hwaddr, irsend.capture.value); } + +// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1170 +TEST(TestDecodeMidea24, RealExample) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + irsend.reset(); + + const uint16_t rawData[103] = { + 8928, 4412, 590, 1630, 588, 538, 538, 544, 610, 516, 592, 516, 590, 538, + 568, 536, 538, 568, 592, 518, 588, 1630, 588, 1630, 560, 1680, 592, 1628, + 594, 1628, 592, 1650, 568, 1630, 558, 1680, 594, 1652, 568, 514, 592, 536, + 538, 568, 594, 516, 588, 538, 566, 518, 560, 566, 588, 514, 594, 1630, + 588, 1630, 590, 1630, 560, 1680, 594, 1630, 588, 1652, 568, 1650, 540, + 1680, 590, 512, 594, 518, 586, 538, 566, 538, 536, 568, 592, 540, 564, + 540, 566, 540, 538, 1680, 590, 1626, 592, 1630, 588, 1628, 538, 1702, 590, + 1630, 590, 13318, 8916, 2166, 638}; // UNKNOWN 774B249A + + irsend.sendRaw(rawData, 103, 38); + irsend.makeDecodeResult(); + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(MIDEA24, irsend.capture.decode_type); + EXPECT_EQ(kMidea24Bits, irsend.capture.bits); + EXPECT_EQ(0x80C0C0, irsend.capture.value); + EXPECT_EQ(0, irsend.capture.address); + EXPECT_EQ(0, irsend.capture.command); +} + +TEST(TestDecodeMidea24, SyntheticExample) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + irsend.reset(); + + irsend.sendMidea24(0x80C0C0); + irsend.makeDecodeResult(); + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(MIDEA24, irsend.capture.decode_type); + EXPECT_EQ(kMidea24Bits, irsend.capture.bits); + EXPECT_EQ(0x80C0C0, irsend.capture.value); + EXPECT_EQ(0, irsend.capture.address); + EXPECT_EQ(0, irsend.capture.command); + EXPECT_EQ( + "f38000d33" + "m8960s4480" + "m560s1680m560s560m560s560m560s560m560s560m560s560m560s560m560s560" + "m560s560m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680" + "m560s1680m560s1680m560s560m560s560m560s560m560s560m560s560m560s560" + "m560s560m560s560m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680" + "m560s1680m560s1680m560s560m560s560m560s560m560s560m560s560m560s560" + "m560s560m560s560m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680" + "m560s22400" + "m8960s2240m560s96320", + irsend.outputStr()); +} + +TEST(TestUtils, Housekeeping) { + ASSERT_EQ("MIDEA", typeToString(decode_type_t::MIDEA)); + ASSERT_EQ(decode_type_t::MIDEA, strToDecodeType("MIDEA")); + ASSERT_FALSE(hasACState(decode_type_t::MIDEA)); + ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::MIDEA)); + ASSERT_EQ(kNoRepeat, IRsend::minRepeats(decode_type_t::MIDEA)); + ASSERT_EQ(kMideaBits, IRsend::defaultBits(decode_type_t::MIDEA)); + + ASSERT_EQ("MIDEA24", typeToString(decode_type_t::MIDEA24)); + ASSERT_EQ(decode_type_t::MIDEA24, strToDecodeType("MIDEA24")); + ASSERT_FALSE(hasACState(decode_type_t::MIDEA24)); + ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::MIDEA24)); + ASSERT_EQ(kSingleRepeat, IRsend::minRepeats(decode_type_t::MIDEA24)); + ASSERT_EQ(kMidea24Bits, IRsend::defaultBits(decode_type_t::MIDEA24)); +} + +TEST(TestDecodeMidea24, RealExample2) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + irsend.reset(); + + // https://github.com/crankyoldgit/IRremoteESP8266/issues/1170#issuecomment-639271003 + const uint16_t rawData[103] = { + 8926, 4412, 590, 1630, 536, 570, 608, 518, 594, 516, 588, 518, 588, 538, + 538, 568, 592, 514, 590, 518, 588, 1630, 536, 1684, 610, 1628, 594, 1630, + 588, 1630, 590, 1630, 560, 1680, 592, 1630, 588, 1650, 568, 538, 538, 568, + 590, 514, 594, 538, 566, 518, 536, 594, 584, 516, 594, 518, 586, 1630, + 588, 1650, 538, 1682, 592, 1630, 588, 1628, 588, 1630, 560, 1680, 590, + 1626, 594, 538, 566, 538, 568, 536, 538, 570, 590, 538, 566, 538, 568, + 538, 538, 568, 590, 1626, 594, 1650, 568, 1628, 558, 1662, 558, 1680, 592, + 1650, 568, 13312, 8924, 2186, 588}; // UNKNOWN 774B249A + + irsend.sendRaw(rawData, 103, 38); + irsend.makeDecodeResult(); + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(MIDEA24, irsend.capture.decode_type); + EXPECT_EQ(kMidea24Bits, irsend.capture.bits); + EXPECT_EQ(0x80C0C0, irsend.capture.value); + EXPECT_EQ(0, irsend.capture.address); + EXPECT_EQ(0, irsend.capture.command); + + // ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1170#issuecomment-639349316 + const uint16_t rawData639349316[105] = { + 8924, 4410, 596, 1628, 590, 538, 538, 568, 588, 520, 592, 516, 588, 518, + 588, 516, 558, 568, 594, 538, 566, 1652, 568, 1650, 540, 1680, 590, 1628, + 592, 1628, 590, 1628, 590, 1650, 540, 1680, 592, 1630, 590, 518, 586, 538, + 538, 568, 590, 514, 616, 494, 588, 516, 588, 516, 560, 566, 590, 1630, + 586, 1634, 564, 1652, 538, 1704, 566, 948, 254, 450, 564, 1654, 566, + 1652, 540, 1682, 610, 518, 588, 516, 590, 514, 590, 514, 582, 526, 614, + 436, 670, 512, 592, 514, 538, 1578, 718, 1602, 614, 1542, 676, 1626, 538, + 1678, 586, 1634, 616, 13308, 8920, 2158, 626}; // UNKNOWN CBEC0079 + irsend.reset(); + irsend.sendRaw(rawData639349316, 105, 38); + irsend.makeDecodeResult(); + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_NE(MIDEA24, irsend.capture.decode_type); + + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1170#issuecomment-639358566 + const uint16_t rawData639358566[103] = { + 8920, 4412, 620, 1606, 614, 512, 592, 512, 536, 568, 618, 512, 590, 492, + 614, 514, 514, 590, 594, 510, 620, 1624, 592, 1604, 590, 1632, 608, 1626, + 606, 1616, 618, 1602, 618, 1602, 560, 1682, 622, 1602, 618, 512, 592, 510, + 538, 568, 590, 512, 622, 488, 616, 490, 614, 488, 560, 568, 620, 1624, + 594, 1604, 616, 1602, 536, 1684, 640, 1600, 618, 1598, 618, 1602, 590, + 1630, 612, 512, 622, 510, 594, 514, 592, 512, 534, 568, 620, 512, 594, + 488, 616, 488, 536, 1702, 594, 1622, 622, 1604, 614, 1624, 594, 1602, 610, + 1630, 620, 13294, 8914, 2184, 596}; // UNKNOWN 774B249A + irsend.reset(); + irsend.sendRaw(rawData639358566, 103, 38); + irsend.makeDecodeResult(); + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(MIDEA24, irsend.capture.decode_type); + EXPECT_EQ(kMidea24Bits, irsend.capture.bits); + EXPECT_EQ(0x80C0C0, irsend.capture.value); + EXPECT_EQ(0, irsend.capture.address); + EXPECT_EQ(0, irsend.capture.command); +} + +// See https://github.com/crankyoldgit/IRremoteESP8266/issues/1170#issuecomment-639468620 +// for why this test exists. +TEST(TestDecodeMidea24, LargeTimeout) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused, 1000, 90); // Test with a large timeout value + irsend.begin(); + irsend.reset(); + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1170#issuecomment-639358566 + const uint16_t rawData639358566[103] = { + 8920, 4412, 620, 1606, 614, 512, 592, 512, 536, 568, 618, 512, 590, 492, + 614, 514, 514, 590, 594, 510, 620, 1624, 592, 1604, 590, 1632, 608, 1626, + 606, 1616, 618, 1602, 618, 1602, 560, 1682, 622, 1602, 618, 512, 592, 510, + 538, 568, 590, 512, 622, 488, 616, 490, 614, 488, 560, 568, 620, 1624, + 594, 1604, 616, 1602, 536, 1684, 640, 1600, 618, 1598, 618, 1602, 590, + 1630, 612, 512, 622, 510, 594, 514, 592, 512, 534, 568, 620, 512, 594, + 488, 616, 488, 536, 1702, 594, 1622, 622, 1604, 614, 1624, 594, 1602, 610, + 1630, 620, 13294, 8914, 2184, 596}; // UNKNOWN 774B249A + irsend.reset(); + irsend.sendRaw(rawData639358566, 103, 38); + irsend.makeDecodeResult(); + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(MIDEA24, irsend.capture.decode_type); + EXPECT_EQ(kMidea24Bits, irsend.capture.bits); + EXPECT_EQ(0x80C0C0, irsend.capture.value); + EXPECT_EQ(0, irsend.capture.address); + EXPECT_EQ(0, irsend.capture.command); +} diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_MitsubishiHeavy_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_MitsubishiHeavy_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_MitsubishiHeavy_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_MitsubishiHeavy_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Mitsubishi_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Mitsubishi_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Mitsubishi_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Mitsubishi_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Multibrackets_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Multibrackets_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Multibrackets_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Multibrackets_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_NEC_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_NEC_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_NEC_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_NEC_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Neoclima_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Neoclima_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Neoclima_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Neoclima_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Nikai_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Nikai_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Nikai_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Nikai_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Panasonic_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Panasonic_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Panasonic_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Panasonic_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Pioneer_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Pioneer_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Pioneer_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Pioneer_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Pronto_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Pronto_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Pronto_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Pronto_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_RC5_RC6_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_RC5_RC6_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_RC5_RC6_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_RC5_RC6_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_RCMM_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_RCMM_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_RCMM_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_RCMM_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Samsung_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Samsung_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Samsung_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Samsung_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Sanyo_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Sanyo_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Sanyo_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Sanyo_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Sharp_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Sharp_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Sharp_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Sharp_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Sherwood_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Sherwood_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Sherwood_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Sherwood_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Sony_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Sony_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Sony_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Sony_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Symphony_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Symphony_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Symphony_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Symphony_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Tcl_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Tcl_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Tcl_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Tcl_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Teco_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Teco_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Teco_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Teco_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Toshiba_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Toshiba_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Toshiba_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Toshiba_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Trotec_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Trotec_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Trotec_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Trotec_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Vestel_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Vestel_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Vestel_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Vestel_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Whirlpool_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Whirlpool_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Whirlpool_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Whirlpool_test.cpp diff --git a/lib/IRremoteESP8266-2.7.7/test/ir_Whynter_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Whynter_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/test/ir_Whynter_test.cpp rename to lib/IRremoteESP8266-2.7.8/test/ir_Whynter_test.cpp diff --git a/lib/IRremoteESP8266-2.7.8/test/ir_Zepeal_test.cpp b/lib/IRremoteESP8266-2.7.8/test/ir_Zepeal_test.cpp new file mode 100644 index 000000000..12240d2f7 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.8/test/ir_Zepeal_test.cpp @@ -0,0 +1,312 @@ +// Copyright 2020 Christian Nilsson + +#include "IRac.h" +#include "IRrecv.h" +#include "IRrecv_test.h" +#include "IRsend.h" +#include "IRsend_test.h" +#include "gtest/gtest.h" + +// Tests for decodeZepeal(). + +TEST(TestDecodeZepeal, RealExample) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + // fuuryou (speed) one of 5 repeats + const uint16_t rawData_1[35] = { + 2328, 3412, + 424, 1314, 1302, 436, 1276, 454, 424, 1316, + 1274, 464, 1274, 458, 454, 1278, 450, 1288, + 1302, 432, 424, 1306, 424, 1306, 424, 1306, + 428, 1304, 450, 1290, 1298, 430, 426, 1308, + 426}; // UNKNOWN B5E66F84 + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_1, 35, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + ASSERT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0x6C82, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + + // kiri/iri (off/on) short press + const uint16_t rawData_2[179] = { + 2338, 3384, + 426, 1314, 1300, 436, 1304, 428, 424, 1314, + 1302, 440, 1300, 428, 424, 1306, 424, 1314, + 1300, 432, 400, 1330, 400, 1332, 418, 1316, + 422, 1308, 424, 1308, 400, 1338, 1300, 432, + 426, 6728, + 2352, 3384, + 426, 1312, 1302, 436, 1276, 438, 442, 1316, + 1300, 434, 1302, 430, 424, 1308, 422, 1298, + 1318, 414, 468, 1280, 426, 1306, 452, 1280, + 450, 1282, 400, 1332, 400, 1338, 1302, 412, + 416, 6760, + 2350, 3384, + 400, 1340, 1300, 438, 1300, 412, 444, 1312, + 1302, 434, 1302, 412, 442, 1308, 426, 1312, + 1302, 430, 422, 1308, 424, 1304, 400, 1332, + 424, 1306, 402, 1332, 422, 1318, 1300, 430, + 398, 6754, + 2354, 3364, + 442, 1316, 1300, 438, 1300, 430, 422, 1316, + 1328, 410, 1302, 430, 400, 1332, 400, 1338, + 1302, 412, 418, 1334, 398, 1314, 444, 1306, + 400, 1330, 424, 1308, 424, 1314, 1300, 430, + 428, 6774, + 2334, 3384, + 400, 1338, 1302, 436, 1304, 430, 396, 1340, + 1300, 436, 1302, 432, 452, 1280, 398, 1338, + 1302, 428, 402, 1330, 426, 1310, 422, 1306, + 426, 1306, 426, 1306, 404, 1336, 1274, 458, + 424}; // UNKNOWN C2DCDDE5 + + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_2, 179, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + ASSERT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0x6C81, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + + EXPECT_EQ( + "f38000d50" + "m2338s3384" + "m426s1314m1300s436m1304s428m424s1314m1302s440m1300s428m424s1306m424s1314" + "m1300s432m400s1330m400s1332m418s1316m422s1308m424s1308m400s1338m1300s432" + "m426s6728" + "m2352s3384" + "m426s1312m1302s436m1276s438m442s1316m1300s434m1302s430m424s1308m422s1298" + "m1318s414m468s1280m426s1306m452s1280m450s1282m400s1332m400s1338m1302s412" + "m416s6760" + "m2350s3384" + "m400s1340m1300s438m1300s412m444s1312m1302s434m1302s412m442s1308m426s1312" + "m1302s430m422s1308m424s1304m400s1332m424s1306m402s1332m422s1318m1300s430" + "m398s6754" + "m2354s3364" + "m442s1316m1300s438m1300s430m422s1316m1328s410m1302s430m400s1332m400s1338" + "m1302s412m418s1334m398s1314m444s1306m400s1330m424s1308m424s1314m1300s430" + "m428s6774" + "m2334s3384" + "m400s1338m1302s436m1304s430m396s1340m1300s436m1302s432m452s1280m398s1338" + "m1302s428m402s1330m426s1310m422s1306m426s1306m426s1306m404s1336m1274s458" + "m424", + irsend.outputStr()); + + // rizumu/oyasumi (rhythm/sleep - mode) + const uint16_t rawData_3[143] = { + 2354, 3386, + 422, 1312, 1278, 462, 1300, 410, 442, 1316, + 1300, 436, 1302, 412, 448, 1304, 398, 1338, + 1300, 430, 426, 1306, 426, 1304, 400, 1332, + 400, 1340, 1300, 430, 400, 1334, 426, 1304, + 398, 6756, + 2354, 3382, + 424, 1294, 1346, 410, 1302, 410, 418, 1340, + 1300, 434, 1304, 430, 398, 1332, 400, 1338, + 1276, 456, 400, 1334, 400, 1330, 400, 1332, + 398, 1342, 1298, 430, 422, 1308, 400, 1332, + 398, 6754, + 2356, 3382, + 400, 1340, 1274, 464, 1298, 412, 444, 1314, + 1300, 438, 1300, 412, 442, 1308, 400, 1338, + 1300, 414, 418, 1330, 400, 1332, 400, 1330, + 426, 1312, 1332, 380, 446, 1306, 424, 1308, + 424, 6736, + 2352, 3380, + 402, 1338, 1302, 436, 1300, 412, 420, 1338, + 1300, 436, 1300, 412, 418, 1332, 402, 1336, + 1302, 408, 418, 1332, 424, 1308, 424, 1306, + 398, 1340, 1276, 454, 400, 1314, 418, 1332, + 426}; // UNKNOWN 712E7A7F + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_3, 143, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + ASSERT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0x6C84, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + + // kiri taimaa (off timer) + const uint16_t rawData_4[143] = { + 2308, 3392, + 444, 1314, 1302, 436, 1330, 382, 420, 1338, + 1302, 436, 1302, 408, 444, 1308, 450, 1288, + 1300, 410, 420, 1332, 424, 1308, 400, 1338, + 1302, 430, 428, 1286, 444, 1306, 452, 1282, + 424, 6728, + 2354, 3362, + 444, 1314, 1274, 464, 1302, 410, 420, 1338, + 1300, 438, 1328, 384, 444, 1308, 398, 1338, + 1274, 456, 424, 1306, 402, 1332, 424, 1312, + 1302, 412, 442, 1308, 424, 1308, 398, 1334, + 422, 6752, + 2336, 3382, + 422, 1316, 1302, 434, 1302, 430, 400, 1340, + 1302, 434, 1302, 410, 444, 1310, 422, 1314, + 1302, 410, 444, 1304, 428, 1304, 426, 1312, + 1302, 428, 424, 1308, 424, 1308, 426, 1304, + 426, 6736, + 2354, 3382, + 424, 1314, 1302, 438, 1300, 410, 418, 1338, + 1304, 436, 1304, 406, 418, 1336, 398, 1338, + 1300, 432, 424, 1306, 426, 1306, 450, 1286, + 1302, 412, 418, 1336, 396, 1334, 424, 1306, + 424}; // UNKNOWN AAD01FEF + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_4, 143, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + ASSERT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0x6C88, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + + // iri taimaa (on timer) + const uint16_t rawData_5[143] = { + 2364, 3358, + 424, 1316, 1298, 438, 1300, 432, 424, 1314, + 1298, 440, 1300, 430, 424, 1310, 424, 1312, + 1300, 436, 1302, 430, 424, 1308, 422, 1308, + 424, 1308, 424, 1314, 1302, 438, 1302, 430, + 422, 6730, + 2354, 3384, + 422, 1314, 1300, 438, 1302, 426, 426, 1312, + 1300, 438, 1302, 412, 418, 1330, 426, 1316, + 1302, 434, 1302, 430, 426, 1306, 424, 1306, + 424, 1308, 426, 1312, 1302, 436, 1302, 430, + 428, 6752, + 2364, 3354, + 428, 1308, 1304, 436, 1302, 428, 426, 1314, + 1330, 408, 1304, 428, 402, 1330, 398, 1338, + 1306, 432, 1280, 454, 426, 1302, 428, 1304, + 430, 1302, 428, 1310, 1306, 434, 1304, 428, + 428, 6788, + 2336, 3382, + 428, 1310, 1302, 434, 1304, 430, 426, 1310, + 1306, 434, 1304, 430, 424, 1306, 402, 1336, + 1302, 438, 1304, 426, 426, 1304, 402, 1330, + 426, 1304, 400, 1336, 1306, 434, 1304, 428, + 424}; // UNKNOWN F8FC587 + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData_5, 143, 38); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + ASSERT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0x6CC3, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); +} + +TEST(TestDecodeZepeal, SyntheticExample) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + irsend.reset(); + // power + irsend.sendZepeal(0x6C81); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + EXPECT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0x6C81, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + + EXPECT_EQ( + "f38000d50" + "m2330s3380" + "m420s1300m1300s420m1300s420m420s1300m1300s420m1300s420m420s1300m420s1300" + "m1300s420m420s1300m420s1300m420s1300m420s1300m420s1300m420s1300m1300s420" + "m420s6750" + "m2330s3380" + "m420s1300m1300s420m1300s420m420s1300m1300s420m1300s420m420s1300m420s1300" + "m1300s420m420s1300m420s1300m420s1300m420s1300m420s1300m420s1300m1300s420" + "m420s6750" + "m2330s3380" + "m420s1300m1300s420m1300s420m420s1300m1300s420m1300s420m420s1300m420s1300" + "m1300s420m420s1300m420s1300m420s1300m420s1300m420s1300m420s1300m1300s420" + "m420s6750" + "m2330s3380" + "m420s1300m1300s420m1300s420m420s1300m1300s420m1300s420m420s1300m420s1300" + "m1300s420m420s1300m420s1300m420s1300m420s1300m420s1300m420s1300m1300s420" + "m420s6750" + "m2330s3380" + "m420s1300m1300s420m1300s420m420s1300m1300s420m1300s420m420s1300m420s1300" + "m1300s420m420s1300m420s1300m420s1300m420s1300m420s1300m420s1300m1300s420" + "m420s6750", + irsend.outputStr()); + + irsend.reset(); + irsend.sendZepeal(0x6Cff, kZepealBits, kNoRepeat); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + EXPECT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0x6Cff, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + EXPECT_EQ( + "f38000d50" + "m2330s3380" + "m420s1300m1300s420m1300s420m420s1300m1300s420m1300s420m420s1300m420s1300" + "m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420" + "m420s6750", + irsend.outputStr()); + + irsend.reset(); + // testing a non valid value + irsend.sendZepeal(0xffff, kZepealBits, kNoRepeat); + irsend.makeDecodeResult(); + + // strict check should fail + ASSERT_FALSE(irrecv.decodeZepeal(&irsend.capture, kStartOffset, + kZepealBits, true)); + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(-1, irsend.capture.decode_type); + + // non strict check should be ok + ASSERT_TRUE(irrecv.decodeZepeal(&irsend.capture, kStartOffset, + kZepealBits, false)); + EXPECT_EQ(decode_type_t::ZEPEAL, irsend.capture.decode_type); + EXPECT_EQ(kZepealBits, irsend.capture.bits); + EXPECT_EQ(0xffff, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); + EXPECT_EQ( + "f38000d50" + "m2330s3380" + "m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420" + "m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420m1300s420" + "m420s6750", + irsend.outputStr()); +} + +TEST(TestUtils, Housekeeping) { + ASSERT_EQ("ZEPEAL", typeToString(decode_type_t::ZEPEAL)); + ASSERT_EQ(decode_type_t::ZEPEAL, strToDecodeType("ZEPEAL")); + ASSERT_FALSE(hasACState(decode_type_t::ZEPEAL)); + ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::ZEPEAL)); + ASSERT_EQ(kZepealBits, IRsend::defaultBits(decode_type_t::ZEPEAL)); + ASSERT_EQ(kZepealMinRepeat, IRsend::minRepeats(decode_type_t::ZEPEAL)); +} diff --git a/lib/IRremoteESP8266-2.7.7/tools/Makefile b/lib/IRremoteESP8266-2.7.8/tools/Makefile similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/Makefile rename to lib/IRremoteESP8266-2.7.8/tools/Makefile diff --git a/lib/IRremoteESP8266-2.7.7/tools/RawToGlobalCache.sh b/lib/IRremoteESP8266-2.7.8/tools/RawToGlobalCache.sh similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/RawToGlobalCache.sh rename to lib/IRremoteESP8266-2.7.8/tools/RawToGlobalCache.sh diff --git a/lib/IRremoteESP8266-2.7.7/tools/auto_analyse_raw_data.py b/lib/IRremoteESP8266-2.7.8/tools/auto_analyse_raw_data.py similarity index 92% rename from lib/IRremoteESP8266-2.7.7/tools/auto_analyse_raw_data.py rename to lib/IRremoteESP8266-2.7.8/tools/auto_analyse_raw_data.py index 4dc4cb698..3b22ea12d 100755 --- a/lib/IRremoteESP8266-2.7.7/tools/auto_analyse_raw_data.py +++ b/lib/IRremoteESP8266-2.7.8/tools/auto_analyse_raw_data.py @@ -7,6 +7,8 @@ import argparse import sys +SAFE64NOTE = "--safe64note--" +CODEGEN = "--codegen--" class RawIRMessage(): """Basic analyse functions & structure for raw IR messages.""" @@ -359,10 +361,14 @@ def parse_and_report(rawdata_str, margin, gen_code=False, name="", """Analyse the rawdata c++ definition of a IR message.""" defines = [] code = {} + code["sendcomhead"] = [] code["send"] = [] code["send64+"] = [] + code["sendcomfoot"] = [] + code["recvcomhead"] = [] code["recv"] = [] code["recv64+"] = [] + code["recvcomfoot"] = [] # Parse the input. rawdata = convert_rawdata(rawdata_str) @@ -401,11 +407,13 @@ def decode_data(message, defines, code, name="", output=sys.stdout): else: def_name = "TBD" - code["send"].extend([ + code["sendcomhead"].extend([ + "", "#if SEND_%s" % def_name.upper(), + SAFE64NOTE, "/// Send a %s formatted message." % name, - "/// Function should be safe up to 64 bits.", - "/// Status: ALPHA / Untested.", + "/// Status: ALPHA / Untested."]) + code["send"].extend([ "/// @param[in] data containing the IR command.", "/// @param[in] nbits Nr. of bits to send. usually k%sBits" % name, "/// @param[in] repeat Nr. of times the message is to be repeated.", @@ -417,6 +425,10 @@ def decode_data(message, defines, code, name="", output=sys.stdout): code["send64+"].extend([ "/// @param[in] data An array of bytes containing the IR command.", "/// It is assumed to be in MSB order for this code.", + "/// e.g.", + "/// @code", + CODEGEN, + "/// @endcode", "/// @param[in] nbytes Nr. of bytes of data in the array." " (>=k%sStateLength)" % name, "/// @param[in] repeat Nr. of times the message is to be repeated.", @@ -424,10 +436,15 @@ def decode_data(message, defines, code, name="", output=sys.stdout): " const uint16_t repeat) {" % def_name, " for (uint16_t r = 0; r <= repeat; r++) {", " uint16_t pos = 0;"]) - code["recv"].extend([ + code["sendcomfoot"].extend([ + " }", + "}", + "#endif // SEND_%s" % def_name.upper()]) + code["recvcomhead"].extend([ + "", "#if DECODE_%s" % def_name.upper(), + SAFE64NOTE, "/// Decode the supplied %s message." % name, - "/// Function should be safe up to 64 bits.", "/// Status: ALPHA / Untested.", "/// @param[in,out] results Ptr to the data to decode &" " where to store the decode", @@ -444,32 +461,17 @@ def decode_data(message, defines, code, name="", output=sys.stdout): " return false; // Too short a message to match.", " if (strict && nbits != k%sBits)" % name, " return false;", - "", + ""]) + code["recv"].extend([ " uint64_t data = 0;", " match_result_t data_result;"]) code["recv64+"].extend([ - "#if DECODE_%s" % def_name.upper(), - "/// Decode the supplied %s message." % name, - "/// Function should be safe over 64 bits.", - "/// Status: ALPHA / Untested.", - "/// @param[in,out] results Ptr to the data to decode &" - " where to store the decode", - "/// @param[in] offset The starting index to use when" - " attempting to decode the", - "/// raw data. Typically/Defaults to kStartOffset.", - "/// @param[in] nbits The number of data bits to expect.", - "/// @param[in] strict Flag indicating if we should perform" - " strict matching.", - "/// @return A boolean. True if it can decode it, false if it can't.", - "bool IRrecv::decode%s(decode_results *results, uint16_t offset," - " const uint16_t nbits, const bool strict) {" % def_name, - " if (results->rawlen < 2 * nbits + k%sOverhead - offset)" % name, - " return false; // Too short a message to match.", - " if (strict && nbits != k%sBits)" % name, - " return false;", - "", " uint16_t pos = 0;", " uint16_t used = 0;"]) + code["recvcomfoot"].extend([ + " return true;", + "}", + "#endif // DECODE_%s" % def_name.upper()]) # states are: # HM: Header/Leader mark @@ -604,14 +606,7 @@ def decode_data(message, defines, code, name="", output=sys.stdout): message.section_count = message.section_count + 1 code["send"].extend([ " space(kDefaultMessageGap); // A 100% made up guess of the gap" - " between messages.", - " }", - "}", - "#endif // SEND_%s" % def_name.upper()]) - code["send64+"].extend([ - " }", - "}", - "#endif // SEND_%s" % def_name.upper()]) + " between messages."]) code["recv"].extend([ "", " // Success", @@ -619,18 +614,12 @@ def decode_data(message, defines, code, name="", output=sys.stdout): " results->bits = nbits;", " results->value = data;", " results->command = 0;", - " results->address = 0;", - " return true;", - "}", - "#endif // DECODE_%s" % def_name.upper()]) + " results->address = 0;"]) code["recv64+"].extend([ "", " // Success", " results->decode_type = decode_type_t::%s;" % def_name.upper(), - " results->bits = nbits;", - " return true;", - "}", - "#endif // DECODE_%s" % def_name.upper()]) + " results->bits = nbits;"]) total_bits = total_bits + binary_value output.write("\nTotal Nr. of suspected bits: %d\n" % len(total_bits)) @@ -647,13 +636,17 @@ def decode_data(message, defines, code, name="", output=sys.stdout): def generate_code(defines, code, bits_str, name="", output=sys.stdout): """Output the estimated C++ code to reproduce & decode the IR message.""" + # pylint: disable=too-many-branches if name: def_name = name else: def_name = "TBD" output.write("\nGenerating a VERY rough code outline:\n\n" "// Copyright 2020 David Conran (crankyoldgit)\n" - "// Support for %s protocol\n\n" + "/// @file\n" + "/// @brief Support for %s protocol\n\n" + "// Supports:\n" + "// Brand: %s, Model: TODO add device and remote\n\n" '#include "IRrecv.h"\n' '#include "IRsend.h"\n' '#include "IRutils.h"\n\n' @@ -662,7 +655,7 @@ def generate_code(defines, code, bits_str, name="", output=sys.stdout): "// See https://github.com/crankyoldgit/IRremoteESP8266/wiki/" "Adding-support-for-a-new-IR-protocol\n" "// for details of how to include this in the library." - "\n" % def_name) + "\n" % (def_name, def_name)) for line in defines: output.write("%s\n" % line) @@ -671,39 +664,40 @@ def generate_code(defines, code, bits_str, name="", output=sys.stdout): "'data' won't work!\n") # Display the "normal" version's send code incase there are some # oddities in it. - for line in code["send"]: + for line in code["sendcomhead"] + code["send"] + code["sendcomfoot"]: + if line == SAFE64NOTE: + line = "// Function should be safe up to 64 bits." output.write("%s\n" % line) if len(bits_str) > 64: # Will it fit in a uint64_t? - code["send64+"] = [ - "", - "#if SEND_%s" % def_name.upper(), - "/// Send a %s formatted message." % name, - "/// Alternative >64bit function to send %s messages" % - def_name.upper(), - "/// Status: ALPHA / Untested.", - "/// Where data is:", - "/// uint8_t data[k%sStateLength] = {0x%s};" % ( + for line in code["sendcomhead"] + code["send64+"] + code["sendcomfoot"]: + if line == SAFE64NOTE: + line = "// Alternative >64bit function to send %s messages\n" % \ + def_name.upper() + "// Function should be safe over 64 bits." + elif line == CODEGEN: + line = "/// uint8_t data[k%sStateLength] = {0x%s};" % ( name, ", 0x".join("%02X" % int(bits_str[i:i + 8], 2) - for i in range(0, len(bits_str), 8))), - "///"] + code["send64+"] - for line in code["send64+"]: + for i in range(0, len(bits_str), 8))) output.write("%s\n" % line) - output.write("\n") if len(bits_str) > 64: # Will it fit in a uint64_t? - output.write("// DANGER: More than 64 bits detected. A uint64_t for " - "'data' won't work!\n") + output.write("\n// DANGER: More than 64 bits detected. A uint64_t for " + "'data' won't work!") + # Display the "normal" version's decode code incase there are some # oddities in it. - for line in code["recv"]: + for line in code["recvcomhead"] + code["recv"] + code["recvcomfoot"]: + if line == SAFE64NOTE: + line = "// Function should be safe up to 64 bits." output.write("%s\n" % line) + # Display the > 64bit version's decode code if len(bits_str) > 64: # Is it too big for a uint64_t? - output.write("\n// Note: This should be 64+ bit safe.\n") if len(bits_str) % 8: output.write("\n// WARNING: Data is not a multiple of bytes. " "This won't work!\n") - for line in code["recv64+"]: + for line in code["recvcomhead"] + code["recv64+"] + code["recvcomfoot"]: + if line == SAFE64NOTE: + line = "// Function should be safe over 64 bits." output.write("%s\n" % line) def add_rawdata_args(parser): @@ -711,7 +705,7 @@ def add_rawdata_args(parser): arg_group = parser.add_mutually_exclusive_group(required=True) arg_group.add_argument( "rawdata", - help="A rawData line from IRrecvDumpV2. e.g. 'uint16_t rawbuf[37] = {" + help="A rawData line from IRrecvDumpV2+. e.g. 'uint16_t rawbuf[37] = {" "7930, 3952, 494, 1482, 520, 1482, 494, 1508, 494, 520, 494, 1482, 494, " "520, 494, 1482, 494, 1482, 494, 3978, 494, 520, 494, 520, 494, 520, " "494, 520, 520, 520, 494, 520, 494, 520, 494, 520, 494};'", @@ -765,7 +759,13 @@ def main(): add_rawdata_args(arg_parser) arg_options = arg_parser.parse_args() - parse_and_report(get_rawdata(arg_options), arg_options.margin, + raw_data = get_rawdata(arg_options).strip() + if not raw_data: + arg_parser.print_help(sys.stderr) + sys.stderr.write("error: no rawdata content\n") + sys.exit(1) + + parse_and_report(raw_data, arg_options.margin, arg_options.gen_code, arg_options.name) diff --git a/lib/IRremoteESP8266-2.7.7/tools/auto_analyse_raw_data_test.py b/lib/IRremoteESP8266-2.7.8/tools/auto_analyse_raw_data_test.py similarity index 97% rename from lib/IRremoteESP8266-2.7.7/tools/auto_analyse_raw_data_test.py rename to lib/IRremoteESP8266-2.7.8/tools/auto_analyse_raw_data_test.py index 1f90c4661..1b080c5a8 100755 --- a/lib/IRremoteESP8266-2.7.7/tools/auto_analyse_raw_data_test.py +++ b/lib/IRremoteESP8266-2.7.8/tools/auto_analyse_raw_data_test.py @@ -280,7 +280,11 @@ class TestAutoAnalyseRawData(unittest.TestCase): 'Generating a VERY rough code outline:\n' '\n' '// Copyright 2020 David Conran (crankyoldgit)\n' - '// Support for FOO protocol\n' + '/// @file\n' + '/// @brief Support for FOO protocol\n' + '\n' + '// Supports:\n' + '// Brand: FOO, Model: TODO add device and remote\n' '\n' '#include "IRrecv.h"\n' '#include "IRsend.h"\n' @@ -300,9 +304,10 @@ class TestAutoAnalyseRawData(unittest.TestCase): ' frequency.)\n' 'const uint16_t kFOOBits = 16; // Move to IRremoteESP8266.h\n' 'const uint16_t kFOOOverhead = 5;\n' + '\n' '#if SEND_FOO\n' + '// Function should be safe up to 64 bits.\n' '/// Send a FOO formatted message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in] data containing the IR command.\n' '/// @param[in] nbits Nr. of bits to send. usually kFOOBits\n' @@ -337,8 +342,8 @@ class TestAutoAnalyseRawData(unittest.TestCase): '#endif // SEND_FOO\n' '\n' '#if DECODE_FOO\n' + '// Function should be safe up to 64 bits.\n' '/// Decode the supplied FOO message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in,out] results Ptr to the data to decode &' ' where to store the decode\n' @@ -556,7 +561,11 @@ class TestAutoAnalyseRawData(unittest.TestCase): 'Generating a VERY rough code outline:\n' '\n' '// Copyright 2020 David Conran (crankyoldgit)\n' - '// Support for Hitachi protocol\n' + '/// @file\n' + '/// @brief Support for Hitachi protocol\n' + '\n' + '// Supports:\n' + '// Brand: Hitachi, Model: TODO add device and remote\n' '\n' '#include "IRrecv.h"\n' '#include "IRsend.h"\n' @@ -582,9 +591,10 @@ class TestAutoAnalyseRawData(unittest.TestCase): 'const uint16_t kHitachiOverhead = 5;\n' "// DANGER: More than 64 bits detected. A uint64_t for 'data' won't" ' work!\n' + '\n' '#if SEND_HITACHI\n' + '// Function should be safe up to 64 bits.\n' '/// Send a Hitachi formatted message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in] data containing the IR command.\n' '/// @param[in] nbits Nr. of bits to send. usually kHitachiBits\n' @@ -617,19 +627,21 @@ class TestAutoAnalyseRawData(unittest.TestCase): '#endif // SEND_HITACHI\n' '\n' '#if SEND_HITACHI\n' + '// Alternative >64bit function to send HITACHI messages\n' + '// Function should be safe over 64 bits.\n' '/// Send a Hitachi formatted message.\n' - '/// Alternative >64bit function to send HITACHI messages\n' '/// Status: ALPHA / Untested.\n' - '/// Where data is:\n' + '/// @param[in] data An array of bytes containing the IR command.\n' + '/// It is assumed to be in MSB order for this code.\n' + '/// e.g.\n' + '/// @code\n' '/// uint8_t data[kHitachiStateLength] = {0x80, 0x08, 0x00, 0x02,' ' 0xFD, 0xFF, 0x00, 0x33, 0xCC, 0x49, 0xB6, 0xC8, 0x37, 0x3A, 0xC5,' ' 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xCA,' ' 0x35, 0x8F, 0x70, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0xC0, 0x3F,' ' 0x80, 0x7F, 0x11, 0xEE, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF,' ' 0x00, 0xFF, 0x00, 0xFF, 0x00};\n' - '///\n' - '/// @param[in] data An array of bytes containing the IR command.\n' - '/// It is assumed to be in MSB order for this code.\n' + '/// @endcode\n' '/// @param[in] nbytes Nr. of bytes of data in the array.' ' (>=kHitachiStateLength)\n' '/// @param[in] repeat Nr. of times the message is to be repeated.\n' @@ -660,8 +672,8 @@ class TestAutoAnalyseRawData(unittest.TestCase): "// DANGER: More than 64 bits detected. A uint64_t for 'data' won't" ' work!\n' '#if DECODE_HITACHI\n' + '// Function should be safe up to 64 bits.\n' '/// Decode the supplied Hitachi message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in,out] results Ptr to the data to decode &' ' where to store the decode\n' @@ -722,10 +734,9 @@ class TestAutoAnalyseRawData(unittest.TestCase): '}\n' '#endif // DECODE_HITACHI\n' '\n' - '// Note: This should be 64+ bit safe.\n' '#if DECODE_HITACHI\n' + '// Function should be safe over 64 bits.\n' '/// Decode the supplied Hitachi message.\n' - '/// Function should be safe over 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in,out] results Ptr to the data to decode &' ' where to store the decode\n' @@ -864,7 +875,11 @@ class TestAutoAnalyseRawData(unittest.TestCase): 'Generating a VERY rough code outline:\n' '\n' '// Copyright 2020 David Conran (crankyoldgit)\n' - '// Support for FOO protocol\n' + '/// @file\n' + '/// @brief Support for FOO protocol\n' + '\n' + '// Supports:\n' + '// Brand: FOO, Model: TODO add device and remote\n' '\n' '#include "IRrecv.h"\n' '#include "IRsend.h"\n' @@ -888,9 +903,10 @@ class TestAutoAnalyseRawData(unittest.TestCase): 'const uint16_t kFOOOverhead = 16;\n' "// DANGER: More than 64 bits detected. A uint64_t for 'data' won't" ' work!\n' + '\n' '#if SEND_FOO\n' + '// Function should be safe up to 64 bits.\n' '/// Send a FOO formatted message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in] data containing the IR command.\n' '/// @param[in] nbits Nr. of bits to send. usually kFOOBits\n' @@ -951,15 +967,17 @@ class TestAutoAnalyseRawData(unittest.TestCase): '#endif // SEND_FOO\n' '\n' '#if SEND_FOO\n' + '// Alternative >64bit function to send FOO messages\n' + '// Function should be safe over 64 bits.\n' '/// Send a FOO formatted message.\n' - '/// Alternative >64bit function to send FOO messages\n' '/// Status: ALPHA / Untested.\n' - '/// Where data is:\n' - '/// uint8_t data[kFOOStateLength] = {0x5F, 0x5F, 0x40, 0x40, 0x5F,' - ' 0x5F, 0x40, 0x40, 0x2F, 0x2F, 0x6C, 0x6C, 0x2F, 0x2F, 0x6C, 0x6C};\n' - '///\n' '/// @param[in] data An array of bytes containing the IR command.\n' '/// It is assumed to be in MSB order for this code.\n' + '/// e.g.\n' + '/// @code\n' + '/// uint8_t data[kFOOStateLength] = {0x5F, 0x5F, 0x40, 0x40, 0x5F,' + ' 0x5F, 0x40, 0x40, 0x2F, 0x2F, 0x6C, 0x6C, 0x2F, 0x2F, 0x6C, 0x6C};\n' + '/// @endcode\n' '/// @param[in] nbytes Nr. of bytes of data in the array.' ' (>=kFOOStateLength)\n' '/// @param[in] repeat Nr. of times the message is to be repeated.\n' @@ -1018,8 +1036,8 @@ class TestAutoAnalyseRawData(unittest.TestCase): "// DANGER: More than 64 bits detected. A uint64_t for 'data' won't " 'work!\n' '#if DECODE_FOO\n' + '// Function should be safe up to 64 bits.\n' '/// Decode the supplied FOO message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in,out] results Ptr to the data to decode &' ' where to store the decode\n' @@ -1138,10 +1156,9 @@ class TestAutoAnalyseRawData(unittest.TestCase): '}\n' '#endif // DECODE_FOO\n' '\n' - '// Note: This should be 64+ bit safe.\n' '#if DECODE_FOO\n' + '// Function should be safe over 64 bits.\n' '/// Decode the supplied FOO message.\n' - '/// Function should be safe over 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in,out] results Ptr to the data to decode &' ' where to store the decode\n' @@ -1294,7 +1311,11 @@ class TestAutoAnalyseRawData(unittest.TestCase): 'Generating a VERY rough code outline:\n' '\n' '// Copyright 2020 David Conran (crankyoldgit)\n' - '// Support for TBD protocol\n' + '/// @file\n' + '/// @brief Support for TBD protocol\n' + '\n' + '// Supports:\n' + '// Brand: TBD, Model: TODO add device and remote\n' '\n' '#include "IRrecv.h"\n' '#include "IRsend.h"\n' @@ -1317,9 +1338,10 @@ class TestAutoAnalyseRawData(unittest.TestCase): 'const uint16_t kOverhead = 1;\n' "// DANGER: More than 64 bits detected. A uint64_t for 'data' won't" ' work!\n' + '\n' '#if SEND_TBD\n' + '// Function should be safe up to 64 bits.\n' '/// Send a formatted message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in] data containing the IR command.\n' '/// @param[in] nbits Nr. of bits to send. usually kBits\n' @@ -1343,15 +1365,17 @@ class TestAutoAnalyseRawData(unittest.TestCase): '#endif // SEND_TBD\n' '\n' '#if SEND_TBD\n' + '// Alternative >64bit function to send TBD messages\n' + '// Function should be safe over 64 bits.\n' '/// Send a formatted message.\n' - '/// Alternative >64bit function to send TBD messages\n' '/// Status: ALPHA / Untested.\n' - '/// Where data is:\n' - '/// uint8_t data[kStateLength] = {0xA5, 0x5A, 0x00, 0x00, 0x40,' - ' 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80};\n' - '///\n' '/// @param[in] data An array of bytes containing the IR command.\n' '/// It is assumed to be in MSB order for this code.\n' + '/// e.g.\n' + '/// @code\n' + '/// uint8_t data[kStateLength] = {0xA5, 0x5A, 0x00, 0x00, 0x40,' + ' 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80};\n' + '/// @endcode\n' '/// @param[in] nbytes Nr. of bytes of data in the array.' ' (>=kStateLength)\n' '/// @param[in] repeat Nr. of times the message is to be repeated.\n' @@ -1378,8 +1402,8 @@ class TestAutoAnalyseRawData(unittest.TestCase): "// DANGER: More than 64 bits detected. A uint64_t for 'data' won't" ' work!\n' '#if DECODE_TBD\n' + '// Function should be safe up to 64 bits.\n' '/// Decode the supplied message.\n' - '/// Function should be safe up to 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in,out] results Ptr to the data to decode &' ' where to store the decode\n' @@ -1425,10 +1449,9 @@ class TestAutoAnalyseRawData(unittest.TestCase): '}\n' '#endif // DECODE_TBD\n' '\n' - '// Note: This should be 64+ bit safe.\n' '#if DECODE_TBD\n' + '// Function should be safe over 64 bits.\n' '/// Decode the supplied message.\n' - '/// Function should be safe over 64 bits.\n' '/// Status: ALPHA / Untested.\n' '/// @param[in,out] results Ptr to the data to decode &' ' where to store the decode\n' diff --git a/lib/IRremoteESP8266-2.7.7/tools/gc_decode.cpp b/lib/IRremoteESP8266-2.7.8/tools/gc_decode.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/gc_decode.cpp rename to lib/IRremoteESP8266-2.7.8/tools/gc_decode.cpp diff --git a/lib/IRremoteESP8266-2.7.7/tools/generate_irtext_h.sh b/lib/IRremoteESP8266-2.7.8/tools/generate_irtext_h.sh similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/generate_irtext_h.sh rename to lib/IRremoteESP8266-2.7.8/tools/generate_irtext_h.sh diff --git a/lib/IRremoteESP8266-2.7.7/tools/mkkeywords b/lib/IRremoteESP8266-2.7.8/tools/mkkeywords similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/mkkeywords rename to lib/IRremoteESP8266-2.7.8/tools/mkkeywords diff --git a/lib/IRremoteESP8266-2.7.7/tools/mode2_decode.cpp b/lib/IRremoteESP8266-2.7.8/tools/mode2_decode.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/mode2_decode.cpp rename to lib/IRremoteESP8266-2.7.8/tools/mode2_decode.cpp diff --git a/lib/IRremoteESP8266-2.7.7/tools/raw_to_pronto_code.py b/lib/IRremoteESP8266-2.7.8/tools/raw_to_pronto_code.py similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/raw_to_pronto_code.py rename to lib/IRremoteESP8266-2.7.8/tools/raw_to_pronto_code.py diff --git a/lib/IRremoteESP8266-2.7.7/tools/raw_to_pronto_code_test.py b/lib/IRremoteESP8266-2.7.8/tools/raw_to_pronto_code_test.py similarity index 100% rename from lib/IRremoteESP8266-2.7.7/tools/raw_to_pronto_code_test.py rename to lib/IRremoteESP8266-2.7.8/tools/raw_to_pronto_code_test.py diff --git a/lib/IRremoteESP8266-2.7.7/tools/scrape_supported_devices.py b/lib/IRremoteESP8266-2.7.8/tools/scrape_supported_devices.py similarity index 57% rename from lib/IRremoteESP8266-2.7.7/tools/scrape_supported_devices.py rename to lib/IRremoteESP8266-2.7.8/tools/scrape_supported_devices.py index 4beb6c9c3..a9cd10f0a 100755 --- a/lib/IRremoteESP8266-2.7.7/tools/scrape_supported_devices.py +++ b/lib/IRremoteESP8266-2.7.8/tools/scrape_supported_devices.py @@ -2,6 +2,8 @@ """Generate SupportedProtocols.md by scraping source code files""" import pathlib import argparse +import subprocess +from io import StringIO import sys import re import time @@ -21,10 +23,28 @@ ALL_FN = re.compile(r"ir_(.+)\.(h|cpp)") EXCLUDED_PROTOCOLS = ["UNKNOWN", "UNUSED", "kLastDecodeType", "typeguess"] EXCLUDED_ACS = ["Magiquest", "NEC"] -MARKDOWN_HEADER = """""".format( - time.strftime("%a %d %b %Y %H:%M:%S +0000", time.gmtime())) + time.strftime("%a %d %b %Y %H:%M:%S +0000", time.gmtime(srctime))) def getallprotocols(): @@ -43,7 +63,7 @@ def getdecodedprotocols(): for path in ARGS.directory.iterdir(): if path.suffix != ".cpp": continue - matches = DECODED_PROTOCOLS.finditer(path.open().read()) + matches = DECODED_PROTOCOLS.finditer(path.open(encoding="utf-8").read()) for match in matches: protocol = match.group(1) if protocol not in EXCLUDED_PROTOCOLS: @@ -86,37 +106,88 @@ def getallacs(): ret[acprotocol] = models return ret +class FnSets(): + """Container for getalldevices""" + def __init__(self): + self.allcodes = {} + self.fnnomatch = set() + self.allhfileprotos = set() + self.fnhmatch = set() + self.fncppmatch = set() + + def add(self, supports, path): + """add the path to correct set based on supports""" + if path.suffix == ".h": + self.allhfileprotos.add(path.stem) + if supports: + if path.suffix == ".h": + self.fnhmatch.add(path.stem) + elif path.suffix == ".cpp": + self.fncppmatch.add(path.stem) + else: + self.fnnomatch.add(path.stem) + + def printwarnings(self): + """print warnings""" + # all protos with support in .cpp file, when there is a .h file + # meaning that the documentation should probably be moved to .h + # in the future, with doxygen, that might change + protosincppwithh = list(self.fncppmatch & self.allhfileprotos) + if protosincppwithh: + protosincppwithh.sort() + print("The following files has supports section in .cpp, expected in .h") + for path in protosincppwithh: + print("\t{}".format(path)) + + protosincppandh = list(self.fncppmatch & self.fnhmatch) + if protosincppandh: + protosincppandh.sort() + print("The following files has supports section in both .h and .cpp") + for path in protosincppandh: + print("\t{}".format(path)) + + nosupports = self.getnosupports() + if nosupports: + nosupports.sort() + print("The following files had no supports section:") + for path in nosupports: + print("\t{}".format(path)) + + return protosincppwithh or protosincppandh or nosupports + + def getnosupports(self): + """get protos without supports sections""" + return list(self.fnnomatch - self.fnhmatch - self.fncppmatch) + def getalldevices(): """All devices and associated branding and model information (if available) """ - allcodes = {} - fnnomatch = set() - fnmatch = set() + sets = FnSets() for path in ARGS.directory.iterdir(): match = ALL_FN.match(path.name) if not match: continue supports = extractsupports(path) - if supports: - fnmatch.add(path.stem) - else: - fnnomatch.add(path.stem) + sets.add(supports, path) protocol = match.group(1) for brand, model in supports: protocolbrand = (protocol, brand) - allcodes[protocolbrand] = allcodes.get(protocolbrand, list()) + [model] - nosupports = fnnomatch - fnmatch - for fnprotocol in nosupports: - allcodes[(fnprotocol[3:], "Unknown")] = [] - return allcodes, nosupports + pbset = sets.allcodes.get(protocolbrand, list()) + if model in pbset: + print("Model %s is duplicated for %s, %s" % (model, protocol, brand)) + sets.allcodes[protocolbrand] = pbset + [model] + + for fnprotocol in sets.getnosupports(): + sets.allcodes[(fnprotocol[3:], "Unknown")] = [] + return sets def getenums(path): """Returns the keys for the first enum type in path - """ + """ ret = {} - for enums in ENUMS.finditer(path.open().read()): + for enums in ENUMS.finditer(path.open(encoding="utf-8").read()): if enums: enum_name = AC_MODEL_ENUM_RE.search(enums.group(1)) if enum_name: @@ -139,6 +210,12 @@ def initargs(): """Init the command line arguments""" global ARGS # pylint: disable=global-statement parser = argparse.ArgumentParser() + parser.add_argument( + "-n", + "--noout", + help="generate no output data, combine with --alert to only check", + action="store_true", + ) parser.add_argument( "-s", "--stdout", @@ -152,7 +229,8 @@ def initargs(): parser.add_argument( "-a", "--alert", - help="alert if a file does not have a supports section", + help="alert if a file does not have a supports section, " + "non zero exit code if issues where found", action="store_true", ) parser.add_argument( @@ -173,6 +251,10 @@ def initargs(): ARGS.directory = src return ARGS +def getmdfile(): + """Resolves SupportedProtocols.md path""" + foutpath = ARGS.directory / "../SupportedProtocols.md" + return foutpath.resolve() def errorexit(msg): """Print an error and exit on critical error""" @@ -185,7 +267,7 @@ def extractsupports(path): """ supports = [] insupports = False - for line in path.open(): + for line in path.open(encoding="utf-8"): if not line.startswith("//"): continue line = line[2:].strip() @@ -199,6 +281,12 @@ def extractsupports(path): else: insupports = False continue + # search and inform about any legacy formated supports data + elif any(x in line for x in [ \ + "seems compatible with", + "be compatible with", + "it working with here"]): + print("\t%s Legacy supports format found\n\t\t%s" % (path.name, line)) return supports @@ -215,28 +303,18 @@ def outputprotocols(fout, protocols): fout.write("- {}\n".format(protocol)) -def main(): - """Standard boiler plate""" - initargs() - if ARGS.verbose: - print("Looking for files in: {}".format(str(ARGS.directory.resolve()))) - if ARGS.stdout: - fout = sys.stdout - else: - foutpath = ARGS.directory / "../SupportedProtocols.md" - foutpath = foutpath.resolve() - if ARGS.verbose: - print("Output path: {}".format(str(foutpath))) - fout = foutpath.open("w") +def generate(fout): + """Generate data to fout + return True on any issues (when alert is active)""" decodedprotocols = getdecodedprotocols() sendonly = getallprotocols() - decodedprotocols allacs = getallacs() - allcodes, nosupports = getalldevices() + sets = getalldevices() + allcodes = sets.allcodes allbrands = list(allcodes.keys()) allbrands.sort() - fout.write(MARKDOWN_HEADER) fout.write("\n# IR Protocols supported by this library\n\n") fout.write( "| Protocol | Brand | Model | A/C Model | Detailed A/C Support |\n") @@ -269,13 +347,60 @@ def main(): fout.write("\n\n## Send & decodable protocols:\n\n") outputprotocols(fout, decodedprotocols) - if ARGS.alert: - nosupports = list(nosupports) - nosupports.sort() - print("The following files had no supports section:") - for path in nosupports: - print("\t{}".format(path)) + return ARGS.alert and sets.printwarnings() + +def generatenone(): + """No out write + return True on any issues""" + return generate(StringIO()) + +def generatestdout(): + """Standard out write + return True on any issues""" + fout = sys.stdout + fout.write(getmarkdownheader()) + return generate(fout) + +def generatefile(): + """File write, extra detection of changes in existing file + return True on any issues, but only if there is changes""" + # get file path + foutpath = getmdfile() + if ARGS.verbose: + print("Output path: {}".format(str(foutpath))) + # write data to temp memorystream + ftemp = StringIO() + ret = generate(ftemp) + # get old filedata, skipping header + with getmdfile().open("r", encoding="utf-8") as forg: + olddata = forg.readlines()[3:] + # get new data, skip first empty line + ftemp.seek(0) + newdata = ftemp.readlines()[1:] + # if new data is same as old we don't need to write anything + if newdata == olddata: + print("No changes, exit without write") + return False + # write output + with foutpath.open("w", encoding="utf-8") as fout: + fout.write(getmarkdownheader()) + fout.write(ftemp.getvalue()) + + return ret + +def main(): + """Default main function + return True on any issues""" + initargs() + if ARGS.verbose: + print("Looking for files in: {}".format(str(ARGS.directory.resolve()))) + if ARGS.noout: + return generatenone() + if ARGS.stdout: + return generatestdout() + # default file + return generatefile() if __name__ == "__main__": - main() + sys.exit(1 if main() else 0) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index ce16e0478..95fdf9efd 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -12,6 +12,7 @@ - Change ESP32 USER GPIO template representation decreasing template message size - Change define USE_TASMOTA_SLAVE into USE_TASMOTA_CLIENT - Change commands ``SlaveSend`` and ``SlaveReset`` into ``ClientSend`` and ``ClientReset`` +- Change IRremoteESP8266 library updated to v2.7.8 ### 8.3.1.5 20200616