From 809a3771549df8758e26e1cf6888645f7fc2cafd Mon Sep 17 00:00:00 2001 From: dermm Date: Wed, 22 Apr 2020 19:43:57 +0200 Subject: [PATCH 1/4] Add Option to Activate PWM CT mode without select module 48 Hello, I would like to share with you my extension of the code. I have some new lamps that have 2 PWM channels that are not classically wired. The first one is for brightness and the other channel is for color temperature. Tasmota has already integrated the possibility to switch between CWWW and CTBRI. I only built the possibility to set it up manually. greetings, Jens PS: This is my first commit. If I did something wrong, please report it. --- tasmota/my_user_config.h | 1 + tasmota/settings.h | 2 +- tasmota/settings.ino | 1 + tasmota/xdrv_04_light.ino | 6 +++--- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 9aeef7aab..d73dae19a 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -283,6 +283,7 @@ #define LIGHT_CHANNEL_MODE false // [SetOption68] Enable multi-channels PWM instead of Color PWM #define LIGHT_SLIDER_POWER false // [SetOption77] Do not power off if slider moved to far left #define LIGHT_ALEXA_CT_RANGE false // [SetOption82] Reduced CT range for Alexa +#define LIGHT_PWM_CT_MODE false // [SetOption92] Set PWM Mode from regular PWM to ColorTemp control (Xiaomi Philips ...) a.k.a. module 48 mode // -- Energy -------------------------------------- #define ENERGY_VOLTAGE_ALWAYS false // [SetOption21] Enable show voltage even if powered off diff --git a/tasmota/settings.h b/tasmota/settings.h index 7ea3b5e3e..ae9243c70 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -111,7 +111,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t zigbee_distinct_topics : 1; // bit 7 (v8.1.0.10) - SetOption89 - Distinct MQTT topics per device for Zigbee (#7835) uint32_t only_json_message : 1; // bit 8 (v8.2.0.3) - SetOption90 - Disable non-json MQTT response uint32_t fade_at_startup : 1; // bit 9 (v8.2.0.3) - SetOption91 - Enable light fading at start/power on - uint32_t spare10 : 1; + uint32_t pwm_ct_mode : 1; // bit 10 () - SetOption92 - Set PWM Mode from regular PWM to ColorTemp control (Xiaomi Philips ...) uint32_t spare11 : 1; uint32_t spare12 : 1; uint32_t spare13 : 1; diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 6c299ff06..ed8faba19 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -947,6 +947,7 @@ void SettingsDefaultSet2(void) Settings.flag3.pwm_multi_channels = LIGHT_CHANNEL_MODE; Settings.flag3.slider_dimmer_stay_on = LIGHT_SLIDER_POWER; Settings.flag4.alexa_ct_range = LIGHT_ALEXA_CT_RANGE; + Settings.flag4.pwm_ct_mode = LIGHT_PWM_CT_MODE; Settings.pwm_frequency = PWM_FREQ; Settings.pwm_range = PWM_RANGE; diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 96ffd1f6c..a84627ea7 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -1986,7 +1986,7 @@ bool isChannelGammaCorrected(uint32_t channel) { if (!Settings.light_correction) { return false; } // Gamma correction not activated if (channel >= Light.subtype) { return false; } // Out of range #ifdef ESP8266 - if (PHILIPS == my_module_type) { + if ((PHILIPS == my_module_type) || (Settings.flag4.pwm_ct_mode)) { if ((LST_COLDWARM == Light.subtype) && (1 == channel)) { return false; } // PMW reserved for CT if ((LST_RGBCW == Light.subtype) && (4 == channel)) { return false; } // PMW reserved for CT } @@ -1997,7 +1997,7 @@ bool isChannelGammaCorrected(uint32_t channel) { // is the channel a regular PWM or ColorTemp control bool isChannelCT(uint32_t channel) { #ifdef ESP8266 - if (PHILIPS == my_module_type) { + if ((PHILIPS == my_module_type) || (Settings.flag4.pwm_ct_mode)) { if ((LST_COLDWARM == Light.subtype) && (1 == channel)) { return true; } // PMW reserved for CT if ((LST_RGBCW == Light.subtype) && (4 == channel)) { return true; } // PMW reserved for CT } @@ -2181,7 +2181,7 @@ void calcGammaBulbs(uint16_t cur_col_10[5]) { uint16_t white_bri10_1023 = (white_bri10 > 1023) ? 1023 : white_bri10; // max 1023 #ifdef ESP8266 - if (PHILIPS == my_module_type) { // channel 1 is the color tone, mapped to cold channel (0..255) + if ((PHILIPS == my_module_type) || (Settings.flag4.pwm_ct_mode)) { // channel 1 is the color tone, mapped to cold channel (0..255) // Xiaomi Philips bulbs follow a different scheme: cur_col_10[cw1] = light_state.getCT10bits(); // channel 0=intensity, channel1=temperature From 1404b6f53605a741f67f1e953a79a8d24908ba2a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 26 Apr 2020 09:59:49 +0200 Subject: [PATCH 2/4] Change IRremoteESP8266 library updated to v2.7.6 --- .../examples/IRrecvDumpV2/platformio.ini | 46 -- .../CPPLINT.cfg | 0 .../LICENSE.txt | 0 .../README.md | 4 +- .../README_fr.md | 4 +- .../ReleaseNotes.md | 12 + .../SupportedProtocols.md | 0 .../CommonAcControl/CommonAcControl.ino | 0 .../examples/CommonAcControl/platformio.ini | 0 .../ControlSamsungAC/ControlSamsungAC.ino | 0 .../examples/ControlSamsungAC/platformio.ini | 0 .../DumbIRRepeater/DumbIRRepeater.ino | 0 .../examples/DumbIRRepeater/platformio.ini | 0 .../examples/IRGCSendDemo/IRGCSendDemo.ino | 0 .../examples/IRGCSendDemo/platformio.ini | 0 .../examples/IRGCTCPServer/IRGCTCPServer.ino | 0 .../examples/IRGCTCPServer/platformio.ini | 0 .../examples/IRMQTTServer/IRMQTTServer.h | 2 +- .../examples/IRMQTTServer/IRMQTTServer.ino | 188 +++-- .../examples/IRMQTTServer/platformio.ini | 0 .../examples/IRServer/IRServer.ino | 5 +- .../examples/IRServer/platformio.ini | 0 .../examples/IRrecvDemo/IRrecvDemo.ino | 0 .../examples/IRrecvDemo/platformio.ini | 0 .../examples/IRrecvDump/IRrecvDump.ino | 0 .../examples/IRrecvDump/platformio.ini | 0 .../examples/IRrecvDumpV2/IRrecvDumpV2.ino | 0 .../examples/IRrecvDumpV2/platformio.ini | 52 ++ .../examples/IRsendDemo/IRsendDemo.ino | 0 .../examples/IRsendDemo/platformio.ini | 0 .../IRsendProntoDemo/IRsendProntoDemo.ino | 0 .../examples/IRsendProntoDemo/platformio.ini | 0 .../JVCPanasonicSendDemo.ino | 0 .../JVCPanasonicSendDemo/platformio.ini | 0 .../examples/LGACSend/LGACSend.ino | 0 .../examples/LGACSend/platformio.ini | 0 .../SmartIRRepeater/SmartIRRepeater.ino | 0 .../examples/SmartIRRepeater/platformio.ini | 0 .../examples/TurnOnArgoAC/TurnOnArgoAC.ino | 0 .../examples/TurnOnArgoAC/platformio.ini | 0 .../TurnOnDaikinAC/TurnOnDaikinAC.ino | 0 .../examples/TurnOnDaikinAC/platformio.ini | 0 .../TurnOnFujitsuAC/TurnOnFujitsuAC.ino | 0 .../examples/TurnOnFujitsuAC/platformio.ini | 0 .../examples/TurnOnGreeAC/TurnOnGreeAC.ino | 0 .../examples/TurnOnGreeAC/platformio.ini | 0 .../TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino | 0 .../TurnOnKelvinatorAC/platformio.ini | 0 .../TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino | 0 .../TurnOnMitsubishiAC/platformio.ini | 0 .../TurnOnMitsubishiHeavyAc.ino | 0 .../TurnOnMitsubishiHeavyAc/platformio.ini | 0 .../TurnOnPanasonicAC/TurnOnPanasonicAC.ino | 0 .../examples/TurnOnPanasonicAC/platformio.ini | 0 .../TurnOnToshibaAC/TurnOnToshibaAC.ino | 0 .../examples/TurnOnToshibaAC/platformio.ini | 0 .../TurnOnTrotecAC/TurnOnTrotecAC.ino | 0 .../examples/TurnOnTrotecAC/platformio.ini | 0 .../examples/Web-AC-control/README.md | 0 .../Web-AC-control/Web-AC-control.ino | 0 .../examples/Web-AC-control/platformio.ini | 0 .../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 | 1 + .../library.json | 2 +- .../library.properties | 2 +- lib/IRremoteESP8266-2.7.6/platformio.ini | 21 + .../pylintrc | 0 .../src/CPPLINT.cfg | 0 .../src/IRac.cpp | 0 .../src/IRac.h | 0 .../src/IRrecv.cpp | 0 .../src/IRrecv.h | 0 .../src/IRremoteESP8266.h | 2 +- .../src/IRsend.cpp | 0 .../src/IRsend.h | 0 .../src/IRtext.cpp | 85 +++ .../src/IRtext.h | 1 + .../src/IRtimer.cpp | 0 .../src/IRtimer.h | 0 .../src/IRutils.cpp | 427 +---------- .../src/IRutils.h | 0 .../src/i18n.h | 0 .../src/ir_Airwell.cpp | 0 .../src/ir_Aiwa.cpp | 0 .../src/ir_Amcor.cpp | 0 .../src/ir_Amcor.h | 0 .../src/ir_Argo.cpp | 0 .../src/ir_Argo.h | 0 .../src/ir_Carrier.cpp | 0 .../src/ir_Coolix.cpp | 0 .../src/ir_Coolix.h | 0 .../src/ir_Daikin.cpp | 0 .../src/ir_Daikin.h | 0 .../src/ir_Denon.cpp | 0 .../src/ir_Dish.cpp | 0 .../src/ir_Electra.cpp | 0 .../src/ir_Electra.h | 0 .../src/ir_Epson.cpp | 0 .../src/ir_Fujitsu.cpp | 0 .../src/ir_Fujitsu.h | 0 .../src/ir_GICable.cpp | 0 .../src/ir_GlobalCache.cpp | 0 .../src/ir_Goodweather.cpp | 0 .../src/ir_Goodweather.h | 0 .../src/ir_Gree.cpp | 0 .../src/ir_Gree.h | 0 .../src/ir_Haier.cpp | 0 .../src/ir_Haier.h | 0 .../src/ir_Hitachi.cpp | 0 .../src/ir_Hitachi.h | 0 .../src/ir_Inax.cpp | 0 .../src/ir_JVC.cpp | 0 .../src/ir_Kelvinator.cpp | 0 .../src/ir_Kelvinator.h | 0 .../src/ir_LG.cpp | 0 .../src/ir_LG.h | 0 .../src/ir_Lasertag.cpp | 0 .../src/ir_Lego.cpp | 0 .../src/ir_Lutron.cpp | 0 .../src/ir_MWM.cpp | 0 .../src/ir_Magiquest.cpp | 0 .../src/ir_Magiquest.h | 0 .../src/ir_Midea.cpp | 0 .../src/ir_Midea.h | 0 .../src/ir_Mitsubishi.cpp | 0 .../src/ir_Mitsubishi.h | 0 .../src/ir_MitsubishiHeavy.cpp | 0 .../src/ir_MitsubishiHeavy.h | 0 .../src/ir_NEC.cpp | 0 .../src/ir_NEC.h | 0 .../src/ir_Neoclima.cpp | 0 .../src/ir_Neoclima.h | 0 .../src/ir_Nikai.cpp | 0 .../src/ir_Panasonic.cpp | 0 .../src/ir_Panasonic.h | 0 .../src/ir_Pioneer.cpp | 0 .../src/ir_Pronto.cpp | 0 .../src/ir_RC5_RC6.cpp | 0 .../src/ir_RCMM.cpp | 0 .../src/ir_Samsung.cpp | 0 .../src/ir_Samsung.h | 0 .../src/ir_Sanyo.cpp | 0 .../src/ir_Sharp.cpp | 0 .../src/ir_Sharp.h | 0 .../src/ir_Sherwood.cpp | 0 .../src/ir_Sony.cpp | 0 .../src/ir_Symphony.cpp | 0 .../src/ir_Tcl.cpp | 0 .../src/ir_Tcl.h | 0 .../src/ir_Teco.cpp | 0 .../src/ir_Teco.h | 0 .../src/ir_Toshiba.cpp | 0 .../src/ir_Toshiba.h | 0 .../src/ir_Trotec.cpp | 0 .../src/ir_Trotec.h | 0 .../src/ir_Vestel.cpp | 0 .../src/ir_Vestel.h | 0 .../src/ir_Whirlpool.cpp | 0 .../src/ir_Whirlpool.h | 0 .../src/ir_Whynter.cpp | 0 .../src/locale/README.md | 0 .../src/locale/de-CH.h | 0 .../src/locale/de-DE.h | 0 .../src/locale/defaults.h | 719 ++++++++++++++++++ .../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 | 0 .../src/locale/fr-FR.h | 0 .../src/locale/it-IT.h | 0 .../src/locale/zh-CN.h} | 253 +++--- .../test/IRac_test.cpp | 0 .../test/IRrecv_test.cpp | 0 .../test/IRrecv_test.h | 0 .../test/IRsend_test.cpp | 0 .../test/IRsend_test.h | 0 .../test/IRutils_test.cpp | 0 .../test/Makefile | 0 .../test/ir_Airwell_test.cpp | 0 .../test/ir_Aiwa_test.cpp | 0 .../test/ir_Amcor_test.cpp | 0 .../test/ir_Argo_test.cpp | 0 .../test/ir_Carrier_test.cpp | 0 .../test/ir_Coolix_test.cpp | 0 .../test/ir_Daikin_test.cpp | 0 .../test/ir_Denon_test.cpp | 0 .../test/ir_Dish_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 | 0 .../test/ir_Inax_test.cpp | 0 .../test/ir_JVC_test.cpp | 0 .../test/ir_Kelvinator_test.cpp | 0 .../test/ir_LG_test.cpp | 0 .../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 | 0 .../test/ir_MitsubishiHeavy_test.cpp | 0 .../test/ir_Mitsubishi_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 .../tools/Makefile | 0 .../tools/RawToGlobalCache.sh | 0 .../tools/auto_analyse_raw_data.py | 0 .../tools/auto_analyse_raw_data_test.py | 0 .../tools/gc_decode.cpp | 0 .../tools/generate_irtext_h.sh | 0 .../tools/mkkeywords | 0 .../tools/mode2_decode.cpp | 0 .../tools/scrape_supported_devices.py | 0 tasmota/CHANGELOG.md | 1 + 251 files changed, 1149 insertions(+), 678 deletions(-) delete mode 100644 lib/IRremoteESP8266-2.7.5/examples/IRrecvDumpV2/platformio.ini rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/CPPLINT.cfg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/LICENSE.txt (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/README.md (98%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/README_fr.md (98%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/ReleaseNotes.md (98%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/SupportedProtocols.md (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/CommonAcControl/CommonAcControl.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/CommonAcControl/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/ControlSamsungAC/ControlSamsungAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/ControlSamsungAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/DumbIRRepeater/DumbIRRepeater.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/DumbIRRepeater/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRGCSendDemo/IRGCSendDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRGCSendDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRGCTCPServer/IRGCTCPServer.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRGCTCPServer/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRMQTTServer/IRMQTTServer.h (99%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRMQTTServer/IRMQTTServer.ino (95%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRMQTTServer/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRServer/IRServer.ino (95%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRServer/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRrecvDemo/IRrecvDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRrecvDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRrecvDump/IRrecvDump.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRrecvDump/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRrecvDumpV2/IRrecvDumpV2.ino (100%) create mode 100644 lib/IRremoteESP8266-2.7.6/examples/IRrecvDumpV2/platformio.ini rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRsendDemo/IRsendDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRsendDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRsendProntoDemo/IRsendProntoDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/IRsendProntoDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/JVCPanasonicSendDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/LGACSend/LGACSend.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/LGACSend/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/SmartIRRepeater/SmartIRRepeater.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/SmartIRRepeater/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnArgoAC/TurnOnArgoAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnArgoAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnDaikinAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnFujitsuAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnGreeAC/TurnOnGreeAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnGreeAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnKelvinatorAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnMitsubishiAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnMitsubishiHeavyAc/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnPanasonicAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnToshibaAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/TurnOnTrotecAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/README.md (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/Web-AC-control.ino (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/printscreen.png (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/favicon.ico (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_1_off.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_1_on.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_2_off.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_2_on.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_3_off.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_3_on.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_4_off.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/level_4_on.svg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/ui.html (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/examples/Web-AC-control/upload/ui.js (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/keywords.txt (99%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/library.json (97%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/library.properties (97%) create mode 100644 lib/IRremoteESP8266-2.7.6/platformio.ini rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/pylintrc (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/CPPLINT.cfg (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRac.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRac.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRrecv.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRrecv.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRremoteESP8266.h (99%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRsend.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRsend.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRtext.cpp (76%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRtext.h (99%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRtimer.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRtimer.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRutils.cpp (71%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/IRutils.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/i18n.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Airwell.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Aiwa.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Amcor.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Amcor.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Argo.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Argo.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Carrier.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Coolix.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Coolix.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Daikin.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Daikin.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Denon.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Dish.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Electra.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Electra.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Epson.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Fujitsu.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Fujitsu.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_GICable.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_GlobalCache.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Goodweather.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Goodweather.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Gree.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Gree.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Haier.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Haier.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Hitachi.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Hitachi.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Inax.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_JVC.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Kelvinator.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Kelvinator.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_LG.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_LG.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Lasertag.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Lego.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Lutron.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_MWM.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Magiquest.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Magiquest.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Midea.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Midea.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Mitsubishi.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Mitsubishi.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_MitsubishiHeavy.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_MitsubishiHeavy.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_NEC.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_NEC.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Neoclima.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Neoclima.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Nikai.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Panasonic.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Panasonic.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Pioneer.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Pronto.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_RC5_RC6.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_RCMM.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Samsung.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Samsung.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Sanyo.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Sharp.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Sharp.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Sherwood.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Sony.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Symphony.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Tcl.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Tcl.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Teco.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Teco.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Toshiba.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Toshiba.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Trotec.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Trotec.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Vestel.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Vestel.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Whirlpool.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Whirlpool.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/ir_Whynter.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/README.md (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/de-CH.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/de-DE.h (100%) create mode 100644 lib/IRremoteESP8266-2.7.6/src/locale/defaults.h rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/en-AU.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/en-IE.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/en-UK.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/en-US.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/es-ES.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/fr-FR.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/src/locale/it-IT.h (100%) rename lib/{IRremoteESP8266-2.7.5/src/locale/defaults.h => IRremoteESP8266-2.7.6/src/locale/zh-CN.h} (67%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/IRac_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/IRrecv_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/IRrecv_test.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/IRsend_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/IRsend_test.h (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/IRutils_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/Makefile (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Airwell_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Aiwa_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Amcor_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Argo_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Carrier_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Coolix_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Daikin_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Denon_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Dish_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Electra_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Epson_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Fujitsu_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_GICable_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_GlobalCache_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Goodweather_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Gree_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Haier_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Hitachi_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Inax_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_JVC_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Kelvinator_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_LG_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Lasertag_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Lego_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Lutron_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_MWM_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Magiquest_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Midea_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_MitsubishiHeavy_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Mitsubishi_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_NEC_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Neoclima_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Nikai_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Panasonic_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Pioneer_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Pronto_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_RC5_RC6_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_RCMM_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Samsung_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Sanyo_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Sharp_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Sherwood_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Sony_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Symphony_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Tcl_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Teco_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Toshiba_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Trotec_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Vestel_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Whirlpool_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/test/ir_Whynter_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/Makefile (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/RawToGlobalCache.sh (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/auto_analyse_raw_data.py (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/auto_analyse_raw_data_test.py (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/gc_decode.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/generate_irtext_h.sh (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/mkkeywords (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/mode2_decode.cpp (100%) rename lib/{IRremoteESP8266-2.7.5 => IRremoteESP8266-2.7.6}/tools/scrape_supported_devices.py (100%) diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRrecvDumpV2/platformio.ini b/lib/IRremoteESP8266-2.7.5/examples/IRrecvDumpV2/platformio.ini deleted file mode 100644 index d3c660df9..000000000 --- a/lib/IRremoteESP8266-2.7.5/examples/IRrecvDumpV2/platformio.ini +++ /dev/null @@ -1,46 +0,0 @@ -[platformio] -src_dir = . - -[env] -; Default platform -platform = espressif8266 -; Default board -board = nodemcuv2 -framework = arduino -lib_extra_dirs = ../../ -lib_ldf_mode = deep+ -lib_ignore = examples -build_flags = ; -D_IR_LOCALE_=en-AU - -[env:nodemcuv2] -board = nodemcuv2 -; build_flags = -D_IR_LOCALE_=en-AU - -[env:esp32dev] -platform = espressif32 -board = esp32dev -; build_flags = -D_IR_LOCALE_=en-AU - -[env:de-CH] -build_flags = -D_IR_LOCALE_=de-CH - -[env:de-DE] -build_flags = -D_IR_LOCALE_=de-DE - -[env:en-AU] -build_flags = -D_IR_LOCALE_=en-AU - -[env:en-IE] -build_flags = -D_IR_LOCALE_=en-IE - -[env:en-UK] -build_flags = -D_IR_LOCALE_=en-UK - -[env:en-US] -build_flags = -D_IR_LOCALE_=en-US - -[env:es-ES] -build_flags = -D_IR_LOCALE_=es-ES - -[env:fr-FR] -build_flags = -D_IR_LOCALE_=fr-FR diff --git a/lib/IRremoteESP8266-2.7.5/CPPLINT.cfg b/lib/IRremoteESP8266-2.7.6/CPPLINT.cfg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/CPPLINT.cfg rename to lib/IRremoteESP8266-2.7.6/CPPLINT.cfg diff --git a/lib/IRremoteESP8266-2.7.5/LICENSE.txt b/lib/IRremoteESP8266-2.7.6/LICENSE.txt similarity index 100% rename from lib/IRremoteESP8266-2.7.5/LICENSE.txt rename to lib/IRremoteESP8266-2.7.6/LICENSE.txt diff --git a/lib/IRremoteESP8266-2.7.5/README.md b/lib/IRremoteESP8266-2.7.6/README.md similarity index 98% rename from lib/IRremoteESP8266-2.7.5/README.md rename to lib/IRremoteESP8266-2.7.6/README.md index 9ce40166f..83859d6b6 100644 --- a/lib/IRremoteESP8266-2.7.5/README.md +++ b/lib/IRremoteESP8266-2.7.6/README.md @@ -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.5 Now Available -Version 2.7.5 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.6 Now Available +Version 2.7.6 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. #### Upgrading from pre-v2.0 Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/lib/IRremoteESP8266-2.7.5/README_fr.md b/lib/IRremoteESP8266-2.7.6/README_fr.md similarity index 98% rename from lib/IRremoteESP8266-2.7.5/README_fr.md rename to lib/IRremoteESP8266-2.7.6/README_fr.md index 49fc3188c..6b6c6e7d0 100644 --- a/lib/IRremoteESP8266-2.7.5/README_fr.md +++ b/lib/IRremoteESP8266-2.7.6/README_fr.md @@ -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.5 disponible -Version 2.7.5 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.6 disponible +Version 2.7.6 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. #### mise à jour depuis pre-v2.0 L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/lib/IRremoteESP8266-2.7.5/ReleaseNotes.md b/lib/IRremoteESP8266-2.7.6/ReleaseNotes.md similarity index 98% rename from lib/IRremoteESP8266-2.7.5/ReleaseNotes.md rename to lib/IRremoteESP8266-2.7.6/ReleaseNotes.md index 51df6df27..69cc753cd 100644 --- a/lib/IRremoteESP8266-2.7.5/ReleaseNotes.md +++ b/lib/IRremoteESP8266-2.7.6/ReleaseNotes.md @@ -1,5 +1,17 @@ # Release Notes +## _v2.7.6 (20200425)_ + +**[Features]** +- IRMQTTServer: Use more i18n text. (#1086) +- Convert Protocol names to shared text. Saves ~3k of flash. (#1078) +- Add Chinese translation (zh-CN) & add utf-8 support. (#1080, #1085) + +**[Misc]** +- IRMQTTServer: Ensure MQTT_MAX_PACKET_SIZE is correctly set. (#1084) +- Add Italian locale to IRrecvDumpV2 platformio file. + + ## _v2.7.5 (20200409)_ **[Features]** diff --git a/lib/IRremoteESP8266-2.7.5/SupportedProtocols.md b/lib/IRremoteESP8266-2.7.6/SupportedProtocols.md similarity index 100% rename from lib/IRremoteESP8266-2.7.5/SupportedProtocols.md rename to lib/IRremoteESP8266-2.7.6/SupportedProtocols.md diff --git a/lib/IRremoteESP8266-2.7.5/examples/CommonAcControl/CommonAcControl.ino b/lib/IRremoteESP8266-2.7.6/examples/CommonAcControl/CommonAcControl.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/CommonAcControl/CommonAcControl.ino rename to lib/IRremoteESP8266-2.7.6/examples/CommonAcControl/CommonAcControl.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/CommonAcControl/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/CommonAcControl/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/CommonAcControl/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/CommonAcControl/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/ControlSamsungAC/ControlSamsungAC.ino b/lib/IRremoteESP8266-2.7.6/examples/ControlSamsungAC/ControlSamsungAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/ControlSamsungAC/ControlSamsungAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/ControlSamsungAC/ControlSamsungAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/ControlSamsungAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/ControlSamsungAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/ControlSamsungAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/ControlSamsungAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/DumbIRRepeater/DumbIRRepeater.ino b/lib/IRremoteESP8266-2.7.6/examples/DumbIRRepeater/DumbIRRepeater.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/DumbIRRepeater/DumbIRRepeater.ino rename to lib/IRremoteESP8266-2.7.6/examples/DumbIRRepeater/DumbIRRepeater.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/DumbIRRepeater/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/DumbIRRepeater/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/DumbIRRepeater/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/DumbIRRepeater/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRGCSendDemo/IRGCSendDemo.ino b/lib/IRremoteESP8266-2.7.6/examples/IRGCSendDemo/IRGCSendDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRGCSendDemo/IRGCSendDemo.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRGCSendDemo/IRGCSendDemo.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRGCSendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRGCSendDemo/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRGCSendDemo/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRGCSendDemo/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRGCTCPServer/IRGCTCPServer.ino b/lib/IRremoteESP8266-2.7.6/examples/IRGCTCPServer/IRGCTCPServer.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRGCTCPServer/IRGCTCPServer.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRGCTCPServer/IRGCTCPServer.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRGCTCPServer/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRGCTCPServer/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRGCTCPServer/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRGCTCPServer/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/IRMQTTServer.h b/lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/IRMQTTServer.h similarity index 99% rename from lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/IRMQTTServer.h rename to lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/IRMQTTServer.h index b6fe281da..c886b705b 100644 --- a/lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/IRMQTTServer.h +++ b/lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/IRMQTTServer.h @@ -239,7 +239,7 @@ const uint16_t kJsonAcStateMaxSize = 1024; // Bytes // ----------------- End of User Configuration Section ------------------------- // Constants -#define _MY_VERSION_ "v1.4.7" +#define _MY_VERSION_ "v1.4.9" const uint8_t kRebootTime = 15; // Seconds const uint8_t kQuickDisplayTime = 2; // Seconds diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/IRMQTTServer.ino b/lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/IRMQTTServer.ino similarity index 95% rename from lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/IRMQTTServer.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/IRMQTTServer.ino index af98e3166..c04c1e23b 100644 --- a/lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/IRMQTTServer.ino +++ b/lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/IRMQTTServer.ino @@ -358,12 +358,17 @@ #include #include #if MQTT_ENABLE +#include // -------------------------------------------------------------------- // * * * IMPORTANT * * * // You must change to have the following value. // #define MQTT_MAX_PACKET_SIZE 768 // -------------------------------------------------------------------- -#include +// Check that the user has set MQTT_MAX_PACKET_SIZE to an appropriate size. +#if MQTT_MAX_PACKET_SIZE < 768 +#error "MQTT_MAX_PACKET_SIZE in is too small. "\ + "Increase the value per comments." +#endif // MQTT_MAX_PACKET_SIZE < 768 #endif // MQTT_ENABLE #include // NOLINT(build/include) #include @@ -622,7 +627,7 @@ bool loadConfigFile(void) { String timeElapsed(uint32_t const msec) { String result = msToString(msec); - if (result.equalsIgnoreCase("Now")) + if (result.equalsIgnoreCase(D_STR_NOW)) return result; else return result + F(" ago"); @@ -642,7 +647,7 @@ String timeSince(uint32_t const start) { String gpioToString(const int16_t gpio) { if (gpio == kGpioUnused) - return F("Unused"); + return F(D_STR_UNUSED); else return String(gpio); } @@ -715,13 +720,13 @@ void handleRoot(void) { html += F( "

Send a simple IR message

" "

" - "Type: "); + D_STR_PROTOCOL ": "); html += htmlSelectAcStateProtocol(KEY_TYPE, decode_type_t::NEC, true); html += F( - " Code: 0x" - " Bit size: " - " " + D_STR_BITS ": " + "" - " Repeats: " - " " + " " D_STR_REPEAT ": " + " " "
" "

" "

Send a complex (Air Conditioner) IR message

" "

" - "Type: "); + D_STR_PROTOCOL ": "); html += htmlSelectAcStateProtocol(KEY_TYPE, decode_type_t::KELVINATOR, false); html += F( - " State code: 0x" - "" - " " + " " "
" "

" "

Send an IRremote Raw IR message

" "

" - "" - "String: (freq,array data) " + "String: (freq,array data) GlobalCache" " IR message

" "" - "" - "String: 1:1,1," + "String: 1:1,1,Pronto code IR message

" "" - "" - "String (comma separated): " + "String (comma separated): " - " Repeats: " + " " D_STR_REPEAT ": " " " "

" "
"); @@ -825,7 +830,7 @@ String addJsReloadUrl(const String url, const uint16_t timeout_s, if (notify && timeout_s) { html += F(" document.write(\"You will be redirected to the main page in "); html += String(timeout_s); - html += F(" seconds.\");\n"); + html += F(" " D_STR_SECONDS ".\");\n"); } html += F(" setTimeout('Redirect()', "); html += String(timeout_s * 1000); // Convert to mSecs @@ -848,35 +853,44 @@ void handleExamples(void) { html += htmlMenu(); html += F( "

Hardcoded examples

" - "

" - "Sherwood Amp On (GlobalCache)

" - "

" - "Sherwood Amp Off (Raw)

" - "

" + "

Sherwood Amp " D_STR_ON " (GlobalCache)

" + "

Sherwood Amp " D_STR_OFF " (Raw)

" + "

" "Sherwood Amp Input TAPE (Pronto)

" - "

TV on (Samsung)

" - "

Power Off (Sony 12bit)

" - "

" - "Panasonic A/C LKE model, On, Auto mode, Min fan, 23C" + "

TV " D_STR_ON + " (Samsung)

" + "

" D_STR_POWER + " " D_STR_OFF " (Sony 12 " D_STR_BITS ")

" + "

" + "Panasonic A/C " D_STR_MODEL " LKE, " D_STR_ON ", " D_STR_AUTO " " + D_STR_MODE ", " D_STR_MIN " " D_STR_FAN ", 23C" " (via HTTP aircon interface)

" - "

" - "Change just the temp to 27C (via HTTP aircon interface)

" - "

" - "Turn OFF the current A/C (via HTTP aircon interface)

" + "

" + "Change just the " D_STR_TEMP " to 27C " + "(via HTTP aircon interface)

" + "

" + "Turn " D_STR_OFF " the current A/C (" + "via HTTP aircon interface)

" "

"); html += htmlEnd(); server.send(200, "text/html", html); @@ -996,7 +1010,9 @@ String htmlSelectSwingh(const String name, const stdAc::swingh_t def) { String htmlHeader(const String title, const String h1_text) { String html = F(""); html += title; - html += F("

"); + html += F("" + "

"); if (h1_text.length()) html += h1_text; else @@ -1042,20 +1058,20 @@ void handleAirCon(void) { "" + "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" - "" "
Protocol" + + "
" D_STR_PROTOCOL "" + htmlSelectClimateProtocol(KEY_PROTOCOL, climate[chan]->next.protocol) + "
Model" + + "
" D_STR_MODEL "" + htmlSelectModel(KEY_MODEL, climate[chan]->next.model) + "
Power" + + "
" D_STR_POWER "" + htmlSelectBool(KEY_POWER, climate[chan]->next.power) + "
Mode" + + "
" D_STR_MODE "" + htmlSelectMode(KEY_MODE, climate[chan]->next.mode) + "
Temp" + "
" D_STR_TEMP "" "" "
Fan Speed" + + "
" D_STR_FAN "" + htmlSelectFanspeed(KEY_FANSPEED, climate[chan]->next.fanspeed) + "
Swing (V)" + + "
" D_STR_SWINGV "" + htmlSelectSwingv(KEY_SWINGV, climate[chan]->next.swingv) + "
Swing (H)" + + "
" D_STR_SWINGH "" + htmlSelectSwingh(KEY_SWINGH, climate[chan]->next.swingh) + "
Quiet" + + "
" D_STR_QUIET "" + htmlSelectBool(KEY_QUIET, climate[chan]->next.quiet) + "
Turbo" + + "
" D_STR_TURBO "" + htmlSelectBool(KEY_TURBO, climate[chan]->next.turbo) + "
Econo" + + "
" D_STR_ECONO "" + htmlSelectBool(KEY_ECONO, climate[chan]->next.econo) + "
Light" + + "
" D_STR_LIGHT "" + htmlSelectBool(KEY_LIGHT, climate[chan]->next.light) + "
Filter" + + "
" D_STR_FILTER "" + htmlSelectBool(KEY_FILTER, climate[chan]->next.filter) + "
Clean" + + "
" D_STR_CLEAN "" + htmlSelectBool(KEY_CLEAN, climate[chan]->next.clean) + "
Beep" + + "
" D_STR_BEEP "" + htmlSelectBool(KEY_BEEP, climate[chan]->next.beep) + "
Force resend" + @@ -1260,9 +1276,9 @@ void handleInfo(void) { "Last IR Received: " + lastIrReceived + " (" + timeSince(lastIrReceivedTime) + ")
" #endif // IR_RX - "Duplicate Wifi networks: " + + "Duplicate " D_STR_WIFI " networks: " + String(HIDE_DUPLICATE_NETWORKS ? "Hide" : "Show") + "
" - "Min Wifi signal required: " + "Min " D_STR_WIFI " signal required: " #ifdef MIN_SIGNAL_STRENGTH + String(static_cast(MIN_SIGNAL_STRENGTH)) + #else // MIN_SIGNAL_STRENGTH @@ -1271,9 +1287,9 @@ void handleInfo(void) { "%
" "Serial debugging: " #if DEBUG - + String(isSerialGpioUsedByIr() ? "Off" : "On") + + + String(isSerialGpioUsedByIr() ? D_STR_OFF : D_STR_ON) + #else // DEBUG - "Off" + D_STR_OFF #endif // DEBUG "
" #if REPORT_VCC @@ -1289,6 +1305,7 @@ void handleInfo(void) { : "Disconnected " + timeSince(lastConnectedTime)) + ")
" "Disconnections: " + String(mqttDisconnectCounter - 1) + "
" + "Max Packet Size: " + MQTT_MAX_PACKET_SIZE + " bytes
" "Client id: " + MqttClientId + "
" "Command topic(s): " + listOfCommandTopics() + "
" "Acknowledgements topic: " + MqttAck + "
" @@ -1330,6 +1347,7 @@ void handleInfo(void) { timeElapsed(lastDiscovery.elapsed()) : String("Never"))) + "
" + "Discovery topic: " + MqttDiscovery + "
" + #endif // MQTT_DISCOVERY_ENABLE "Command topics: " + MqttClimate + channel_re + '/' + MQTT_CLIMATE_CMND + '/' + kClimateTopics + @@ -1339,7 +1357,7 @@ void handleInfo(void) { "

" // Page footer "

" - "(Note: Page will refresh every 60 seconds.)" + "(Note: Page will refresh every 60 " D_STR_SECONDS ".)" "

"; html += addJsReloadUrl(kUrlInfo, 60, false); html += htmlEnd(); @@ -1401,7 +1419,7 @@ void handleClearMqtt(void) { htmlHeader(F("Clearing saved info from MQTT"), F("Removing all saved settings for this device from " "MQTT.")) + - "

Device restarting. Try connecting in a few seconds.

" + + "

Device restarting. Try connecting in a few " D_STR_SECONDS ".

" + addJsReloadUrl(kUrlRoot, 10, true) + htmlEnd()); // Do the clearing. @@ -1423,7 +1441,7 @@ void handleReset(void) { server.send(200, "text/html", htmlHeader(F("Reset WiFi Config"), F("Resetting the WiFiManager config back to defaults.")) + - "

Device restarting. Try connecting in a few seconds.

" + + "

Device restarting. Try connecting in a few " D_STR_SECONDS ".

" + addJsReloadUrl(kUrlRoot, 10, true) + htmlEnd()); // Do the reset. @@ -1456,7 +1474,7 @@ void handleReboot() { #endif server.send(200, "text/html", htmlHeader(F("Device restarting.")) + - "

Try connecting in a few seconds.

" + + "

Try connecting in a few " D_STR_SECONDS ".

" + addJsReloadUrl(kUrlRoot, kRebootTime, true) + htmlEnd()); doRestart("Reboot requested"); @@ -2012,7 +2030,8 @@ void setup_wifi(void) { if (!wifiManager.autoConnect()) // Reboot. A.k.a. "Have you tried turning it Off and On again?" - doRestart("Wifi failed to connect and hit timeout. Rebooting...", true); + doRestart(D_STR_WIFI " failed to connect and hit timeout. Rebooting...", + true); #if MQTT_ENABLE strncpy(MqttServer, custom_mqtt_server.getValue(), kHostnameLength); @@ -2184,7 +2203,8 @@ void setup(void) { server.send(200, "text/html", htmlHeader(F("Updating firmware")) + "
" - "

Warning! Don't power off the device for 60 seconds!

" + "

Warning! Don't " D_STR_POWER " " D_STR_OFF " the device for " + "60 " D_STR_SECONDS "!

" "

The firmware is uploading and will try to flash itself. " "It is important to not interrupt the process.

" "

The firmware upload seems to have " + @@ -2768,12 +2788,12 @@ bool sendIRCode(IRsend *irsend, decode_type_t const ir_type, } else { debug("Failed to send IR Message:"); } - debug("Type:"); + debug(D_STR_PROTOCOL ": "); debug(String(ir_type).c_str()); // For "long" codes we basically repeat what we got. if (hasACState(ir_type) || ir_type == PRONTO || ir_type == RAW || ir_type == GLOBALCACHE) { - debug("Code: "); + debug(D_STR_CODE ": "); debug(code_str); // Confirm what we were asked to send was sent. #if MQTT_ENABLE @@ -2792,9 +2812,9 @@ bool sendIRCode(IRsend *irsend, decode_type_t const ir_type, } #endif // MQTT_ENABLE } else { // For "short" codes, we break it down a bit more before we report. - debug(("Code: 0x" + uint64ToString(code, 16)).c_str()); - debug(("Bits: " + String(bits)).c_str()); - debug(("Repeats: " + String(repeat)).c_str()); + debug((D_STR_CODE ": 0x" + uint64ToString(code, 16)).c_str()); + debug((D_STR_BITS ": " + String(bits)).c_str()); + debug((D_STR_REPEAT ": " + String(repeat)).c_str()); #if MQTT_ENABLE if (success) { mqtt_client.publish(MqttAck.c_str(), (String(ir_type) + diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRMQTTServer/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRMQTTServer/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRServer/IRServer.ino b/lib/IRremoteESP8266-2.7.6/examples/IRServer/IRServer.ino similarity index 95% rename from lib/IRremoteESP8266-2.7.5/examples/IRServer/IRServer.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRServer/IRServer.ino index 96fad95d2..92bcd0302 100644 --- a/lib/IRremoteESP8266-2.7.5/examples/IRServer/IRServer.ino +++ b/lib/IRremoteESP8266-2.7.6/examples/IRServer/IRServer.ino @@ -65,7 +65,10 @@ IRsend irsend(kIrLed); // Set the GPIO to be used to sending the message. void handleRoot() { server.send(200, "text/html", "" \ - "" HOSTNAME " Demo" \ + "" HOSTNAME " Demo " \ + "" \ + "" \ "" \ "

Hello from " HOSTNAME ", you can send NEC encoded IR" \ "signals from here!

" \ diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRServer/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRServer/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRServer/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRServer/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRrecvDemo/IRrecvDemo.ino b/lib/IRremoteESP8266-2.7.6/examples/IRrecvDemo/IRrecvDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRrecvDemo/IRrecvDemo.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRrecvDemo/IRrecvDemo.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRrecvDemo/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRrecvDemo/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRrecvDemo/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRrecvDemo/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRrecvDump/IRrecvDump.ino b/lib/IRremoteESP8266-2.7.6/examples/IRrecvDump/IRrecvDump.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRrecvDump/IRrecvDump.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRrecvDump/IRrecvDump.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRrecvDump/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRrecvDump/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRrecvDump/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRrecvDump/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRrecvDumpV2/IRrecvDumpV2.ino b/lib/IRremoteESP8266-2.7.6/examples/IRrecvDumpV2/IRrecvDumpV2.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRrecvDumpV2/IRrecvDumpV2.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRrecvDumpV2/IRrecvDumpV2.ino diff --git a/lib/IRremoteESP8266-2.7.6/examples/IRrecvDumpV2/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRrecvDumpV2/platformio.ini new file mode 100644 index 000000000..62fa06d3a --- /dev/null +++ b/lib/IRremoteESP8266-2.7.6/examples/IRrecvDumpV2/platformio.ini @@ -0,0 +1,52 @@ +[platformio] +src_dir = . + +[env] +; Default platform +platform = espressif8266 +; Default board +board = nodemcuv2 +framework = arduino +lib_extra_dirs = ../../ +lib_ldf_mode = deep+ +lib_ignore = examples +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +board = nodemcuv2 +; build_flags = -D_IR_LOCALE_=en-AU + +[env:esp32dev] +platform = espressif32 +board = esp32dev +; build_flags = -D_IR_LOCALE_=en-AU + +[env:de-CH] +build_flags = -D_IR_LOCALE_=de-CH ; German (Swiss) + +[env:de-DE] +build_flags = -D_IR_LOCALE_=de-DE ; German + +[env:en-AU] +build_flags = -D_IR_LOCALE_=en-AU ; English (Australian) (Default) + +[env:en-IE] +build_flags = -D_IR_LOCALE_=en-IE ; English (Irish) + +[env:en-UK] +build_flags = -D_IR_LOCALE_=en-UK ; English (UK) + +[env:en-US] +build_flags = -D_IR_LOCALE_=en-US ; English (Simplified) (USA) + +[env:es-ES] +build_flags = -D_IR_LOCALE_=es-ES ; Spanish + +[env:fr-FR] +build_flags = -D_IR_LOCALE_=fr-FR ; French + +[env:it-IT] +build_flags = -D_IR_LOCALE_=it-IT ; Italian + +[env:zh-CN] +build_flags = -D_IR_LOCALE_=zh-CN ; Chinese (Simplified) diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRsendDemo/IRsendDemo.ino b/lib/IRremoteESP8266-2.7.6/examples/IRsendDemo/IRsendDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRsendDemo/IRsendDemo.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRsendDemo/IRsendDemo.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRsendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRsendDemo/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRsendDemo/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRsendDemo/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRsendProntoDemo/IRsendProntoDemo.ino b/lib/IRremoteESP8266-2.7.6/examples/IRsendProntoDemo/IRsendProntoDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRsendProntoDemo/IRsendProntoDemo.ino rename to lib/IRremoteESP8266-2.7.6/examples/IRsendProntoDemo/IRsendProntoDemo.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/IRsendProntoDemo/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/IRsendProntoDemo/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/IRsendProntoDemo/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/IRsendProntoDemo/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino b/lib/IRremoteESP8266-2.7.6/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino rename to lib/IRremoteESP8266-2.7.6/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/JVCPanasonicSendDemo/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/JVCPanasonicSendDemo/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/JVCPanasonicSendDemo/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/JVCPanasonicSendDemo/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/LGACSend/LGACSend.ino b/lib/IRremoteESP8266-2.7.6/examples/LGACSend/LGACSend.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/LGACSend/LGACSend.ino rename to lib/IRremoteESP8266-2.7.6/examples/LGACSend/LGACSend.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/LGACSend/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/LGACSend/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/LGACSend/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/LGACSend/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/SmartIRRepeater/SmartIRRepeater.ino b/lib/IRremoteESP8266-2.7.6/examples/SmartIRRepeater/SmartIRRepeater.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/SmartIRRepeater/SmartIRRepeater.ino rename to lib/IRremoteESP8266-2.7.6/examples/SmartIRRepeater/SmartIRRepeater.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/SmartIRRepeater/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/SmartIRRepeater/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/SmartIRRepeater/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/SmartIRRepeater/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnArgoAC/TurnOnArgoAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnArgoAC/TurnOnArgoAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnArgoAC/TurnOnArgoAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnArgoAC/TurnOnArgoAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnArgoAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnArgoAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnArgoAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnArgoAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnDaikinAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnDaikinAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnDaikinAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnDaikinAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnFujitsuAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnFujitsuAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnFujitsuAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnFujitsuAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnGreeAC/TurnOnGreeAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnGreeAC/TurnOnGreeAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnGreeAC/TurnOnGreeAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnGreeAC/TurnOnGreeAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnGreeAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnGreeAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnGreeAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnGreeAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnKelvinatorAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnKelvinatorAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnKelvinatorAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnKelvinatorAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiHeavyAc/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiHeavyAc/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnMitsubishiHeavyAc/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnMitsubishiHeavyAc/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnPanasonicAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnPanasonicAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnPanasonicAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnPanasonicAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnToshibaAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnToshibaAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnToshibaAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnToshibaAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino b/lib/IRremoteESP8266-2.7.6/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/TurnOnTrotecAC/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/TurnOnTrotecAC/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/TurnOnTrotecAC/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/TurnOnTrotecAC/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/README.md b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/README.md similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/README.md rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/README.md diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/Web-AC-control.ino b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/Web-AC-control.ino similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/Web-AC-control.ino rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/Web-AC-control.ino diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/platformio.ini b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/platformio.ini similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/platformio.ini rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/platformio.ini diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/printscreen.png b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/printscreen.png similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/printscreen.png rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/printscreen.png diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/favicon.ico b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/favicon.ico similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/favicon.ico rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/favicon.ico diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_1_off.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_1_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_1_off.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_1_off.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_1_on.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_1_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_1_on.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_1_on.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_2_off.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_2_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_2_off.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_2_off.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_2_on.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_2_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_2_on.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_2_on.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_3_off.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_3_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_3_off.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_3_off.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_3_on.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_3_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_3_on.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_3_on.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_4_off.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_4_off.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_4_off.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_4_off.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_4_on.svg b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_4_on.svg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/level_4_on.svg rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/level_4_on.svg diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/ui.html b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/ui.html similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/ui.html rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/ui.html diff --git a/lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/ui.js b/lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/ui.js similarity index 100% rename from lib/IRremoteESP8266-2.7.5/examples/Web-AC-control/upload/ui.js rename to lib/IRremoteESP8266-2.7.6/examples/Web-AC-control/upload/ui.js diff --git a/lib/IRremoteESP8266-2.7.5/keywords.txt b/lib/IRremoteESP8266-2.7.6/keywords.txt similarity index 99% rename from lib/IRremoteESP8266-2.7.5/keywords.txt rename to lib/IRremoteESP8266-2.7.6/keywords.txt index 2d0ea9255..7b9e356af 100644 --- a/lib/IRremoteESP8266-2.7.5/keywords.txt +++ b/lib/IRremoteESP8266-2.7.6/keywords.txt @@ -629,6 +629,7 @@ xorBytes KEYWORD2 # Constants (LITERAL1) ####################################### +*kAllProtocolNamesStr LITERAL1 // LITERAL1 AIRWELL LITERAL1 AIWA_RC_T501 LITERAL1 diff --git a/lib/IRremoteESP8266-2.7.5/library.json b/lib/IRremoteESP8266-2.7.6/library.json similarity index 97% rename from lib/IRremoteESP8266-2.7.5/library.json rename to lib/IRremoteESP8266-2.7.6/library.json index 3220f9bd2..c2780ac6c 100644 --- a/lib/IRremoteESP8266-2.7.5/library.json +++ b/lib/IRremoteESP8266-2.7.6/library.json @@ -1,6 +1,6 @@ { "name": "IRremoteESP8266", - "version": "2.7.5", + "version": "2.7.6", "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.5/library.properties b/lib/IRremoteESP8266-2.7.6/library.properties similarity index 97% rename from lib/IRremoteESP8266-2.7.5/library.properties rename to lib/IRremoteESP8266-2.7.6/library.properties index 16d4c2d20..b67edbce0 100644 --- a/lib/IRremoteESP8266-2.7.5/library.properties +++ b/lib/IRremoteESP8266-2.7.6/library.properties @@ -1,5 +1,5 @@ name=IRremoteESP8266 -version=2.7.5 +version=2.7.6 author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32) diff --git a/lib/IRremoteESP8266-2.7.6/platformio.ini b/lib/IRremoteESP8266-2.7.6/platformio.ini new file mode 100644 index 000000000..67dbeb606 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.6/platformio.ini @@ -0,0 +1,21 @@ +[platformio] +# Default to building IRrecvDumpV2 if not in a specific example directory. +src_dir = examples/IRrecvDumpV2 + +[env] +lib_extra_dirs = . +lib_ldf_mode = deep+ +lib_ignore = examples +framework = arduino +platform = espressif8266 +build_flags = ; -D_IR_LOCALE_=en-AU + +[env:nodemcuv2] +board = nodemcuv2 + +[env:d1_mini] +board = d1_mini + +[env:esp32dev] +platform = espressif32 +board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.5/pylintrc b/lib/IRremoteESP8266-2.7.6/pylintrc similarity index 100% rename from lib/IRremoteESP8266-2.7.5/pylintrc rename to lib/IRremoteESP8266-2.7.6/pylintrc diff --git a/lib/IRremoteESP8266-2.7.5/src/CPPLINT.cfg b/lib/IRremoteESP8266-2.7.6/src/CPPLINT.cfg similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/CPPLINT.cfg rename to lib/IRremoteESP8266-2.7.6/src/CPPLINT.cfg diff --git a/lib/IRremoteESP8266-2.7.5/src/IRac.cpp b/lib/IRremoteESP8266-2.7.6/src/IRac.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRac.cpp rename to lib/IRremoteESP8266-2.7.6/src/IRac.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/IRac.h b/lib/IRremoteESP8266-2.7.6/src/IRac.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRac.h rename to lib/IRremoteESP8266-2.7.6/src/IRac.h diff --git a/lib/IRremoteESP8266-2.7.5/src/IRrecv.cpp b/lib/IRremoteESP8266-2.7.6/src/IRrecv.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRrecv.cpp rename to lib/IRremoteESP8266-2.7.6/src/IRrecv.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/IRrecv.h b/lib/IRremoteESP8266-2.7.6/src/IRrecv.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRrecv.h rename to lib/IRremoteESP8266-2.7.6/src/IRrecv.h diff --git a/lib/IRremoteESP8266-2.7.5/src/IRremoteESP8266.h b/lib/IRremoteESP8266-2.7.6/src/IRremoteESP8266.h similarity index 99% rename from lib/IRremoteESP8266-2.7.5/src/IRremoteESP8266.h rename to lib/IRremoteESP8266-2.7.6/src/IRremoteESP8266.h index dd8008bc0..2bf906697 100644 --- a/lib/IRremoteESP8266-2.7.5/src/IRremoteESP8266.h +++ b/lib/IRremoteESP8266-2.7.6/src/IRremoteESP8266.h @@ -52,7 +52,7 @@ #endif // UNIT_TEST // Library Version -#define _IRREMOTEESP8266_VERSION_ "2.7.5" +#define _IRREMOTEESP8266_VERSION_ "2.7.6" // Set the language & locale for the library. See the `locale` dir for options. #ifndef _IR_LOCALE_ diff --git a/lib/IRremoteESP8266-2.7.5/src/IRsend.cpp b/lib/IRremoteESP8266-2.7.6/src/IRsend.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRsend.cpp rename to lib/IRremoteESP8266-2.7.6/src/IRsend.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/IRsend.h b/lib/IRremoteESP8266-2.7.6/src/IRsend.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRsend.h rename to lib/IRremoteESP8266-2.7.6/src/IRsend.h diff --git a/lib/IRremoteESP8266-2.7.5/src/IRtext.cpp b/lib/IRremoteESP8266-2.7.6/src/IRtext.cpp similarity index 76% rename from lib/IRremoteESP8266-2.7.5/src/IRtext.cpp rename to lib/IRremoteESP8266-2.7.6/src/IRtext.cpp index 72ddd45b7..cb9ccd722 100644 --- a/lib/IRremoteESP8266-2.7.5/src/IRtext.cpp +++ b/lib/IRremoteESP8266-2.7.6/src/IRtext.cpp @@ -163,3 +163,88 @@ 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" + "\x0"; // This string requires double null termination. diff --git a/lib/IRremoteESP8266-2.7.5/src/IRtext.h b/lib/IRremoteESP8266-2.7.6/src/IRtext.h similarity index 99% rename from lib/IRremoteESP8266-2.7.5/src/IRtext.h rename to lib/IRremoteESP8266-2.7.6/src/IRtext.h index 13d2d400c..cbce59747 100644 --- a/lib/IRremoteESP8266-2.7.5/src/IRtext.h +++ b/lib/IRremoteESP8266-2.7.6/src/IRtext.h @@ -17,6 +17,7 @@ extern const char* k3DStr; extern const char* k6thSenseStr; extern const char* k8CHeatStr; extern const char* kAirFlowStr; +extern const char *kAllProtocolNamesStr; extern const char* kAutomaticStr; extern const char* kAutoStr; extern const char* kBeepStr; diff --git a/lib/IRremoteESP8266-2.7.5/src/IRtimer.cpp b/lib/IRremoteESP8266-2.7.6/src/IRtimer.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRtimer.cpp rename to lib/IRremoteESP8266-2.7.6/src/IRtimer.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/IRtimer.h b/lib/IRremoteESP8266-2.7.6/src/IRtimer.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRtimer.h rename to lib/IRremoteESP8266-2.7.6/src/IRtimer.h diff --git a/lib/IRremoteESP8266-2.7.5/src/IRutils.cpp b/lib/IRremoteESP8266-2.7.6/src/IRutils.cpp similarity index 71% rename from lib/IRremoteESP8266-2.7.5/src/IRutils.cpp rename to lib/IRremoteESP8266-2.7.6/src/IRutils.cpp index db9095143..39d9973ed 100644 --- a/lib/IRremoteESP8266-2.7.5/src/IRutils.cpp +++ b/lib/IRremoteESP8266-2.7.6/src/IRutils.cpp @@ -91,169 +91,14 @@ void serialPrintUint64(uint64_t input, uint8_t base) { // Returns: // A decode_type_t enum. decode_type_t strToDecodeType(const char * const str) { - if (!strcasecmp(str, kUnknownStr)) - return decode_type_t::UNKNOWN; - else if (!strcasecmp(str, "UNUSED")) - return decode_type_t::UNUSED; - else if (!strcasecmp(str, "AIRWELL")) - return decode_type_t::AIRWELL; - else if (!strcasecmp(str, "AIWA_RC_T501")) - return decode_type_t::AIWA_RC_T501; - else if (!strcasecmp(str, "AMCOR")) - return decode_type_t::AMCOR; - else if (!strcasecmp(str, "ARGO")) - return decode_type_t::ARGO; - else if (!strcasecmp(str, "CARRIER_AC")) - return decode_type_t::CARRIER_AC; - else if (!strcasecmp(str, "COOLIX")) - return decode_type_t::COOLIX; - else if (!strcasecmp(str, "DAIKIN")) - return decode_type_t::DAIKIN; - else if (!strcasecmp(str, "DAIKIN128")) - return decode_type_t::DAIKIN128; - else if (!strcasecmp(str, "DAIKIN152")) - return decode_type_t::DAIKIN152; - else if (!strcasecmp(str, "DAIKIN160")) - return decode_type_t::DAIKIN160; - else if (!strcasecmp(str, "DAIKIN176")) - return decode_type_t::DAIKIN176; - else if (!strcasecmp(str, "DAIKIN2")) - return decode_type_t::DAIKIN2; - else if (!strcasecmp(str, "DAIKIN216")) - return decode_type_t::DAIKIN216; - else if (!strcasecmp(str, "DAIKIN64")) - return decode_type_t::DAIKIN64; - else if (!strcasecmp(str, "DENON")) - return decode_type_t::DENON; - else if (!strcasecmp(str, "DISH")) - return decode_type_t::DISH; - else if (!strcasecmp(str, "ELECTRA_AC")) - return decode_type_t::ELECTRA_AC; - else if (!strcasecmp(str, "EPSON")) - return decode_type_t::EPSON; - else if (!strcasecmp(str, "FUJITSU_AC")) - return decode_type_t::FUJITSU_AC; - else if (!strcasecmp(str, "GICABLE")) - return decode_type_t::GICABLE; - else if (!strcasecmp(str, "GLOBALCACHE")) - return decode_type_t::GLOBALCACHE; - else if (!strcasecmp(str, "GOODWEATHER")) - return decode_type_t::GOODWEATHER; - else if (!strcasecmp(str, "GREE")) - return decode_type_t::GREE; - else if (!strcasecmp(str, "HAIER_AC")) - return decode_type_t::HAIER_AC; - else if (!strcasecmp(str, "HAIER_AC_YRW02")) - return decode_type_t::HAIER_AC_YRW02; - else if (!strcasecmp(str, "HITACHI_AC")) - return decode_type_t::HITACHI_AC; - else if (!strcasecmp(str, "HITACHI_AC1")) - return decode_type_t::HITACHI_AC1; - else if (!strcasecmp(str, "HITACHI_AC2")) - return decode_type_t::HITACHI_AC2; - else if (!strcasecmp(str, "HITACHI_AC3")) - return decode_type_t::HITACHI_AC3; - else if (!strcasecmp(str, "HITACHI_AC424")) - return decode_type_t::HITACHI_AC424; - else if (!strcasecmp(str, "INAX")) - return decode_type_t::INAX; - else if (!strcasecmp(str, "JVC")) - return decode_type_t::JVC; - else if (!strcasecmp(str, "KELVINATOR")) - return decode_type_t::KELVINATOR; - else if (!strcasecmp(str, "LEGOPF")) - return decode_type_t::LEGOPF; - else if (!strcasecmp(str, "LG")) - return decode_type_t::LG; - else if (!strcasecmp(str, "LG2")) - return decode_type_t::LG2; - else if (!strcasecmp(str, "LASERTAG")) - return decode_type_t::LASERTAG; - else if (!strcasecmp(str, "LUTRON")) - return decode_type_t::LUTRON; - else if (!strcasecmp(str, "MAGIQUEST")) - return decode_type_t::MAGIQUEST; - else if (!strcasecmp(str, "MIDEA")) - return decode_type_t::MIDEA; - else if (!strcasecmp(str, "MITSUBISHI")) - return decode_type_t::MITSUBISHI; - else if (!strcasecmp(str, "MITSUBISHI2")) - return decode_type_t::MITSUBISHI2; - else if (!strcasecmp(str, "MITSUBISHI_AC")) - return decode_type_t::MITSUBISHI_AC; - else if (!strcasecmp(str, "MITSUBISHI136")) - return decode_type_t::MITSUBISHI136; - else if (!strcasecmp(str, "MITSUBISHI112")) - return decode_type_t::MITSUBISHI112; - else if (!strcasecmp(str, "MITSUBISHI_HEAVY_88")) - return decode_type_t::MITSUBISHI_HEAVY_88; - else if (!strcasecmp(str, "MITSUBISHI_HEAVY_152")) - return decode_type_t::MITSUBISHI_HEAVY_152; - else if (!strcasecmp(str, "MWM")) - return decode_type_t::MWM; - else if (!strcasecmp(str, "NEOCLIMA")) - return decode_type_t::NEOCLIMA; - else if (!strcasecmp(str, "NEC")) - return decode_type_t::NEC; - else if (!strcasecmp(str, "NEC_LIKE") || - !strcasecmp(str, "NEC (NON-STRICT)")) - return decode_type_t::NEC_LIKE; - else if (!strcasecmp(str, "NIKAI")) - return decode_type_t::NIKAI; - else if (!strcasecmp(str, "PANASONIC")) - return decode_type_t::PANASONIC; - else if (!strcasecmp(str, "PANASONIC_AC")) - return decode_type_t::PANASONIC_AC; - else if (!strcasecmp(str, "PIONEER")) - return decode_type_t::PIONEER; - else if (!strcasecmp(str, "PRONTO")) - return decode_type_t::PRONTO; - else if (!strcasecmp(str, "RAW")) - return decode_type_t::RAW; - else if (!strcasecmp(str, "RC5")) - return decode_type_t::RC5; - else if (!strcasecmp(str, "RC5X")) - return decode_type_t::RC5X; - else if (!strcasecmp(str, "RC6")) - return decode_type_t::RC6; - else if (!strcasecmp(str, "RCMM")) - return decode_type_t::RCMM; - else if (!strcasecmp(str, "SAMSUNG")) - return decode_type_t::SAMSUNG; - else if (!strcasecmp(str, "SAMSUNG36")) - return decode_type_t::SAMSUNG36; - else if (!strcasecmp(str, "SAMSUNG_AC")) - return decode_type_t::SAMSUNG_AC; - else if (!strcasecmp(str, "SANYO")) - return decode_type_t::SANYO; - else if (!strcasecmp(str, "SANYO_LC7461")) - return decode_type_t::SANYO_LC7461; - else if (!strcasecmp(str, "SHARP")) - return decode_type_t::SHARP; - else if (!strcasecmp(str, "SHARP_AC")) - return decode_type_t::SHARP_AC; - else if (!strcasecmp(str, "SHERWOOD")) - return decode_type_t::SHERWOOD; - else if (!strcasecmp(str, "SONY")) - return decode_type_t::SONY; - else if (!strcasecmp(str, "SONY_38K")) - return decode_type_t::SONY_38K; - else if (!strcasecmp(str, "SYMPHONY")) - return decode_type_t::SYMPHONY; - else if (!strcasecmp(str, "TCL112AC")) - return decode_type_t::TCL112AC; - else if (!strcasecmp(str, "TECO")) - return decode_type_t::TECO; - else if (!strcasecmp(str, "TOSHIBA_AC")) - return decode_type_t::TOSHIBA_AC; - else if (!strcasecmp(str, "TROTEC")) - return decode_type_t::TROTEC; - else if (!strcasecmp(str, "VESTEL_AC")) - return decode_type_t::VESTEL_AC; - else if (!strcasecmp(str, "WHIRLPOOL_AC")) - return decode_type_t::WHIRLPOOL_AC; - else if (!strcasecmp(str, "WHYNTER")) - return decode_type_t::WHYNTER; + const char *ptr = kAllProtocolNamesStr; + uint16_t length = strlen(ptr); + for (uint16_t i = 0; length; i++) { + if (!strcasecmp(str, ptr)) return (decode_type_t)i; + ptr += length + 1; + length = strlen(ptr); + } + // Handle integer values of the type by converting to a string and back again. decode_type_t result = strToDecodeType( typeToString((decode_type_t)atoi(str)).c_str()); @@ -271,251 +116,17 @@ decode_type_t strToDecodeType(const char * const str) { // A string containing the protocol name. String typeToString(const decode_type_t protocol, const bool isRepeat) { String result = ""; - switch (protocol) { - case UNUSED: - result = F("UNUSED"); - break; - case AIRWELL: - result = F("AIRWELL"); - break; - case AIWA_RC_T501: - result = F("AIWA_RC_T501"); - break; - case AMCOR: - result = F("AMCOR"); - break; - case ARGO: - result = F("ARGO"); - break; - case CARRIER_AC: - result = F("CARRIER_AC"); - break; - case COOLIX: - result = F("COOLIX"); - break; - case DAIKIN: - result = F("DAIKIN"); - break; - case DAIKIN128: - result = F("DAIKIN128"); - break; - case DAIKIN152: - result = F("DAIKIN152"); - break; - case DAIKIN160: - result = F("DAIKIN160"); - break; - case DAIKIN176: - result = F("DAIKIN176"); - break; - case DAIKIN2: - result = F("DAIKIN2"); - break; - case DAIKIN216: - result = F("DAIKIN216"); - break; - case DAIKIN64: - result = F("DAIKIN64"); - break; - case DENON: - result = F("DENON"); - break; - case DISH: - result = F("DISH"); - break; - case ELECTRA_AC: - result = F("ELECTRA_AC"); - break; - case EPSON: - result = F("EPSON"); - break; - case FUJITSU_AC: - result = F("FUJITSU_AC"); - break; - case GICABLE: - result = F("GICABLE"); - break; - case GLOBALCACHE: - result = F("GLOBALCACHE"); - break; - case GOODWEATHER: - result = F("GOODWEATHER"); - break; - case GREE: - result = F("GREE"); - break; - case HAIER_AC: - result = F("HAIER_AC"); - break; - case HAIER_AC_YRW02: - result = F("HAIER_AC_YRW02"); - break; - case HITACHI_AC: - result = F("HITACHI_AC"); - break; - case HITACHI_AC1: - result = F("HITACHI_AC1"); - break; - case HITACHI_AC2: - result = F("HITACHI_AC2"); - break; - case HITACHI_AC3: - result = F("HITACHI_AC3"); - break; - case HITACHI_AC424: - result = F("HITACHI_AC424"); - break; - case INAX: - result = F("INAX"); - break; - case JVC: - result = F("JVC"); - break; - case KELVINATOR: - result = F("KELVINATOR"); - break; - case LEGOPF: - result = F("LEGOPF"); - break; - case LG: - result = F("LG"); - break; - case LG2: - result = F("LG2"); - break; - case LASERTAG: - result = F("LASERTAG"); - break; - case LUTRON: - result = F("LUTRON"); - break; - case MAGIQUEST: - result = F("MAGIQUEST"); - break; - case MIDEA: - result = F("MIDEA"); - break; - case MITSUBISHI: - result = F("MITSUBISHI"); - break; - case MITSUBISHI2: - result = F("MITSUBISHI2"); - break; - case MITSUBISHI_AC: - result = F("MITSUBISHI_AC"); - break; - case MITSUBISHI136: - result = F("MITSUBISHI136"); - break; - case MITSUBISHI112: - result = F("MITSUBISHI112"); - break; - case MITSUBISHI_HEAVY_88: - result = F("MITSUBISHI_HEAVY_88"); - break; - case MITSUBISHI_HEAVY_152: - result = F("MITSUBISHI_HEAVY_152"); - break; - case MWM: - result = F("MWM"); - break; - case NEOCLIMA: - result = F("NEOCLIMA"); - break; - case NEC: - result = F("NEC"); - break; - case NEC_LIKE: - result = F("NEC (non-strict)"); - break; - case NIKAI: - result = F("NIKAI"); - break; - case PANASONIC: - result = F("PANASONIC"); - break; - case PANASONIC_AC: - result = F("PANASONIC_AC"); - break; - case PIONEER: - result = F("PIONEER"); - break; - case PRONTO: - result = F("PRONTO"); - break; - case RAW: - result = F("RAW"); - break; - case RC5: - result = F("RC5"); - break; - case RC5X: - result = F("RC5X"); - break; - case RC6: - result = F("RC6"); - break; - case RCMM: - result = F("RCMM"); - break; - case SAMSUNG: - result = F("SAMSUNG"); - break; - case SAMSUNG36: - result = F("SAMSUNG36"); - break; - case SAMSUNG_AC: - result = F("SAMSUNG_AC"); - break; - case SANYO: - result = F("SANYO"); - break; - case SANYO_LC7461: - result = F("SANYO_LC7461"); - break; - case SHARP: - result = F("SHARP"); - break; - case SHARP_AC: - result = F("SHARP_AC"); - break; - case SHERWOOD: - result = F("SHERWOOD"); - break; - case SONY: - result = F("SONY"); - break; - case SONY_38K: - result = F("SONY_38K"); - break; - case SYMPHONY: - result = F("SYMPHONY"); - break; - case TCL112AC: - result = F("TCL112AC"); - break; - case TECO: - result = F("TECO"); - break; - case TOSHIBA_AC: - result = F("TOSHIBA_AC"); - break; - case TROTEC: - result = F("TROTEC"); - break; - case VESTEL_AC: - result = F("VESTEL_AC"); - break; - case WHIRLPOOL_AC: - result = F("WHIRLPOOL_AC"); - break; - case WHYNTER: - result = F("WHYNTER"); - break; - case UNKNOWN: - default: - result = kUnknownStr; - break; + const char *ptr = kAllProtocolNamesStr; + if (protocol > kLastDecodeType || protocol == decode_type_t::UNKNOWN) { + result = kUnknownStr; + } else { + for (uint16_t i = 0; i <= protocol && strlen(ptr); i++) { + if (i == protocol) { + result = ptr; + break; + } + ptr += strlen(ptr) + 1; + } } if (isRepeat) { result += kSpaceLBraceStr; diff --git a/lib/IRremoteESP8266-2.7.5/src/IRutils.h b/lib/IRremoteESP8266-2.7.6/src/IRutils.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/IRutils.h rename to lib/IRremoteESP8266-2.7.6/src/IRutils.h diff --git a/lib/IRremoteESP8266-2.7.5/src/i18n.h b/lib/IRremoteESP8266-2.7.6/src/i18n.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/i18n.h rename to lib/IRremoteESP8266-2.7.6/src/i18n.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Airwell.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Airwell.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Airwell.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Airwell.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Aiwa.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Aiwa.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Aiwa.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Aiwa.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Amcor.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Amcor.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Amcor.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Amcor.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Amcor.h b/lib/IRremoteESP8266-2.7.6/src/ir_Amcor.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Amcor.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Amcor.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Argo.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Argo.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Argo.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Argo.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Argo.h b/lib/IRremoteESP8266-2.7.6/src/ir_Argo.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Argo.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Argo.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Carrier.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Carrier.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Carrier.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Carrier.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Coolix.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Coolix.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Coolix.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Coolix.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Coolix.h b/lib/IRremoteESP8266-2.7.6/src/ir_Coolix.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Coolix.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Coolix.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Daikin.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Daikin.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Daikin.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Daikin.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Daikin.h b/lib/IRremoteESP8266-2.7.6/src/ir_Daikin.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Daikin.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Daikin.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Denon.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Denon.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Denon.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Denon.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Dish.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Dish.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Dish.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Dish.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Electra.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Electra.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Electra.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Electra.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Electra.h b/lib/IRremoteESP8266-2.7.6/src/ir_Electra.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Electra.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Electra.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Epson.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Epson.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Epson.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Epson.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Fujitsu.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Fujitsu.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Fujitsu.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Fujitsu.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Fujitsu.h b/lib/IRremoteESP8266-2.7.6/src/ir_Fujitsu.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Fujitsu.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Fujitsu.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_GICable.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_GICable.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_GICable.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_GICable.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_GlobalCache.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_GlobalCache.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_GlobalCache.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_GlobalCache.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Goodweather.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Goodweather.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Goodweather.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Goodweather.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Goodweather.h b/lib/IRremoteESP8266-2.7.6/src/ir_Goodweather.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Goodweather.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Goodweather.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Gree.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Gree.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Gree.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Gree.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Gree.h b/lib/IRremoteESP8266-2.7.6/src/ir_Gree.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Gree.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Gree.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Haier.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Haier.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Haier.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Haier.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Haier.h b/lib/IRremoteESP8266-2.7.6/src/ir_Haier.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Haier.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Haier.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Hitachi.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Hitachi.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Hitachi.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Hitachi.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Hitachi.h b/lib/IRremoteESP8266-2.7.6/src/ir_Hitachi.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Hitachi.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Hitachi.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Inax.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Inax.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Inax.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Inax.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_JVC.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_JVC.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_JVC.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_JVC.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Kelvinator.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Kelvinator.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Kelvinator.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Kelvinator.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Kelvinator.h b/lib/IRremoteESP8266-2.7.6/src/ir_Kelvinator.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Kelvinator.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Kelvinator.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_LG.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_LG.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_LG.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_LG.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_LG.h b/lib/IRremoteESP8266-2.7.6/src/ir_LG.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_LG.h rename to lib/IRremoteESP8266-2.7.6/src/ir_LG.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Lasertag.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Lasertag.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Lasertag.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Lasertag.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Lego.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Lego.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Lego.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Lego.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Lutron.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Lutron.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Lutron.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Lutron.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_MWM.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_MWM.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_MWM.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_MWM.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Magiquest.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Magiquest.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Magiquest.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Magiquest.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Magiquest.h b/lib/IRremoteESP8266-2.7.6/src/ir_Magiquest.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Magiquest.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Magiquest.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Midea.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Midea.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Midea.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Midea.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Midea.h b/lib/IRremoteESP8266-2.7.6/src/ir_Midea.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Midea.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Midea.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Mitsubishi.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Mitsubishi.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Mitsubishi.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Mitsubishi.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Mitsubishi.h b/lib/IRremoteESP8266-2.7.6/src/ir_Mitsubishi.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Mitsubishi.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Mitsubishi.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_MitsubishiHeavy.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_MitsubishiHeavy.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_MitsubishiHeavy.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_MitsubishiHeavy.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_MitsubishiHeavy.h b/lib/IRremoteESP8266-2.7.6/src/ir_MitsubishiHeavy.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_MitsubishiHeavy.h rename to lib/IRremoteESP8266-2.7.6/src/ir_MitsubishiHeavy.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_NEC.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_NEC.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_NEC.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_NEC.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_NEC.h b/lib/IRremoteESP8266-2.7.6/src/ir_NEC.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_NEC.h rename to lib/IRremoteESP8266-2.7.6/src/ir_NEC.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Neoclima.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Neoclima.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Neoclima.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Neoclima.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Neoclima.h b/lib/IRremoteESP8266-2.7.6/src/ir_Neoclima.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Neoclima.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Neoclima.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Nikai.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Nikai.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Nikai.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Nikai.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Panasonic.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Panasonic.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Panasonic.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Panasonic.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Panasonic.h b/lib/IRremoteESP8266-2.7.6/src/ir_Panasonic.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Panasonic.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Panasonic.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Pioneer.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Pioneer.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Pioneer.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Pioneer.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Pronto.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Pronto.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Pronto.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Pronto.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_RC5_RC6.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_RC5_RC6.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_RC5_RC6.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_RC5_RC6.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_RCMM.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_RCMM.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_RCMM.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_RCMM.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Samsung.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Samsung.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Samsung.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Samsung.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Samsung.h b/lib/IRremoteESP8266-2.7.6/src/ir_Samsung.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Samsung.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Samsung.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Sanyo.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Sanyo.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Sanyo.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Sanyo.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Sharp.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Sharp.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Sharp.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Sharp.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Sharp.h b/lib/IRremoteESP8266-2.7.6/src/ir_Sharp.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Sharp.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Sharp.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Sherwood.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Sherwood.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Sherwood.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Sherwood.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Sony.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Sony.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Sony.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Sony.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Symphony.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Symphony.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Symphony.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Symphony.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Tcl.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Tcl.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Tcl.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Tcl.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Tcl.h b/lib/IRremoteESP8266-2.7.6/src/ir_Tcl.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Tcl.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Tcl.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Teco.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Teco.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Teco.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Teco.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Teco.h b/lib/IRremoteESP8266-2.7.6/src/ir_Teco.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Teco.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Teco.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Toshiba.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Toshiba.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Toshiba.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Toshiba.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Toshiba.h b/lib/IRremoteESP8266-2.7.6/src/ir_Toshiba.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Toshiba.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Toshiba.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Trotec.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Trotec.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Trotec.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Trotec.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Trotec.h b/lib/IRremoteESP8266-2.7.6/src/ir_Trotec.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Trotec.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Trotec.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Vestel.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Vestel.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Vestel.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Vestel.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Vestel.h b/lib/IRremoteESP8266-2.7.6/src/ir_Vestel.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Vestel.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Vestel.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Whirlpool.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Whirlpool.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Whirlpool.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Whirlpool.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Whirlpool.h b/lib/IRremoteESP8266-2.7.6/src/ir_Whirlpool.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Whirlpool.h rename to lib/IRremoteESP8266-2.7.6/src/ir_Whirlpool.h diff --git a/lib/IRremoteESP8266-2.7.5/src/ir_Whynter.cpp b/lib/IRremoteESP8266-2.7.6/src/ir_Whynter.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/ir_Whynter.cpp rename to lib/IRremoteESP8266-2.7.6/src/ir_Whynter.cpp diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/README.md b/lib/IRremoteESP8266-2.7.6/src/locale/README.md similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/README.md rename to lib/IRremoteESP8266-2.7.6/src/locale/README.md diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/de-CH.h b/lib/IRremoteESP8266-2.7.6/src/locale/de-CH.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/de-CH.h rename to lib/IRremoteESP8266-2.7.6/src/locale/de-CH.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/de-DE.h b/lib/IRremoteESP8266-2.7.6/src/locale/de-DE.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/de-DE.h rename to lib/IRremoteESP8266-2.7.6/src/locale/de-DE.h diff --git a/lib/IRremoteESP8266-2.7.6/src/locale/defaults.h b/lib/IRremoteESP8266-2.7.6/src/locale/defaults.h new file mode 100644 index 000000000..f96595616 --- /dev/null +++ b/lib/IRremoteESP8266-2.7.6/src/locale/defaults.h @@ -0,0 +1,719 @@ +// Copyright 2019 - David Conran (@crankyoldgit) +// The default text to use throughout the library. +// The library will use this text if no locale (_IR_LOCALE_) is set or if +// the locale doesn't define particular values. +// If they are defined, this file should NOT override them. +// +// This file should contain a #define for every translateable/locale dependant +// string used by the library. Language specific files don't have to include +// everything. +// +// NOTE: ASCII/UTF-8 characters only. Unicode is NOT supported. +// +// The defaults are English (AU) / en-AU. Australia (AU) is pretty much the same +// as English (UK) for this libraries use case. +#ifndef LOCALE_DEFAULTS_H_ +#define LOCALE_DEFAULTS_H_ + +#ifndef D_STR_UNKNOWN +#define D_STR_UNKNOWN "UNKNOWN" +#endif // D_STR_UNKNOWN +#ifndef D_STR_PROTOCOL +#define D_STR_PROTOCOL "Protocol" +#endif // D_STR_PROTOCOL +#ifndef D_STR_POWER +#define D_STR_POWER "Power" +#endif // D_STR_POWER +#ifndef D_STR_PREVIOUS +#define D_STR_PREVIOUS "Previous" +#endif // D_STR_PREVIOUS +#ifndef D_STR_ON +#define D_STR_ON "On" +#endif // D_STR_ON +#ifndef D_STR_OFF +#define D_STR_OFF "Off" +#endif // D_STR_OFF +#ifndef D_STR_MODE +#define D_STR_MODE "Mode" +#endif // D_STR_MODE +#ifndef D_STR_TOGGLE +#define D_STR_TOGGLE "Toggle" +#endif // D_STR_TOGGLE +#ifndef D_STR_TURBO +#define D_STR_TURBO "Turbo" +#endif // D_STR_TURBO +#ifndef D_STR_SUPER +#define D_STR_SUPER "Super" +#endif // D_STR_SUPER +#ifndef D_STR_SLEEP +#define D_STR_SLEEP "Sleep" +#endif // D_STR_SLEEP +#ifndef D_STR_LIGHT +#define D_STR_LIGHT "Light" +#endif // D_STR_LIGHT +#ifndef D_STR_POWERFUL +#define D_STR_POWERFUL "Powerful" +#endif // D_STR_POWERFUL +#ifndef D_STR_QUIET +#define D_STR_QUIET "Quiet" +#endif // D_STR_QUIET +#ifndef D_STR_ECONO +#define D_STR_ECONO "Econo" +#endif // D_STR_ECONO +#ifndef D_STR_SWING +#define D_STR_SWING "Swing" +#endif // D_STR_SWING +#ifndef D_STR_SWINGH +#define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first! +#endif // D_STR_SWINGH +#ifndef D_STR_SWINGV +#define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first! +#endif // D_STR_SWINGV +#ifndef D_STR_BEEP +#define D_STR_BEEP "Beep" +#endif // D_STR_BEEP +#ifndef D_STR_MOULD +#define D_STR_MOULD "Mould" +#endif // D_STR_MOULD +#ifndef D_STR_CLEAN +#define D_STR_CLEAN "Clean" +#endif // D_STR_CLEAN +#ifndef D_STR_PURIFY +#define D_STR_PURIFY "Purify" +#endif // D_STR_PURIFY +#ifndef D_STR_TIMER +#define D_STR_TIMER "Timer" +#endif // D_STR_TIMER +#ifndef D_STR_ONTIMER +#define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first! +#endif // D_STR_ONTIMER +#ifndef D_STR_OFFTIMER +#define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first! +#endif // D_STR_OFFTIMER +#ifndef D_STR_CLOCK +#define D_STR_CLOCK "Clock" +#endif // D_STR_CLOCK +#ifndef D_STR_COMMAND +#define D_STR_COMMAND "Command" +#endif // D_STR_COMMAND +#ifndef D_STR_XFAN +#define D_STR_XFAN "XFan" +#endif // D_STR_XFAN +#ifndef D_STR_HEALTH +#define D_STR_HEALTH "Health" +#endif // D_STR_HEALTH +#ifndef D_STR_MODEL +#define D_STR_MODEL "Model" +#endif // D_STR_MODEL +#ifndef D_STR_TEMP +#define D_STR_TEMP "Temp" +#endif // D_STR_TEMP +#ifndef D_STR_IFEEL +#define D_STR_IFEEL "IFeel" +#endif // D_STR_IFEEL +#ifndef D_STR_HUMID +#define D_STR_HUMID "Humid" +#endif // D_STR_HUMID +#ifndef D_STR_SAVE +#define D_STR_SAVE "Save" +#endif // D_STR_SAVE +#ifndef D_STR_EYE +#define D_STR_EYE "Eye" +#endif // D_STR_EYE +#ifndef D_STR_FOLLOW +#define D_STR_FOLLOW "Follow" +#endif // D_STR_FOLLOW +#ifndef D_STR_ION +#define D_STR_ION "Ion" +#endif // D_STR_ION +#ifndef D_STR_FRESH +#define D_STR_FRESH "Fresh" +#endif // D_STR_FRESH +#ifndef D_STR_HOLD +#define D_STR_HOLD "Hold" +#endif // D_STR_HOLD +#ifndef D_STR_8C_HEAT +#define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first! +#endif // D_STR_8C_HEAT +#ifndef D_STR_BUTTON +#define D_STR_BUTTON "Button" +#endif // D_STR_BUTTON +#ifndef D_STR_NIGHT +#define D_STR_NIGHT "Night" +#endif // D_STR_NIGHT +#ifndef D_STR_SILENT +#define D_STR_SILENT "Silent" +#endif // D_STR_SILENT +#ifndef D_STR_FILTER +#define D_STR_FILTER "Filter" +#endif // D_STR_FILTER +#ifndef D_STR_3D +#define D_STR_3D "3D" +#endif // D_STR_3D +#ifndef D_STR_CELSIUS +#define D_STR_CELSIUS "Celsius" +#endif // D_STR_CELSIUS +#ifndef D_STR_UP +#define D_STR_UP "Up" +#endif // D_STR_UP +#ifndef D_STR_TEMPUP +#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first! +#endif // D_STR_TEMPUP +#ifndef D_STR_DOWN +#define D_STR_DOWN "Down" +#endif // D_STR_DOWN +#ifndef D_STR_TEMPDOWN +#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first! +#endif // D_STR_TEMPDOWN +#ifndef D_STR_CHANGE +#define D_STR_CHANGE "Change" +#endif // D_STR_CHANGE +#ifndef D_STR_START +#define D_STR_START "Start" +#endif // D_STR_START +#ifndef D_STR_STOP +#define D_STR_STOP "Stop" +#endif // D_STR_STOP +#ifndef D_STR_MOVE +#define D_STR_MOVE "Move" +#endif // D_STR_MOVE +#ifndef D_STR_SET +#define D_STR_SET "Set" +#endif // D_STR_SET +#ifndef D_STR_CANCEL +#define D_STR_CANCEL "Cancel" +#endif // D_STR_CANCEL +#ifndef D_STR_COMFORT +#define D_STR_COMFORT "Comfort" +#endif // D_STR_COMFORT +#ifndef D_STR_SENSOR +#define D_STR_SENSOR "Sensor" +#endif // D_STR_SENSOR +#ifndef D_STR_WEEKLY +#define D_STR_WEEKLY "Weekly" +#endif // D_STR_WEEKLY +#ifndef D_STR_WEEKLYTIMER +#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`! +#endif // D_STR_WEEKLYTIMER +#ifndef D_STR_WIFI +#define D_STR_WIFI "WiFi" +#endif // D_STR_WIFI +#ifndef D_STR_LAST +#define D_STR_LAST "Last" +#endif // D_STR_LAST +#ifndef D_STR_FAST +#define D_STR_FAST "Fast" +#endif // D_STR_FAST +#ifndef D_STR_SLOW +#define D_STR_SLOW "Slow" +#endif // D_STR_SLOW +#ifndef D_STR_AIRFLOW +#define D_STR_AIRFLOW "Air Flow" +#endif // D_STR_AIRFLOW +#ifndef D_STR_STEP +#define D_STR_STEP "Step" +#endif // D_STR_STEP +#ifndef D_STR_NA +#define D_STR_NA "N/A" +#endif // D_STR_NA +#ifndef D_STR_OUTSIDE +#define D_STR_OUTSIDE "Outside" +#endif // D_STR_OUTSIDE +#ifndef D_STR_LOUD +#define D_STR_LOUD "Loud" +#endif // D_STR_LOUD +#ifndef D_STR_UPPER +#define D_STR_UPPER "Upper" +#endif // D_STR_UPPER +#ifndef D_STR_LOWER +#define D_STR_LOWER "Lower" +#endif // D_STR_LOWER +#ifndef D_STR_BREEZE +#define D_STR_BREEZE "Breeze" +#endif // D_STR_BREEZE +#ifndef D_STR_CIRCULATE +#define D_STR_CIRCULATE "Circulate" +#endif // D_STR_CIRCULATE +#ifndef D_STR_CEILING +#define D_STR_CEILING "Ceiling" +#endif // D_STR_CEILING +#ifndef D_STR_WALL +#define D_STR_WALL "Wall" +#endif // D_STR_WALL +#ifndef D_STR_ROOM +#define D_STR_ROOM "Room" +#endif // D_STR_ROOM +#ifndef D_STR_6THSENSE +#define D_STR_6THSENSE "6th Sense" +#endif // D_STR_6THSENSE +#ifndef D_STR_ZONEFOLLOW +#define D_STR_ZONEFOLLOW "Zone Follow" +#endif // D_STR_ZONEFOLLOW +#ifndef D_STR_FIXED +#define D_STR_FIXED "Fixed" +#endif // D_STR_FIXED + +#ifndef D_STR_AUTO +#define D_STR_AUTO "Auto" +#endif // D_STR_AUTO +#ifndef D_STR_AUTOMATIC +#define D_STR_AUTOMATIC "Automatic" +#endif // D_STR_AUTOMATIC +#ifndef D_STR_MANUAL +#define D_STR_MANUAL "Manual" +#endif // D_STR_MANUAL +#ifndef D_STR_COOL +#define D_STR_COOL "Cool" +#endif // D_STR_COOL +#ifndef D_STR_HEAT +#define D_STR_HEAT "Heat" +#endif // D_STR_HEAT +#ifndef D_STR_FAN +#define D_STR_FAN "Fan" +#endif // D_STR_FAN +#ifndef D_STR_FANONLY +#define D_STR_FANONLY "fan_only" +#endif // D_STR_FANONLY +#ifndef D_STR_DRY +#define D_STR_DRY "Dry" +#endif // D_STR_DRY + +#ifndef D_STR_MAX +#define D_STR_MAX "Max" +#endif // D_STR_MAX +#ifndef D_STR_MAXIMUM +#define D_STR_MAXIMUM "Maximum" +#endif // D_STR_MAXIMUM +#ifndef D_STR_MIN +#define D_STR_MIN "Min" +#endif // D_STR_MIN +#ifndef D_STR_MINIMUM +#define D_STR_MINIMUM "Minimum" +#endif // D_STR_MINIMUM +#ifndef D_STR_MED +#define D_STR_MED "Med" +#endif // D_STR_MED +#ifndef D_STR_MEDIUM +#define D_STR_MEDIUM "Medium" +#endif // D_STR_MEDIUM + +#ifndef D_STR_HIGHEST +#define D_STR_HIGHEST "Highest" +#endif // D_STR_HIGHEST +#ifndef D_STR_HIGH +#define D_STR_HIGH "High" +#endif // D_STR_HIGH +#ifndef D_STR_HI +#define D_STR_HI "Hi" +#endif // D_STR_HI +#ifndef D_STR_MID +#define D_STR_MID "Mid" +#endif // D_STR_MID +#ifndef D_STR_MIDDLE +#define D_STR_MIDDLE "Middle" +#endif // D_STR_MIDDLE +#ifndef D_STR_LOW +#define D_STR_LOW "Low" +#endif // D_STR_LOW +#ifndef D_STR_LO +#define D_STR_LO "Lo" +#endif // D_STR_LO +#ifndef D_STR_LOWEST +#define D_STR_LOWEST "Lowest" +#endif // D_STR_LOWEST +#ifndef D_STR_RIGHT +#define D_STR_RIGHT "Right" +#endif // D_STR_RIGHT +#ifndef D_STR_MAXRIGHT +#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first! +#endif // D_STR_MAXRIGHT +#ifndef D_STR_RIGHTMAX_NOSPACE +#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first! +#endif // D_STR_RIGHTMAX_NOSPACE +#ifndef D_STR_LEFT +#define D_STR_LEFT "Left" +#endif // D_STR_LEFT +#ifndef D_STR_MAXLEFT +#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first! +#endif // D_STR_MAXLEFT +#ifndef D_STR_LEFTMAX_NOSPACE +#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first! +#endif // D_STR_LEFTMAX_NOSPACE +#ifndef D_STR_WIDE +#define D_STR_WIDE "Wide" +#endif // D_STR_WIDE +#ifndef D_STR_CENTRE +#define D_STR_CENTRE "Centre" +#endif // D_STR_CENTRE +#ifndef D_STR_TOP +#define D_STR_TOP "Top" +#endif // D_STR_TOP +#ifndef D_STR_BOTTOM +#define D_STR_BOTTOM "Bottom" +#endif // D_STR_BOTTOM + +// Compound words/phrases/descriptions from pre-defined words. +// Note: Obviously these need to be defined *after* their component words. +#ifndef D_STR_EYEAUTO +#define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO +#endif // D_STR_EYEAUTO +#ifndef D_STR_LIGHTTOGGLE +#define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE +#endif // D_STR_LIGHTTOGGLE +#ifndef D_STR_OUTSIDEQUIET +#define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET +#endif // D_STR_OUTSIDEQUIET +#ifndef D_STR_POWERTOGGLE +#define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE +#endif // D_STR_POWERTOGGLE +#ifndef D_STR_PREVIOUSPOWER +#define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER +#endif // D_STR_PREVIOUSPOWER +#ifndef D_STR_SENSORTEMP +#define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP +#endif // D_STR_SENSORTEMP +#ifndef D_STR_SLEEP_TIMER +#define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER +#endif // D_STR_SLEEP_TIMER +#ifndef D_STR_SWINGVMODE +#define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE +#endif // D_STR_SWINGVMODE +#ifndef D_STR_SWINGVTOGGLE +#define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE +#endif // D_STR_SWINGVTOGGLE + +// Separators +#ifndef D_CHR_TIME_SEP +#define D_CHR_TIME_SEP ':' +#endif // D_CHR_TIME_SEP +#ifndef D_STR_SPACELBRACE +#define D_STR_SPACELBRACE " (" +#endif // D_STR_SPACELBRACE +#ifndef D_STR_COMMASPACE +#define D_STR_COMMASPACE ", " +#endif // D_STR_COMMASPACE +#ifndef D_STR_COLONSPACE +#define D_STR_COLONSPACE ": " +#endif // D_STR_COLONSPACE + +#ifndef D_STR_DAY +#define D_STR_DAY "Day" +#endif // D_STR_DAY +#ifndef D_STR_DAYS +#define D_STR_DAYS D_STR_DAY "s" +#endif // D_STR_DAYS +#ifndef D_STR_HOUR +#define D_STR_HOUR "Hour" +#endif // D_STR_HOUR +#ifndef D_STR_HOURS +#define D_STR_HOURS D_STR_HOUR "s" +#endif // D_STR_HOURS +#ifndef D_STR_MINUTE +#define D_STR_MINUTE "Minute" +#endif // D_STR_MINUTE +#ifndef D_STR_MINUTES +#define D_STR_MINUTES D_STR_MINUTE "s" +#endif // D_STR_MINUTES +#ifndef D_STR_SECOND +#define D_STR_SECOND "Second" +#endif // D_STR_SECOND +#ifndef D_STR_SECONDS +#define D_STR_SECONDS D_STR_SECOND "s" +#endif // D_STR_SECONDS +#ifndef D_STR_NOW +#define D_STR_NOW "Now" +#endif // D_STR_NOW +#ifndef D_STR_THREELETTERDAYS +#define D_STR_THREELETTERDAYS "SunMonTueWedThuFriSat" +#endif // D_STR_THREELETTERDAYS + +#ifndef D_STR_YES +#define D_STR_YES "Yes" +#endif // D_STR_YES +#ifndef D_STR_NO +#define D_STR_NO "No" +#endif // D_STR_NO +#ifndef D_STR_TRUE +#define D_STR_TRUE "True" +#endif // D_STR_TRUE +#ifndef D_STR_FALSE +#define D_STR_FALSE "False" +#endif // D_STR_FALSE + +#ifndef D_STR_REPEAT +#define D_STR_REPEAT "Repeat" +#endif // D_STR_REPEAT +#ifndef D_STR_CODE +#define D_STR_CODE "Code" +#endif // D_STR_CODE +#ifndef D_STR_BITS +#define D_STR_BITS "Bits" +#endif // D_STR_BITS + +// Protocols Names +#ifndef D_STR_AIRWELL +#define D_STR_AIRWELL "AIRWELL" +#endif // D_STR_AIRWELL +#ifndef D_STR_AIWA_RC_T501 +#define D_STR_AIWA_RC_T501 "AIWA_RC_T501" +#endif // D_STR_AIWA_RC_T501 +#ifndef D_STR_AMCOR +#define D_STR_AMCOR "AMCOR" +#endif // D_STR_AMCOR +#ifndef D_STR_ARGO +#define D_STR_ARGO "ARGO" +#endif // D_STR_ARGO +#ifndef D_STR_CARRIER_AC +#define D_STR_CARRIER_AC "CARRIER_AC" +#endif // D_STR_CARRIER_AC +#ifndef D_STR_COOLIX +#define D_STR_COOLIX "COOLIX" +#endif // D_STR_COOLIX +#ifndef D_STR_DAIKIN +#define D_STR_DAIKIN "DAIKIN" +#endif // D_STR_DAIKIN +#ifndef D_STR_DAIKIN128 +#define D_STR_DAIKIN128 "DAIKIN128" +#endif // D_STR_DAIKIN128 +#ifndef D_STR_DAIKIN152 +#define D_STR_DAIKIN152 "DAIKIN152" +#endif // D_STR_DAIKIN152 +#ifndef D_STR_DAIKIN160 +#define D_STR_DAIKIN160 "DAIKIN160" +#endif // D_STR_DAIKIN160 +#ifndef D_STR_DAIKIN176 +#define D_STR_DAIKIN176 "DAIKIN176" +#endif // D_STR_DAIKIN176 +#ifndef D_STR_DAIKIN2 +#define D_STR_DAIKIN2 "DAIKIN2" +#endif // D_STR_DAIKIN2 +#ifndef D_STR_DAIKIN216 +#define D_STR_DAIKIN216 "DAIKIN216" +#endif // D_STR_DAIKIN216 +#ifndef D_STR_DAIKIN64 +#define D_STR_DAIKIN64 "DAIKIN64" +#endif // D_STR_DAIKIN64 +#ifndef D_STR_DENON +#define D_STR_DENON "DENON" +#endif // D_STR_DENON +#ifndef D_STR_DISH +#define D_STR_DISH "DISH" +#endif // D_STR_DISH +#ifndef D_STR_ELECTRA_AC +#define D_STR_ELECTRA_AC "ELECTRA_AC" +#endif // D_STR_ELECTRA_AC +#ifndef D_STR_EPSON +#define D_STR_EPSON "EPSON" +#endif // D_STR_EPSON +#ifndef D_STR_FUJITSU_AC +#define D_STR_FUJITSU_AC "FUJITSU_AC" +#endif // D_STR_FUJITSU_AC +#ifndef D_STR_GICABLE +#define D_STR_GICABLE "GICABLE" +#endif // D_STR_GICABLE +#ifndef D_STR_GLOBALCACHE +#define D_STR_GLOBALCACHE "GLOBALCACHE" +#endif // D_STR_GLOBALCACHE +#ifndef D_STR_GOODWEATHER +#define D_STR_GOODWEATHER "GOODWEATHER" +#endif // D_STR_GOODWEATHER +#ifndef D_STR_GREE +#define D_STR_GREE "GREE" +#endif // D_STR_GREE +#ifndef D_STR_HAIER_AC +#define D_STR_HAIER_AC "HAIER_AC" +#endif // D_STR_HAIER_AC +#ifndef D_STR_HAIER_AC_YRW02 +#define D_STR_HAIER_AC_YRW02 "HAIER_AC_YRW02" +#endif // D_STR_HAIER_AC_YRW02 +#ifndef D_STR_HITACHI_AC +#define D_STR_HITACHI_AC "HITACHI_AC" +#endif // D_STR_HITACHI_AC +#ifndef D_STR_HITACHI_AC1 +#define D_STR_HITACHI_AC1 "HITACHI_AC1" +#endif // D_STR_HITACHI_AC1 +#ifndef D_STR_HITACHI_AC2 +#define D_STR_HITACHI_AC2 "HITACHI_AC2" +#endif // D_STR_HITACHI_AC2 +#ifndef D_STR_HITACHI_AC3 +#define D_STR_HITACHI_AC3 "HITACHI_AC3" +#endif // D_STR_HITACHI_AC3 +#ifndef D_STR_HITACHI_AC424 +#define D_STR_HITACHI_AC424 "HITACHI_AC424" +#endif // D_STR_HITACHI_AC424 +#ifndef D_STR_INAX +#define D_STR_INAX "INAX" +#endif // D_STR_INAX +#ifndef D_STR_JVC +#define D_STR_JVC "JVC" +#endif // D_STR_JVC +#ifndef D_STR_KELVINATOR +#define D_STR_KELVINATOR "KELVINATOR" +#endif // D_STR_KELVINATOR +#ifndef D_STR_LASERTAG +#define D_STR_LASERTAG "LASERTAG" +#endif // D_STR_LASERTAG +#ifndef D_STR_LEGOPF +#define D_STR_LEGOPF "LEGOPF" +#endif // D_STR_LEGOPF +#ifndef D_STR_LG +#define D_STR_LG "LG" +#endif // D_STR_LG +#ifndef D_STR_LG2 +#define D_STR_LG2 "LG2" +#endif // D_STR_LG2 +#ifndef D_STR_LUTRON +#define D_STR_LUTRON "LUTRON" +#endif // D_STR_LUTRON +#ifndef D_STR_MAGIQUEST +#define D_STR_MAGIQUEST "MAGIQUEST" +#endif // D_STR_MAGIQUEST +#ifndef D_STR_MIDEA +#define D_STR_MIDEA "MIDEA" +#endif // D_STR_MIDEA +#ifndef D_STR_MITSUBISHI +#define D_STR_MITSUBISHI "MITSUBISHI" +#endif // D_STR_MITSUBISHI +#ifndef D_STR_MITSUBISHI112 +#define D_STR_MITSUBISHI112 "MITSUBISHI112" +#endif // D_STR_MITSUBISHI112 +#ifndef D_STR_MITSUBISHI136 +#define D_STR_MITSUBISHI136 "MITSUBISHI136" +#endif // D_STR_MITSUBISHI136 +#ifndef D_STR_MITSUBISHI2 +#define D_STR_MITSUBISHI2 "MITSUBISHI2" +#endif // D_STR_MITSUBISHI2 +#ifndef D_STR_MITSUBISHI_AC +#define D_STR_MITSUBISHI_AC "MITSUBISHI_AC" +#endif // D_STR_MITSUBISHI_AC +#ifndef D_STR_MITSUBISHI_HEAVY_152 +#define D_STR_MITSUBISHI_HEAVY_152 "MITSUBISHI_HEAVY_152" +#endif // D_STR_MITSUBISHI_HEAVY_152 +#ifndef D_STR_MITSUBISHI_HEAVY_88 +#define D_STR_MITSUBISHI_HEAVY_88 "MITSUBISHI_HEAVY_88" +#endif // D_STR_MITSUBISHI_HEAVY_88 +#ifndef D_STR_MWM +#define D_STR_MWM "MWM" +#endif // D_STR_MWM +#ifndef D_STR_NEC +#define D_STR_NEC "NEC" +#endif // D_STR_NEC +#ifndef D_STR_NEC_LIKE +#define D_STR_NEC_LIKE D_STR_NEC "_LIKE" +#endif // D_STR_NEC_LIKE +#ifndef D_STR_NEC_NON_STRICT +#define D_STR_NEC_NON_STRICT D_STR_NEC " (NON-STRICT)" +#endif // D_STR_NEC_NON_STRICT +#ifndef D_STR_NEOCLIMA +#define D_STR_NEOCLIMA "NEOCLIMA" +#endif // D_STR_NEOCLIMA +#ifndef D_STR_NIKAI +#define D_STR_NIKAI "NIKAI" +#endif // D_STR_NIKAI +#ifndef D_STR_PANASONIC +#define D_STR_PANASONIC "PANASONIC" +#endif // D_STR_PANASONIC +#ifndef D_STR_PANASONIC_AC +#define D_STR_PANASONIC_AC "PANASONIC_AC" +#endif // D_STR_PANASONIC_AC +#ifndef D_STR_PIONEER +#define D_STR_PIONEER "PIONEER" +#endif // D_STR_PIONEER +#ifndef D_STR_PRONTO +#define D_STR_PRONTO "PRONTO" +#endif // D_STR_PRONTO +#ifndef D_STR_RAW +#define D_STR_RAW "RAW" +#endif // D_STR_RAW +#ifndef D_STR_RC5 +#define D_STR_RC5 "RC5" +#endif // D_STR_RC5 +#ifndef D_STR_RC5X +#define D_STR_RC5X "RC5X" +#endif // D_STR_RC5X +#ifndef D_STR_RC6 +#define D_STR_RC6 "RC6" +#endif // D_STR_RC6 +#ifndef D_STR_RCMM +#define D_STR_RCMM "RCMM" +#endif // D_STR_RCMM +#ifndef D_STR_SAMSUNG +#define D_STR_SAMSUNG "SAMSUNG" +#endif // D_STR_SAMSUNG +#ifndef D_STR_SAMSUNG36 +#define D_STR_SAMSUNG36 "SAMSUNG36" +#endif // D_STR_SAMSUNG36 +#ifndef D_STR_SAMSUNG_AC +#define D_STR_SAMSUNG_AC "SAMSUNG_AC" +#endif // D_STR_SAMSUNG_AC +#ifndef D_STR_SANYO +#define D_STR_SANYO "SANYO" +#endif // D_STR_SANYO +#ifndef D_STR_SANYO_LC7461 +#define D_STR_SANYO_LC7461 "SANYO_LC7461" +#endif // D_STR_SANYO_LC7461 +#ifndef D_STR_SHARP +#define D_STR_SHARP "SHARP" +#endif // D_STR_SHARP +#ifndef D_STR_SHARP_AC +#define D_STR_SHARP_AC "SHARP_AC" +#endif // D_STR_SHARP_AC +#ifndef D_STR_SHERWOOD +#define D_STR_SHERWOOD "SHERWOOD" +#endif // D_STR_SHERWOOD +#ifndef D_STR_SONY +#define D_STR_SONY "SONY" +#endif // D_STR_SONY +#ifndef D_STR_SONY_38K +#define D_STR_SONY_38K "SONY_38K" +#endif // D_STR_SONY_38K +#ifndef D_STR_SYMPHONY +#define D_STR_SYMPHONY "SYMPHONY" +#endif // D_STR_SYMPHONY +#ifndef D_STR_TCL112AC +#define D_STR_TCL112AC "TCL112AC" +#endif // D_STR_TCL112AC +#ifndef D_STR_TECO +#define D_STR_TECO "TECO" +#endif // D_STR_TECO +#ifndef D_STR_TOSHIBA_AC +#define D_STR_TOSHIBA_AC "TOSHIBA_AC" +#endif // D_STR_TOSHIBA_AC +#ifndef D_STR_TROTEC +#define D_STR_TROTEC "TROTEC" +#endif // D_STR_TROTEC +#ifndef D_STR_UNUSED +#define D_STR_UNUSED "UNUSED" +#endif // D_STR_UNUSED +#ifndef D_STR_VESTEL_AC +#define D_STR_VESTEL_AC "VESTEL_AC" +#endif // D_STR_VESTEL_AC +#ifndef D_STR_WHIRLPOOL_AC +#define D_STR_WHIRLPOOL_AC "WHIRLPOOL_AC" +#endif // D_STR_WHIRLPOOL_AC +#ifndef D_STR_WHYNTER +#define D_STR_WHYNTER "WHYNTER" +#endif // D_STR_WHYNTER + +// IRrecvDumpV2 +#ifndef D_STR_TIMESTAMP +#define D_STR_TIMESTAMP "Timestamp" +#endif // D_STR_TIMESTAMP +#ifndef D_STR_LIBRARY +#define D_STR_LIBRARY "Library" +#endif // D_STR_LIBRARY +#ifndef D_STR_MESGDESC +#define D_STR_MESGDESC "Mesg Desc." +#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" +#endif // D_STR_IRRECVDUMP_STARTUP +#ifndef D_WARN_BUFFERFULL +#define D_WARN_BUFFERFULL \ + "WARNING: IR code is too big for buffer (>= %d). " \ + "This result shouldn't be trusted until this is resolved. " \ + "Edit & increase `kCaptureBufferSize`." +#endif // D_WARN_BUFFERFULL + +#endif // LOCALE_DEFAULTS_H_ diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/en-AU.h b/lib/IRremoteESP8266-2.7.6/src/locale/en-AU.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/en-AU.h rename to lib/IRremoteESP8266-2.7.6/src/locale/en-AU.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/en-IE.h b/lib/IRremoteESP8266-2.7.6/src/locale/en-IE.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/en-IE.h rename to lib/IRremoteESP8266-2.7.6/src/locale/en-IE.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/en-UK.h b/lib/IRremoteESP8266-2.7.6/src/locale/en-UK.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/en-UK.h rename to lib/IRremoteESP8266-2.7.6/src/locale/en-UK.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/en-US.h b/lib/IRremoteESP8266-2.7.6/src/locale/en-US.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/en-US.h rename to lib/IRremoteESP8266-2.7.6/src/locale/en-US.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/es-ES.h b/lib/IRremoteESP8266-2.7.6/src/locale/es-ES.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/es-ES.h rename to lib/IRremoteESP8266-2.7.6/src/locale/es-ES.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/fr-FR.h b/lib/IRremoteESP8266-2.7.6/src/locale/fr-FR.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/fr-FR.h rename to lib/IRremoteESP8266-2.7.6/src/locale/fr-FR.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/it-IT.h b/lib/IRremoteESP8266-2.7.6/src/locale/it-IT.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/src/locale/it-IT.h rename to lib/IRremoteESP8266-2.7.6/src/locale/it-IT.h diff --git a/lib/IRremoteESP8266-2.7.5/src/locale/defaults.h b/lib/IRremoteESP8266-2.7.6/src/locale/zh-CN.h similarity index 67% rename from lib/IRremoteESP8266-2.7.5/src/locale/defaults.h rename to lib/IRremoteESP8266-2.7.6/src/locale/zh-CN.h index 509e35cfe..bcb30392c 100644 --- a/lib/IRremoteESP8266-2.7.5/src/locale/defaults.h +++ b/lib/IRremoteESP8266-2.7.6/src/locale/zh-CN.h @@ -1,67 +1,56 @@ -// Copyright 2019 - David Conran (@crankyoldgit) -// The default text to use throughout the library. -// The library will use this text if no locale (_IR_LOCALE_) is set or if -// the locale doesn't define particular values. -// If they are defined, this file should NOT override them. -// -// This file should contain a #define for every translateable/locale dependant -// string used by the library. Language specific files don't have to include -// everything. -// -// NOTE: ASCII/UTF-8 characters only. Unicode is NOT supported. -// -// The defaults are English (AU) / en-AU. Australia (AU) is pretty much the same -// as English (UK) for this libraries use case. -#ifndef LOCALE_DEFAULTS_H_ -#define LOCALE_DEFAULTS_H_ +// Copyright 2020 - MiaoYi (@Caffreyfans) +// Locale/language file for China / Simplified. +// This file will override the default values located in `defaults.h`. +#ifndef LOCALE_ZH_CN_H_ +#define LOCALE_ZH_CN_H_ #ifndef D_STR_UNKNOWN -#define D_STR_UNKNOWN "UNKNOWN" +#define D_STR_UNKNOWN "未知" #endif // D_STR_UNKNOWN #ifndef D_STR_PROTOCOL -#define D_STR_PROTOCOL "Protocol" +#define D_STR_PROTOCOL "协议" #endif // D_STR_PROTOCOL #ifndef D_STR_POWER -#define D_STR_POWER "Power" +#define D_STR_POWER "电源" #endif // D_STR_POWER #ifndef D_STR_PREVIOUS -#define D_STR_PREVIOUS "Previous" +#define D_STR_PREVIOUS "以前" #endif // D_STR_PREVIOUS #ifndef D_STR_ON -#define D_STR_ON "On" +#define D_STR_ON "开" #endif // D_STR_ON #ifndef D_STR_OFF -#define D_STR_OFF "Off" +#define D_STR_OFF "关" #endif // D_STR_OFF #ifndef D_STR_MODE -#define D_STR_MODE "Mode" +#define D_STR_MODE "模式" #endif // D_STR_MODE #ifndef D_STR_TOGGLE -#define D_STR_TOGGLE "Toggle" +#define D_STR_TOGGLE "切换" #endif // D_STR_TOGGLE #ifndef D_STR_TURBO -#define D_STR_TURBO "Turbo" +#define D_STR_TURBO "强力" #endif // D_STR_TURBO #ifndef D_STR_SUPER -#define D_STR_SUPER "Super" +#define D_STR_SUPER "超级" #endif // D_STR_SUPER #ifndef D_STR_SLEEP -#define D_STR_SLEEP "Sleep" +#define D_STR_SLEEP "睡眠" #endif // D_STR_SLEEP #ifndef D_STR_LIGHT -#define D_STR_LIGHT "Light" +#define D_STR_LIGHT "灯光" #endif // D_STR_LIGHT #ifndef D_STR_POWERFUL -#define D_STR_POWERFUL "Powerful" +#define D_STR_POWERFUL "强劲模式" #endif // D_STR_POWERFUL #ifndef D_STR_QUIET -#define D_STR_QUIET "Quiet" +#define D_STR_QUIET "安静" #endif // D_STR_QUIET #ifndef D_STR_ECONO -#define D_STR_ECONO "Econo" +#define D_STR_ECONO "经济" #endif // D_STR_ECONO #ifndef D_STR_SWING -#define D_STR_SWING "Swing" +#define D_STR_SWING "扫风" #endif // D_STR_SWING #ifndef D_STR_SWINGH #define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first! @@ -70,19 +59,19 @@ #define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first! #endif // D_STR_SWINGV #ifndef D_STR_BEEP -#define D_STR_BEEP "Beep" +#define D_STR_BEEP "蜂鸣" #endif // D_STR_BEEP #ifndef D_STR_MOULD -#define D_STR_MOULD "Mould" +#define D_STR_MOULD "模子" #endif // D_STR_MOULD #ifndef D_STR_CLEAN -#define D_STR_CLEAN "Clean" +#define D_STR_CLEAN "清洁" #endif // D_STR_CLEAN #ifndef D_STR_PURIFY -#define D_STR_PURIFY "Purify" +#define D_STR_PURIFY "净化" #endif // D_STR_PURIFY #ifndef D_STR_TIMER -#define D_STR_TIMER "Timer" +#define D_STR_TIMER "计时器" #endif // D_STR_TIMER #ifndef D_STR_ONTIMER #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first! @@ -91,106 +80,106 @@ #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first! #endif // D_STR_OFFTIMER #ifndef D_STR_CLOCK -#define D_STR_CLOCK "Clock" +#define D_STR_CLOCK "时钟" #endif // D_STR_CLOCK #ifndef D_STR_COMMAND -#define D_STR_COMMAND "Command" +#define D_STR_COMMAND "命令" #endif // D_STR_COMMAND #ifndef D_STR_XFAN #define D_STR_XFAN "XFan" #endif // D_STR_XFAN #ifndef D_STR_HEALTH -#define D_STR_HEALTH "Health" +#define D_STR_HEALTH "健康" #endif // D_STR_HEALTH #ifndef D_STR_MODEL -#define D_STR_MODEL "Model" +#define D_STR_MODEL "模式" #endif // D_STR_MODEL #ifndef D_STR_TEMP -#define D_STR_TEMP "Temp" +#define D_STR_TEMP "温度" #endif // D_STR_TEMP #ifndef D_STR_IFEEL #define D_STR_IFEEL "IFeel" #endif // D_STR_IFEEL #ifndef D_STR_HUMID -#define D_STR_HUMID "Humid" +#define D_STR_HUMID "湿度" #endif // D_STR_HUMID #ifndef D_STR_SAVE -#define D_STR_SAVE "Save" +#define D_STR_SAVE "保存" #endif // D_STR_SAVE #ifndef D_STR_EYE -#define D_STR_EYE "Eye" +#define D_STR_EYE "眼" #endif // D_STR_EYE #ifndef D_STR_FOLLOW -#define D_STR_FOLLOW "Follow" +#define D_STR_FOLLOW "跟随" #endif // D_STR_FOLLOW #ifndef D_STR_ION #define D_STR_ION "Ion" #endif // D_STR_ION #ifndef D_STR_FRESH -#define D_STR_FRESH "Fresh" +#define D_STR_FRESH "刷新" #endif // D_STR_FRESH #ifndef D_STR_HOLD -#define D_STR_HOLD "Hold" +#define D_STR_HOLD "保持" #endif // D_STR_HOLD #ifndef D_STR_8C_HEAT #define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first! #endif // D_STR_8C_HEAT #ifndef D_STR_BUTTON -#define D_STR_BUTTON "Button" +#define D_STR_BUTTON "按钮" #endif // D_STR_BUTTON #ifndef D_STR_NIGHT -#define D_STR_NIGHT "Night" +#define D_STR_NIGHT "夜间" #endif // D_STR_NIGHT #ifndef D_STR_SILENT -#define D_STR_SILENT "Silent" +#define D_STR_SILENT "安静" #endif // D_STR_SILENT #ifndef D_STR_FILTER -#define D_STR_FILTER "Filter" +#define D_STR_FILTER "过滤" #endif // D_STR_FILTER #ifndef D_STR_3D #define D_STR_3D "3D" #endif // D_STR_3D #ifndef D_STR_CELSIUS -#define D_STR_CELSIUS "Celsius" +#define D_STR_CELSIUS "摄氏度" #endif // D_STR_CELSIUS #ifndef D_STR_UP -#define D_STR_UP "Up" +#define D_STR_UP "上" #endif // D_STR_UP #ifndef D_STR_TEMPUP #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first! #endif // D_STR_TEMPUP #ifndef D_STR_DOWN -#define D_STR_DOWN "Down" +#define D_STR_DOWN "下" #endif // D_STR_DOWN #ifndef D_STR_TEMPDOWN #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first! #endif // D_STR_TEMPDOWN #ifndef D_STR_CHANGE -#define D_STR_CHANGE "Change" +#define D_STR_CHANGE "改变" #endif // D_STR_CHANGE #ifndef D_STR_START -#define D_STR_START "Start" +#define D_STR_START "开始" #endif // D_STR_START #ifndef D_STR_STOP -#define D_STR_STOP "Stop" +#define D_STR_STOP "结束" #endif // D_STR_STOP #ifndef D_STR_MOVE -#define D_STR_MOVE "Move" +#define D_STR_MOVE "移动" #endif // D_STR_MOVE #ifndef D_STR_SET -#define D_STR_SET "Set" +#define D_STR_SET "设置" #endif // D_STR_SET #ifndef D_STR_CANCEL -#define D_STR_CANCEL "Cancel" +#define D_STR_CANCEL "取消" #endif // D_STR_CANCEL #ifndef D_STR_COMFORT -#define D_STR_COMFORT "Comfort" +#define D_STR_COMFORT "舒适" #endif // D_STR_COMFORT #ifndef D_STR_SENSOR -#define D_STR_SENSOR "Sensor" +#define D_STR_SENSOR "传感器" #endif // D_STR_SENSOR #ifndef D_STR_WEEKLY -#define D_STR_WEEKLY "Weekly" +#define D_STR_WEEKLY "每周" #endif // D_STR_WEEKLY #ifndef D_STR_WEEKLYTIMER #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`! @@ -199,130 +188,130 @@ #define D_STR_WIFI "WiFi" #endif // D_STR_WIFI #ifndef D_STR_LAST -#define D_STR_LAST "Last" +#define D_STR_LAST "最近" #endif // D_STR_LAST #ifndef D_STR_FAST -#define D_STR_FAST "Fast" +#define D_STR_FAST "快" #endif // D_STR_FAST #ifndef D_STR_SLOW -#define D_STR_SLOW "Slow" +#define D_STR_SLOW "慢" #endif // D_STR_SLOW #ifndef D_STR_AIRFLOW -#define D_STR_AIRFLOW "Air Flow" +#define D_STR_AIRFLOW "空气流动" #endif // D_STR_AIRFLOW #ifndef D_STR_STEP -#define D_STR_STEP "Step" +#define D_STR_STEP "步" #endif // D_STR_STEP #ifndef D_STR_NA -#define D_STR_NA "N/A" +#define D_STR_NA "不适用" #endif // D_STR_NA #ifndef D_STR_OUTSIDE -#define D_STR_OUTSIDE "Outside" +#define D_STR_OUTSIDE "室外" #endif // D_STR_OUTSIDE #ifndef D_STR_LOUD -#define D_STR_LOUD "Loud" +#define D_STR_LOUD "大声" #endif // D_STR_LOUD #ifndef D_STR_UPPER -#define D_STR_UPPER "Upper" +#define D_STR_UPPER "更高" #endif // D_STR_UPPER #ifndef D_STR_LOWER -#define D_STR_LOWER "Lower" +#define D_STR_LOWER "更低" #endif // D_STR_LOWER #ifndef D_STR_BREEZE -#define D_STR_BREEZE "Breeze" +#define D_STR_BREEZE "微风" #endif // D_STR_BREEZE #ifndef D_STR_CIRCULATE -#define D_STR_CIRCULATE "Circulate" +#define D_STR_CIRCULATE "流通" #endif // D_STR_CIRCULATE #ifndef D_STR_CEILING -#define D_STR_CEILING "Ceiling" +#define D_STR_CEILING "天花板" #endif // D_STR_CEILING #ifndef D_STR_WALL -#define D_STR_WALL "Wall" +#define D_STR_WALL "墙" #endif // D_STR_WALL #ifndef D_STR_ROOM -#define D_STR_ROOM "Room" +#define D_STR_ROOM "房间" #endif // D_STR_ROOM #ifndef D_STR_6THSENSE -#define D_STR_6THSENSE "6th Sense" +#define D_STR_6THSENSE "第六感" #endif // D_STR_6THSENSE #ifndef D_STR_ZONEFOLLOW -#define D_STR_ZONEFOLLOW "Zone Follow" +#define D_STR_ZONEFOLLOW "区域跟随" #endif // D_STR_ZONEFOLLOW #ifndef D_STR_FIXED -#define D_STR_FIXED "Fixed" +#define D_STR_FIXED "固定" #endif // D_STR_FIXED #ifndef D_STR_AUTO -#define D_STR_AUTO "Auto" +#define D_STR_AUTO "自动" #endif // D_STR_AUTO #ifndef D_STR_AUTOMATIC -#define D_STR_AUTOMATIC "Automatic" +#define D_STR_AUTOMATIC "自动的" #endif // D_STR_AUTOMATIC #ifndef D_STR_MANUAL -#define D_STR_MANUAL "Manual" +#define D_STR_MANUAL "手动" #endif // D_STR_MANUAL #ifndef D_STR_COOL -#define D_STR_COOL "Cool" +#define D_STR_COOL "制冷" #endif // D_STR_COOL #ifndef D_STR_HEAT -#define D_STR_HEAT "Heat" +#define D_STR_HEAT "加热" #endif // D_STR_HEAT #ifndef D_STR_FAN -#define D_STR_FAN "Fan" +#define D_STR_FAN "风扇" #endif // D_STR_FAN #ifndef D_STR_FANONLY -#define D_STR_FANONLY "fan_only" +#define D_STR_FANONLY "仅风扇" #endif // D_STR_FANONLY #ifndef D_STR_DRY -#define D_STR_DRY "Dry" +#define D_STR_DRY "干燥" #endif // D_STR_DRY #ifndef D_STR_MAX -#define D_STR_MAX "Max" +#define D_STR_MAX "最大" #endif // D_STR_MAX #ifndef D_STR_MAXIMUM -#define D_STR_MAXIMUM "Maximum" +#define D_STR_MAXIMUM "最小" #endif // D_STR_MAXIMUM #ifndef D_STR_MIN -#define D_STR_MIN "Min" +#define D_STR_MIN "最低" #endif // D_STR_MIN #ifndef D_STR_MINIMUM -#define D_STR_MINIMUM "Minimum" +#define D_STR_MINIMUM "最低" #endif // D_STR_MINIMUM #ifndef D_STR_MED -#define D_STR_MED "Med" +#define D_STR_MED "中" #endif // D_STR_MED #ifndef D_STR_MEDIUM -#define D_STR_MEDIUM "Medium" +#define D_STR_MEDIUM "中" #endif // D_STR_MEDIUM #ifndef D_STR_HIGHEST -#define D_STR_HIGHEST "Highest" +#define D_STR_HIGHEST "最高" #endif // D_STR_HIGHEST #ifndef D_STR_HIGH -#define D_STR_HIGH "High" +#define D_STR_HIGH "高" #endif // D_STR_HIGH #ifndef D_STR_HI -#define D_STR_HI "Hi" +#define D_STR_HI "嗨" #endif // D_STR_HI #ifndef D_STR_MID -#define D_STR_MID "Mid" +#define D_STR_MID "中" #endif // D_STR_MID #ifndef D_STR_MIDDLE -#define D_STR_MIDDLE "Middle" +#define D_STR_MIDDLE "居中" #endif // D_STR_MIDDLE #ifndef D_STR_LOW -#define D_STR_LOW "Low" +#define D_STR_LOW "低" #endif // D_STR_LOW #ifndef D_STR_LO -#define D_STR_LO "Lo" +#define D_STR_LO "低" #endif // D_STR_LO #ifndef D_STR_LOWEST -#define D_STR_LOWEST "Lowest" +#define D_STR_LOWEST "最低" #endif // D_STR_LOWEST #ifndef D_STR_RIGHT -#define D_STR_RIGHT "Right" +#define D_STR_RIGHT "右" #endif // D_STR_RIGHT #ifndef D_STR_MAXRIGHT #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first! @@ -331,7 +320,7 @@ #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first! #endif // D_STR_RIGHTMAX_NOSPACE #ifndef D_STR_LEFT -#define D_STR_LEFT "Left" +#define D_STR_LEFT "左" #endif // D_STR_LEFT #ifndef D_STR_MAXLEFT #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first! @@ -340,16 +329,16 @@ #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first! #endif // D_STR_LEFTMAX_NOSPACE #ifndef D_STR_WIDE -#define D_STR_WIDE "Wide" +#define D_STR_WIDE "扫风" #endif // D_STR_WIDE #ifndef D_STR_CENTRE -#define D_STR_CENTRE "Centre" +#define D_STR_CENTRE "中间" #endif // D_STR_CENTRE #ifndef D_STR_TOP -#define D_STR_TOP "Top" +#define D_STR_TOP "上部" #endif // D_STR_TOP #ifndef D_STR_BOTTOM -#define D_STR_BOTTOM "Bottom" +#define D_STR_BOTTOM "底部" #endif // D_STR_BOTTOM // Compound words/phrases/descriptions from pre-defined words. @@ -397,78 +386,80 @@ #endif // D_STR_COLONSPACE #ifndef D_STR_DAY -#define D_STR_DAY "Day" +#define D_STR_DAY "天" #endif // D_STR_DAY #ifndef D_STR_DAYS #define D_STR_DAYS D_STR_DAY "s" #endif // D_STR_DAYS #ifndef D_STR_HOUR -#define D_STR_HOUR "Hour" +#define D_STR_HOUR "时" #endif // D_STR_HOUR #ifndef D_STR_HOURS #define D_STR_HOURS D_STR_HOUR "s" #endif // D_STR_HOURS #ifndef D_STR_MINUTE -#define D_STR_MINUTE "Minute" +#define D_STR_MINUTE "分" #endif // D_STR_MINUTE #ifndef D_STR_MINUTES #define D_STR_MINUTES D_STR_MINUTE "s" #endif // D_STR_MINUTES #ifndef D_STR_SECOND -#define D_STR_SECOND "Second" +#define D_STR_SECOND "秒" #endif // D_STR_SECOND #ifndef D_STR_SECONDS #define D_STR_SECONDS D_STR_SECOND "s" #endif // D_STR_SECONDS #ifndef D_STR_NOW -#define D_STR_NOW "Now" +#define D_STR_NOW "现在" #endif // D_STR_NOW +/* This is not three letter days. Disabled. #ifndef D_STR_THREELETTERDAYS -#define D_STR_THREELETTERDAYS "SunMonTueWedThuFriSat" +#define D_STR_THREELETTERDAYS "周一至周末" #endif // D_STR_THREELETTERDAYS +*/ #ifndef D_STR_YES -#define D_STR_YES "Yes" +#define D_STR_YES "是" #endif // D_STR_YES #ifndef D_STR_NO -#define D_STR_NO "No" +#define D_STR_NO "否" #endif // D_STR_NO #ifndef D_STR_TRUE -#define D_STR_TRUE "True" +#define D_STR_TRUE "正确" #endif // D_STR_TRUE #ifndef D_STR_FALSE -#define D_STR_FALSE "False" +#define D_STR_FALSE "错误" #endif // D_STR_FALSE #ifndef D_STR_REPEAT -#define D_STR_REPEAT "Repeat" +#define D_STR_REPEAT "重复" #endif // D_STR_REPEAT #ifndef D_STR_CODE -#define D_STR_CODE "Code" +#define D_STR_CODE "代码" #endif // D_STR_CODE #ifndef D_STR_BITS -#define D_STR_BITS "Bits" +#define D_STR_BITS "位" #endif // D_STR_BITS // IRrecvDumpV2 #ifndef D_STR_TIMESTAMP -#define D_STR_TIMESTAMP "Timestamp" +#define D_STR_TIMESTAMP "时间戳记" #endif // D_STR_TIMESTAMP #ifndef D_STR_LIBRARY -#define D_STR_LIBRARY "Library" +#define D_STR_LIBRARY "库文件" #endif // D_STR_LIBRARY #ifndef D_STR_MESGDESC -#define D_STR_MESGDESC "Mesg Desc." +#define D_STR_MESGDESC "等等信息" #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" + "IRrecvDumpV2 运行当中,等待红外信息输入位于引脚 %d" #endif // D_STR_IRRECVDUMP_STARTUP #ifndef D_WARN_BUFFERFULL #define D_WARN_BUFFERFULL \ - "WARNING: IR code is too big for buffer (>= %d). " \ - "This result shouldn't be trusted until this is resolved. " \ - "Edit & increase `kCaptureBufferSize`." + "警告: 红外编码数组过大(>= %d). " \ + "在解决此问题之前,不应信任此结果. " \ + "编辑并增加 `kCaptureBufferSize` 变量." #endif // D_WARN_BUFFERFULL -#endif // LOCALE_DEFAULTS_H_ +#endif // LOCALE_ZH_CN_H_ diff --git a/lib/IRremoteESP8266-2.7.5/test/IRac_test.cpp b/lib/IRremoteESP8266-2.7.6/test/IRac_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/IRac_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/IRac_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/IRrecv_test.cpp b/lib/IRremoteESP8266-2.7.6/test/IRrecv_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/IRrecv_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/IRrecv_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/IRrecv_test.h b/lib/IRremoteESP8266-2.7.6/test/IRrecv_test.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/IRrecv_test.h rename to lib/IRremoteESP8266-2.7.6/test/IRrecv_test.h diff --git a/lib/IRremoteESP8266-2.7.5/test/IRsend_test.cpp b/lib/IRremoteESP8266-2.7.6/test/IRsend_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/IRsend_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/IRsend_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/IRsend_test.h b/lib/IRremoteESP8266-2.7.6/test/IRsend_test.h similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/IRsend_test.h rename to lib/IRremoteESP8266-2.7.6/test/IRsend_test.h diff --git a/lib/IRremoteESP8266-2.7.5/test/IRutils_test.cpp b/lib/IRremoteESP8266-2.7.6/test/IRutils_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/IRutils_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/IRutils_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/Makefile b/lib/IRremoteESP8266-2.7.6/test/Makefile similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/Makefile rename to lib/IRremoteESP8266-2.7.6/test/Makefile diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Airwell_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Airwell_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Airwell_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Airwell_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Aiwa_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Aiwa_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Aiwa_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Aiwa_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Amcor_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Amcor_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Amcor_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Amcor_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Argo_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Argo_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Argo_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Argo_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Carrier_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Carrier_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Carrier_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Carrier_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Coolix_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Coolix_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Coolix_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Coolix_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Daikin_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Daikin_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Daikin_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Daikin_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Denon_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Denon_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Denon_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Denon_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Dish_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Dish_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Dish_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Dish_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Electra_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Electra_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Electra_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Electra_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Epson_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Epson_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Epson_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Epson_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Fujitsu_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Fujitsu_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Fujitsu_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Fujitsu_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_GICable_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_GICable_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_GICable_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_GICable_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_GlobalCache_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_GlobalCache_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_GlobalCache_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_GlobalCache_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Goodweather_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Goodweather_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Goodweather_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Goodweather_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Gree_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Gree_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Gree_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Gree_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Haier_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Haier_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Haier_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Haier_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Hitachi_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Hitachi_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Hitachi_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Hitachi_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Inax_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Inax_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Inax_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Inax_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_JVC_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_JVC_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_JVC_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_JVC_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Kelvinator_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Kelvinator_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Kelvinator_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Kelvinator_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_LG_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_LG_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_LG_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_LG_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Lasertag_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Lasertag_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Lasertag_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Lasertag_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Lego_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Lego_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Lego_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Lego_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Lutron_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Lutron_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Lutron_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Lutron_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_MWM_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_MWM_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_MWM_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_MWM_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Magiquest_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Magiquest_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Magiquest_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Magiquest_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Midea_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Midea_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Midea_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Midea_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_MitsubishiHeavy_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_MitsubishiHeavy_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_MitsubishiHeavy_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_MitsubishiHeavy_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Mitsubishi_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Mitsubishi_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Mitsubishi_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Mitsubishi_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_NEC_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_NEC_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_NEC_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_NEC_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Neoclima_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Neoclima_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Neoclima_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Neoclima_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Nikai_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Nikai_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Nikai_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Nikai_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Panasonic_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Panasonic_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Panasonic_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Panasonic_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Pioneer_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Pioneer_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Pioneer_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Pioneer_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Pronto_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Pronto_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Pronto_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Pronto_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_RC5_RC6_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_RC5_RC6_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_RC5_RC6_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_RC5_RC6_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_RCMM_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_RCMM_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_RCMM_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_RCMM_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Samsung_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Samsung_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Samsung_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Samsung_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Sanyo_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Sanyo_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Sanyo_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Sanyo_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Sharp_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Sharp_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Sharp_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Sharp_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Sherwood_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Sherwood_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Sherwood_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Sherwood_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Sony_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Sony_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Sony_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Sony_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Symphony_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Symphony_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Symphony_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Symphony_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Tcl_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Tcl_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Tcl_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Tcl_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Teco_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Teco_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Teco_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Teco_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Toshiba_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Toshiba_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Toshiba_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Toshiba_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Trotec_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Trotec_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Trotec_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Trotec_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Vestel_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Vestel_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Vestel_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Vestel_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Whirlpool_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Whirlpool_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Whirlpool_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Whirlpool_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/test/ir_Whynter_test.cpp b/lib/IRremoteESP8266-2.7.6/test/ir_Whynter_test.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/test/ir_Whynter_test.cpp rename to lib/IRremoteESP8266-2.7.6/test/ir_Whynter_test.cpp diff --git a/lib/IRremoteESP8266-2.7.5/tools/Makefile b/lib/IRremoteESP8266-2.7.6/tools/Makefile similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/Makefile rename to lib/IRremoteESP8266-2.7.6/tools/Makefile diff --git a/lib/IRremoteESP8266-2.7.5/tools/RawToGlobalCache.sh b/lib/IRremoteESP8266-2.7.6/tools/RawToGlobalCache.sh similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/RawToGlobalCache.sh rename to lib/IRremoteESP8266-2.7.6/tools/RawToGlobalCache.sh diff --git a/lib/IRremoteESP8266-2.7.5/tools/auto_analyse_raw_data.py b/lib/IRremoteESP8266-2.7.6/tools/auto_analyse_raw_data.py similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/auto_analyse_raw_data.py rename to lib/IRremoteESP8266-2.7.6/tools/auto_analyse_raw_data.py diff --git a/lib/IRremoteESP8266-2.7.5/tools/auto_analyse_raw_data_test.py b/lib/IRremoteESP8266-2.7.6/tools/auto_analyse_raw_data_test.py similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/auto_analyse_raw_data_test.py rename to lib/IRremoteESP8266-2.7.6/tools/auto_analyse_raw_data_test.py diff --git a/lib/IRremoteESP8266-2.7.5/tools/gc_decode.cpp b/lib/IRremoteESP8266-2.7.6/tools/gc_decode.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/gc_decode.cpp rename to lib/IRremoteESP8266-2.7.6/tools/gc_decode.cpp diff --git a/lib/IRremoteESP8266-2.7.5/tools/generate_irtext_h.sh b/lib/IRremoteESP8266-2.7.6/tools/generate_irtext_h.sh similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/generate_irtext_h.sh rename to lib/IRremoteESP8266-2.7.6/tools/generate_irtext_h.sh diff --git a/lib/IRremoteESP8266-2.7.5/tools/mkkeywords b/lib/IRremoteESP8266-2.7.6/tools/mkkeywords similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/mkkeywords rename to lib/IRremoteESP8266-2.7.6/tools/mkkeywords diff --git a/lib/IRremoteESP8266-2.7.5/tools/mode2_decode.cpp b/lib/IRremoteESP8266-2.7.6/tools/mode2_decode.cpp similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/mode2_decode.cpp rename to lib/IRremoteESP8266-2.7.6/tools/mode2_decode.cpp diff --git a/lib/IRremoteESP8266-2.7.5/tools/scrape_supported_devices.py b/lib/IRremoteESP8266-2.7.6/tools/scrape_supported_devices.py similarity index 100% rename from lib/IRremoteESP8266-2.7.5/tools/scrape_supported_devices.py rename to lib/IRremoteESP8266-2.7.6/tools/scrape_supported_devices.py diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index d9ac8d5df..9d6b6c8e0 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -3,6 +3,7 @@ ### 8.2.0.5 20200425 - Breaking Change Device Groups multicast address and port (#8270) +- Change IRremoteESP8266 library updated to v2.7.6 ### 8.2.0.4 20200417 From b252a0c12259107be3006317845e90eeb383a67d Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sun, 26 Apr 2020 12:01:13 +0200 Subject: [PATCH 3/4] fix scripter RulesProcessEvent --- tasmota/xdrv_10_scripter.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 276034dc8..370686848 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -4844,6 +4844,10 @@ void ScriptJsonAppend(void) { #endif //USE_SCRIPT_JSON_EXPORT +bool RulesProcessEvent(char *json_event) { + if (bitRead(Settings.rule_enabled, 0)) Run_Scripter(">E",2,json_event); +} + /*********************************************************************************************\ * Interface \*********************************************************************************************/ From c9149b53c5430e6fdc7825e65179221aa94a3131 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 26 Apr 2020 17:33:27 +0200 Subject: [PATCH 4/4] Change pin handling part 1 --- tasmota/support.ino | 31 ++++++++- tasmota/support_button.ino | 8 +-- tasmota/support_button_v2.ino | 12 ++-- tasmota/support_command.ino | 10 +-- tasmota/support_rotary.ino | 18 ++--- tasmota/support_switch.ino | 12 ++-- tasmota/support_tasmota.ino | 94 +++++++++++++-------------- tasmota/tasmota.ino | 5 ++ tasmota/xdrv_04_light.ino | 18 ++--- tasmota/xdrv_05_irremote.ino | 14 ++-- tasmota/xdrv_05_irremote_full.ino | 16 ++--- tasmota/xdrv_07_domoticz.ino | 2 +- tasmota/xdrv_08_serial_bridge.ino | 4 +- tasmota/xdrv_10_rules.ino | 4 +- tasmota/xdrv_12_home_assistant.ino | 4 +- tasmota/xdrv_14_mp3.ino | 4 +- tasmota/xdrv_16_tuyamcu.ino | 8 +-- tasmota/xdrv_17_rcswitch.ino | 16 ++--- tasmota/xdrv_18_armtronix_dimmers.ino | 2 +- tasmota/xdrv_19_ps16dz_dimmer.ino | 2 +- tasmota/xdrv_23_zigbee_9_impl.ino | 6 +- tasmota/xdrv_24_buzzer.ino | 4 +- tasmota/xdrv_25_A4988_Stepper.ino | 28 ++++---- tasmota/xdrv_26_ariluxrf.ino | 14 ++-- tasmota/xdrv_27_shutter.ino | 16 ++--- tasmota/xdrv_29_deepsleep.ino | 6 +- tasmota/xdrv_30_exs_dimmer.ino | 10 +-- tasmota/xdrv_31_tasmota_slave.ino | 20 +++--- tasmota/xdrv_33_nrf24l01.ino | 4 +- tasmota/xdrv_35_pwm_dimmer.ino | 20 +++--- tasmota/xdrv_36_keeloq.ino | 8 +-- 31 files changed, 225 insertions(+), 195 deletions(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index 747091077..ebcca3294 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1073,10 +1073,37 @@ int ResponseJsonEndEnd(void) * GPIO Module and Template management \*********************************************************************************************/ +uint32_t Pin(uint32_t gpio, uint32_t index = 0); +uint32_t Pin(uint32_t gpio, uint32_t index) { +//#ifdef ESP8266 + return pin[gpio + index]; // Pin number configured for gpio or 99 if not used +/* +#else + uint16_t real_gpio = (gpio << 5) + index; + for (uint32_t i = 0; i < ARRAY_SIZE(pin); i++) { + if (pin[i] == real_gpio) { + return i; // Pin number configured for gpio + } + } + return 99; // No pin used for gpio +#endif +*/ +} + +void SetPin(uint32_t lpin, uint32_t gpio) { +//#ifdef ESP8266 + pin[gpio] = lpin; +/* +#else + pin[lpin] = gpio; +#endif +*/ +} + void DigitalWrite(uint32_t gpio_pin, uint32_t state) { - if (pin[gpio_pin] < 99) { - digitalWrite(pin[gpio_pin], state &1); + if (Pin(gpio_pin) < 99) { + digitalWrite(Pin(gpio_pin), state &1); } } diff --git a/tasmota/support_button.ino b/tasmota/support_button.ino index c3b8e0dd7..59b90e39d 100644 --- a/tasmota/support_button.ino +++ b/tasmota/support_button.ino @@ -60,9 +60,9 @@ void ButtonInit(void) { Button.present = 0; for (uint32_t i = 0; i < MAX_KEYS; i++) { - if (pin[GPIO_KEY1 +i] < 99) { + if (Pin(GPIO_KEY1, i) < 99) { Button.present++; - pinMode(pin[GPIO_KEY1 +i], bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == pin[GPIO_KEY1 +i]) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); + pinMode(Pin(GPIO_KEY1, i), bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_KEY1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); } #ifndef USE_ADC_VCC else if ((99 == Button.adc) && ((ADC0_BUTTON == my_adc0) || (ADC0_BUTTON_INV == my_adc0))) { @@ -135,9 +135,9 @@ void ButtonHandler(void) } else #endif // ESP8266 - if (pin[GPIO_KEY1 +button_index] < 99) { + if (Pin(GPIO_KEY1, button_index) < 99) { button_present = 1; - button = (digitalRead(pin[GPIO_KEY1 +button_index]) != bitRead(Button.inverted_mask, button_index)); + button = (digitalRead(Pin(GPIO_KEY1, button_index)) != bitRead(Button.inverted_mask, button_index)); } #ifndef USE_ADC_VCC if (Button.adc == button_index) { diff --git a/tasmota/support_button_v2.ino b/tasmota/support_button_v2.ino index 47213619e..3bb1f9153 100644 --- a/tasmota/support_button_v2.ino +++ b/tasmota/support_button_v2.ino @@ -60,9 +60,9 @@ void ButtonInit(void) { Button.present = 0; for (uint32_t i = 0; i < MAX_KEYS; i++) { - if (pin[GPIO_KEY1 +i] < 99) { + if (Pin(GPIO_KEY1, i) < 99) { Button.present++; - pinMode(pin[GPIO_KEY1 +i], bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == pin[GPIO_KEY1 +i]) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); + pinMode(Pin(GPIO_KEY1, i), bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_KEY1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); } #ifndef USE_ADC_VCC else if ((99 == Button.adc) && ((ADC0_BUTTON == my_adc0) || (ADC0_BUTTON_INV == my_adc0))) { @@ -132,9 +132,9 @@ void ButtonHandler(void) } else #endif // ESP8266 - if (pin[GPIO_KEY1 +button_index] < 99) { + if (Pin(GPIO_KEY1, button_index) < 99) { button_present = 1; - button = (digitalRead(pin[GPIO_KEY1 +button_index]) != bitRead(Button.inverted_mask, button_index)); + button = (digitalRead(Pin(GPIO_KEY1, button_index)) != bitRead(Button.inverted_mask, button_index)); } #ifndef USE_ADC_VCC if (Button.adc == button_index) { @@ -266,9 +266,9 @@ void ButtonHandler(void) } else { SendKey(KEY_BUTTON, button_index +1, Button.press_counter[button_index] +9); // 2,3,4 and 5 press send just the key value (11,12,13 and 14) for rules if (0 == button_index) { // BUTTON1 can toggle up to 5 relays if present. If a relay is not present will send out the key value (2,11,12,13 and 14) for rules - if ((Button.press_counter[button_index] > 1 && pin[GPIO_REL1 + Button.press_counter[button_index]-1] < 99) && Button.press_counter[button_index] <= MAX_RELAY_BUTTON1) { + if ((Button.press_counter[button_index] > 1 && Pin(GPIO_REL1, Button.press_counter[button_index]-1) < 99) && Button.press_counter[button_index] <= MAX_RELAY_BUTTON1) { ExecuteCommandPower(button_index + Button.press_counter[button_index], POWER_TOGGLE, SRC_BUTTON); // Execute Toggle command internally - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Relay%d found on GPIO%d"), Button.press_counter[button_index], pin[GPIO_REL1 + Button.press_counter[button_index]-1]); + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Relay%d found on GPIO%d"), Button.press_counter[button_index], Pin(GPIO_REL1, Button.press_counter[button_index]-1)); } } } diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 005158edd..2066ee56c 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1167,9 +1167,9 @@ void CmndTemplate(void) void CmndPwm(void) { if (pwm_present && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_PWMS)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= Settings.pwm_range) && (pin[GPIO_PWM1 + XdrvMailbox.index -1] < 99)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= Settings.pwm_range) && (Pin(GPIO_PWM1, XdrvMailbox.index -1) < 99)) { Settings.pwm_value[XdrvMailbox.index -1] = XdrvMailbox.payload; - analogWrite(pin[GPIO_PWM1 + XdrvMailbox.index -1], bitRead(pwm_inverted, XdrvMailbox.index -1) ? Settings.pwm_range - XdrvMailbox.payload : XdrvMailbox.payload); + analogWrite(Pin(GPIO_PWM1, XdrvMailbox.index -1), bitRead(pwm_inverted, XdrvMailbox.index -1) ? Settings.pwm_range - XdrvMailbox.payload : XdrvMailbox.payload); } Response_P(PSTR("{")); MqttShowPWMState(); // Render the PWM status to MQTT @@ -1694,7 +1694,7 @@ void CmndAltitude(void) void CmndLedPower(void) { if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_LEDS)) { - if (99 == pin[GPIO_LEDLNK]) { XdrvMailbox.index = 1; } + if (99 == Pin(GPIO_LEDLNK)) { XdrvMailbox.index = 1; } if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 2)) { Settings.ledstate &= 8; // Disable power control uint32_t mask = 1 << (XdrvMailbox.index -1); // Led to control @@ -1713,14 +1713,14 @@ void CmndLedPower(void) break; } blinks = 0; - if (99 == pin[GPIO_LEDLNK]) { + if (99 == Pin(GPIO_LEDLNK)) { SetLedPower(Settings.ledstate &8); } else { SetLedPowerIdx(XdrvMailbox.index -1, (led_power & mask)); } } bool state = bitRead(led_power, XdrvMailbox.index -1); - if (99 == pin[GPIO_LEDLNK]) { + if (99 == Pin(GPIO_LEDLNK)) { state = bitRead(Settings.ledstate, 3); } ResponseCmndIdxChar(GetStateText(state)); diff --git a/tasmota/support_rotary.ino b/tasmota/support_rotary.ino index 071b15b92..f93b288c5 100644 --- a/tasmota/support_rotary.ino +++ b/tasmota/support_rotary.ino @@ -49,8 +49,8 @@ void update_rotary(void) */ uint8_t s = Rotary.state & 3; - if (digitalRead(pin[GPIO_ROT1A])) { s |= 4; } - if (digitalRead(pin[GPIO_ROT1B])) { s |= 8; } + if (digitalRead(Pin(GPIO_ROT1A))) { s |= 4; } + if (digitalRead(Pin(GPIO_ROT1B))) { s |= 8; } switch (s) { case 0: case 5: case 10: case 15: break; @@ -80,20 +80,20 @@ bool RotaryButtonPressed(void) void RotaryInit(void) { Rotary.present = 0; - if ((pin[GPIO_ROT1A] < 99) && (pin[GPIO_ROT1B] < 99)) { + if ((Pin(GPIO_ROT1A) < 99) && (Pin(GPIO_ROT1B) < 99)) { Rotary.present++; - pinMode(pin[GPIO_ROT1A], INPUT_PULLUP); - pinMode(pin[GPIO_ROT1B], INPUT_PULLUP); + pinMode(Pin(GPIO_ROT1A), INPUT_PULLUP); + pinMode(Pin(GPIO_ROT1B), INPUT_PULLUP); // GPIO6-GPIO11 are typically used to interface with the flash memory IC on // most esp8266 modules, so we should avoid adding interrupts to these pins. - if ((pin[GPIO_ROT1A] < 6) || (pin[GPIO_ROT1A] > 11)) { - attachInterrupt(digitalPinToInterrupt(pin[GPIO_ROT1A]), update_rotary, CHANGE); + if ((Pin(GPIO_ROT1A) < 6) || (Pin(GPIO_ROT1A) > 11)) { + attachInterrupt(digitalPinToInterrupt(Pin(GPIO_ROT1A)), update_rotary, CHANGE); Rotary.interrupts_in_use_count++; } - if ((pin[GPIO_ROT1B] < 6) || (pin[GPIO_ROT1B] > 11)) { - attachInterrupt(digitalPinToInterrupt(pin[GPIO_ROT1B]), update_rotary, CHANGE); + if ((Pin(GPIO_ROT1B) < 6) || (Pin(GPIO_ROT1B) > 11)) { + attachInterrupt(digitalPinToInterrupt(Pin(GPIO_ROT1B)), update_rotary, CHANGE); Rotary.interrupts_in_use_count++; } } diff --git a/tasmota/support_switch.ino b/tasmota/support_switch.ino index f1d5c7ea2..3fba37b3c 100644 --- a/tasmota/support_switch.ino +++ b/tasmota/support_switch.ino @@ -86,9 +86,9 @@ void SwitchProbe(void) uint8_t force_low = (Settings.switch_debounce % 50) &2; // 52, 102, 152 etc for (uint32_t i = 0; i < MAX_SWITCHES; i++) { - if (pin[GPIO_SWT1 +i] < 99) { + if (Pin(GPIO_SWT1, i) < 99) { // Olimex user_switch2.c code to fix 50Hz induced pulses - if (1 == digitalRead(pin[GPIO_SWT1 +i])) { + if (1 == digitalRead(Pin(GPIO_SWT1, i))) { if (force_high) { // Enabled with SwitchDebounce x1 if (1 == Switch.virtual_state[i]) { @@ -127,10 +127,10 @@ void SwitchInit(void) Switch.present = 0; for (uint32_t i = 0; i < MAX_SWITCHES; i++) { Switch.last_state[i] = 1; // Init global to virtual switch state; - if (pin[GPIO_SWT1 +i] < 99) { + if (Pin(GPIO_SWT1, i) < 99) { Switch.present++; - pinMode(pin[GPIO_SWT1 +i], bitRead(Switch.no_pullup_mask, i) ? INPUT : ((16 == pin[GPIO_SWT1 +i]) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); - Switch.last_state[i] = digitalRead(pin[GPIO_SWT1 +i]); // Set global now so doesn't change the saved power state on first switch check + pinMode(Pin(GPIO_SWT1, i), bitRead(Switch.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_SWT1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); + Switch.last_state[i] = digitalRead(Pin(GPIO_SWT1, i)); // Set global now so doesn't change the saved power state on first switch check } Switch.virtual_state[i] = Switch.last_state[i]; } @@ -148,7 +148,7 @@ void SwitchHandler(uint8_t mode) uint16_t loops_per_second = 1000 / Settings.switch_debounce; for (uint32_t i = 0; i < MAX_SWITCHES; i++) { - if ((pin[GPIO_SWT1 +i] < 99) || (mode)) { + if ((Pin(GPIO_SWT1, i) < 99) || (mode)) { uint8_t button = Switch.virtual_state[i]; uint8_t switchflag = POWER_TOGGLE +1; diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 3beab925b..1d66b978c 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -325,8 +325,8 @@ void SetPowerOnState(void) // Issue #526 and #909 for (uint32_t i = 0; i < devices_present; i++) { if (!Settings.flag3.no_power_feedback) { // SetOption63 - Don't scan relay power state at restart - #5594 and #5663 - if ((i < MAX_RELAYS) && (pin[GPIO_REL1 +i] < 99)) { - bitWrite(power, i, digitalRead(pin[GPIO_REL1 +i]) ^ bitRead(rel_inverted, i)); + if ((i < MAX_RELAYS) && (Pin(GPIO_REL1, i) < 99)) { + bitWrite(power, i, digitalRead(Pin(GPIO_REL1, i)) ^ bitRead(rel_inverted, i)); } } if ((i < MAX_PULSETIMERS) && (bitRead(power, i) || (POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate))) { @@ -338,12 +338,12 @@ void SetPowerOnState(void) void SetLedPowerIdx(uint32_t led, uint32_t state) { - if ((99 == pin[GPIO_LEDLNK]) && (0 == led)) { // Legacy - LED1 is link led only if LED2 is present - if (pin[GPIO_LED1 +1] < 99) { + if ((99 == Pin(GPIO_LEDLNK)) && (0 == led)) { // Legacy - LED1 is link led only if LED2 is present + if (Pin(GPIO_LED1, 1) < 99) { led = 1; } } - if (pin[GPIO_LED1 + led] < 99) { + if (Pin(GPIO_LED1, led) < 99) { uint32_t mask = 1 << led; if (state) { state = 1; @@ -351,7 +351,7 @@ void SetLedPowerIdx(uint32_t led, uint32_t state) } else { led_power &= (0xFF ^ mask); } - DigitalWrite(GPIO_LED1 + led, bitRead(led_inverted, led) ? !state : state); + DigitalWrite(Pin(GPIO_LED1, led), bitRead(led_inverted, led) ? !state : state); } #ifdef USE_BUZZER if (led == 0) { @@ -362,7 +362,7 @@ void SetLedPowerIdx(uint32_t led, uint32_t state) void SetLedPower(uint32_t state) { - if (99 == pin[GPIO_LEDLNK]) { // Legacy - Only use LED1 and/or LED2 + if (99 == Pin(GPIO_LEDLNK)) { // Legacy - Only use LED1 and/or LED2 SetLedPowerIdx(0, state); } else { power_t mask = 1; @@ -383,10 +383,10 @@ void SetLedPowerAll(uint32_t state) void SetLedLink(uint32_t state) { - uint32_t led_pin = pin[GPIO_LEDLNK]; + uint32_t led_pin = Pin(GPIO_LEDLNK); uint32_t led_inv = ledlnk_inverted; if (99 == led_pin) { // Legacy - LED1 is status - led_pin = pin[GPIO_LED1]; + led_pin = Pin(GPIO_LED1); led_inv = bitRead(led_inverted, 0); } if (led_pin < 99) { @@ -608,7 +608,7 @@ void MqttShowPWMState(void) ResponseAppend_P(PSTR("\"" D_CMND_PWM "\":{")); bool first = true; for (uint32_t i = 0; i < MAX_PWMS; i++) { - if (pin[GPIO_PWM1 + i] < 99) { + if (Pin(GPIO_PWM1, i) < 99) { ResponseAppend_P(PSTR("%s\"" D_CMND_PWM "%d\":%d"), first ? "" : ",", i+1, Settings.pwm_value[i]); first = false; } @@ -703,9 +703,9 @@ bool MqttShowSensor(void) int json_data_start = strlen(mqtt_data); for (uint32_t i = 0; i < MAX_SWITCHES; i++) { #ifdef USE_TM1638 - if ((pin[GPIO_SWT1 +i] < 99) || ((pin[GPIO_TM16CLK] < 99) && (pin[GPIO_TM16DIO] < 99) && (pin[GPIO_TM16STB] < 99))) { + if ((Pin(GPIO_SWT1, i) < 99) || ((Pin(GPIO_TM16CLK) < 99) && (Pin(GPIO_TM16DIO) < 99) && (Pin(GPIO_TM16STB) < 99))) { #else - if (pin[GPIO_SWT1 +i] < 99) { + if (Pin(GPIO_SWT1, i) < 99) { #endif // USE_TM1638 ResponseAppend_P(PSTR(",\"" D_JSON_SWITCH "%d\":\"%s\""), i +1, GetStateText(SwitchState(i))); } @@ -913,7 +913,7 @@ void Every250mSeconds(void) if (200 == blinks) blinks = 0; // Disable blink } } - if (Settings.ledstate &1 && (pin[GPIO_LEDLNK] < 99 || !(blinks || restart_flag || ota_state_flag)) ) { + if (Settings.ledstate &1 && (Pin(GPIO_LEDLNK) < 99 || !(blinks || restart_flag || ota_state_flag)) ) { bool tstate = power & Settings.ledmask; #ifdef ESP8266 if ((SONOFF_TOUCH == my_module_type) || (SONOFF_T11 == my_module_type) || (SONOFF_T12 == my_module_type) || (SONOFF_T13 == my_module_type)) { @@ -1320,9 +1320,9 @@ void SerialInput(void) void ResetPwm(void) { for (uint32_t i = 0; i < MAX_PWMS; i++) { // Basic PWM control only - if (pin[GPIO_PWM1 +i] < 99) { - analogWrite(pin[GPIO_PWM1 +i], bitRead(pwm_inverted, i) ? Settings.pwm_range : 0); -// analogWrite(pin[GPIO_PWM1 +i], bitRead(pwm_inverted, i) ? Settings.pwm_range - Settings.pwm_value[i] : Settings.pwm_value[i]); + if (Pin(GPIO_PWM1, i) < 99) { + analogWrite(Pin(GPIO_PWM1, i), bitRead(pwm_inverted, i) ? Settings.pwm_range : 0); +// analogWrite(Pin(GPIO_PWM1, i), bitRead(pwm_inverted, i) ? Settings.pwm_range - Settings.pwm_value[i] : Settings.pwm_value[i]); } } } @@ -1331,8 +1331,6 @@ void ResetPwm(void) void GpioInit(void) { - uint32_t mpin; - if (!ValidModule(Settings.module)) { uint32_t module = MODULE; if (!ValidModule(MODULE)) { @@ -1386,10 +1384,10 @@ void GpioInit(void) } for (uint32_t i = 0; i < GPIO_MAX; i++) { - pin[i] = 99; + SetPin(99, i); } for (uint32_t i = 0; i < ARRAY_SIZE(my_module.io); i++) { - mpin = ValidPin(i, my_module.io[i]); + uint32_t mpin = ValidPin(i, my_module.io[i]); DEBUG_CORE_LOG(PSTR("INI: gpio pin %d, mpin %d"), i, mpin); @@ -1437,36 +1435,36 @@ void GpioInit(void) mpin = XdrvMailbox.index; }; } - if (mpin) pin[mpin] = i; + if (mpin) { SetPin(i, mpin); } } #ifdef ESP8266 - if ((2 == pin[GPIO_TXD]) || (H801 == my_module_type)) { Serial.set_tx(2); } + if ((2 == Pin(GPIO_TXD)) || (H801 == my_module_type)) { Serial.set_tx(2); } #endif // ESP8266 analogWriteRange(Settings.pwm_range); // Default is 1023 (Arduino.h) analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c) #ifdef USE_SPI - spi_flg = ((((pin[GPIO_SPI_CS] < 99) && (pin[GPIO_SPI_CS] > 14)) || (pin[GPIO_SPI_CS] < 12)) || (((pin[GPIO_SPI_DC] < 99) && (pin[GPIO_SPI_DC] > 14)) || (pin[GPIO_SPI_DC] < 12))); + spi_flg = ((((Pin(GPIO_SPI_CS) < 99) && (Pin(GPIO_SPI_CS) > 14)) || (Pin(GPIO_SPI_CS) < 12)) || (((Pin(GPIO_SPI_DC) < 99) && (Pin(GPIO_SPI_DC) > 14)) || (Pin(GPIO_SPI_DC) < 12))); if (spi_flg) { for (uint32_t i = 0; i < GPIO_MAX; i++) { - if ((pin[i] >= 12) && (pin[i] <=14)) pin[i] = 99; + if ((Pin(i) >= 12) && (Pin(i) <=14)) { SetPin(99, i); } } my_module.io[12] = GPIO_SPI_MISO; - pin[GPIO_SPI_MISO] = 12; + SetPin(12, GPIO_SPI_MISO); my_module.io[13] = GPIO_SPI_MOSI; - pin[GPIO_SPI_MOSI] = 13; + SetPin(13, GPIO_SPI_MOSI); my_module.io[14] = GPIO_SPI_CLK; - pin[GPIO_SPI_CLK] = 14; + SetPin(14, GPIO_SPI_CLK); } - soft_spi_flg = ((pin[GPIO_SSPI_CS] < 99) && (pin[GPIO_SSPI_SCLK] < 99) && ((pin[GPIO_SSPI_MOSI] < 99) || (pin[GPIO_SSPI_MOSI] < 99))); + soft_spi_flg = ((Pin(GPIO_SSPI_CS) < 99) && (Pin(GPIO_SSPI_SCLK) < 99) && ((Pin(GPIO_SSPI_MOSI) < 99) || (Pin(GPIO_SSPI_MOSI) < 99))); #endif // USE_SPI // Set any non-used GPIO to INPUT - Related to resetPins() in support_legacy_cores.ino // Doing it here solves relay toggles at restart. for (uint32_t i = 0; i < ARRAY_SIZE(my_module.io); i++) { - mpin = ValidPin(i, my_module.io[i]); + uint32_t mpin = ValidPin(i, my_module.io[i]); // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("INI: gpio pin %d, mpin %d"), i, mpin); if (((i < 6) || (i > 11)) && (0 == mpin)) { // Skip SPI flash interface if (!((1 == i) || (3 == i))) { // Skip serial @@ -1476,9 +1474,9 @@ void GpioInit(void) } #ifdef USE_I2C - i2c_flg = ((pin[GPIO_I2C_SCL] < 99) && (pin[GPIO_I2C_SDA] < 99)); + i2c_flg = ((Pin(GPIO_I2C_SCL) < 99) && (Pin(GPIO_I2C_SDA) < 99)); if (i2c_flg) { - Wire.begin(pin[GPIO_I2C_SDA], pin[GPIO_I2C_SCL]); + Wire.begin(Pin(GPIO_I2C_SDA), Pin(GPIO_I2C_SCL)); } #endif // USE_I2C @@ -1508,25 +1506,25 @@ void GpioInit(void) #endif // ESP8266 for (uint32_t i = 0; i < MAX_PWMS; i++) { // Basic PWM control only - if (pin[GPIO_PWM1 +i] < 99) { - pinMode(pin[GPIO_PWM1 +i], OUTPUT); + if (Pin(GPIO_PWM1, i) < 99) { + pinMode(Pin(GPIO_PWM1, i), OUTPUT); if (light_type) { // force PWM GPIOs to low or high mode, see #7165 - analogWrite(pin[GPIO_PWM1 +i], bitRead(pwm_inverted, i) ? Settings.pwm_range : 0); + analogWrite(Pin(GPIO_PWM1, i), bitRead(pwm_inverted, i) ? Settings.pwm_range : 0); } else { pwm_present = true; - analogWrite(pin[GPIO_PWM1 +i], bitRead(pwm_inverted, i) ? Settings.pwm_range - Settings.pwm_value[i] : Settings.pwm_value[i]); + analogWrite(Pin(GPIO_PWM1, i), bitRead(pwm_inverted, i) ? Settings.pwm_range - Settings.pwm_value[i] : Settings.pwm_value[i]); } } } for (uint32_t i = 0; i < MAX_RELAYS; i++) { - if (pin[GPIO_REL1 +i] < 99) { - pinMode(pin[GPIO_REL1 +i], OUTPUT); + if (Pin(GPIO_REL1, i) < 99) { + pinMode(Pin(GPIO_REL1, i), OUTPUT); devices_present++; #ifdef ESP8266 if (EXS_RELAY == my_module_type) { - digitalWrite(pin[GPIO_REL1 +i], bitRead(rel_inverted, i) ? 1 : 0); + digitalWrite(Pin(GPIO_REL1, i), bitRead(rel_inverted, i) ? 1 : 0); if (i &1) { devices_present--; } } #endif // ESP8266 @@ -1534,28 +1532,28 @@ void GpioInit(void) } for (uint32_t i = 0; i < MAX_LEDS; i++) { - if (pin[GPIO_LED1 +i] < 99) { + if (Pin(GPIO_LED1, i) < 99) { #ifdef USE_ARILUX_RF - if ((3 == i) && (leds_present < 2) && (99 == pin[GPIO_ARIRFSEL])) { - pin[GPIO_ARIRFSEL] = pin[GPIO_LED4]; // Legacy support where LED4 was Arilux RF enable - pin[GPIO_LED4] = 99; + if ((3 == i) && (leds_present < 2) && (99 == Pin(GPIO_ARIRFSEL))) { + SetPin(Pin(GPIO_LED4), GPIO_ARIRFSEL); // Legacy support where LED4 was Arilux RF enable + SetPin(99, GPIO_LED4); } else { #endif - pinMode(pin[GPIO_LED1 +i], OUTPUT); + pinMode(Pin(GPIO_LED1, i), OUTPUT); leds_present++; - digitalWrite(pin[GPIO_LED1 +i], bitRead(led_inverted, i)); + digitalWrite(Pin(GPIO_LED1, i), bitRead(led_inverted, i)); #ifdef USE_ARILUX_RF } #endif } } - if (pin[GPIO_LEDLNK] < 99) { - pinMode(pin[GPIO_LEDLNK], OUTPUT); - digitalWrite(pin[GPIO_LEDLNK], ledlnk_inverted); + if (Pin(GPIO_LEDLNK) < 99) { + pinMode(Pin(GPIO_LEDLNK), OUTPUT); + digitalWrite(Pin(GPIO_LEDLNK), ledlnk_inverted); } #ifdef USE_PWM_DIMMER - if (PWM_DIMMER == my_module_type && pin[GPIO_REL1] < 99) devices_present--; + if (PWM_DIMMER == my_module_type && Pin(GPIO_REL1) < 99) { devices_present--; } #endif // USE_PWM_DIMMER ButtonInit(); diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index b586f3a36..69be1bbe5 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -118,6 +118,9 @@ uint16_t tele_period = 9999; // Tele period timer uint16_t blink_counter = 0; // Number of blink cycles uint16_t seriallog_timer = 0; // Timer to disable Seriallog uint16_t syslog_timer = 0; // Timer to re-enable syslog_level +//#ifdef ESP32 +//uint16_t pin[MAX_GPIO_PIN]; // Possible pin configurations +//#endif int16_t save_data_counter; // Counter and flag for config save to Flash RulesBitfield rules_flag; // Rule state flags (16 bits) uint8_t mqtt_cmnd_blocked = 0; // Ignore flag for publish command @@ -126,7 +129,9 @@ uint8_t state_250mS = 0; // State 250msecond per second flag uint8_t latching_relay_pulse = 0; // Latching relay pulse timer uint8_t ssleep; // Current copy of Settings.sleep uint8_t blinkspeed = 1; // LED blink rate +//#ifdef ESP8266 uint8_t pin[GPIO_MAX]; // Possible pin configurations +//#endif uint8_t active_device = 1; // Active device in ExecuteCommandPower uint8_t leds_present = 0; // Max number of LED supported uint8_t led_inverted = 0; // LED inverted flag (1 = (0 = On, 1 = Off)) diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index a229d4d93..5e3afb9d6 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -1244,7 +1244,7 @@ bool LightModuleInit(void) if (Settings.flag.pwm_control) { // SetOption15 - Switch between commands PWM or COLOR/DIMMER/CT/CHANNEL for (uint32_t i = 0; i < MAX_PWMS; i++) { - if (pin[GPIO_PWM1 +i] < 99) { light_type++; } // Use Dimmer/Color control for all PWM as SetOption15 = 1 + if (Pin(GPIO_PWM1, i) < 99) { light_type++; } // Use Dimmer/Color control for all PWM as SetOption15 = 1 } } @@ -1347,14 +1347,14 @@ void LightInit(void) if (light_type < LT_PWM6) { // PWM for (uint32_t i = 0; i < light_type; i++) { Settings.pwm_value[i] = 0; // Disable direct PWM control - if (pin[GPIO_PWM1 +i] < 99) { - pinMode(pin[GPIO_PWM1 +i], OUTPUT); + if (Pin(GPIO_PWM1, i) < 99) { + pinMode(Pin(GPIO_PWM1, i), OUTPUT); } } - if (pin[GPIO_ARIRFRCV] < 99) { - if (pin[GPIO_ARIRFSEL] < 99) { - pinMode(pin[GPIO_ARIRFSEL], OUTPUT); - digitalWrite(pin[GPIO_ARIRFSEL], 1); // Turn off RF + if (Pin(GPIO_ARIRFRCV) < 99) { + if (Pin(GPIO_ARIRFSEL) < 99) { + pinMode(Pin(GPIO_ARIRFSEL), OUTPUT); + digitalWrite(Pin(GPIO_ARIRFSEL), 1); // Turn off RF } } } @@ -2133,13 +2133,13 @@ void LightSetOutputs(const uint16_t *cur_col_10) { // now apply the actual PWM values, adjusted and remapped 10-bits range if (light_type < LT_PWM6) { // only for direct PWM lights, not for Tuya, Armtronix... for (uint32_t i = 0; i < (Light.subtype - Light.pwm_offset); i++) { - if (pin[GPIO_PWM1 +i] < 99) { + if (Pin(GPIO_PWM1, i) < 99) { //AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "Cur_Col%d 10 bits %d"), i, cur_col_10[i]); uint16_t cur_col = cur_col_10[i + Light.pwm_offset]; if (!isChannelCT(i)) { // if CT don't use pwm_min and pwm_max cur_col = cur_col > 0 ? changeUIntScale(cur_col, 0, Settings.pwm_range, Light.pwm_min, Light.pwm_max) : 0; // shrink to the range of pwm_min..pwm_max } - analogWrite(pin[GPIO_PWM1 +i], bitRead(pwm_inverted, i) ? Settings.pwm_range - cur_col : cur_col); + analogWrite(Pin(GPIO_PWM1, i), bitRead(pwm_inverted, i) ? Settings.pwm_range - cur_col : cur_col); } } } diff --git a/tasmota/xdrv_05_irremote.ino b/tasmota/xdrv_05_irremote.ino index 53197b693..1a961a0f2 100644 --- a/tasmota/xdrv_05_irremote.ino +++ b/tasmota/xdrv_05_irremote.ino @@ -49,7 +49,7 @@ bool irsend_active = false; void IrSendInit(void) { - irsend = new IRsend(pin[GPIO_IRSEND]); // an IR led is at GPIO_IRSEND + irsend = new IRsend(Pin(GPIO_IRSEND)); // an IR led is at GPIO_IRSEND irsend->begin(); } @@ -78,7 +78,7 @@ void IrReceiveUpdateThreshold(void) void IrReceiveInit(void) { // an IR led is at GPIO_IRRECV - irrecv = new IRrecv(pin[GPIO_IRRECV], IR_RCV_BUFFER_SIZE, IR_RCV_TIMEOUT, IR_RCV_SAVE_BUFFER); + irrecv = new IRrecv(Pin(GPIO_IRRECV), IR_RCV_BUFFER_SIZE, IR_RCV_TIMEOUT, IR_RCV_SAVE_BUFFER); irrecv->setUnknownThreshold(Settings.param[P_IR_UNKNOW_THRESHOLD]); irrecv->enableIRIn(); // Start the receiver @@ -279,28 +279,28 @@ bool Xdrv05(uint8_t function) { bool result = false; - if ((pin[GPIO_IRSEND] < 99) || (pin[GPIO_IRRECV] < 99)) { + if ((Pin(GPIO_IRSEND) < 99) || (Pin(GPIO_IRRECV) < 99)) { switch (function) { case FUNC_PRE_INIT: - if (pin[GPIO_IRSEND] < 99) { + if (Pin(GPIO_IRSEND) < 99) { IrSendInit(); } #ifdef USE_IR_RECEIVE - if (pin[GPIO_IRRECV] < 99) { + if (Pin(GPIO_IRRECV) < 99) { IrReceiveInit(); } #endif // USE_IR_RECEIVE break; case FUNC_EVERY_50_MSECOND: #ifdef USE_IR_RECEIVE - if (pin[GPIO_IRRECV] < 99) { + if (Pin(GPIO_IRRECV) < 99) { IrReceiveCheck(); // check if there's anything on IR side } #endif // USE_IR_RECEIVE irsend_active = false; // re-enable IR reception break; case FUNC_COMMAND: - if (pin[GPIO_IRSEND] < 99) { + if (Pin(GPIO_IRSEND) < 99) { result = DecodeCommand(kIrRemoteCommands, IrRemoteCommand); } break; diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index 7d9987ae5..83ec56343 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -48,7 +48,7 @@ bool irsend_active = false; void IrSendInit(void) { - irsend = new IRsend(pin[GPIO_IRSEND]); // an IR led is at GPIO_IRSEND + irsend = new IRsend(Pin(GPIO_IRSEND)); // an IR led is at GPIO_IRSEND irsend->begin(); } @@ -105,7 +105,7 @@ void IrReceiveUpdateThreshold(void) void IrReceiveInit(void) { // an IR led is at GPIO_IRRECV - irrecv = new IRrecv(pin[GPIO_IRRECV], IR_FULL_BUFFER_SIZE, IR__FULL_RCV_TIMEOUT, IR_FULL_RCV_SAVE_BUFFER); + irrecv = new IRrecv(Pin(GPIO_IRRECV), IR_FULL_BUFFER_SIZE, IR__FULL_RCV_TIMEOUT, IR_FULL_RCV_SAVE_BUFFER); irrecv->setUnknownThreshold(Settings.param[P_IR_UNKNOW_THRESHOLD]); irrecv->enableIRIn(); // Start the receiver } @@ -365,7 +365,7 @@ uint32_t IrRemoteCmndIrHvacJson(void) if (json[parm_uc]) { state.sleep = json[parm_uc]; } //if (json[D_JSON_IRHVAC_CLOCK]) { state.clock = json[D_JSON_IRHVAC_CLOCK]; } // not sure it's useful to support 'clock' - IRac ac(pin[GPIO_IRSEND]); + IRac ac(Pin(GPIO_IRSEND)); bool success = ac.sendAc(state, &prev); if (!success) { return IE_SYNTAX_IRHVAC; } @@ -635,24 +635,24 @@ bool Xdrv05(uint8_t function) { bool result = false; - if ((pin[GPIO_IRSEND] < 99) || (pin[GPIO_IRRECV] < 99)) { + if ((Pin(GPIO_IRSEND) < 99) || (Pin(GPIO_IRRECV) < 99)) { switch (function) { case FUNC_PRE_INIT: - if (pin[GPIO_IRSEND] < 99) { + if (Pin(GPIO_IRSEND) < 99) { IrSendInit(); } - if (pin[GPIO_IRRECV] < 99) { + if (Pin(GPIO_IRRECV) < 99) { IrReceiveInit(); } break; case FUNC_EVERY_50_MSECOND: - if (pin[GPIO_IRRECV] < 99) { + if (Pin(GPIO_IRRECV) < 99) { IrReceiveCheck(); // check if there's anything on IR side } irsend_active = false; // re-enable IR reception break; case FUNC_COMMAND: - if (pin[GPIO_IRSEND] < 99) { + if (Pin(GPIO_IRSEND) < 99) { result = DecodeCommand(kIrRemoteCommands, IrRemoteCommand); } break; diff --git a/tasmota/xdrv_07_domoticz.ino b/tasmota/xdrv_07_domoticz.ino index ef7202fa7..a5b284fc2 100644 --- a/tasmota/xdrv_07_domoticz.ino +++ b/tasmota/xdrv_07_domoticz.ino @@ -576,7 +576,7 @@ void HandleDomoticzConfiguration(void) i +1, i, Settings.domoticz_relay_idx[i], i +1, i, Settings.domoticz_key_idx[i]); } - if (pin[GPIO_SWT1 +i] < 99) { + if (Pin(GPIO_SWT1, i) < 99) { WSContentSend_P(HTTP_FORM_DOMOTICZ_SWITCH, i +1, i, Settings.domoticz_switch_idx[i]); } diff --git a/tasmota/xdrv_08_serial_bridge.ino b/tasmota/xdrv_08_serial_bridge.ino index 990bf9c32..313cc9d6d 100644 --- a/tasmota/xdrv_08_serial_bridge.ino +++ b/tasmota/xdrv_08_serial_bridge.ino @@ -87,8 +87,8 @@ void SerialBridgeInput(void) void SerialBridgeInit(void) { serial_bridge_active = false; - if ((pin[GPIO_SBR_RX] < 99) && (pin[GPIO_SBR_TX] < 99)) { - SerialBridgeSerial = new TasmotaSerial(pin[GPIO_SBR_RX], pin[GPIO_SBR_TX]); + if ((Pin(GPIO_SBR_RX) < 99) && (Pin(GPIO_SBR_TX) < 99)) { + SerialBridgeSerial = new TasmotaSerial(Pin(GPIO_SBR_RX), Pin(GPIO_SBR_TX)); if (SerialBridgeSerial->begin(Settings.sbaudrate * 300)) { // Baud rate is stored div 300 so it fits into 16 bits if (SerialBridgeSerial->hardwareSerial()) { ClaimSerial(); diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index 36328cb98..cfd633f38 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -580,9 +580,9 @@ void RulesEvery50ms(void) // Boot time SWITCHES Status for (uint32_t i = 0; i < MAX_SWITCHES; i++) { #ifdef USE_TM1638 - if ((pin[GPIO_SWT1 +i] < 99) || ((pin[GPIO_TM16CLK] < 99) && (pin[GPIO_TM16DIO] < 99) && (pin[GPIO_TM16STB] < 99))) { + if ((Pin(GPIO_SWT1, i) < 99) || ((Pin(GPIO_TM16CLK) < 99) && (Pin(GPIO_TM16DIO) < 99) && (Pin(GPIO_TM16STB) < 99))) { #else - if (pin[GPIO_SWT1 +i] < 99) { + if (Pin(GPIO_SWT1, i) < 99) { #endif // USE_TM1638 snprintf_P(json_event, sizeof(json_event), PSTR("{\"" D_JSON_SWITCH "%d\":{\"Boot\":%d}}"), i +1, (SwitchState(i))); RulesProcessEvent(json_event); diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index 71ccb65ca..30d17681c 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -370,7 +370,7 @@ void HAssAnnounceSwitches(void) uint8_t hold = 0; uint8_t pir = 0; - if (pin[GPIO_SWT1 + switch_index] < 99) { switch_present = 1; } + if (Pin(GPIO_SWT1, switch_index) < 99) { switch_present = 1; } if (KeyTopicActive(1) && strcmp(SettingsText(SET_MQTT_SWITCH_TOPIC), mqtt_topic)) // Enable Discovery for Switches only if Switchtopic is set to a custom name { @@ -451,7 +451,7 @@ void HAssAnnounceButtons(void) } else #endif { - if (pin[GPIO_KEY1 + button_index] < 99) { + if (Pin(GPIO_KEY1, button_index) < 99) { button_present = 1; } } diff --git a/tasmota/xdrv_14_mp3.ino b/tasmota/xdrv_14_mp3.ino index c28f3e693..3bd722119 100644 --- a/tasmota/xdrv_14_mp3.ino +++ b/tasmota/xdrv_14_mp3.ino @@ -136,7 +136,7 @@ uint16_t MP3_Checksum(uint8_t *array) \*********************************************************************************************/ void MP3PlayerInit(void) { - MP3Player = new TasmotaSerial(-1, pin[GPIO_MP3_DFR562]); + MP3Player = new TasmotaSerial(-1, Pin(GPIO_MP3_DFR562)); // start serial communication fixed to 9600 baud if (MP3Player->begin(9600)) { MP3Player->flush(); @@ -232,7 +232,7 @@ bool Xdrv14(uint8_t function) { bool result = false; - if (pin[GPIO_MP3_DFR562] < 99) { + if (Pin(GPIO_MP3_DFR562) < 99) { switch (function) { case FUNC_PRE_INIT: MP3PlayerInit(); // init and start communication diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index d9dccc390..8b1bd73bd 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -596,9 +596,9 @@ void TuyaNormalPowerModePacketProcess(void) bool TuyaModuleSelected(void) { - if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected - pin[GPIO_TUYA_TX] = 1; - pin[GPIO_TUYA_RX] = 3; + if (!(Pin(GPIO_TUYA_RX) < 99) || !(Pin(GPIO_TUYA_TX) < 99)) { // fallback to hardware-serial if not explicitly selected + SetPin(1, GPIO_TUYA_TX); + SetPin(3, GPIO_TUYA_RX); Settings.my_gp.io[1] = GPIO_TUYA_TX; Settings.my_gp.io[3] = GPIO_TUYA_RX; restart_flag = 2; @@ -643,7 +643,7 @@ void TuyaInit(void) { Tuya.buffer = (char*)(malloc(TUYA_BUFFER_SIZE)); if (Tuya.buffer != nullptr) { - TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 2); + TuyaSerial = new TasmotaSerial(Pin(GPIO_TUYA_RX), Pin(GPIO_TUYA_TX), 2); if (TuyaSerial->begin(9600)) { if (TuyaSerial->hardwareSerial()) { ClaimSerial(); } // Get MCU Configuration diff --git a/tasmota/xdrv_17_rcswitch.ino b/tasmota/xdrv_17_rcswitch.ino index 9cd2d14d8..94323db1d 100644 --- a/tasmota/xdrv_17_rcswitch.ino +++ b/tasmota/xdrv_17_rcswitch.ino @@ -81,12 +81,12 @@ void RfReceiveCheck(void) void RfInit(void) { - if (pin[GPIO_RFSEND] < 99) { - mySwitch.enableTransmit(pin[GPIO_RFSEND]); + if (Pin(GPIO_RFSEND) < 99) { + mySwitch.enableTransmit(Pin(GPIO_RFSEND)); } - if (pin[GPIO_RFRECV] < 99) { - pinMode( pin[GPIO_RFRECV], INPUT); - mySwitch.enableReceive(pin[GPIO_RFRECV]); + if (Pin(GPIO_RFRECV) < 99) { + pinMode( Pin(GPIO_RFRECV), INPUT); + mySwitch.enableReceive(Pin(GPIO_RFRECV)); } } @@ -170,15 +170,15 @@ bool Xdrv17(uint8_t function) { bool result = false; - if ((pin[GPIO_RFSEND] < 99) || (pin[GPIO_RFRECV] < 99)) { + if ((Pin(GPIO_RFSEND) < 99) || (Pin(GPIO_RFRECV) < 99)) { switch (function) { case FUNC_EVERY_50_MSECOND: - if (pin[GPIO_RFRECV] < 99) { + if (Pin(GPIO_RFRECV) < 99) { RfReceiveCheck(); } break; case FUNC_COMMAND: - if (pin[GPIO_RFSEND] < 99) { + if (Pin(GPIO_RFSEND) < 99) { result = DecodeCommand(kRfSendCommands, RfSendCommand); } break; diff --git a/tasmota/xdrv_18_armtronix_dimmers.ino b/tasmota/xdrv_18_armtronix_dimmers.ino index 4a1322b25..710697a28 100644 --- a/tasmota/xdrv_18_armtronix_dimmers.ino +++ b/tasmota/xdrv_18_armtronix_dimmers.ino @@ -97,7 +97,7 @@ void ArmtronixInit(void) Armtronix.dim_state[1] = -1; Armtronix.knob_state[0] = -1; Armtronix.knob_state[1] = -1; - ArmtronixSerial = new TasmotaSerial(pin[GPIO_RXD], pin[GPIO_TXD], 2); + ArmtronixSerial = new TasmotaSerial(Pin(GPIO_RXD), Pin(GPIO_TXD), 2); if (ArmtronixSerial->begin(115200)) { if (ArmtronixSerial->hardwareSerial()) { ClaimSerial(); } ArmtronixSerial->println("Status"); diff --git a/tasmota/xdrv_19_ps16dz_dimmer.ino b/tasmota/xdrv_19_ps16dz_dimmer.ino index ab07289f7..d387ae05c 100644 --- a/tasmota/xdrv_19_ps16dz_dimmer.ino +++ b/tasmota/xdrv_19_ps16dz_dimmer.ino @@ -187,7 +187,7 @@ void PS16DZInit(void) { Ps16dz.rx_buffer = (char*)(malloc(PS16DZ_BUFFER_SIZE)); if (Ps16dz.rx_buffer != nullptr) { - PS16DZSerial = new TasmotaSerial(pin[GPIO_RXD], pin[GPIO_TXD], 2); + PS16DZSerial = new TasmotaSerial(Pin(GPIO_RXD), Pin(GPIO_TXD), 2); if (PS16DZSerial->begin(19200)) { if (PS16DZSerial->hardwareSerial()) { ClaimSerial(); } } diff --git a/tasmota/xdrv_23_zigbee_9_impl.ino b/tasmota/xdrv_23_zigbee_9_impl.ino index 505548027..e9024299a 100644 --- a/tasmota/xdrv_23_zigbee_9_impl.ino +++ b/tasmota/xdrv_23_zigbee_9_impl.ino @@ -162,10 +162,10 @@ void ZigbeeInit(void) // AddLog_P2(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem1 = %d"), ESP_getFreeHeap()); zigbee.active = false; - if ((pin[GPIO_ZIGBEE_RX] < 99) && (pin[GPIO_ZIGBEE_TX] < 99)) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "GPIOs Rx:%d Tx:%d"), pin[GPIO_ZIGBEE_RX], pin[GPIO_ZIGBEE_TX]); + if ((Pin(GPIO_ZIGBEE_RX) < 99) && (Pin(GPIO_ZIGBEE_TX) < 99)) { + AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "GPIOs Rx:%d Tx:%d"), Pin(GPIO_ZIGBEE_RX), Pin(GPIO_ZIGBEE_TX)); // if seriallog_level is 0, we allow GPIO 13/15 to switch to Hardware Serial - ZigbeeSerial = new TasmotaSerial(pin[GPIO_ZIGBEE_RX], pin[GPIO_ZIGBEE_TX], seriallog_level ? 1 : 2, 0, 256); // set a receive buffer of 256 bytes + ZigbeeSerial = new TasmotaSerial(Pin(GPIO_ZIGBEE_RX), Pin(GPIO_ZIGBEE_TX), seriallog_level ? 1 : 2, 0, 256); // set a receive buffer of 256 bytes ZigbeeSerial->begin(115200); if (ZigbeeSerial->hardwareSerial()) { ClaimSerial(); diff --git a/tasmota/xdrv_24_buzzer.ino b/tasmota/xdrv_24_buzzer.ino index 5e582d7db..45b570f85 100644 --- a/tasmota/xdrv_24_buzzer.ino +++ b/tasmota/xdrv_24_buzzer.ino @@ -111,8 +111,8 @@ bool BuzzerPinState(void) void BuzzerInit(void) { - if (pin[GPIO_BUZZER] < 99) { - pinMode(pin[GPIO_BUZZER], OUTPUT); + if (Pin(GPIO_BUZZER) < 99) { + pinMode(Pin(GPIO_BUZZER), OUTPUT); BuzzerOff(); } else { Buzzer.active = false; diff --git a/tasmota/xdrv_25_A4988_Stepper.ino b/tasmota/xdrv_25_A4988_Stepper.ino index d6456f2a1..bf75c413f 100644 --- a/tasmota/xdrv_25_A4988_Stepper.ino +++ b/tasmota/xdrv_25_A4988_Stepper.ino @@ -27,12 +27,12 @@ #include -short A4988_dir_pin = pin[GPIO_MAX]; -short A4988_stp_pin = pin[GPIO_MAX]; -short A4988_ms1_pin = pin[GPIO_MAX]; -short A4988_ms2_pin = pin[GPIO_MAX]; -short A4988_ms3_pin = pin[GPIO_MAX]; -short A4988_ena_pin = pin[GPIO_MAX]; +short A4988_dir_pin = 0; +short A4988_stp_pin = 0; +short A4988_ms1_pin = 0; +short A4988_ms2_pin = 0; +short A4988_ms3_pin = 0; +short A4988_ena_pin = 0; int A4988_spr = 0; float A4988_rpm = 0; short A4988_mis = 0; @@ -41,12 +41,12 @@ A4988_Stepper* myA4988 = nullptr; void A4988Init(void) { - A4988_dir_pin = pin[GPIO_A4988_DIR]; - A4988_stp_pin = pin[GPIO_A4988_STP]; - A4988_ena_pin = pin[GPIO_A4988_ENA]; - A4988_ms1_pin = pin[GPIO_A4988_MS1]; - A4988_ms2_pin = pin[GPIO_A4988_MS2]; - A4988_ms3_pin = pin[GPIO_A4988_MS3]; + A4988_dir_pin = Pin(GPIO_A4988_DIR); + A4988_stp_pin = Pin(GPIO_A4988_STP); + A4988_ena_pin = Pin(GPIO_A4988_ENA); + A4988_ms1_pin = Pin(GPIO_A4988_MS1); + A4988_ms2_pin = Pin(GPIO_A4988_MS2); + A4988_ms3_pin = Pin(GPIO_A4988_MS3); A4988_spr = 200; A4988_rpm = 30; A4988_mis = 1; @@ -93,7 +93,7 @@ void CmndDoTurn(void) { } void CmndSetMIS(void) { - if ((pin[GPIO_A4988_MS1] < 99) && (pin[GPIO_A4988_MS2] < 99) && (pin[GPIO_A4988_MS3] < 99) && (XdrvMailbox.data_len > 0)) { + if ((Pin(GPIO_A4988_MS1) < 99) && (Pin(GPIO_A4988_MS2) < 99) && (Pin(GPIO_A4988_MS3) < 99) && (XdrvMailbox.data_len > 0)) { short newMIS = strtoul(XdrvMailbox.data,nullptr,10); myA4988->setMIS(newMIS); ResponseCmndDone(); @@ -122,7 +122,7 @@ void CmndSetRPM(void) { bool Xdrv25(uint8_t function) { bool result = false; - if ((pin[GPIO_A4988_DIR] < 99) && (pin[GPIO_A4988_STP] < 99)) { + if ((Pin(GPIO_A4988_DIR) < 99) && (Pin(GPIO_A4988_STP) < 99)) { switch (function) { case FUNC_INIT: A4988Init(); diff --git a/tasmota/xdrv_26_ariluxrf.ino b/tasmota/xdrv_26_ariluxrf.ino index 2a6c73eaf..af3b80ebc 100644 --- a/tasmota/xdrv_26_ariluxrf.ino +++ b/tasmota/xdrv_26_ariluxrf.ino @@ -147,7 +147,7 @@ void AriluxRfHandler(void) void AriluxRfInit(void) { - if ((pin[GPIO_ARIRFRCV] < 99) && (pin[GPIO_ARIRFSEL] < 99)) { + if ((Pin(GPIO_ARIRFRCV) < 99) && (Pin(GPIO_ARIRFSEL) < 99)) { if (Settings.last_module != Settings.module) { Settings.rf_code[1][6] = 0; Settings.rf_code[1][7] = 0; @@ -155,16 +155,16 @@ void AriluxRfInit(void) } Arilux.rf_received_value = 0; - digitalWrite(pin[GPIO_ARIRFSEL], 0); // Turn on RF - attachInterrupt(pin[GPIO_ARIRFRCV], AriluxRfInterrupt, CHANGE); + digitalWrite(Pin(GPIO_ARIRFSEL), 0); // Turn on RF + attachInterrupt(Pin(GPIO_ARIRFRCV), AriluxRfInterrupt, CHANGE); } } void AriluxRfDisable(void) { - if ((pin[GPIO_ARIRFRCV] < 99) && (pin[GPIO_ARIRFSEL] < 99)) { - detachInterrupt(pin[GPIO_ARIRFRCV]); - digitalWrite(pin[GPIO_ARIRFSEL], 1); // Turn off RF + if ((Pin(GPIO_ARIRFRCV) < 99) && (Pin(GPIO_ARIRFSEL) < 99)) { + detachInterrupt(Pin(GPIO_ARIRFRCV)); + digitalWrite(Pin(GPIO_ARIRFSEL), 1); // Turn off RF } } @@ -178,7 +178,7 @@ bool Xdrv26(uint8_t function) switch (function) { case FUNC_EVERY_50_MSECOND: - if (pin[GPIO_ARIRFRCV] < 99) { AriluxRfHandler(); } + if (Pin(GPIO_ARIRFRCV) < 99) { AriluxRfHandler(); } break; case FUNC_EVERY_SECOND: if (10 == uptime) { AriluxRfInit(); } // Needs rest before enabling RF interrupts diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index b7d4e1dda..b2d0609ed 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -97,7 +97,7 @@ void ShutterRtc50mS(void) Shutter.pwm_frequency[i] += Shutter.accelerator[i]; Shutter.pwm_frequency[i] = tmax(0,tmin(Shutter.direction[i]==1 ? Shutter.max_pwm_frequency : Shutter.max_close_pwm_frequency[i],Shutter.pwm_frequency[i])); analogWriteFreq(Shutter.pwm_frequency[i]); - analogWrite(pin[GPIO_PWM1+i], 50); + analogWrite(Pin(GPIO_PWM1, i), 50); } } } @@ -201,12 +201,12 @@ void ShutterInit(void) } } else { Shutter.mode = SHT_OFF_ON__OPEN_CLOSE; - if ((pin[GPIO_PWM1+i] < 99) && (pin[GPIO_CNTR1+i] < 99)) { + if ((Pin(GPIO_PWM1, i) < 99) && (Pin(GPIO_CNTR1, i) < 99)) { Shutter.mode = SHT_OFF_ON__OPEN_CLOSE_STEPPER; Shutter.pwm_frequency[i] = 0; Shutter.accelerator[i] = 0; analogWriteFreq(Shutter.pwm_frequency[i]); - analogWrite(pin[GPIO_PWM1+i], 50); + analogWrite(Pin(GPIO_PWM1, i), 50); } } @@ -352,13 +352,13 @@ void ShutterUpdatePosition(void) Shutter.accelerator[i] = 0; Shutter.pwm_frequency[i] = Shutter.pwm_frequency[i] > 250 ? 250 : Shutter.pwm_frequency[i]; analogWriteFreq(Shutter.pwm_frequency[i]); - analogWrite(pin[GPIO_PWM1+i], 50); + analogWrite(Pin(GPIO_PWM1, i), 50); Shutter.pwm_frequency[i] = 0; analogWriteFreq(Shutter.pwm_frequency[i]); while (RtcSettings.pulse_counter[i] < (uint32_t)(Shutter.target_position[i]-Shutter.start_position[i])*Shutter.direction[i]*Shutter.max_pwm_frequency/2000) { delay(1); } - analogWrite(pin[GPIO_PWM1+i], 0); + analogWrite(Pin(GPIO_PWM1, i), 0); Shutter.real_position[i] = ShutterCounterBasedPosition(i); AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Real %d, pulsecount %d, start %d"), Shutter.real_position[i],RtcSettings.pulse_counter[i], Shutter.start_position[i]); @@ -421,7 +421,7 @@ void ShutterStartInit(uint32_t i, int32_t direction, int32_t target_pos) if (Shutter.mode == SHT_OFF_ON__OPEN_CLOSE_STEPPER) { Shutter.pwm_frequency[i] = 0; analogWriteFreq(Shutter.pwm_frequency[i]); - analogWrite(pin[GPIO_PWM1+i], 0); + analogWrite(Pin(GPIO_PWM1, i), 0); RtcSettings.pulse_counter[i] = 0; Shutter.accelerator[i] = Shutter.max_pwm_frequency / (Shutter.motordelay[i]>0 ? Shutter.motordelay[i] : 1); AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Ramp up: %d"), Shutter.accelerator[i]); @@ -450,10 +450,10 @@ void ShutterWaitForMotorStop(uint32_t i) Shutter.pwm_frequency[i] = tmax(Shutter.pwm_frequency[i]-((Shutter.direction[i] == 1 ? Shutter.max_pwm_frequency : Shutter.max_close_pwm_frequency[i])/(Shutter.motordelay[i]+1)) , 0); //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Frequency: %ld"), Shutter.pwm_frequency[i]); analogWriteFreq(Shutter.pwm_frequency[i]); - analogWrite(pin[GPIO_PWM1+i], 50); + analogWrite(Pin(GPIO_PWM1, i), 50); delay(50); } - analogWrite(pin[GPIO_PWM1+i], 0); + analogWrite(Pin(GPIO_PWM1, i), 0); Shutter.real_position[i] = ShutterCounterBasedPosition(i); } else { ExecuteCommandPower(Settings.shutter_startrelay[i], 0, SRC_SHUTTER); diff --git a/tasmota/xdrv_29_deepsleep.ino b/tasmota/xdrv_29_deepsleep.ino index 69366cdd8..c78a5fbbd 100644 --- a/tasmota/xdrv_29_deepsleep.ino +++ b/tasmota/xdrv_29_deepsleep.ino @@ -54,9 +54,9 @@ bool DeepSleepEnabled(void) return false; // Disabled } - if (pin[GPIO_DEEPSLEEP] < 99) { - pinMode(pin[GPIO_DEEPSLEEP], INPUT_PULLUP); - return (digitalRead(pin[GPIO_DEEPSLEEP])); // Disable DeepSleep if user holds pin GPIO_DEEPSLEEP low + if (Pin(GPIO_DEEPSLEEP) < 99) { + pinMode(Pin(GPIO_DEEPSLEEP), INPUT_PULLUP); + return (digitalRead(Pin(GPIO_DEEPSLEEP))); // Disable DeepSleep if user holds pin GPIO_DEEPSLEEP low } return true; // Enabled diff --git a/tasmota/xdrv_30_exs_dimmer.ino b/tasmota/xdrv_30_exs_dimmer.ino index 765fba1c6..485112977 100644 --- a/tasmota/xdrv_30_exs_dimmer.ino +++ b/tasmota/xdrv_30_exs_dimmer.ino @@ -395,11 +395,11 @@ void EsxMcuStart(void) int retries = 3; #ifdef EXS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EXS: Request MCU configuration, PIN %d to Low"), pin[GPIO_EXS_ENABLE]); + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EXS: Request MCU configuration, PIN %d to Low"), Pin(GPIO_EXS_ENABLE)); #endif - pinMode(pin[GPIO_EXS_ENABLE], OUTPUT); - digitalWrite(pin[GPIO_EXS_ENABLE], LOW); + pinMode(Pin(GPIO_EXS_ENABLE), OUTPUT); + digitalWrite(Pin(GPIO_EXS_ENABLE), LOW); delay(1); // wait 1ms fot the MCU to come online @@ -413,13 +413,13 @@ void EsxMcuStart(void) void ExsInit(void) { #ifdef EXS_DEBUG - AddLog_P2(LOG_LEVEL_INFO, PSTR("EXS: Starting Tx %d Rx %d"), pin[GPIO_TXD], pin[GPIO_RXD]); + AddLog_P2(LOG_LEVEL_INFO, PSTR("EXS: Starting Tx %d Rx %d"), Pin(GPIO_TXD), Pin(GPIO_RXD)); #endif Exs.buffer = (uint8_t *)malloc(EXS_BUFFER_SIZE); if (Exs.buffer != nullptr) { - ExsSerial = new TasmotaSerial(pin[GPIO_RXD], pin[GPIO_TXD], 2); + ExsSerial = new TasmotaSerial(Pin(GPIO_RXD), Pin(GPIO_TXD), 2); if (ExsSerial->begin(9600)) { if (ExsSerial->hardwareSerial()) diff --git a/tasmota/xdrv_31_tasmota_slave.ino b/tasmota/xdrv_31_tasmota_slave.ino index a30e05bd3..52a43178a 100644 --- a/tasmota/xdrv_31_tasmota_slave.ino +++ b/tasmota/xdrv_31_tasmota_slave.ino @@ -219,11 +219,11 @@ uint8_t TasmotaSlave_UpdateInit(void) void TasmotaSlave_Reset(void) { if (TSlave.SerialEnabled) { - digitalWrite(pin[GPIO_TASMOTASLAVE_RST], !TSlave.inverted); + digitalWrite(Pin(GPIO_TASMOTASLAVE_RST), !TSlave.inverted); delay(1); - digitalWrite(pin[GPIO_TASMOTASLAVE_RST], TSlave.inverted); + digitalWrite(Pin(GPIO_TASMOTASLAVE_RST), TSlave.inverted); delay(1); - digitalWrite(pin[GPIO_TASMOTASLAVE_RST], !TSlave.inverted); + digitalWrite(Pin(GPIO_TASMOTASLAVE_RST), !TSlave.inverted); delay(5); } } @@ -437,20 +437,20 @@ void TasmotaSlave_Init(void) return; } if (!TSlave.SerialEnabled) { - if ((pin[GPIO_TASMOTASLAVE_RXD] < 99) && (pin[GPIO_TASMOTASLAVE_TXD] < 99) && - ((pin[GPIO_TASMOTASLAVE_RST] < 99) || (pin[GPIO_TASMOTASLAVE_RST_INV] < 99))) { - TasmotaSlave_Serial = new TasmotaSerial(pin[GPIO_TASMOTASLAVE_RXD], pin[GPIO_TASMOTASLAVE_TXD], 1, 0, 200); + if ((Pin(GPIO_TASMOTASLAVE_RXD) < 99) && (Pin(GPIO_TASMOTASLAVE_TXD) < 99) && + ((Pin(GPIO_TASMOTASLAVE_RST) < 99) || (Pin(GPIO_TASMOTASLAVE_RST_INV) < 99))) { + TasmotaSlave_Serial = new TasmotaSerial(Pin(GPIO_TASMOTASLAVE_RXD), Pin(GPIO_TASMOTASLAVE_TXD), 1, 0, 200); if (TasmotaSlave_Serial->begin(USE_TASMOTA_SLAVE_SERIAL_SPEED)) { if (TasmotaSlave_Serial->hardwareSerial()) { ClaimSerial(); } TasmotaSlave_Serial->setTimeout(50); - if (pin[GPIO_TASMOTASLAVE_RST_INV] < 99) { - pin[GPIO_TASMOTASLAVE_RST] = pin[GPIO_TASMOTASLAVE_RST_INV]; - pin[GPIO_TASMOTASLAVE_RST_INV] = 99; + if (Pin(GPIO_TASMOTASLAVE_RST_INV) < 99) { + SetPin(Pin(GPIO_TASMOTASLAVE_RST_INV), GPIO_TASMOTASLAVE_RST); + SetPin(99, GPIO_TASMOTASLAVE_RST_INV); TSlave.inverted = HIGH; } - pinMode(pin[GPIO_TASMOTASLAVE_RST], OUTPUT); + pinMode(Pin(GPIO_TASMOTASLAVE_RST), OUTPUT); TSlave.SerialEnabled = true; TasmotaSlave_Reset(); AddLog_P2(LOG_LEVEL_INFO, PSTR("Tasmota Slave Enabled")); diff --git a/tasmota/xdrv_33_nrf24l01.ino b/tasmota/xdrv_33_nrf24l01.ino index b6eecce32..3e7d8c63d 100644 --- a/tasmota/xdrv_33_nrf24l01.ino +++ b/tasmota/xdrv_33_nrf24l01.ino @@ -60,7 +60,7 @@ RF24 NRF24radio; bool NRF24initRadio() { - NRF24radio.begin(pin[GPIO_SPI_CS],pin[GPIO_SPI_DC]); + NRF24radio.begin(Pin(GPIO_SPI_CS),Pin(GPIO_SPI_DC)); NRF24radio.powerUp(); if(NRF24radio.isChipConnected()){ @@ -73,7 +73,7 @@ bool NRF24initRadio() bool NRF24Detect(void) { - if ((pin[GPIO_SPI_CS]<99) && (pin[GPIO_SPI_DC]<99)){ + if ((Pin(GPIO_SPI_CS)<99) && (Pin(GPIO_SPI_DC)<99)){ SPI.pins(SCK,MOSI,MISO,-1); if(NRF24initRadio()){ NRF24.chipType = 32; // SPACE diff --git a/tasmota/xdrv_35_pwm_dimmer.ino b/tasmota/xdrv_35_pwm_dimmer.ino index 119c73aaf..ac2ceaf55 100644 --- a/tasmota/xdrv_35_pwm_dimmer.ino +++ b/tasmota/xdrv_35_pwm_dimmer.ino @@ -94,7 +94,7 @@ void PWMModulePreInit(void) PWMDimmerSetPoweredOffLed(); // The relay initializes to on. If the power is supposed to be off, turn the relay off. - if (!power && pin[GPIO_REL1] < 99) digitalWrite(pin[GPIO_REL1], bitRead(rel_inverted, 0) ? 1 : 0); + if (!power && Pin(GPIO_REL1) < 99) digitalWrite(Pin(GPIO_REL1), bitRead(rel_inverted, 0) ? 1 : 0); #ifdef USE_PWM_DIMMER_REMOTE // If remote device mode is enabled, set the device group count to the number of buttons @@ -104,7 +104,7 @@ void PWMModulePreInit(void) device_group_count = 0; for (uint32_t button_index = 0; button_index < MAX_KEYS; button_index++) { - if (pin[GPIO_KEY1 + button_index] < 99) device_group_count++; + if (Pin(GPIO_KEY1, button_index) < 99) device_group_count++; } remote_pwm_dimmer_count = device_group_count - 1; @@ -156,10 +156,10 @@ void PWMDimmerSetBrightnessLeds(int32_t operation) void PWMDimmerSetPoweredOffLed(void) { // Set the powered-off LED state. - if (pin[GPIO_LEDLNK] < 99) { + if (Pin(GPIO_LEDLNK) < 99) { bool power_off_led_on = !power && Settings.flag4.powered_off_led; if (ledlnk_inverted) power_off_led_on ^= 1; - digitalWrite(pin[GPIO_LEDLNK], power_off_led_on); + digitalWrite(Pin(GPIO_LEDLNK), power_off_led_on); } } @@ -250,13 +250,13 @@ void PWMDimmerHandleButton(void) * Released Hold down On No Dimmer * Released Press & release up Off No Power on at bri preset low * Released Press & release down Off No Power on at bri preset high - * + * * Holding any button for over 10 seconds executes the WiFiConfig 2 command. - * + * * In remote mode, whichever button is pressed first becomes the power button and any buttons * pressed while it is held affect the device associated with it. The up and down buttons change * depeneding on which button is the current power button: - * + * * Power Down Up * ----- ---- -- * 1 2 3 @@ -283,7 +283,7 @@ void PWMDimmerHandleButton(void) uint8_t dgr_more_to_come = false; uint32_t button_index = XdrvMailbox.index; uint32_t now = millis(); - + // Initialize some variables. #ifdef USE_PWM_DIMMER_REMOTE bool power_is_on = (!active_device_is_local ? active_remote_pwm_dimmer->power_on : power); @@ -482,7 +482,7 @@ void PWMDimmerHandleButton(void) // If the up or down button was tapped while the power button was held, ... else if (tap_count) { - + // If the button was tapped but not held, handle the operation based on which button was // tapped. if (!button_was_held) { @@ -546,7 +546,7 @@ void PWMDimmerHandleButton(void) // If the power is on, ... if (power_is_on) { - + // If the button was not held, adjust the brightness. Set the direction based on which // button is pressed. The new brightness will be calculated below. if (button_hold_time[button_index] >= now) { diff --git a/tasmota/xdrv_36_keeloq.ino b/tasmota/xdrv_36_keeloq.ino index d975a5a79..75e3e6167 100644 --- a/tasmota/xdrv_36_keeloq.ino +++ b/tasmota/xdrv_36_keeloq.ino @@ -242,8 +242,8 @@ void CreateKeeloqPacket() void KeeloqInit() { - jaroliftDevice.port_tx = pin[GPIO_CC1101_GDO2]; // Output port for transmission - jaroliftDevice.port_rx = pin[GPIO_CC1101_GDO0]; // Input port for reception + jaroliftDevice.port_tx = Pin(GPIO_CC1101_GDO2); // Output port for transmission + jaroliftDevice.port_rx = Pin(GPIO_CC1101_GDO0); // Input port for reception DEBUG_DRIVER_LOG(LOG_LEVEL_DEBUG_MORE, PSTR("cc1101.init()")); delay(100); @@ -266,7 +266,7 @@ void KeeloqInit() \*********************************************************************************************/ bool Xdrv36(uint8_t function) { - if ((99 == pin[GPIO_CC1101_GDO0]) || (99 == pin[GPIO_CC1101_GDO2])) { return false; } + if ((99 == Pin(GPIO_CC1101_GDO0)) || (99 == Pin(GPIO_CC1101_GDO2))) { return false; } bool result = false; @@ -284,4 +284,4 @@ bool Xdrv36(uint8_t function) return result; } -#endif // USE_KEELOQ +#endif // USE_KEELOQ